GRAY user manual

D. Farina1

L. Figini2

A. Mariani3

M. Guerini Rocco4

November 30, 2012. Updated: November 9, 2024

1 Introduction

The beam tracing code GRAY performs the computation of the quasi-optical propagation of a Gaussian beam of electron cyclotron waves in a general tokamak equilibrium, and of the power absorption and driven current [1]. The propagation of a general astigmatic Gaussian beam is described within the framework of the complex eikonal approach in terms of a set of “extended” rays that allow for diffraction effects. The absorbed power and the driven current density are computed along each ray solving the fully relativistic dispersion relation for electron cyclotron wave and by means of the neoclassical response function for the current.

The aim of the present note is to document the current version of the GRAY code, by describing the main code features and listing the inputs and outputs. To this goal in sec. 2 the main equations and models used in the GRAY code to compute Gaussian beam propagation, absorption and current drive are summarized shortly. In sec. 3, the details on the code inputs and outputs are presented.

2 Physics

2.1 Coordinate Reference systems

A few sets of coordinate systems are used in the code. The reference system is the right handed Cartesian orthogonal system (x,y,z)(x, y, z) with zz axis being the tokamak symmetry axis. For the purpose of the physics analysis this coordinate system may be rotated around the zz-axis so that the xzx z plane contains the launching point, i.e., zz vertical, xx radially outward through the port center, and yy pointing in the counter clockwise direction when viewed from above.

In addition to the right handed Cartesian orthogonal system specified above, we introduce also a right-handed cylindrical system (R,φ,Z)(R,φ,Z) with transformation from the cylindrical to the Cartesian system given by x=Rcosφx= R\cos φ, y=Rsinφy=R\sin φ, z=Zz=Z.

2.2 Quasi-optical approximation

In the complex eikonal framework, a solution of the wave equation for the electric field is looked for in the form

𝐄(𝐱,t)=𝐞(𝐱)E0(𝐱)eik0S(𝐱)+iωt {\mathbf E}({\mathbf x},t) = {\mathbf e}({\mathbf x}) E_0({\mathbf x}) e^{-i k_0 S({\mathbf x}) + iωt} (1)(1)

such that it allows for Gaussian beam descriptions. In eq. 1, ωω is the real frequency, k0=ω/ck_0 = ω/c the wavevector amplitude in vacuum, 𝐞(𝐱){\mathbf e}({\mathbf x}) the normalised polarisation (Jones) vector and E0(𝐱)E_0({\mathbf x}) the slowly varying wave amplitude.

The function S(𝐱)S({\mathbf x}) is the complex eikonal, S=SR(𝐱)+iSI(𝐱)S = S_R({\mathbf x}) + i S_I ({\mathbf x}), in which the real part SR(𝐱)S_R({\mathbf x}) is related to the beam propagation as in the geometric optics (GO), and the imaginary part SI(𝐱)(<0)S_I({\mathbf x}) (<0) to the beam intensity profile shape, as it is apparent writing eq. 1 as

𝐄(𝐱,t)=𝐞(𝐱)E0(𝐱)ek0SI(𝐱)eik0SR(𝐱)+iωt {\mathbf E}({\mathbf x},t) = {\mathbf e}({\mathbf x}) E_0({\mathbf x}) e^{k_0 S_I({\mathbf x})} e^{-i k_0 S_R({\mathbf x})+i ωt} (2)(2)

2.3 Gaussian beams

We introduce a reference system (x,y,z)({\bar x},{\bar y},{\bar z}), in which the z\bar z axis is directed along the direction of propagation of the beam and the x\bar x axis lies in the horizontal plane (i.e., z=constz=\text{const}), and two additional coordinate systems, (ξw,ηw)(\xi_w,\eta_w) and (ξR,ηR)(\xi_R,\eta_R) in the (x,y)(\bar x, \bar y) plane, rotated by the angles φwφ_w and φRφ_R, respectively,

x=ξwcosφwηwsinφw=ξRcosφRηRsinφRy=ξwsinφw+ηwcosφw=ξRsinφR+ηRcosφR \begin{aligned} \bar x &= \xi_w \cos φ_w - \eta_w \sin φ_w = \xi_R \cos φ_R - \eta_R \sin φ_R \\ \bar y &= \xi_w \sin φ_w + \eta_w \cos φ_w = \xi_R \sin φ_R + \eta_R \cos φ_R \end{aligned} (3)(3)

In the (ξw,ηw)(\xi_w,\eta_w) and (ξR,ηR)(\xi_R,\eta_R) systems, the axes are aligned with the major and minor axes of the intensity and phase ellipses respectively, and the general astigmatic Gaussian beam in vacuum takes the simple form [2]

E(𝐱)exp[(ξw2wξ2+ηw2wη2)]exp[ik0(z+ξR22Rcξ+ηR22Rcη)]. E ({\mathbf x}) \propto \exp{\left[- \left(\frac{{\xi}_w^2}{w_\xi^2} +\frac{{\eta}_w^2}{w_\eta^2}\right) \right]} \exp{\left [-i k_0 \left({\bar z} +\frac{\xi_R^2}{2 R_{c\xi}} +\frac{\eta_R^2}{2 R_{c\eta}}\right ) \right]}. (4)(4)

Note that a general astigmatic Gaussian beam is described in terms of six parameters: the beam widths wξ,ηw_{\xi,\eta}, the phase front curvature radii Rcξ,ηR_{c\xi,\eta} and the intensity and phase ellipses rotation angles φw,Rφ_{w,R}.

Simple astigmatic beams can be described in terms of 5 parameters only, because the phase and intensity ellipses are aligned, i.e., φw=φRφφ_w=φ_R\equiv φ: wξ,ηw_{\xi,\eta}, Rcξ,ηR_{c\xi,\eta}, φφ or alternatively by the beam waists w0ξ,ηw_{0\xi,\eta}, the waists z\bar z coordinates d0ξ,ηd_{0\xi,\eta}, and φφ, where Rcξ,ηR_{c\xi,\eta}, wξ,ηw_{\xi,\eta} are related to d0ξ,ηd_{0\xi,\eta}, w0ξ,ηw_{0\xi,\eta} by the following equations:

Rcj=[(zd0j)2+zRj2]/(zd0j)wj=w0j1+(zd0j)2/zRj2, \begin{aligned} R_{cj} &= [({\bar z}- d_{0j})^2+z_{Rj}^2]/({\bar z}- d_{0j}) \\ w_j &= w_{0j} \sqrt{1+({\bar z}- d_{0j})^2/z_{Rj}^2}, \end{aligned} (5)(5)

