1 #include <boost/algorithm/string.hpp> 19 (boost::dynamic_pointer_cast<AbsorberVmrFixedLevel>(A), Sv));
34 : absvmr(Absvmr), sv (Sv) {}
37 firstIndex i1; secondIndex i2; thirdIndex i3; fourthIndex i4;
39 Array<AutoDerivative<double>, 1> vmrv_t(p.
rows());
40 for(
int i = 0; i < p.
rows(); ++i)
41 vmrv_t(i) = absvmr->volume_mixing_ratio(
p(i));
43 Array<double, 2> res(vmrv.
rows(), vmrv.
rows());
49 Array<double, 2> dvmr_dstate(vmrv.
jacobian());
50 Array<double, 2> cov(sv->state_covariance());
51 Array<double, 2> t(dvmr_dstate.rows(), cov.cols()) ;
52 t = sum(dvmr_dstate(i1, i3) * cov(i3, i2), i3);
53 res = sum(t(i1, i3) * dvmr_dstate(i2, i3), i3);
59 Array<double, 2> cov(vmr_covariance());
60 Array<double, 1> res(cov.rows());
61 for(
int i = 0; i < res.rows(); ++i)
62 res(i) = (cov(i, i) > 0 ? sqrt(cov(i, i)) : 0.0);
79 boost::to_lower(gname);
80 out->register_data_source_pad
81 (
"/RetrievalResults/" + gname +
"_profile_apriori",
83 afreeze, num_level, fill_value<double>());
88 std::string gname = a->gas_name();
89 boost::to_lower(gname);
92 out->register_data_source_pad
93 (
"/RetrievalResults/" + gname +
"_profile",
95 a, num_level, fill_value<double>());
96 out->register_data_source_pad
97 (
"/RetrievalResults/" + gname +
"_profile_uncert",
99 out->register_data_source_pad
100 (
"/RetrievalResults/" + gname +
"_profile_covariance_matrix",
#define REGISTER_LUA_DERIVED_CLASS(X, Y)
const blitz::Array< T, D+1 > jacobian() const
Array< double, 1 > vmr_uncertainty() const
Apply value function to a blitz array.
const Unit A("A", 1.0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0)
blitz::Array< double, 1 > volume_mixing_ratio_active_level() const
Volume mixing ratio on the fixed pressure levels, restricted to the active levels.
Array< double, 2 > vmr_covariance() const
As described in the Output class, we have a decentralized model of producing output for L2 Full Physi...
This class maps the state vector to the absorber VMR on each level.
virtual void register_output_apriori(const boost::shared_ptr< Output > &out) const
Register apriori portions of class.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
#define REGISTER_LUA_END()
def(luabind::constructor< int >()) .def("rows"
This registers the portions of the AbsorberVmrFixedLevel class that should be written as output...
virtual void register_output(const boost::shared_ptr< Output > &out) const
Register portions of class that will be written to output.
virtual std::string gas_name() const
This indicates the name of this particular Absorber.