35 throw std::runtime_error(
"Must have Numeric_t, input type is bad");
49 x.r_upp =
mvalue(i, 0, 0, 0);
52 if (found1 and found2)
60 const Index& line_index,
64 throw std::runtime_error(
"Must have Numeric_t, input type is bad");
79 x.T_upp =
mvalue(i, 0, 0, 0);
83 if (found1 and found2) {
103 mvalue(data.nrows(), 1, 1, data.ncols())
124 throw std::runtime_error(
"Must have Tensor3_t, input type is bad");
132 for (
Index itnlte = 0; itnlte < nnlte; itnlte++)
135 p, lat, lon, itw_field);
146 throw std::runtime_error(
"Must have Vector_t, input type is bad");
150 os <<
"Bad dims for data:\n\tThe pressure dim of data contains: " 151 <<
mvalue.
ncols() <<
" values and you are requesting element index " << ip <<
"\n";
152 throw std::runtime_error(os.str());
163 else if (s ==
"Vector")
165 else if (s ==
"Numeric")
167 else if (s ==
"None")
171 os <<
"Only \"None\", \"Numeric\", \"Vector\", and \"Tensor3\" types accepted\n" 172 <<
"You request to have an EnergyLevelMap of type: " << s <<
'\n';
173 throw std::runtime_error(os.str());
195 << elm.
Data() <<
'\n' 204 throw std::runtime_error(
"Must have Tensor3_t, input type is bad");
INDEX Index
The type to use for all integer numbers and indices.
String energylevelmaptype2string(EnergyLevelMapType type)
Output4 get_vibtemp_params(const AbsorptionLines &band, const Index &line_index, const Numeric T) const
Get the output required for Population::NLTE-VibrationalTemperatures.
Index nelem() const
Number of elements.
Output2 get_ratio_params(const AbsorptionLines &band, const Index &line_index) const
Get the output required for Population::NLTE.
const Tensor4 & Data() const noexcept
Energy level type.
const Vector & Energies() const noexcept
Energy level type.
G0 G2 FVC Y DV Numeric Numeric Numeric Zeeman LowerQuantumNumbers void * data
EnergyLevelMapType Type() const noexcept
Energy level type.
ArrayOfQuantumIdentifier mlevels
void ThrowIfNotOK() const
std::ostream & operator<<(std::ostream &os, const EnergyLevelMap &elm)
const ArrayOfQuantumIdentifier & Levels() const noexcept
Energy level type.
bool id_in_line_upper(const Lines &band, const QuantumIdentifier &id, size_t line_index)
Checks if the external quantum identifier match a line's ID.
EnergyLevelMap InterpToGridPos(Index atmosphere_dim, const ArrayOfGridPos &p, const ArrayOfGridPos &lat, const ArrayOfGridPos &lon) const
NUMERIC Numeric
The type to use for all floating point numbers.
void interp_atmfield_gp2itw(Matrix &itw, const Index &atmosphere_dim, const ArrayOfGridPos &gp_p, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon)
Converts atmospheric grid positions to weights for interpolation of an atmospheric field...
Header file for special_interp.cc.
Class to map energy levels.
EnergyLevelMap operator[](Index ip) const
basic_ostringstream< char, string_char_traits< char >, alloc > ostringstream
Index nelem(const Lines &l)
Number of lines.
EnergyLevelMap operator()(Index ip, Index ilat, Index ilon) const
EnergyLevelMapType string2energylevelmaptype(const String &s)
Index ncols() const
Returns the number of columns.
void interp_atmfield_by_itw(VectorView x, const Index &atmosphere_dim, ConstTensor3View x_field, const ArrayOfGridPos &gp_p, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon, ConstMatrixView itw)
Interpolates an atmospheric field with pre-calculated weights by interp_atmfield_gp2itw.
bool id_in_line_lower(const Lines &band, const QuantumIdentifier &id, size_t line_index)
Checks if the external quantum identifier match a line's ID.