27 #ifndef TO_VLEVEL_CONVERTER_H_ 28 #define TO_VLEVEL_CONVERTER_H_ 31 #include <boost/shared_ptr.hpp> 32 #include <boost/shared_array.hpp> 33 #include <boost/noncopyable.hpp> 64 virtual vector<double> operator()(
size_t x,
size_t y,
size_t t) = 0;
68 {
return operator()(x, y, t); }
79 virtual bool isValid(
double val,
size_t x,
size_t y,
size_t t);
99 const boost::shared_array<float> pressure_;
106 : pressure_(pressure), nx_(nx), ny_(ny), nz_(nk), nt_(nt) {}
144 const boost::shared_array<double> ps_;
158 : sigma_(sigma), ptop_(ptop), ps_(ps), nx_(nx), ny_(ny), nt_(nt) {}
170 const boost::shared_array<double> ps_;
184 : ap_(ap), b_(b), ps_(ps), nx_(nx), ny_(ny), nt_(nt) {}
196 const boost::shared_array<double> ps_;
211 : a_(a), b_(b), p0_(p0), ps_(ps), nx_(nx), ny_(ny), nt_(nt) {}
220 const boost::shared_ptr<ToVLevelConverter> presConv_;
234 const boost::shared_ptr<ToVLevelConverter> presConv_;
235 typedef const boost::shared_array<float> float_cp;
236 float_cp surface_air_pressure_, surface_geopotential_, air_temperature_, specific_humidity_;
237 size_t nx_, ny_, nt_;
244 float_cp sapVal, float_cp sgpVal, float_cp airtVal, float_cp shVal,
245 size_t nx,
size_t ny,
size_t nt);
254 const boost::shared_ptr<ToVLevelConverter> conv_;
255 const boost::shared_array<float> topo_;
261 AltitudeConverterToHeightConverter(
const boost::shared_ptr<ToVLevelConverter> altiConverter,
const boost::shared_array<float> topography,
size_t nx,
size_t ny,
size_t nk,
size_t nt)
262 : conv_(altiConverter), topo_(topography), nx_(nx), ny_(ny), nz_(nk), nt_(nt) {}
271 const boost::shared_ptr<ToVLevelConverter> conv_;
272 const boost::shared_array<float> topo_;
278 HeightConverterToAltitudeConverter(
const boost::shared_ptr<ToVLevelConverter> heightConverter,
const boost::shared_array<float> topography,
size_t nx,
size_t ny,
size_t nk,
size_t nt)
279 : conv_(heightConverter), topo_(topography), nx_(nx), ny_(ny), nz_(nk), nt_(nt) {}
289 const boost::shared_array<float> geopot_;
296 : geopot_(geopot_height), nx_(nx), ny_(ny), nz_(nk), nt_(nt) {}
315 bool timeDependentDepth_;
316 int (*func_)(size_t, double, double, double,
const double*,
const double*,
double*);
330 size_t nx,
size_t ny,
size_t nk,
size_t nt,
331 int (*func)(
size_t,
double,
double,
double,
const double*,
const double*,
double*))
332 : s_(s), C_(C), depth_c_(depth_c), eta_(eta), depth_(depth),
333 nx_(nx), ny_(ny), nz_(nk), nt_(nt)
339 virtual bool isValid(
double val,
size_t x,
size_t y,
size_t t);
const std::vector< std::size_t > & getDims() const
Definition: DataIndex.h:56
IdentityToVLevelConverter(const vector< double > &vlevel)
Definition: ToVLevelConverter.h:91
virtual ~ToVLevelConverter()
Definition: ToVLevelConverter.h:55
HybridSigmaApToPressureConverter(const vector< double > &ap, const vector< double > &b, const boost::shared_array< double > ps, size_t nx, size_t ny, size_t nt)
Definition: ToVLevelConverter.h:183
vector< double > values(size_t x, size_t y, size_t t)
same as operator()
Definition: ToVLevelConverter.h:67
HybridSigmaToPressureConverter(const vector< double > &a, const vector< double > &b, double p0, const boost::shared_array< double > ps, size_t nx, size_t ny, size_t nt)
Definition: ToVLevelConverter.h:210
Definition: ToVLevelConverter.h:127
HeightConverterToAltitudeConverter(const boost::shared_ptr< ToVLevelConverter > heightConverter, const boost::shared_array< float > topography, size_t nx, size_t ny, size_t nk, size_t nt)
Definition: ToVLevelConverter.h:278
OceanSCoordinateGToDepthConverter(const vector< double > &s, const vector< double > &C, double depth_c, IndexedData eta, IndexedData depth, size_t nx, size_t ny, size_t nk, size_t nt, int(*func)(size_t, double, double, double, const double *, const double *, double *))
Definition: ToVLevelConverter.h:328
AltitudeConverterToHeightConverter(const boost::shared_ptr< ToVLevelConverter > altiConverter, const boost::shared_array< float > topography, size_t nx, size_t ny, size_t nk, size_t nt)
Definition: ToVLevelConverter.h:261
Definition: C_CDMReader.h:35
Identity4DToVLevelConverter(const boost::shared_array< float > pressure, size_t nx, size_t ny, size_t nk, size_t nt)
Definition: ToVLevelConverter.h:105
PressureToStandardAltitudeConverter(boost::shared_ptr< ToVLevelConverter > presConv)
Definition: ToVLevelConverter.h:225
GeopotentialToAltitudeConverter(const boost::shared_array< float > geopot_height, size_t nx, size_t ny, size_t nk, size_t nt)
Definition: ToVLevelConverter.h:295
Definition: ToVLevelConverter.h:98
const DataIndex & idx() const
get the index belonging to the data
Definition: ToVLevelConverter.h:304
Definition: ToVLevelConverter.h:219
Definition: ToVLevelConverter.h:192
Definition: ToVLevelConverter.h:233
Definition: ToVLevelConverter.h:253
Definition: ToVLevelConverter.h:141
Definition: ToVLevelConverter.h:53
Definition: ToVLevelConverter.h:85
Definition: ToVLevelConverter.h:167
SigmaToPressureConverter(const vector< double > &sigma, double ptop, const boost::shared_array< double > ps, size_t nx, size_t ny, size_t nt)
Definition: ToVLevelConverter.h:157
Definition: IndexedData.h:43
Definition: ToVLevelConverter.h:288
Definition: ToVLevelConverter.h:113
Definition: ToVLevelConverter.h:270