Ticket #167 (new defect - etc)

Opened 18 months ago

Last modified 11 months ago

Bad line profile in rt_line_one

Reported by: rjrw Owned by: nobody
Priority: critical Milestone: C10 release
Component: radiative transfer Version: trunk
Keywords: Cc:

Description

The default line profile used in rt_line_one doesn't look anything like a Voigt profile.

A more accurate implementation can now be switched on by changing the branch used in function getVoigt -- it needs to be verified that this version is correct, and the impact on run time assessed.

Attachments

profile.pdf (3.6 kB) - added by gary 12 months ago.
Robin's plot of the profile

Change History

Changed 14 months ago by rjrw

I introduced variable names to the code at r4358 which explain the issues.

The alternative branch will slow the code; Peter says he can do something better.

Changed 12 months ago by gary

Robin's plot of the profile

Changed 12 months ago by gary

code in question is rt_line_one.cpp:395

Changed 12 months ago by peter

In r4619, r4620, and r4621 several (wrapper) routines were added that should help in calculating Voigt profiles.

VoigtU() calculates a Voigt profile U(a,v) using the normalization in Eq. 9-45 of Mihalas.

VoigtH() calculates a Voigt profile H(a,v) using the normalization in Eq. 9-44 of Mihalas.

VoigtU0() calculates U(a,0), i.e. the central depth of the profile.

VoigtH0() calculates H(a,0).

The last two routines are faster and more accurate than the generic Voigt routine, but obviously only work at the line center.

Changed 12 months ago by peter

In r4624 a fast version of VoigtH() was added, called FastVoigtH().

Changed 12 months ago by peter

In r4627 FastVoigtH() was tuned further and some comments were added regarding its accuracy.

Changed 12 months ago by peter

In r4630 a higher order term was added to FastVoigtH() to increase its accuracy and extend the region where it can be applied to higher a values.

Changed 11 months ago by peter

A bug in r4624 was fixed in r4695.

Changed 11 months ago by peter

In r4703 the unit tests were fixed and int_ex2() was renamed to dawson().

Note: See TracTickets for help on using tickets.