and zRj=k0w0j2/2z_{Rj}= k_0 w_{0j}^2/2 is the Raylegh length. According to eq. 5, a convergent beam (z<d0j{\bar z} < d_{0j}) has Rcj<0R_{cj}<0, while a divergent beam has Rcj>0R_{cj}>0.

2.4 QO beam tracing equations

The beam tracing equations and the algorithm for their solution are described in detail in [1].

The “extended” rays obey to the following quasi-optical ray-tracing equations that are coupled together through an additional constraint in the form of a partial differential equation: d𝐱dσ=+Λ𝐍|Λ=0d𝐍dσ=Λ𝐱|Λ=0Λ𝐍SI=0 \begin{aligned} \frac{d {\mathbf x}}{dσ} &= +\frac{∂Λ}{∂\mathbf N} \biggr |_{Λ=0} \\ \frac{d {\mathbf N}}{dσ} &= -\frac{∂Λ}{∂\mathbf x} \biggr |_{Λ=0} \\ \frac{∂ Λ}{∂ {\mathbf N}} &\cdot ∇ S_I = 0 \end{aligned} where the function Λ(𝐱,𝐤,ω)Λ ({\mathbf x},{\mathbf k},ω) is the QO dispersion relation, which reads

Λ=N²Nc²(𝐱,N,ω)|SI|²+12(𝐛SI)2²Ns²N²=0 Λ = N² - N_c²({\mathbf x}, N_\parallel, ω) - |∇ S_I|² + \frac{1}{2}(\mathbf{b} ⋅ ∇ S_I )^2 \frac{∂² N_s²}{∂{N_\parallel}²} = 0 (6)(6)

being 𝐛=𝐁/B\mathbf{b}=\mathbf{B}/B, N=𝐍𝐛N_\parallel = {\mathbf N} \cdot \mathbf{b}, and Nc(𝐱,N,ω)N_c({\mathbf x}, N_\parallel, ω) the solution of the cold dispersion relation for the considered mode.

In GRAY three choices for the integration variable σσ are available, i.e.: 1. the arclength along the trajectory ss, 2. the time τ=ctτ=ct, and 3. the real part of the eikonal function SRS_R.

The default option is the variable ss and the QO ray equations become:

d𝐱ds=+Λ/𝐍|Λ/𝐍||Λ=0d𝐍ds=Λ/𝐱|Λ/𝐍||Λ=0Λ𝐍SI=0 \begin{aligned} \frac{d{\mathbf x}}{ds} &= +\frac{∂ Λ /∂ {\mathbf N}} {|∂ Λ /∂ {\mathbf N}|} \biggr |_{Λ=0} \\ \frac{d{\mathbf N}}{ds} &= -\frac{∂ Λ /∂ {\mathbf x}} {|∂ Λ /∂ {\mathbf N}|} \biggr |_{Λ=0} \\ \frac{∂ Λ}{∂ {\mathbf N}} &\cdot ∇ S_I = 0 \end{aligned} (7)(7)

2.5 Ray initial conditions

The QO ray equations eq. 7 are solved for NT=Nr×Nϑ+1N_T= N_r \times N_\vartheta +1 rays distributed in order to simulate the Gaussian pattern of an actual antenna, with initial position on a suitable surface at the antenna centered on the beam axis.

The NrN_r rays are distributed radially up to a “cut-off” radius ρ̃max\tilde ρ_{max} defined as ρ̃max2=k0SI,max\tilde ρ_{max}^2=-k_0 S_{I,max} such that the beam carries a fraction of the input power equal to [1exp(2ρ̃max2)][1-\exp({-2 \tilde ρ_{max}^2)]}. The NϑN_\vartheta angular rays are distributed at constant electric field amplitude (i.e. at SI=constS_I = \text{const}). Details are given in [1].

Care must be taken in the proper choice of the integration step to avoid the occurrence of numerical instabilities due to the last equation in the set eq. 7. The value must be tuned with respect to the number of rays (i.e., to the distance between rays).

The code can be run also as a “standard” ray-tracing code, simply imposing SI=0S_I = 0 in eqns. 6, 7. In this case the initial conditions are given to asymptotically match, for |zd0j|zRj\vert {\bar z}- d_{0j} \vert \gg z_{Rj}, the ray distribution used for the QO ray-tracing.

2.6 Launching coordinates and wave vector

The launching coordinates of the central ray of the EC beam will be denoted either as (x0,y0,z0)(x_0, y_0, z_0), or (R0,φ0,Z0)(R_0, φ_0, Z_0), depending on the coordinate system used (cartesian or cylindrical) x0=R0cosφ0y0=R0sinφ0z0=Z0. \begin{aligned} x_0 &= R_0\cos φ_0 \\ y_0 &= R_0\sin φ_0 \\ z_0 &= Z_0. \end{aligned} and the launched wavevector 𝐍\mathbf N will have components (Nx0,Ny0,Nz0)(N_{x0}, N_{y0}, N_{z0}), and (NR0,Nφ0,NZ0)(N_{R0}, N_{φ 0}, N_{Z0}), related by Nx0=NR0cosφ0Nφ0sinφ0,Ny0=NR0sinφ0+Nφ0cosφ0,Nz0=NZ0 \begin{aligned} N_{x0} &= N_{R0} \cos φ_0 - N_{φ 0} \sin φ_0, \\ N_{y0} &= N_{R0} \sin φ_0 + N_{φ 0} \cos φ_0, \\ N_{z0} &= N_{Z0} \end{aligned}

2.7 EC Launching angles (α,βα,β)

The poloidal and toroidal angles α,βα, β are defined in terms of the cylindrical components of the wavevector

NR0=cosβcosα,Nφ0=+sinβ,NZ0=cosβsinα \begin{aligned} N_{R0} &= -\cos β \cos α, \\ N_{φ0} &= +\sin β, \\ N_{Z0} &= -\cos β \sin α \end{aligned} (8)(8)

with 180°α180°-180° ≤ α ≤ 180°, and 90°β90°-90° ≤ β ≤ 90°, so that

tanα=NZ0/NR0,sinβ=Nφ0 \begin{aligned} \tan α &= N_{Z0}/N_{R0}, \\ \sin β &= N_{φ 0} \end{aligned} (9)(9)

