Go to the documentation of this file.
65 const Index& demand_vmr_value,
83 if (demand_vmr_value) {
85 "Free electrons not found in *abs_species* and "
86 "contribution to refractive index can not be calculated.");
98 "All frequencies must be >= 100 MHz, but "
99 "this is not the case.");
103 os <<
"All frequencies must at least be twice the plasma frequency.\n"
104 <<
"For this particular point, the plasma frequency is: "
105 <<
sqrt(edensity * k) / 1e6 <<
" MHz.";
106 throw runtime_error(os.str());
110 const Numeric a = edensity * k / (f * f);
125 static const Numeric bn0 = 1.000272620045304;
126 static const Numeric bn02 = bn0 * bn0;
127 static const Numeric bk = 288.16 * (bn02 - 1.0) / (1013.25 * (bn02 + 2.0));
151 "The number of tag groups differ between "
152 "*rtp_vmr* and *abs_species*.");
201 ref_spec_names[0] =
"N2";
202 ref_spec_names[1] =
"O2";
203 ref_spec_names[2] =
"CO2";
204 ref_spec_names[3] =
"H2";
205 ref_spec_names[4] =
"He";
206 ref_spec_names[5] =
"H2O";
211 ref_n[0] = 293.81e-6;
212 ref_n[1] = 266.95e-6;
213 ref_n[2] = 495.16e-6;
214 ref_n[3] = 135.77e-6;
219 ref_n[5] = 5338.89e-6;
224 "The number of tag groups differ between "
225 "*rtp_vmr* and *abs_species*.");
250 for (
Index i = 0; i < nrs; ++i) {
272 for (
Index i = 0; i < nrs; ++i) {
273 if (ref_spec_locations[i] >= 0) {
275 ref_spec_vmr_sum +=
rtp_vmr[ref_spec_locations[i]];
278 n += ref_n[i] *
rtp_vmr[ref_spec_locations[i]];
294 if (ref_spec_vmr_sum != 0) n /= ref_spec_vmr_sum;
297 n *= (ratioT * ratiop);
309 const Numeric& refr_index_real,
310 const Numeric& refr_index_imag,
329 if (
min(t_grid) < 250) {
331 out1 <<
"WARNING! The minimum chosen temperature is " <<
min(t_grid)
332 <<
". Temperatures below 250 K may lead to incorrect values of"
333 " *complex_refr_index*.\n";
348 for (
Index t = 0; t < nt; ++t) {
366 "min of complex_refr_index f_grid",
min(
f_grid), f_min, f_max);
368 "max of complex_refr_index f_grid",
max(
f_grid), f_min, f_max);
374 "min of complex_refr_index t_grid",
min(t_grid), t_min, t_max);
376 "max of complex_refr_index t_grid",
max(t_grid), t_min, t_max);
387 for (
Index i_t = 0; i_t < nt; ++i_t) {
427 for (
Index f = 0; f < nf; ++f)
428 for (
Index t = 0; t < nt; ++t) {
444 throw std::runtime_error(
"ARTS was not compiled with Fortran support.");
void refr_index_airMicrowavesGeneral(Numeric &refr_index_air, Numeric &refr_index_air_group, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const Vector &rtp_vmr, const ArrayOfArrayOfSpeciesTag &abs_species, const Verbosity &)
WORKSPACE METHOD: refr_index_airMicrowavesGeneral.
Declarations required for the calculation of absorption coefficients.
void refr_index_airInfraredEarth(Numeric &refr_index_air, Numeric &refr_index_air_group, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const Verbosity &)
WORKSPACE METHOD: refr_index_airInfraredEarth.
void refr_index_airFreeElectrons(Numeric &refr_index_air, Numeric &refr_index_air_group, const Vector &f_grid, const ArrayOfArrayOfSpeciesTag &abs_species, const Vector &rtp_vmr, const Index &demand_vmr_value, const Verbosity &)
WORKSPACE METHOD: refr_index_airFreeElectrons.
Numeric last(ConstVectorView x)
last
Verbosity verbosity(Workspace &ws) noexcept
const Numeric VACUUM_PERMITTIVITY
Numeric refr_index_air(Workspace &ws) noexcept
void complex_refr_indexWaterLiebe93(GriddedField3 &complex_refr_index, const Vector &f_grid, const Vector &t_grid, const Verbosity &verbosity)
WORKSPACE METHOD: complex_refr_indexWaterLiebe93.
Vector rtp_vmr(Workspace &ws) noexcept
void complex_n_water_liebe93(Matrix &complex_n, const Vector &f_grid, const Numeric &t)
complex_n_water_liebe93
std::complex< Numeric > Complex
void complex_refr_indexIceMatzler06(GriddedField3 &complex_refr_index, const Vector &f_grid, const Vector &t_grid, const Verbosity &)
WORKSPACE METHOD: complex_refr_indexIceMatzler06.
const Numeric ELECTRON_MASS
Numeric sqrt(const Rational r)
Square root.
GriddedField3 complex_refr_index(Workspace &ws) noexcept
Implementation of Matrix, Vector, and such stuff.
This can be used to make arrays out of anything.
Index species_index_from_species_name(String name)
Return species index for given species name.
Declarations having to do with the four output streams.
void complex_refr_indexIceWarren84(GriddedField3 &, const Vector &, const Vector &, const Verbosity &)
WORKSPACE METHOD: complex_refr_indexIceWarren84.
const Numeric ELECTRON_CHARGE
Index nelem() const
Returns the number of elements.
This file contains declerations of functions of physical character.
ArrayOfArrayOfSpeciesTag abs_species(Workspace &ws) noexcept
NUMERIC Numeric
The type to use for all floating point numbers.
Numeric refr_index_air_group(Workspace &ws) noexcept
Vector f_grid(Workspace &ws) noexcept
Type
Type of line shape to compute.
Numeric rtp_pressure(Workspace &ws) noexcept
invlib::Vector< ArtsVector > Vector
invlib wrapper type for ARTS vectors.
Numeric rtp_temperature(Workspace &ws) noexcept
void refr_index_airMicrowavesEarth(Numeric &refr_index_air, Numeric &refr_index_air_group, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const Vector &rtp_vmr, const ArrayOfArrayOfSpeciesTag &abs_species, const Numeric &k1, const Numeric &k2, const Numeric &k3, const Verbosity &)
WORKSPACE METHOD: refr_index_airMicrowavesEarth.
Header file for special_interp.cc.
const Numeric SPEED_OF_LIGHT
INDEX Index
The type to use for all integer numbers and indices.
void complex_refr_indexConstant(GriddedField3 &complex_refr_index, const Numeric &refr_index_real, const Numeric &refr_index_imag, const Verbosity &)
WORKSPACE METHOD: complex_refr_indexConstant.
void complex_n_ice_matzler06(Matrix &complex_n, const Vector &f_grid, const Numeric &t)
complex_n_ice_matzler06
Complex refice_(const Numeric &wavlen, const Numeric &temp)
Calculates complex refractive index of Ice 1H.
The global header file for ARTS.