11 const blitz::Array<bool, 1>&,
12 const blitz::Array<double, 1>&,
18 const double AerosolShapeGaussian::min_aod = 1e-9;
25 aerosol_name(), linear_aod));
34 desired_aod = coefficient()(0);
39 if(desired_aod < min_aod) {
40 desired_aod = min_aod;
43 desired_aod = exp(coefficient()(0));
46 int ngaussians = int((coefficient().rows() - 1) / 2);
51 aext.resize(pressure()->number_level(),
52 coeff.number_variable());
54 for(
int g_idx = 0; g_idx < ngaussians; g_idx++) {
58 for(
int lev = 0; lev < aext.rows(); lev++) {
66 aext(lev) = aext(lev) + g_eval;
74 if (total_aod().
value() != 0.0) {
75 scaling_N = desired_aod / total_aod();
80 for(
int lev = 0; lev < aext.rows(); lev++) {
81 aext(lev) = aext(lev) * scaling_N;
88 Os <<
"AerosolShapeGaussian: (" 89 << (linear_aod ?
"Linear" :
"Logarithmic")
92 opad << coeff.value() <<
"\n";
94 Os <<
" Retrieval flag:\n";
95 opad << used_flag <<
"\n";
virtual void calc_aerosol_extinction() const
Derived classes should provide a function to fill in vmr when this is called.
This is a filtering stream that adds a pad to the front of every line written out.
#define REGISTER_LUA_DERIVED_CLASS(X, Y)
Apply value function to a blitz array.
const blitz::Array< T, D > & value() const
This class maps the state vector to aerosol extinction defined by a Gaussian parameterization.
virtual void print(std::ostream &Os) const
Print to stream.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
const T & value() const
Convert to type T.
#define REGISTER_LUA_END()
double value(const FullPhysics::AutoDerivative< double > &Ad)
This class maps the state vector to the aerosol extinction on each level.
virtual boost::shared_ptr< AerosolExtinction > clone() const
Clone a AerosolExtinction object.