ReFRACtor
meteorology.h
Go to the documentation of this file.
1 #ifndef METEOROLOGY_H
2 #define METEOROLOGY_H
3 #include "hdf_file.h"
4 #include "array_ad.h"
5 #include "printable.h"
6 
7 namespace FullPhysics {
8 /****************************************************************/
14 class Meteorology : public Printable<Meteorology> {
15 public:
16  virtual ~Meteorology() {}
17 
18  //-----------------------------------------------------------------------
20  //-----------------------------------------------------------------------
21  virtual blitz::Array<double, 1> pressure_levels() const = 0;
22 
23  //-----------------------------------------------------------------------
25  //-----------------------------------------------------------------------
26  virtual blitz::Array<double, 1> specific_humidity() const = 0;
27 
28  //-----------------------------------------------------------------------
30  //-----------------------------------------------------------------------
31  virtual blitz::Array<double, 1> specific_humidity(const blitz::Array<double, 1>& Pressure_level) const;
32 
33  //-----------------------------------------------------------------------
41  //-----------------------------------------------------------------------
42  virtual blitz::Array<double, 1> vmr(const std::string& Species) const;
43 
44  //-----------------------------------------------------------------------
47  //-----------------------------------------------------------------------
48  virtual blitz::Array<double, 1> vmr(const std::string& Species, const blitz::Array<double, 1>& Pressure_level) const;
49 
50  //-----------------------------------------------------------------------
52  //-----------------------------------------------------------------------
53  virtual blitz::Array<double, 1> temperature() const = 0;
54 
55  //-----------------------------------------------------------------------
57  //-----------------------------------------------------------------------
58  virtual blitz::Array<double, 1> temperature(const blitz::Array<double, 1>& Pressure_level) const;
59 
60  //-----------------------------------------------------------------------
62  //-----------------------------------------------------------------------
63  virtual double surface_pressure() const = 0;
64 
65  //-----------------------------------------------------------------------
67  //-----------------------------------------------------------------------
68  virtual double windspeed() const;
69 
70  //-----------------------------------------------------------------------
72  //-----------------------------------------------------------------------
73  virtual double windspeed_u() const = 0;
74 
75  //-----------------------------------------------------------------------
77  //-----------------------------------------------------------------------
78  virtual double windspeed_v() const = 0;
79 
80  void print(std::ostream& Os) const { Os << "Meteorology"; }
81 
82 protected:
83 
84  //-----------------------------------------------------------------------
87  //-----------------------------------------------------------------------
88  virtual blitz::Array<double, 1> h2o_vmr() const;
89 
90  //-----------------------------------------------------------------------
93  //-----------------------------------------------------------------------
94  blitz::Array<double, 1> interpolate_to_grid(const blitz::Array<double, 1>& Profile, const blitz::Array<double, 1>& Dest_pressure_levels) const;
95 
96 };
97 }
98 #endif
virtual double surface_pressure() const =0
Surface pressure in Pascals.
Defines the interface for supplying meteorological data.
Definition: meteorology.h:14
void print(std::ostream &Os) const
Definition: meteorology.h:80
virtual double windspeed_u() const =0
The U component windspeed in m/s.
virtual double windspeed() const
Windspeed magnitude in m/s for the surface.
Definition: meteorology.cc:49
virtual blitz::Array< double, 1 > specific_humidity() const =0
Specific humidty on the meteorological pressure levels.
This is a Mixin for classes that can be printed.
Definition: printable.h:24
virtual blitz::Array< double, 1 > vmr(const std::string &Species) const
Volume mixing ratio for a particular species on the meteorological pressure levels.
Definition: meteorology.cc:54
virtual double windspeed_v() const =0
The V component windspeed in m/s.
virtual blitz::Array< double, 1 > pressure_levels() const =0
Pressure levels in Pascals used for provided meteorological data.
virtual blitz::Array< double, 1 > temperature() const =0
Temperature profile in Kelvins on the meteorological pressure levels.
blitz::Array< double, 1 > interpolate_to_grid(const blitz::Array< double, 1 > &Profile, const blitz::Array< double, 1 > &Dest_pressure_levels) const
Interpolates a profile of data from the internal pressure grid to the supplied one.
Definition: meteorology.cc:75
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
virtual blitz::Array< double, 1 > h2o_vmr() const
Return the H20 VMR.
Definition: meteorology.cc:67

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