28#include <predef_data.h>
36 predefined_model_data = PredefinedModelData{};
40 PredefinedModelData& predefined_model_data,
44 const Vector& self_absco_ref,
45 const Vector& for_absco_ref,
49 const auto sz = self_absco_ref.
size();
52 sz not_eq for_absco_ref.
size() or sz not_eq wavenumbers.
size() or
53 sz not_eq self_texp.
size(),
54 "Mismatching size, all vector inputs must be the same length")
57 "The wavenumbers must be increasing in a regular manner")
59 Absorption::PredefinedModel::MT_CKD400::WaterData x;
60 x.ref_temp = ref_temp;
61 x.ref_press = ref_press;
62 x.ref_h2o_vmr = ref_h2o_vmr;
63 x.self_absco_ref.resize(sz);
64 x.for_absco_ref.resize(sz);
65 x.wavenumbers.resize(sz);
66 x.self_texp.resize(sz);
69 self_absco_ref.
begin(), self_absco_ref.
end(), x.self_absco_ref.begin());
71 for_absco_ref.
begin(), for_absco_ref.
end(), x.for_absco_ref.begin());
72 std::copy(wavenumbers.
begin(), wavenumbers.
end(), x.wavenumbers.begin());
73 std::copy(self_texp.
begin(), self_texp.
end(), x.self_texp.begin());
75 predefined_model_data.set(std::move(x));
82 const PredefinedModelData& predefined_model_data,
93 "Mismatch dimensions on species and VMR inputs");
96 "Mismatch dimensions on internal matrices of xsec and frequency");
99 if (dpropmat_clearsky_dx.
nelem()) {
101 dpropmat_clearsky_dx.
nelem() not_eq jacobian_quantities.
nelem(),
102 "Mismatch dimensions on xsec derivatives and Jacobian grids");
104 std::any_of(dpropmat_clearsky_dx.cbegin(),
105 dpropmat_clearsky_dx.cend(),
107 return x.NumberOfFrequencies() not_eq f_grid.nelem();
109 "Mismatch dimensions on internal matrices of xsec derivatives and frequency");
113 for (
auto& tag_groups : abs_species) {
114 if (select_abs_species.
nelem() and select_abs_species not_eq tag_groups)
116 for (
auto& tag : tag_groups) {
118 dpropmat_clearsky_dx,
125 predefined_model_data);
This can be used to make arrays out of anything.
Index nelem() const ARTS_NOEXCEPT
Index nelem() const noexcept
Returns the number of elements.
Index size() const noexcept
Index NumberOfFrequencies() const
The number of frequencies of the propagation matrix.
Iterator1D begin() ARTS_NOEXCEPT
Return iterator to first element.
Iterator1D end() ARTS_NOEXCEPT
Return iterator behind last element.
Helper macros for debugging.
#define ARTS_USER_ERROR_IF(condition,...)
bool is_regularly_increasing_within_epsilon(ConstVectorView x, const Numeric epsilon)
Header file for logic.cc.
void predefined_model_dataAddWaterMTCKD400(PredefinedModelData &predefined_model_data, const Numeric &ref_temp, const Numeric &ref_press, const Numeric &ref_h2o_vmr, const Vector &self_absco_ref, const Vector &for_absco_ref, const Vector &wavenumbers, const Vector &self_texp, const Verbosity &)
WORKSPACE METHOD: predefined_model_dataAddWaterMTCKD400.
void propmat_clearskyAddPredefined(PropagationMatrix &propmat_clearsky, ArrayOfPropagationMatrix &dpropmat_clearsky_dx, const PredefinedModelData &predefined_model_data, const ArrayOfArrayOfSpeciesTag &abs_species, const ArrayOfSpeciesTag &select_abs_species, const ArrayOfRetrievalQuantity &jacobian_quantities, const Vector &f_grid, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const Vector &rtp_vmr, const Verbosity &)
WORKSPACE METHOD: propmat_clearskyAddPredefined.
void predefined_model_dataInit(PredefinedModelData &predefined_model_data, const Verbosity &)
WORKSPACE METHOD: predefined_model_dataInit.
NUMERIC Numeric
The type to use for all floating point numbers.
void compute(PropagationMatrix &propmat_clearsky, ArrayOfPropagationMatrix &dpropmat_clearsky_dx, const SpeciesIsotopeRecord &model, const Vector &f_grid, const Numeric &rtp_pressure, const Numeric &rtp_temperature, const VMRS &vmr, const ArrayOfRetrievalQuantity &jacobian_quantities, const PredefinedModelData &predefined_model_data)
Compute the predefined model.
Contains known required VMR values.