ARTS 2.5.11 (git: 725533f0)
cia.h
Go to the documentation of this file.
1
14#ifndef cia_h
15#define cia_h
16
17#include <memory>
18
19#include "gridded_fields.h"
20#include "matpack_data.h"
21#include "messages.h"
22#include "mystring.h"
23#include "species.h"
24
25// Declare existance of some classes:
26class bifstream;
27class CIARecord;
28
30
31/* Header with implementation. */
32void cia_interpolation(VectorView result,
33 const ConstVectorView& frequency,
34 const Numeric& temperature,
35 const GriddedField2& cia_data,
36 const Numeric& T_extrapolfac,
37 const Index& robust,
38 const Verbosity& verbosity);
39
40Index cia_get_index(const ArrayOfCIARecord& cia_data,
41 const Species::Species sp1,
42 const Species::Species sp2);
43
44std::shared_ptr<CIARecord> cia_get_data(
45 const std::vector<std::shared_ptr<CIARecord>>& cia_data,
46 const Species::Species sp1,
47 const Species::Species sp2);
48
57class CIARecord {
58 public:
67 [[nodiscard]] String MoleculeName(const Index i) const;
68
79 void SetMoleculeName(const Index i, const String& name);
80
86 [[nodiscard]] Species::Species Species(const Index i) const {
87 // Assert that i is 0 or 1:
88 ARTS_ASSERT(i >= 0);
89 ARTS_ASSERT(i <= 1);
90
91 return mspecies[i];
92 }
93
96 [[nodiscard]] Index DatasetCount() const { return mdata.nelem(); }
97
100 [[nodiscard]] ConstVectorView FrequencyGrid(Index dataset) const {
101 ARTS_ASSERT(dataset >= 0);
102 ARTS_ASSERT(dataset < mdata.nelem());
103
104 return mdata[dataset].get_numeric_grid(0);
105 }
106
109 [[nodiscard]] ConstVectorView TemperatureGrid(Index dataset) const {
110 ARTS_ASSERT(dataset >= 0);
111 ARTS_ASSERT(dataset < mdata.nelem());
112
113 return mdata[dataset].get_numeric_grid(1);
114 }
115
118 [[nodiscard]] const GriddedField2& Dataset(Index dataset) const {
119 ARTS_ASSERT(dataset >= 0);
120 ARTS_ASSERT(dataset < mdata.nelem());
121
122 return mdata[dataset];
123 }
124
127 [[nodiscard]] const ArrayOfGriddedField2& Data() const { return mdata; }
128
132
137 void SetSpecies(const Species::Species first, const Species::Species second) {
138 mspecies[0] = first;
139 mspecies[1] = second;
140 }
141
154 void Extract(VectorView result,
155 const ConstVectorView& f_grid,
156 const Numeric& temperature,
157 const Numeric& T_extrapolfac,
158 const Index& robust,
159 const Verbosity& verbosity) const;
160
173 [[nodiscard]] Numeric Extract(const Numeric& frequency,
174 const Numeric& temperature,
175 const Numeric& T_extrapolfac,
176 const Index& robust,
177 const Verbosity& verbosity) const {
178 Vector result(1);
179 const Vector freqvec(1, frequency);
180
181 Extract(result,
182 freqvec,
183 temperature,
184 T_extrapolfac,
185 robust,
186 verbosity);
187
188 return result[0];
189 }
190
192 void ReadFromCIA(const String& filename, const Verbosity& verbosity);
193
194 friend void xml_read_from_stream(istream& is_xml,
195 CIARecord& cr,
196 bifstream* pbifs,
197 const Verbosity& verbosity);
198
200 void AppendDataset(const CIARecord& c2);
201
202 [[nodiscard]] std::array<Species::Species, 2> TwoSpecies() const {
203 return mspecies;
204 }
205 std::array<Species::Species, 2>& TwoSpecies() { return mspecies; }
206
207 CIARecord() = default;
208
210 Species::Species spec1,
211 Species::Species spec2)
212 : mdata(std::move(data)), mspecies({spec1, spec2}) {}
213
214 friend ostream& operator<<(ostream& os, const CIARecord& cr);
215
216 private:
218 void AppendDataset(const Vector& freq,
219 const Vector& temp,
220 const ArrayOfVector& cia);
221
234
243 std::array<Species::Species, 2> mspecies;
244};
245
246#endif // cia_h
Index cia_get_index(const ArrayOfCIARecord &cia_data, const Species::Species sp1, const Species::Species sp2)
Get the index in cia_data for the two given species.
Definition cia.cc:213
std::shared_ptr< CIARecord > cia_get_data(const std::vector< std::shared_ptr< CIARecord > > &cia_data, const Species::Species sp1, const Species::Species sp2)
Get the correct cia recrod.
Definition cia.cc:232
void cia_interpolation(VectorView result, const ConstVectorView &frequency, const Numeric &temperature, const GriddedField2 &cia_data, const Numeric &T_extrapolfac, const Index &robust, const Verbosity &verbosity)
Interpolate CIA data.
Definition cia.cc:41
This can be used to make arrays out of anything.
Definition array.h:31
Index nelem() const ARTS_NOEXCEPT
Definition array.h:75
CIA data for a single pair of molecules.
Definition cia.h:57
friend void xml_read_from_stream(istream &is_xml, CIARecord &cr, bifstream *pbifs, const Verbosity &verbosity)
Reads CIARecord from XML input stream.
std::array< Species::Species, 2 > mspecies
The pair of molecules associated with these CIA data.
Definition cia.h:243
void SetSpecies(const Species::Species first, const Species::Species second)
Set CIA species.
Definition cia.h:137
ArrayOfGriddedField2 mdata
The data itself, directly from the HITRAN file.
Definition cia.h:233
CIARecord(ArrayOfGriddedField2 data, Species::Species spec1, Species::Species spec2)
Definition cia.h:209
void AppendDataset(const CIARecord &c2)
Append other CIARecord to this.
Definition cia.cc:477
const ArrayOfGriddedField2 & Data() const
Return CIA data.
Definition cia.h:127
ArrayOfGriddedField2 & Data()
Return CIA data.
Definition cia.h:131
std::array< Species::Species, 2 > TwoSpecies() const
Definition cia.h:202
Species::Species Species(const Index i) const
Return CIA species index.
Definition cia.h:86
void ReadFromCIA(const String &filename, const Verbosity &verbosity)
Read CIA catalog file.
Definition cia.cc:296
void SetMoleculeName(const Index i, const String &name)
Set each molecule name (from a string) that is associated with this CIARecord.
Definition cia.cc:271
CIARecord()=default
void Extract(VectorView result, const ConstVectorView &f_grid, const Numeric &temperature, const Numeric &T_extrapolfac, const Index &robust, const Verbosity &verbosity) const
Vector version of extract.
Definition cia.cc:245
Index DatasetCount() const
Return number of datasets in this record.
Definition cia.h:96
std::array< Species::Species, 2 > & TwoSpecies()
Definition cia.h:205
ConstVectorView FrequencyGrid(Index dataset) const
Return frequency grid for given dataset.
Definition cia.h:100
friend ostream & operator<<(ostream &os, const CIARecord &cr)
Output operator for CIARecord.
Definition cia.cc:491
String MoleculeName(const Index i) const
Return each molecule name (as a string) that is associated with this CIARecord.
Definition cia.cc:260
Numeric Extract(const Numeric &frequency, const Numeric &temperature, const Numeric &T_extrapolfac, const Index &robust, const Verbosity &verbosity) const
Scalar version of extract.
Definition cia.h:173
ConstVectorView TemperatureGrid(Index dataset) const
Return temperatur grid for given dataset.
Definition cia.h:109
const GriddedField2 & Dataset(Index dataset) const
Return CIA dataset.
Definition cia.h:118
Binary output file stream class.
Definition bifstream.h:26
#define ARTS_ASSERT(condition,...)
Definition debug.h:86
Implementation of gridded fields.
Declarations having to do with the four output streams.
This file contains the definition of String, the ARTS string class.