cherab / core

The core source repository for the Cherab project.
https://www.cherab.info
Other
45 stars 24 forks source link

Improve Gaunt factor in Bremsstrahlung emission model #351

Closed vsnever closed 1 year ago

vsnever commented 2 years ago

This issue was briefly discussed at ITER Synthetic Diagnostic meeting, so I'm putting it here.

The applicability of the Gaunt factor, G, in Bremsstrahlung emission model, https://github.com/cherab/core/blob/0eb7454137b17bfbeca6d5e3eae4281f9cd4c157/cherab/core/model/plasma/bremsstrahlung.pyx#L99-L100 is very limited. It's missing the dependance on the wavelength and Zeff, which means that it can only be used within a limited range of the visible spectrum and only for the hot plasma, Te >~ 100 eV.

This Gaunt factor is compared with classical and Born approximations for the Gaunt factor in this ITER report, 3338YT.

Briefly, Gclass can be used if α ≡ Zeff/(Te/Rd)1/2 ≫ 1 and GBorn can be used if α ≪ 1. Here: Gclass ≈ √3/π ln(2.e-4 · Te3/2[eV]/Zeff · λ[nm] + exp(π/√3)) and GBorn ≈ 0.55 · ln(0.0018 λ[nm] Te[eV]) (low frequency limit).

The easiest solution would be to use a combination of Gclass and GBorn in Cherab. The following two figures show Gclass(Te, λ) and GBorn(Te, λ) as well as their difference (left plot) and combination, Geff, for Zeff = 1 and Zeff = 2. The vertical line shows α=1/√2

Using Gclass for Te < 2 Rd Zeff 2 and min(Gclass, GBorn) for Te > 2 Rd Zeff 2 will improve accuracy for low temperatures and in infrared spectral range. gaunt_factor_born_vs_classic_zeff_1 0 gaunt_factor_born_vs_classic_zeff_2 0

I would like to hear other opinions on this, so we probably continue discussions at ITER Synthetic Diagnostic meetings.

vsnever commented 2 years ago

We can also interpolate the Gaunt factor from Table 2 from T.R. Carson "Coulomb free-free Gaunt factors" 1988 Astron. Astrophys. 189 319-324.

Mateasek commented 2 years ago

Hi @vsnever,

I remember Martin O'Mullane saing that they use the table in ADAS. I lost the reference, so I can't verify if it is the same work. Using interpolation of the table will probably result in more precise data right? In this case I think it would be preferable.Where would we store it? It should probably go to an atomic repo, right?

vsnever commented 2 years ago

Hi @Mateasek,

It's likely that we will need approximations in addition to the table for the values outside of the table's range. By the way I found more recent tables in M.A. de Avillez and D. Breitschwerdt "Temperature-averaged and total free-free Gaunt factors for κ and Maxwellian distributions of electrons" arXiv:1505.05608 [astro-ph.HE], which cover broader range of parameters.

Where would we store it? It should probably go to an atomic repo, right?

Yes, this is definitely the atomic data. I think we should create a base FreeFreeGauntFactor class and MaxwellianFreeFreeGauntFactor child class in cherab.core.atomic.gaunt_factors.pyx (κ-distributions can be implemented later on-demand). The child class will use the tables redistributed within the package in json format (probably in cherab/core/atomic/data). The base AtomicData class needs to be updated to include free_free_gaunt_factor() method, which unlike other methods should be implemented already in the base class.

vsnever commented 2 years ago

I checked that the Gaunt factors in Carson and de Avillez are identical, although in de Avillez they are calculated for a wider range of parameters.

Here is the comparison of the approximated (Geff from the previous figure) and the interpolated (de Avillez) Gaunt factors. It can be seen that the Born approximation works well at high Te and therefore can be used outside the interpolation range of the de Avillez's data. gaunt_factor_avillez_vs_approx_zeff_1 0

jacklovell commented 1 year ago

Fixed by #352