ReFRACtor
absorber_vmr_scaled.h
Go to the documentation of this file.
1 #ifndef ABSORBER_VMR_SCALED_H
2 #define ABSORBER_VMR_SCALED_H
4 
5 namespace FullPhysics {
6 /****************************************************************/
14 public:
16  double Scale,
17  bool Scale_flag,
18  const std::string& Gas_name);
19 
20  virtual ~AbsorberVmrScaled() {}
21  virtual void print(std::ostream& Os) const;
22 
23  virtual std::string sub_state_identifier() const { return "absorber_scaled/" + gas_name(); }
24 
25  virtual std::string state_vector_name_i(int i) const
26  { return gas_name() + " Scaling factor"; }
27 
29  { return clone(press->clone()); }
30 
32  clone(const boost::shared_ptr<Pressure>& Press) const = 0;
33 
34  //-----------------------------------------------------------------------
36  //-----------------------------------------------------------------------
37 
38  double scale_factor() const { return coeff(0).value(); }
39 
40  //-----------------------------------------------------------------------
42  //-----------------------------------------------------------------------
43 
44  double scale_uncertainty() const
45  { return (sv_cov_sub.rows() > 0 && sv_cov_sub(0,0) > 0 ?
46  sqrt(sv_cov_sub(0,0)) : 0); }
47 
48  //-----------------------------------------------------------------------
50  //-----------------------------------------------------------------------
51 
52  virtual blitz::Array<double, 1> vmr_profile() const = 0;
53 
54  //-----------------------------------------------------------------------
56  //-----------------------------------------------------------------------
57 
58  virtual blitz::Array<double, 1> pressure_profile() const = 0;
59 
60 protected:
61  virtual void calc_vmr() const;
62 };
63 }
64 #endif
virtual std::string sub_state_identifier() const
Return a string to identify this part of the state, this name should be all lower case and seperate p...
double scale_uncertainty() const
Uncertainty of scale factor.
virtual blitz::Array< double, 1 > vmr_profile() const =0
VMR profile used with the offset.
virtual boost::shared_ptr< AbsorberVmr > clone() const
Clone a AbsorberVmr object.
AbsorberVmrScaled(const boost::shared_ptr< Pressure > &Press, double Scale, bool Scale_flag, const std::string &Gas_name)
Constructor.
blitz::Array< double, 2 > sv_cov_sub
The subset of cov_full that is "owned" by this class, what was passed through update_sub_state.
double scale_factor() const
Scale factor.
As a design principle, we have each base class with the absolutely minimum interface needed for use f...
const blitz::Array< T, D > & value() const
Definition: array_ad.h:306
virtual blitz::Array< double, 1 > pressure_profile() const =0
Pressure levels that absorber vmr is on.
virtual void calc_vmr() const
Derived classes should provide a function to fill in vmr when this is called.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
boost::shared_ptr< Pressure > press
Pressure.
This class maps the state vector to the absorber VMR on each level.
virtual void print(std::ostream &Os) const
Print to stream.
virtual std::string state_vector_name_i(int i) const
Return state vector name for ith entry in coeff.
virtual std::string gas_name() const
This indicates the name of this particular Absorber.

Copyright © 2017, California Institute of Technology.
ALL RIGHTS RESERVED.
U.S. Government Sponsorship acknowledged.
Generated Fri Aug 24 2018 15:44:10