ReFRACtor
absorber_vmr.h
Go to the documentation of this file.
1 #ifndef ABSORBER_VMR_H
2 #define ABSORBER_VMR_H
4 #include "auto_derivative.h"
5 #include "pressure.h"
6 
7 namespace FullPhysics {
8 /****************************************************************/
17 class AbsorberVmr : virtual public StateVectorObserver,
18  public Observable<AbsorberVmr> {
19 public:
20  virtual ~AbsorberVmr() {}
21  virtual void add_observer(Observer<AbsorberVmr>& Obs)
22  { add_observer_do(Obs, *this);}
24  { remove_observer_do(Obs, *this);}
25 
26 //-----------------------------------------------------------------------
33 //-----------------------------------------------------------------------
34 
35  virtual boost::shared_ptr<AbsorberVmr> clone() const = 0;
36 
37 //-----------------------------------------------------------------------
42 //-----------------------------------------------------------------------
43 
45  clone(const boost::shared_ptr<Pressure>& Press) const = 0;
46 
47 //-----------------------------------------------------------------------
51 //-----------------------------------------------------------------------
52 
53  virtual std::string gas_name() const = 0;
54 
55 //-----------------------------------------------------------------------
58 //-----------------------------------------------------------------------
59 
60  virtual AutoDerivative<double>
61  volume_mixing_ratio(const AutoDerivative<double>& P) const = 0;
62 
63  virtual ArrayAd<double, 1> vmr_grid(const Pressure& P) const;
64 
65 //-----------------------------------------------------------------------
68 //-----------------------------------------------------------------------
69 
70  virtual blitz::Array<bool, 1> state_used() const = 0;
71 
72 };
73 }
74 #endif
virtual void remove_observer(Observer< AbsorberVmr > &Obs)
Remove an observer.
Definition: absorber_vmr.h:23
void add_observer_do(Observer< AbsorberVmr > &Obs, AbsorberVmr &t)
Add an observer.
Definition: observer.h:148
This is an observer of a StateVector.
void remove_observer_do(Observer< AbsorberVmr > &Obs, AbsorberVmr &t)
Remove an observer.
Definition: observer.h:173
virtual std::string gas_name() const =0
This indicates the name of this particular Absorber.
virtual AutoDerivative< double > volume_mixing_ratio(const AutoDerivative< double > &P) const =0
This returns the volume mixing ratio at the given pressure level.
virtual ArrayAd< double, 1 > vmr_grid(const Pressure &P) const
Return the vmr on the pressure grid.
Definition: absorber_vmr.cc:23
Mixin for a class that allows other classes to observe it state.
Definition: observer.h:12
virtual boost::shared_ptr< AbsorberVmr > clone() const =0
Clone a AbsorberVmr object.
This gives the Gas Absorber Volumn mixing ratio for a single gas.
Definition: absorber_vmr.h:17
This class maintains the pressure portion of the state.
Definition: pressure.h:32
virtual void add_observer(Observer< AbsorberVmr > &Obs)
Add an observer.
Definition: absorber_vmr.h:21
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
virtual blitz::Array< bool, 1 > state_used() const =0
Indicate what portion of the state vector is used to calculate the VMR.

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