ReFRACtor
FullPhysics::SolarAbsorptionGfitFile Class Reference

This class calculates the solar absorption spectrum. More...

#include <solar_absorption_gfit_file.h>

+ Inheritance diagram for FullPhysics::SolarAbsorptionGfitFile:
+ Collaboration diagram for FullPhysics::SolarAbsorptionGfitFile:

Public Member Functions

 SolarAbsorptionGfitFile (const std::string &Line_list_file, double Fraction_solar_diameter=1.0)
 Read the given line list file, and use for calculating the solar absorption spectrum. More...
 
virtual ~SolarAbsorptionGfitFile ()
 
double fraction_solar_diameter () const
 Fraction of solar diameter that we view. More...
 
virtual void print (std::ostream &Os) const
 Print description of object. More...
 
std::string print_to_string () const
 Print to string. More...
 
virtual Spectrum solar_absorption_spectrum (const SpectralDomain &spec_domain) const
 This calculates the solar absorption spectrum. More...
 

Detailed Description

This class calculates the solar absorption spectrum.

This particular implementation reads the GFIT format absorption line list file. This is a fixed record file format that gives the absorption line list data.

From the Fortran code:

Calculates the solar optical thickness spectrum (SOT) at any wavelengths.

Taking the exponential of SOT produces the solar spectrum as it would be observed at infinite spectral resolution.

All solar lines are assumed to have a shape of the form

\[SOT = s \exp\left(-\frac{x^2}{\sqrt{d^4+x^2 y^2}}\right)\]

where

s
is the line-center optical thickness (dimensionless)
x
is the frequency from line center (cm-1)
y
is the 1/e folding width (cm-1)
d
is the Doppler width (cm-1)

In the doppler limit, i.e. $ d^2 \gg x.y $

\[SOT = s \exp\left(-{\frac{x}{d}}^2\right)\]

In the far line wing limit, i.e. $x y \gg d^2$,

\[SOT = s \exp\left(- \left|\frac{x}{y}\right|\right)\]

So near the line center, the lineshape is Doppler, but in the line wings it decays exponentially (if y>0).

This choice of lineshape has no physical basis. It just seems to give a reasonable representation is nearly all cases. The only cases in which this lineshape does not give an adequate representation of the absorption are the extremely broad lines of light atmos such as H (atomic hydrogen) or Mg. However, by representing the H absorptions as superpositions of two lines, one narrow and the other broad, adequate results were obtained.

Molecular absorptions (e.g. CO, OH, NH, CN) tend to have narrow, Doppler lineshapes because they are confined to a relatively narrow layer in the cooler, upper, part of the solar atmosphere. In the hotter depths they are dissociated.

Atomic transitions, on the other hand, are formed over a much wider range of solar altitudes, and hence temperatures. This gives rise to line shapes whose wings decay in an approximately exponential manner with the distance from line center. The line shape of equation (1) does a reasonable job in both cases.

This subroutine also makes allowances for the effect of the finite FOV of the observing instrument, which gives rise to:

  1. broadening of the solar lines due to the linear variation of the Doppler shift from solar rotation across the solar disk.
  2. deepening of the solar lines due to limb darkening. It assumes that an instrument which observes the entire solar disk will observe lines which are, on average, twice the strength of an instrument just observing the center of the disk.
Todo:
Note that the Fraction_solar_diameter parameter is completely ignored, the underlying Fortran code ignores this value and sets the variable "sld" to 1.0 regardless of the Fraction_solar_diameter passed in.

Definition at line 81 of file solar_absorption_gfit_file.h.

Constructor & Destructor Documentation

◆ SolarAbsorptionGfitFile()

SolarAbsorptionGfitFile::SolarAbsorptionGfitFile ( const std::string &  Line_list_file,
double  Fraction_solar_diameter = 1.0 
)

Read the given line list file, and use for calculating the solar absorption spectrum.

Parameters
Line_list_fileLine list file
Fraction_solar_diameterFraction of Solar diameter viewed.

Definition at line 27 of file solar_absorption_gfit_file.cc.

◆ ~SolarAbsorptionGfitFile()

virtual FullPhysics::SolarAbsorptionGfitFile::~SolarAbsorptionGfitFile ( )
inlinevirtual

Definition at line 85 of file solar_absorption_gfit_file.h.

Member Function Documentation

◆ fraction_solar_diameter()

double FullPhysics::SolarAbsorptionGfitFile::fraction_solar_diameter ( ) const
inline

Fraction of solar diameter that we view.

Definition at line 93 of file solar_absorption_gfit_file.h.

◆ print()

void SolarAbsorptionGfitFile::print ( std::ostream &  Os) const
virtual

Print description of object.

Reimplemented from FullPhysics::SolarAbsorptionSpectrum.

Definition at line 37 of file solar_absorption_gfit_file.cc.

◆ print_to_string()

std::string FullPhysics::Printable< SolarAbsorptionSpectrum >::print_to_string ( ) const
inlineinherited

Print to string.

This is primarily useful for SWIG wrappers to this class, e.g. a to_s method in ruby.

Definition at line 31 of file printable.h.

◆ solar_absorption_spectrum()

Spectrum SolarAbsorptionGfitFile::solar_absorption_spectrum ( const SpectralDomain Spec_domain) const
virtual

This calculates the solar absorption spectrum.

Parameters
Spec_domainWavenumber/Wavelength to return solar absorption spectrum for.
Returns
The solar absorption spectrum. This is unit less, it is a scaled value with 1.0 being no absorption.

Note that the spectral domain here is in the solar rest frame, not the earth rest frame used in most other places. The class SolarAbsorptionAndContinuum handles this conversion internally.

Implements FullPhysics::SolarAbsorptionSpectrum.

Definition at line 44 of file solar_absorption_gfit_file.cc.


The documentation for this class was generated from the following files:

Copyright © 2017, California Institute of Technology.
ALL RIGHTS RESERVED.
U.S. Government Sponsorship acknowledged.
Generated Fri Aug 24 2018 15:44:13