ARTS 2.5.9 (git: 825fa5f2)
predefined_absorption_models.h
Go to the documentation of this file.
1/* Copyright (C) 2020
2 * Richard Larsson <ric.larsson@gmail.com>
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2, or (at your option) any
7 * later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA. */
18
28#ifndef fullmodel_h
29#define fullmodel_h
30
31#include "jacobian.h"
32#include "predefined/predef_data.h"
33#include "propagationmatrix.h"
34#include "species.h"
35#include <algorithm>
36#include <random>
37
44struct VMRS {
50
56 VMRS(const ArrayOfArrayOfSpeciesTag& abs_species, const Vector& rtp_vmr) :
57 CO2(Species::first_vmr(abs_species, rtp_vmr, Species::Species::CarbonDioxide)),
58 O2(Species::first_vmr(abs_species, rtp_vmr, Species::Species::Oxygen)),
59 N2(Species::first_vmr(abs_species, rtp_vmr, Species::Species::Nitrogen)),
60 H2O(Species::first_vmr(abs_species, rtp_vmr, Species::Species::Water)),
61 LWC(Species::first_vmr(abs_species, rtp_vmr, Species::Species::liquidcloud))
62 {}
63
64 constexpr VMRS() = default;
65
66 friend std::ostream& operator<<(std::ostream& os, const VMRS& vmrs) {
67 return os << "O2: " << vmrs.O2 << '\n' <<
68 "N2: " << vmrs.N2 << '\n' <<
69 "H2O: " << vmrs.H2O << '\n';
70 }
71};
72
74bool can_compute(const SpeciesIsotopeRecord& model);
75
90void compute(
91 PropagationMatrix& propmat_clearsky,
92 ArrayOfPropagationMatrix& dpropmat_clearsky_dx,
93 const SpeciesIsotopeRecord& tag,
94 const Vector& f_grid,
95 const Numeric& rtp_pressure,
96 const Numeric& rtp_temperature,
97 const VMRS& vmr,
98 const ArrayOfRetrievalQuantity& jacobian_quantities,
99 const PredefinedModelData& predefined_model_data);
100} // namespace Absorption::PredefinedModel
101
102#endif // fullmodel_h
The Vector class.
Definition: matpackI.h:910
Routines for setting up the jacobian.
NUMERIC Numeric
The type to use for all floating point numbers.
Definition: matpack.h:33
bool can_compute(const SpeciesIsotopeRecord &model)
Returns true if the model can be computed.
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.
Stuff related to the propagation matrix.
Contains known required VMR values.
friend std::ostream & operator<<(std::ostream &os, const VMRS &vmrs)
VMRS(const ArrayOfArrayOfSpeciesTag &abs_species, const Vector &rtp_vmr)
Construct a new VMRS object.
Struct containing all information needed about one isotope.
Definition: isotopologues.h:16