A 1-D scan of launch angle with constant toroidal component at launch (Nφ0N_{φ 0}) is achieved by varying only αα, keeping ββ fixed. Injection at β=0,α=0β=0, α=0 results in a ray launched horizontally and in a poloidal plane towards the machine centre. The above choice is quite convenient to perform physics simulations, since EC results are invariant under toroidal rotation, due to axisymmetry. This convention is the same used for the EC injection angles in ITER [3].

2.8 ECRH and absorption models

The EC power PP is assumed to evolve along the ray trajectory obeying to the following equation

dPds=αP, \frac{dP}{ds} = -α P, (10)(10)

where here αα is the absorption coefficient

α=2ωcIm(Λw)|Λ/𝐍||Λ=04ωcIm(Nw)N|Λ/𝐍||Λ=0=2Im(kw)vgvg. α = 2 \frac{ω}{c} \frac {{\text{Im}}(Λ_w)} {|∂ Λ /∂ {\mathbf{N}}|} \biggr|_{Λ=0} ≈ 4 \frac{ω}{c} {{\text {Im}}(N_{\perp w})} \frac {N_{\perp}} {|{∂ Λ}/{∂ {\mathbf N}|}} \biggr|_{Λ=0} = 2{{\text{Im}}(k_{\perp w})} \frac{v_{g\perp}} v_{g}. (11)(11)

being NwN_{\perp w} (and kwk_{\perp w}) the perpendicular refractive index (and wave vector) solution of the relativistic dispersion relation for EC waves Λw=N2N2Nw2=0 Λ_w = N^2-N_{\parallel}^2-N_{\perp w}^2=0

The warm dispersion relation ΛwΛ_w is solved up to the desired Larmor radius order either in the weakly or the fully relativistic approximation as described in [4].

Integration of eq. 10 yields the local transmitted and deposited power in terms of the optical depth τ=0sα(s)dsτ= \int_0^{s}{α(s') d s'} as P(s)=P0eτ(s),andPabs(s)=P0[1eτ], P(s)=P_0 e^{-τ(s)}, \quad \mathrm{and} \quad P_{abs} (s)=P_0 [1-e^{-τ}] , respectively, being P0P_0 the injected power.

The flux surface averaged absorbed power density p(ρ)=dPabs/dVp(ρ)=dP_{abs}/dV is computed as the the ratio between the power deposited within the volume dVdV between two adjacent flux surfaces and the volume itself. At each position along the ray trajectory (parametrized by ss), the absorbed power density can be written in terms of the absorption coefficient as

p=Pα(s)eτ(s)δsδV p = P₀ α(s) e^{-τ(s)} \frac{δs}{δV} (12)(12)

δsδs being the ray length between two adjacent magnetic surfaces, and δVδV the associated volume.

2.9 EC Current Drive

Within the framework of the linear adjoint formulation, the flux surface averaged EC driven current density is given by

J=*p \langle J_{\parallel}\rangle = {\mathcal R}^* \, p (13)(13)

where *{\mathcal R}^* is a current drive efficiency, which can be expressed as a ratio between two integrals in momentum space

*=emcνcBBmd𝐮𝒫(𝐮)η𝐮(𝐮)d𝐮𝒫(𝐮) {\mathcal R}^*= \frac{e}{m c \nu_c} \frac{\langle B \rangle}{B_m} \frac{\int{d{\mathbf u} {\mathcal P}({\mathbf u}) \, \eta_{\mathbf u}({\mathbf u})}}{\int{d{\mathbf u} {\mathcal P}({\mathbf u}) }} (14)(14)

where νc=4πne4Λc/(m2c3)\nu_c=4 \pi n e^4 Λ_c/(m^2 c^3) is the collision frequency, with ΛcΛ_c the Coulomb logarithm, and BmB_m, B\langle B \rangle are the minimum value and the flux surface averaged value of the magnetic field on the given magnetic surface, respectively.

The functions 𝒫(𝐮){\mathcal P}({\mathbf u}) and η𝐮(𝐮)\eta_{\mathbf u}({\mathbf u}) are the normalized absorbed power density and current drive efficiency per unit momentum 𝐮=𝐩/mc{\mathbf u}={\mathbf p}/mc [1]. Note that the warm wave polarisation is used to compute 𝒫(𝐮){\mathcal P}({\mathbf u}). In the adjoint formulation adopted here, the function η𝐮(𝐮)\eta_{\mathbf u}({\mathbf u}) is written in terms of the response function for the current, and its explicit expression is related to the chosen ECCD model.

The flux surface average driven current density eq. 13 can be written as [1]

J=P0α(s)eτ(s)*(s)δsδV \langle J_{\parallel}\rangle = P_0 α(s) e^{-τ(s)} {\mathcal R}^*(s) \frac{δs}{δV} (15)(15)

and the equation for the current evolution IcdI_{cd} along the ray trajectory as dIcdds=*(s)12πRJdPds, \frac{dI_{cd}}{ds} = -{\mathcal R}^*(s)\frac{1}{2 \pi R_J } \frac{dP}{ds}, where RJ(ψ)R_J(\psi) is an effective radius for the computation of the driven current 1RJ=1R2f(ψ)B=Bφ/RB \frac{1}{R_J} = \left\langle\frac{1}{R^2}\right\rangle \frac{f(\psi)}{ \langle B\rangle} = \frac{ \langle {B_φ}/{R} \rangle}{ \langle B\rangle} being f(ψ)=BφRf(\psi) =B_φ R the poloidal flux function.

2.10 ECCD Models

Two models for η𝐮(𝐮)\eta_{\mathbf u}({\mathbf u}) efficiency in eq. 14 are implemented for ECCD calculations, a Cohen-like module in the high-velocity limit and the momentum conserving model developed by Marushenko. The used Cohen-like module, developed explicitly for GRAY, is described in [1]. The Marushchenko module [5] has been incorporated into GRAY as far as the energy part is concerned, while the pitch-angle part on trapping is based on a local development.

2.10.1 Current density definitions

In GRAY, three outputs for the EC driven current density are given. The EC flux surface averaged driven parallel current density J\langle J_{\parallel}\rangle, that is the output of the ECCD theory, defined as J=𝐉cd𝐁B=𝐉cd𝐁B2/B. \langle J_{\parallel}\rangle = \left \langle\frac{{\mathbf J}_{cd} \cdot {\mathbf B}}{B} \right \rangle = \frac{\langle {{\mathbf J}_{cd} \cdot {\mathbf B}}\rangle} {{\langle B^2 \rangle/}{\langle B \rangle}}. a toroidal driven current density JφJ_φ defined as

Jφ=δIcdδA J_φ =\frac{δ I_{cd}} {δ A} (16)(16)

being δIcdδ I_{cd} the current driven within the volume δVδ V between two adjacent flux surfaces, and δAδ A the poloidal area between the two adjacent flux surfaces, such that the total driven current is computed as Icd=JφdAI_{cd}= \int J_φ dA.

Finally, an EC flux surface averaged driven current density JcdJ_{cd} to be compared with transport code outputs

Jcd=𝐉𝐁Bref J_{cd} = \frac{\langle {\mathbf J} \cdot {\mathbf B} \rangle} {B_{ref}} (17)(17)

with the BrefB_{ref} value dependent on the transport code, i.e, Bref=B0B_{ref}=B_0 for ASTRA and CRONOS, and Bref=BB_{ref}={\langle B \rangle} for JINTRAC.

The above definitions are related to each other in terms of flux surface averaged quantities, dependent on the equilibrium, i.e.,

Jφ=f(ψ)B1/R21/RJJcd=B2BBrefJJφ=Breff(ψ)B21/R21/RJcd \begin{aligned} J_φ &= \frac{f(\psi)}{\langle B \rangle} \frac{\langle {1/R^2} \rangle}{\langle{1/R} \rangle} {\langle J_\parallel \rangle } \\ J_{cd} &= \frac{\langle B^2 \rangle }{\langle B\rangle B_{ref}} \langle J_\parallel \rangle \\ J_φ &= \frac{B_{ref} f(\psi)}{\langle B^2 \rangle} \frac{\langle {1/R^2} \rangle}{\langle{1/R} \rangle} J_{cd} \end{aligned} (18)(18)

2.11 ECRH & CD location and profile characterization

Driven current and absorbed power density profiles, Jcd(ρ)J_{cd}(ρ), p(ρ)p(ρ), can be characterized in term of suitable quantities. In GRAY, two approaches are followed, both available at each computation, that yields the same results in case of almost Gaussian profiles. Here, the flux label ρρ denotes the normalized toroidal radius defined as the square root of the toroidal flux normalized to its edge value.

In the first case, the profiles are characterized in terms of three quantities: the peak value of the toroidal current density JφJ_φ, the radius ρρ corresponding to the peak, and the full profile width at 1/e of the peak value. In addition, the ratio between Jcd/JφJ_{cd}/ J_φ is computed at the peak radius via eq. 18 for the two BrefB_{ref} choices.

The second approach applies also to non monotonic profiles. Two average quantities are computed for both power and current density profiles, namely, the average radius ρa\langle ρ \rangle_a (a=p,j)(a=p,j)

ρp=dVρp(ρ)dVp(ρ),ρj=dAρ|Jφ(ρ)|dA|Jφ(ρ)| \langle ρ \rangle_p = \frac{\int dV ρ p(ρ)}{\int dV p(ρ)} , \qquad \langle ρ \rangle_j = \frac{\int dA ρ | J_{φ}(ρ)|} {\int dA |J_{φ}(ρ)|} (19)(19)

and average profile width δρa{δρ}_a defined in terms of the variance as

δρa=22δρawith δρa2=ρ2a(ρa)2 δ ρ_a = 2 \sqrt{2} \langle δ ρ \rangle_a \qquad \text{with } \qquad \langle δ ρ \rangle_a^2 = \langle ρ^2 \rangle_a-(\langle ρ \rangle_a)^2 (20)(20)

Factor 8\sqrt{8} is introduced to match with the definition of the full profile width in case of Gaussian profiles. Consistently with the above average definitions, we introduce suitable peak values p0p_{0} and Jφ0J_{φ 0}, corresponding to those of a Gaussian profile characterized by eqns. 19, 20 and same total absorbed power PabsP_{abs} and driven current IcdI_{cd}

p0=2πPabsδρp(dV/dρ)ρp,Jφ0=2πIcdδρj(dA/dρ)ρj. p_0 = \frac{2}{\sqrt{\pi}} \frac{P_{abs}}{{ δ ρ}_p \left ({dV}/{d ρ}\right)_{\langle ρ \rangle_p}}, \qquad J_{φ0} = \frac{2}{\sqrt{\pi}} \frac{I_{cd}}{{ δ ρ}_j \left ({dA}/{d ρ}\right)_{\langle ρ \rangle_j}}. (21)(21)

2.12 Mode coupling and reflection at inner wall

The polarisation of the beam is used to compute the coupling to the Ordinary (O) and Extraordinary (X) plasma modes when the beam crosses the vacuum-plasma interface. The fraction of power converted into a mode is given by the coupling coefficient cmode=(𝐞̂mode𝐞̂)², c_\text{mode} = (\hat{\mathbf e}_\text{mode}⋅\hat{\mathbf e})², where 𝐞̂mode,𝐞̂\hat{\mathbf e}_\text{mode},\hat{\mathbf e} are the plasma mode and beam Jones vectors, respectively. The mode vector is defined as the eigenvector of the cold plasma dielectric tensor in the low density limit. The beam vector at launch is computed from the polarisation ellipse parameters using the formula:

ê=cosχcosψ+isinχsinψê=cosχsinψisinχcosψ \begin{aligned} \hat{e}₁ &= \cos χ\cos ψ + i\sin χ\sin ψ \\ \hat{e}₂ &= \cos χ\sin ψ - i\sin χ\cos ψ \end{aligned} (22)(22)

The following convention is assumed (illustrated in fig. 1):

If the initial polarisation is not specified, 100% coupling to a given mode is assumed.

Figure 1: Polarisation ellipse

A model for wave reflection on a smooth surface is included in GRAY. This is used to describe the beam reflection on the inner wall of the tokamak in the cases where only partial absorption occurs at the first pass in the plasma. An ideal conductor is assumed for the reflecting surface, so that the full power of the incident beam is transferred to the reflected one. The vector refractive index 𝐍refl{\mathbf N}_\text{refl} and the Jones vector 𝐞̂refl\hat {\mathbf e}_\text{refl} of the reflected beam are 𝐍refl=𝐍in2(𝐍in𝐧̂)𝐧̂,𝐞̂refl=𝐞̂in+2(𝐞̂in𝐧̂)𝐧̂, {\mathbf N}_\text{refl} = {\mathbf N}_\text{in} - 2 ({\mathbf N}_\text{in} \cdot \hat {\mathbf n}) \hat {\mathbf n}, \qquad \hat {\mathbf e}_\text{refl} = -\hat {\mathbf e}_\text{in} + 2 (\hat {\mathbf e}_\text{in} \cdot \hat {\mathbf n}) \hat {\mathbf n}, being 𝐍in{\mathbf N}_\text{in} and 𝐞̂in\hat {\mathbf e}_\text{in} the vector refractive index and the Jones vector of the incoming wave, and 𝐧̂\hat {\mathbf n} the normal unit vector to the wall at the beam incidence point.

The reflected beam Jones vector is again used to compute the coupling to the plasma modes at the second and successive pass, with potentially 2n12^{n-1} independent modes being traced after n reflections.

Note that the Jones vectors of the ordinary and extraordinary modes are orthogonal w.r.t. the standard Hermitian product: 𝐞̂O𝐞̂X*=0\hat{\mathbf{e}}_\mathrm{O}⋅\hat{\mathbf{e}}_\mathrm{X}^* = 0. From eq. 22 it then follows that these relations hold: ψO=ψX+π2χO=χX1=cO+cX \begin{aligned} ψ_\textrm{O} &= ψ_\textrm{X} + \frac{π}{2} \\ χ_\textrm{O} &= -χ_\textrm{X} \\ 1 &= c_\textrm{O} + c_\textrm{X} \end{aligned} with the latter meaning all the incoming power is coupled to the plasma.

3 Input and output files

This section describes the input data required by GRAY and the output files that are saved and stored for the GRT-161 analysis. In tbl. 1 the assigned unit numbers used for various input and output files in GRAY are listed. Shell scripts allow to run the code for various input data that are varied by means of suitable loops.

Table 1: GRAY I/O Unit Numbers
Unit Number I/O Content Filename
2 I Input data gray_params.data
99 I Equilibrium file EQDSK filenmeqq.eqdsk
98 I Kinetic profiles filenmeprf.prf
97 I Beam data filenmebm.txt
4 O Data for central ray None
7 O Global data and results None / assigned by shell script
48 O ECRH&CD profiles None / assigned by shell script
33 O Data for outmost rays None
8 O Beam cross section shape None
9 O Rays distribution at the end of the integration path None
12 O Beam transverse sizes None
17 O Beam tracing error on Hamiltonian None
55 O Kinetic profiles None
56 O Flux averaged quantities None
70 O EC resonance surface at relevant harmonics None
71 O Flux surface contours at ψ=const\sqrt{\psi}=\text{const} None
78 O Record of input parameters headers.txt / attached to output by shell script

3.1 Input Files

To run GRAY, the user must supply a gray_params.data file and two files, containing information about the MHD equilibrium and the kinetic profiles, respectively.

The variables and quantities in gray_params.data are listed in tbls. 6-8, suitably grouped together. The equilibrium information is provided via a G-EQDSK file (with extension .eqdsk), with conventions specified as in [6]. The kinetic profiles are provided in an ASCII file (with extension .prf). The format of the G-EQDSK file is described in sec. 3.2, while the format of the .prf file for the profiles is the following quantities defined in tbl. 9:

  read (98,*) npp
  do i=1,npp
    read(98,*) psin(i),Te(i),ne(i),Zeff(i)
  end do

The beam parameters are read either from the gray_params.data file, or from an ASCII file (with extension .txt), depending on the value of the ibeam parameter as specified in tbl. 6. If the ASCII file is used, the user can supply multiple launching conditions, and/or use a general astigmatic Gaussian beam. The format of the .txt file is the following, for ibeam=1 and ibeam=2 respectively (quantities defined in tbl. 10):

  ! +++ IBEAM=1 +++
  read(97,*) nsteer
  do i=1,nsteer
    read(97,*) gamma(i),alpha0(i),beta0(i),x0mm(i),y0mm(i),z0mm(i), &
                w0xi(i),d0eta(i),w0xi(i),d0eta(i),phiw(i)
  end do

  ! +++ IBEAM=2 +++
  read(97,*) nsteer
  do i=1,nisteer
    read(97,*) gamma(i),alpha0(i),beta0(i),x0mm(i),y0mm(i),z0mm(i), &
               wxi(i),weta(i),rcixi(i),rcieta(i),phiw(i),phir(i)
  end do

3.2 G-EQDSK format

The G EQDSK file provides information on:

  1. pressure,
  2. poloidal current function,
  3. qq profile,
  4. plasma boundary,
  5. limiter contour

All quantities are defined on a uniform flux grid from the magnetic axis to the plasma boundary and the poloidal flux function on the rectangular computation grid. A right-handed cylindrical coordinate system (R,φ,Ζ)(R, φ, Ζ) is used.

3.2.1 Variables

In order of appearance in the file:

Table 2: Miscellanea
Name Type Description
case String(6) Identification string
nw Integer Number of horizontal RR grid points
nh Integer Number of vertical ZZ grid points
Table 3: Geometry
Name Type Unit Description
rdim Real m Horizontal dimension of the computational box
zdim Real m Vertical dimension of the computational box
rleft Real m Minimum R of the rectangular computational box
zmid Real m Z of center of the computational box
rmaxis Real m R of the magnetic axis
zmaxis Real m ZZ of the magnetic axis
Table 4: Magnetic equilibrium
Name Type Unit Description
simag Real Wb/rad Poloidal flux at the magnetic axis
sibry Real Wb/rad Poloidal flux at the plasma boundary
rcentr Real m RR of vacuum toroidal magnetic field bcentr
bcentr Real T Vacuum toroidal magnetic field at rcentr
current Real A Plasma current
fpol Real mT Poloidal current function, F=RBTF = RB_T on the flux grid
pres Real Pa Plasma pressure on a uniform flux grid
ffprim Real (mT²)/(Wb/rad) FF(ψ)FF'(ψ) on a uniform flux grid
pprime Real Pa/(Wb/rad) P(ψ)P'(ψ) on a uniform flux grid
psizr Real Wb/rad Poloidal flux on the rectangular grid points
qpsi Real 1 qq values on uniform flux grid from axis to boundary
Table 5: Plasma boundary
Name Type Unit Description
nbbbs Integer 1 Number of boundary points
limitr Integer 1 Number of limiter points
rbbbs Real m RR of boundary points
zbbbs Real m ZZ of boundary points
rlim Real m RR of surrounding limiter contour
zlim Real m ZZ of surrounding limiter contour

3.2.2 Toroidal Current Density

The toroidal current JTJ_T (A/m²) is related to P(ψ)P'(ψ) and FF(ψ)FF'(ψ) through JT=RP(ψ)+FF(ψ)/R J_T = R P'(ψ) + FF'(ψ) / R

3.2.3 Example Fortran 77 code

The following snippet can be used to load a G-EQDSK file:

      character*10 case(6)
      dimension psirz(nw,nh),fpol(1),pres(1),ffprim(1),
     .                    pprime(1),qpsi(1),rbbbs(1),zbbbs(1),
     .                    rlim(1),zlim(1)
c
      read (neqdsk,2000) (case(i),i=1,6),idum,nw,nh
      read (neqdsk,2020) rdim,zdim,rcentr,rleft,zmid
      read (neqdsk,2020) rmaxis,zmaxis,simag,sibry,bcentr
      read (neqdsk,2020) current,simag,xdum,rmaxis,xdum
      read (neqdsk,2020) zmaxis,xdum,sibry,xdum,xdum
      read (neqdsk,2020) (fpol(i),i=1,nw)
      read (neqdsk,2020) (pres(i),i=1,nw)
      read (neqdsk,2020) (ffprim(i),i=1,nw)
      read (neqdsk,2020) (pprime(i),i=1,nw)
      read (neqdsk,2020) ((psirz(i,j),i=1,nw),j=1,nh)
      read (neqdsk,2020) (qpsi(i),i=1,nw)
      read (neqdsk,2022) nbbbs,limitr
      read (neqdsk,2020) (rbbbs(i),zbbbs(i),i=1,nbbbs)
      read (neqdsk,2020) (rlim(i),zlim(i),i=1,limitr)
c
 2000 format (6a8,3i4)
 2020 format (5e16.9)
 2022 format (2i5)

3.3 Output Files

GRAY outputs are given in ASCII files at each GRAY execution. tbls. 11, 12 describe the outputs reported in units 7 and 48, respectively.

Table 6: GRAY input data gray_params.data - EC wave
Variable Type Units Valid range Definition
alpha0 Real deg 180<x180-180 < x ≤ 180 Poloidal injection angle αα, defined in eq. 9.
beta0 Real deg 90<x90-90 < x ≤ 90 Toroidal injection angle ββ, defined in eq. 9.
fghz Real GHz x>0x>0 EC frequency.
P0 Real MW x>0x>0 EC injected power.
Nrayr Integer 1 1n311 ≤ n ≤ 31 Number of rays NrN_r in radial direction + 1 in the center, 𝙽𝚛𝚊𝚢𝚛=Nr+1\texttt{Nrayr} = N_r +1.
Nrayth Integer 1 1n361 ≤ n ≤ 36 Number of rays NθN_{\theta} in angular direction.
rwmax Real x>0x > 0 “cut-off” size ρ̃max\tilde ρ_{max} of the gaussian beam. (typical 1𝚛𝚠𝚖𝚊𝚡1.51 ≤ \texttt{rwmax} ≤ 1.5), defined at page.
x0 Real cm XX coordinate of the launching point.
y0 Real cm YY coordinate of the launching point.
z0 Real cm ZZ coordinate of the launching point.
w0xi Real cm x>0x > 0 Beam waist w0,ξw_{0,\xi} in beam reference system. along ξ\xi, defined in eq. 5.
w0eta Real cm x>0x > 0 Beam waist w0,ηw_{0,\eta} in beam reference system. along η\eta, defined in eq. 5.
d0xi Real cm z\bar{z} coordinate of beam waist w0,ξw_{0,\xi},. defined in eq. 5.
d0eta Real cm z\bar{z} coordinate of beam waist w0,ηw_{0,\eta},. defined in eq. 5.
phiw Real deg 90<x90-90 < x ≤ 90 Rotation angle φw=φRφ_w=φ_R of local beam coordinate. system, defined in eq. 3.
ibeam Integer 0, 1, 2 Input source for beam data: 0=simple astigmatic beam with parameters as above, 1=simple astigmatic beam from filenmbm, 2=general astigmatic beam from filenmbm.
irho Integer 0, 1, 2 Coordinate of the input profiles: 0=ρtρ_t, 1=ρpρ_p, 2=ψψ.
filenmbm String len(s)24(s)≤ 24 Name of file (extension .txt appended) with beam. parameters, used if 𝚒𝚋𝚎𝚊𝚖>0\texttt{ibeam} >0.
iox Integer 1, 2 1=Ordinary mode (OM), 2=Extraordinary (XM) mode.
ipol Integer 0, 1 Whether to compute the mode at the launcher from the polarisation: 0=use iox, 1=use psipol0, chipol0 angles.
psipol0 Real deg 90<x90-90 < x ≤ 90 Wave polarisation angle ψp\psi_p at the launching point.
chipol0 Real deg 45x45-45 ≤ x ≤ 45 Wave polarisation angle χp\chi_p at the launching point.
Table 7: GRAY input data gray_params.data - plasma data
Variable Type Units Valid range Definition
iequil Integer 0, 1, 2 Magnetic equilibrium model: 0=vacuum (no plasma at all), 1=analytical 2=G-EQDSK.
ixp Integer -1, 0, 1 X point occurrence: -1=bottom, 0=none, +1=top.
iprof Integer 0, 1 Kinetic profiles: 0=analytical 1=numerical.
filenmeqq String len(s)24(s)≤ 24 Name of EQDSK file (extension .eqdsk appended).
ipsinorm Integer 0, 1 0=dimensional (default), 1=normalized (obsolete, for some old files psi(R,z)(R,z) in filenmeqq.
sspl Real 1 x>0x > 0 Tension of spline fit for psi (𝚜𝚜𝚙𝚕1\texttt{sspl} \ll 1 typical), 0=interpolation.
factb Real 1 x>0x > 0 Numerical factor to rescale the magnetic field BB𝚏𝚊𝚌𝚝𝚋B \rightarrow B \cdot \texttt{factb}.
factt Real 1 x>0x > 0 Numerical factor to rescale the electron temperature TeTe𝚏𝚊𝚌𝚝𝚝𝚏𝚊𝚌𝚝𝚋𝚊𝚋T_e \rightarrow T_e \cdot \texttt{factt} \cdot \texttt{factb}^\texttt{ab}.
factn Real 1 x>0x > 0 Numerical factor to rescale the electron density nene𝚏𝚊𝚌𝚝𝚗𝚏𝚊𝚌𝚝𝚋abn_e \rightarrow n_e \cdot \texttt{factn} \cdot \texttt{factb}^\text{ab}.
iscal Int 1, 2 Model for nen_e, TeT_e scaling with BB: 1=constant nGreenwaldn_{Greenwald} (ab=1), 2=none (ab=0).
filenmprf String len(s)24(s) ≤ 24 Name of file for kinetic profiles
psdbnd Real 1 x>0x > 0 Normalized psi value at the plasma boundary where nen_e is set to zero (typ. 1𝚙𝚜𝚍𝚋𝚗𝚍1.11 ≤ \texttt{psdbnd} ≤ 1.1).
sgnbphi Real 1 -1, +1, 0 Force signum of toroidal B, used if nonzero
sgniphi Real 1 -1, +1, 0 Force Signum of toroidal plasma current II, used if nonzero
icocos Int 1-8, 11-18 COCOS index used in the EQDSK equilibrium as defined in [6]:
Table 8: GRAY input data gray_params.data - ECRH&CD models and code parameters
Variable Type Units Valid range Definition
iwarm Integer 0, 1, 2, 3 Absorption model: 0=none (α=0), 1=weakly relativistic, 2=fully relativistic (fast), 3=fully relativistic (slow).
ilarm Integer 1 n1n ≥ 1 Order of Larmor radius expansion for absorption computation 𝚒𝚕𝚊𝚛𝚖>\texttt{ilarm}> local EC harmonic number.
ieccd Integer 0, 1, 11 Current drive model: 0=none, 1=Cohen, 2=No trapping 3=Neoclassical.
igrad Integer 0, 1 Ray-tracing model: 0=optical, 1=quasi-optical (requires 𝚗𝚛𝚊𝚢𝚛5\texttt{nrayr} \ge 5).
idst Integer 0, 1, 2 Ray-tracing integration variable: 0=ss, e1=ctc \cdot t, 2=SRS_R, (default=0).
dst Real cm x>0x > 0 Spatial integration step.
nstep Integer 1 0n80000 ≤ n ≤ 8000 Maximum number of integration steps.
istpr Integer 1 1n𝚗𝚜𝚝𝚎𝚙1 ≤ n ≤ \texttt{nstep} Subsampling factor for beam cross section data output (units 8, 12).
istpl Integer 1 1n𝚗𝚜𝚝𝚎𝚙1 ≤ n ≤ \texttt{nstep} Subsampling factor for outmost rays data output (unit 33).
ipec Integer 1, 2 Grid spacing for ECRH&CD profiles: 1=equispaced in ρpρ_p, 2=equispaced in ρtρ_t,
nnd Integer 1 2n50012 ≤ n ≤ 5001 Number of points in the ECRH&CD profile grid.
ipass Integer 2,1,2-2,1, 2 |𝚒𝚙𝚊𝚜𝚜|\vert\texttt{ipass}\vert=number of passes into plasma: -2=reflection at rwallm, +2=reflection at limiter. Surface given in EQDSK.
rwallm Real m x>0x > 0 Inner wall radius for 2nd pass calculations, used only for ipass=2-2.
Table 9: GRAY input data filenmprf.prf - plasma profiles
Variable Type Units Valid range Definition
npp Integer 1 2n2502 ≤ n ≤ 250 Number of points in psin table
psin real 1 0x0 ≤ x ≤ psdbnd Poloidal flux ψ\psi normalized over the value at the LCS
Te real keV x0x ≥ 0 Electron temperature
ne real 10¹⁹m⁻³ x0x ≥ 0 Electron density
Zeff real 1 x0x ≥ 0 Effective charge, ZeffZ_\text{eff}
Table 10: GRAY input data filenmbm.prf - launched beam parameters
Variable Type Units Valid range Definition
nsteer Integer 1 n50n ≤ 50 Number launching conditions in table.
gamma Real deg Steering angle w.r.t. a reference position (unused).
alpha0 Real deg 180<x180-180 < x ≤ 180 Poloidal injection angle αα.
beta0 Real deg 90x90-90 ≤ x ≤ 90 Toroidal injection angle ββ.
x0mm Real mm XX coordinate of the launching point.
y0mm Real mm YY coordinate of the launching point.
z0mm Real mm ZZ coordinate of the launching point.
w0xi Real mm x>0x > 0 Beam waist w0,ξw_{0,\xi} along ξ\xi.
w0eta Real mm x>0x > 0 Beam waist w0,ηw_{0,\eta} along η\eta.
d0xi Real mm z\bar z coordinate of beam waist w0,ξw_{0,\xi},
z=0\bar z=0 at launching point.
d0eta Real mm z\bar z coordinate of beam waist w0,ηw_{0,\eta},
z=0\bar z=0 at launching point.
wxi Real mm x>0x > 0 Beam width wξw_{\xi} at the launching point.
weta Real mm x>0x > 0 Beam width wηw_{\eta} at the launching point.
rcixi Real mm⁻¹ Inverse of phase front curvature radius 1/Rξ1/R_{\xi} at the launching point.
rcieta Real mm⁻¹ Inverse of phase front curvature radius 1/Rη1/R_{\eta} at the launching point.
phiw Real deg Rotation angle φwφ_w of the (ξw,ηw)(\xi_w,\eta_w) reference system, defined in eq. 3.
phir Real deg Rotation angle φRφ_R of the (ξR,ηR)(\xi_R,\eta_R) reference system, defined in eq. 3.
Table 11: GRAY output data - unit 7
Variable Type Units Definition
Icd Real kA EC total driven current IcdI_{cd}.
Pa Real MW EC total absorbed power PabsP_{abs}.
Jphimx Real MA⋅m⁻² EC peak current density Jφ=dIcd/dAJ_{φ}= dI_{cd}/dA.
dPdVmx Real MW⋅m⁻³ EC peak power density dP/dVdP/dV.
rhotj Real 1 ρρ value corresponding to Jphimx.
rhotp Real 1 ρρ value corresponding to dPdVmx.
drhotj Real 1 Full width at 1/e1/e of driven current density profile.
drhotp Real 1 Full width at 1/e1/e of power density profile.
Jphip Real MA⋅m⁻² EC peak current density Jφ0J_{φ 0} from Gaussian profile, defined in eq. 21.
dPdVp Real MW⋅m⁻³ EC peak power density p0p_0 from Gaussian profile, defined in eq. 21.
rhotjava Real 1 ρρ value averaged over current density profile, defined in eq. 19.
rhotpav Real 1 ρρ value averaged over power density profile, defined in eq. 19.
drhotjava Real 1 Full width of the driven current density profile, defined in eq. 20.
drhotpav Real 1 Full width of the driven power density profile, defined in eq. 20.
ratjbmx Real 1 Ratio Jcd/JφJ_{cd}/J_{φ} at ρ=ρ=rhotjava, with Jcd=𝐉𝐁/𝐁J_{cd}=\langle \mathbf{J}\cdot \mathbf{B} \rangle /\langle \mathbf{B} \rangle.
ratjamx Real 1 Ratio Jcd/JφJ_{cd}/J_{φ} at ρ=ρ=rhotjava, with Jcd=𝐉𝐁/B0J_{cd}=\langle \mathbf{J}\cdot \mathbf{B} \rangle/B_0
stmx Real cm Path from the launching point and peak dP/dVdP/dV for the central ray.
psipol Real deg ψ\psi polarisation angle at vacuum-plasma boundary.
chipol Real deg χ\chi polarisation angle at vacuum-plasma boundary.
index_rt Integer Index encoding mode and pass number, see sec. 4.1.
Table 12: GRAY output data - unit 48
Variable Type Units Definition
psin Real 1 Normalized poloidal flux.
rhot Real 1 Normalized minor radius ρρ.
Jphi Real MA⋅m⁻² EC current density Jφ=dIcd/dAJ_{φ}= dI_{cd}/dA, with AA the area of the poloidal section labelled by ρρ.
Jcdb Real MA⋅m⁻² EC current density Jcd=𝐉𝐁/𝐁J_{cd}=\langle \mathbf{J}\cdot\mathbf{B} \rangle /\langle \mathbf{B} \rangle.
dPdV Real MW⋅m⁻³ EC power density p(ρ)=dP/dVp(ρ)=dP/dV.
Icdins Real kA EC current driven inside surface of radius ρρ, Iins(ρ)=0ρJcddAI_{ins}(ρ)=\int_0^{ρ} J_{cd} dA.
Pins Real MW EC power absorbed inside surface of radius ρρ, Pins(ρ)=0ρpdVP_{ins}(ρ)=\int_0^{ρ}p dV.
P% Real 1 Fraction of power deposited inside radius ρρ, P%(ρ)=Pins/Pabs(ρ)=P_{ins}/P_{abs}.
index_rt Integer Index encoding mode and pass number, see sec. 4.1.

4 Implementation

4.1 index_rt

The index_rt is a unique index assigned to each combination of beam propagation mode and number of passes into the plasma. Initially index_rt is 1 for the ordinary mode or 2 for the extraordinary mode. Due to the mode mixing, on subsequent passes each beam splits into two modes and the index_rt is updated as:

  index_rt = 2*index_rt + 1  ! for the O mode
  index_rt = 2*index_rt + 2  ! for the X mode

It follows that ordinary(extraordinary) modes respectively have odd(even) indices and the number of passes is given by log(1+𝚒𝚗𝚍𝚎𝚡_𝚛𝚝)\lfloor \log₂(1 + \texttt{index\_rt}) \rfloor. For example, an index_rt=19 denotes the following chain: mode:OXOO𝚒𝚗𝚍𝚎𝚡_𝚛𝚝:14919 \begin{aligned} \text{mode:} && O &→ X → O → O \\ \texttt{index\_rt:} && 1 &→ 4 → 9 → 19 \end{aligned}

5 Changelog

The code GRAY is maintained under Git revision control in a local repository at ISTP-CNR. The changes in input/output variables and parameters names are listed in tbl. 13, below.

Table 13: Changes in variables names/definitions
Unit Rev. 4 Rev. 19 Rev. 24+ Rev. 60 Notes
2,78 alfac alpha0
2,78 betac beta0
2,78 nray nrayr
2,78 ktx nrayth
2,78 rmx rwmax
2,78 x00 x0
2,78 y00 y0
2,78 z00 z0
2,78 w0xt w0xi
2,78 w0yt w0eta
2,78 pw0xt d0xi
2,78 pw0yt d0eta
2,78 awr phiw
2,78 psipola psipol0
2,78 chipola chipol0
7 - ratjbmx Column header missing until rev. 24.
7 - ratjamx
7 - Jphip
7 - dPdVp
7 polpsi psipol
7 polchi chipol
48 Jcda Jcdb Jcda: ASTRA, CRONOS,…, Jcdb: JINTRAC def. See eq. 17.

Bibliography

[1]
D. Farina, A quasi-optical beam-tracing code for electron cyclotron absorption and current drive: GRAY, Fusion Science and Technology. 52 (2007) 154–160. https://doi.org/10.13182/fst07-a1494.
[2]
J.A. Arnaud, H. Kogelnik, Gaussian light beams with general astigmatism, Applied Optics. 8 (1969) 1687. https://doi.org/10.1364/ao.8.001687.
[3]
A. Zvonkov, Y. Gribov, H. Bindslev, ???, (n.d.).
[4]
D. Farina, Relativistic dispersion relation of electron cyclotron waves, Fusion Science and Technology. 53 (2008) 130–138. https://doi.org/10.13182/fst08-a1660.
[5]
N.B. Marushchenko, C.D. Beidler, H. Maassberg, Current drive calculations with an advanced adjoint approach, Fusion Science and Technology. 55 (2009) 180–187. https://doi.org/10.13182/fst55-180.
[6]
O. Sauter, S.Yu. Medvedev, Tokamak coordinate conventions: COCOS, Computer Physics Communications. 184 (2013) 293–302. https://doi.org/10.1016/j.cpc.2012.09.010.

  1. Istituto per la Scienza e Tecnologia dei Plasmi, Consiglio Nazionale delle Ricerche Via R. Cozzi, 53 - 20125 Milano, Italy↩︎

  2. Istituto per la Scienza e Tecnologia dei Plasmi, Consiglio Nazionale delle Ricerche Via R. Cozzi, 53 - 20125 Milano, Italy↩︎

  3. Istituto per la Scienza e Tecnologia dei Plasmi, Consiglio Nazionale delle Ricerche Via R. Cozzi, 53 - 20125 Milano, Italy↩︎

  4. Università degli Studi di Milano-Bicocca, Piazza dell’Ateneo Nuovo, 1 - 20126, Milano↩︎