openModeller  Version 1.5.0
aquamaps.hh
Go to the documentation of this file.
1 
28 #ifndef _AQUAMAPSHH_
29 #define _AQUAMAPSHH_
30 
31 #include <openmodeller/om.hh>
32 
33 #include <string.h>
34 #include <sqlite3.h>
35 
36 /********************************************************/
37 /*********************** AquaMaps ***********************/
38 
80 /****************************************/
81 /*********** Expert's values ************/
82 
83 const Scalar DEPTH_LIMIT = 200.0; // used to choose between surface or bottom layers (temp/sal)
84 
86 const Scalar MAXIMUM_MAXDEPTH = 9999.0;
87 const Scalar MINIMUM_ENVELOPE_SIZE_FOR_MAXDEPTH = 0.0; // not used, just defined
88 
90 const Scalar MAXIMUM_MINDEPTH = 9999.0;
91 const Scalar MINIMUM_ENVELOPE_SIZE_FOR_MINDEPTH = 0.0; // not used, just defined
92 
95 const Scalar MINIMUM_ENVELOPE_SIZE_FOR_ICE_CONCENTRATION = 0.0; // not used, just defined
96 
100 
104 
107 
110 
112 
115 
118 
120 
128 
136 
144 
152 
160 
161 const std::string NAME [7] = { "maximum depth",
162  "minimum depth",
163  "ice concentration",
164  "distance to land",
165  "primary production",
166  "salinity",
167  "temperature" };
168 
169 // Variable position in sample or arrays
170 
171 const int MAXDEPTH = 0;
172 const int MINDEPTH = 1;
173 const int ICE_CONCENTRATION = 2;
174 const int DISTANCE_TO_LAND = 3;
175 const int PRIMARY_PRODUCTION = 4;
176 const int SALINITY = 5;
177 const int TEMPERATURE = 6;
178 
183 class AquaMaps : public AlgorithmImpl
184 {
185 public:
186 
187  AquaMaps();
188  ~AquaMaps();
189 
190  // Basic methods inherited from Algorithm class
191 
192  int initialize();
193  int iterate();
194  int getConvergence( Scalar * const val ) const;
195  float getProgress() const;
196  int done() const;
197  Scalar getValue( const Sample& x ) const;
198 
199 protected:
200 
201  // Model Serialization
202  virtual void _getConfiguration( ConfigurationPtr& ) const;
203 
204  // Model Deserialization
205  virtual void _setConfiguration( const ConstConfigurationPtr & );
206 
207 private:
208 
216  int _getAndCheckParameter( std::string const &name, int * value );
217 
219  void _calculateEnvelopes( const OccurrencesPtr& );
220 
222  void _percentile( Scalar *result, int n, double percent, std::vector<ScalarVector> *matrix, int layerIndex );
223 
225  void _readSpeciesData( const char *species );
226 
228  bool _hasExpertRange( sqlite3_stmt * stmt, int varIndex );
229 
231  void _adjustInterquartile( int layerIndex, Scalar adjmin, Scalar adjmax );
232 
234  void _ensureEnvelopeSize( int layerIndex );
235 
237  void _logEnvelope();
238 
240  int _getRelatedIndex( int index );
241 
243  int * _use_layer;
244 
247 
250 
253 
256 
259 
262 
265 
269  int _pelagic;
270 
275 
278 
280  float _progress;
281 };
282 
283 
284 #endif
285 
const Scalar MINIMUM_ICE_CONCENTRATION
Definition: aquamaps.hh:93
Sample _upper_limit
Definition: aquamaps.hh:249
void _logEnvelope()
Definition: aquamaps.cpp:1171
const int TEMPERATURE
Definition: aquamaps.hh:177
const int MAXDEPTH
Definition: aquamaps.hh:171
Sample _maximum
Definition: aquamaps.hh:258
int * _use_layer
Definition: aquamaps.hh:243
double Scalar
Type of map values.
Definition: om_defs.hh:39
Sample _minimum
Definition: aquamaps.hh:255
void _calculateEnvelopes(const OccurrencesPtr &)
Definition: aquamaps.cpp:423
bool * _has_expert_range
Definition: aquamaps.hh:277
Scalar getValue(const Sample &x) const
Definition: aquamaps.cpp:959
const Scalar MINIMUM_BOTTOM_TEMPERATURE
Definition: aquamaps.hh:116
const Scalar MAXIMUM_BOTTOM_TEMPERATURE
Definition: aquamaps.hh:117
virtual void _setConfiguration(const ConstConfigurationPtr &)
Definition: aquamaps.cpp:1132
const Scalar MINIMUM_MINDEPTH
Definition: aquamaps.hh:89
const Scalar MAXIMUM_BOTTOM_SALINITY
Definition: aquamaps.hh:109
const Scalar MAXIMUM_SURFACE_TEMPERATURE
Definition: aquamaps.hh:114
const Scalar MINIMUM_DISTANCE_TO_LAND
Definition: aquamaps.hh:97
const Scalar INNER_SIZE[7]
Definition: aquamaps.hh:153
const Scalar MINIMUM_SURFACE_SALINITY
Definition: aquamaps.hh:105
Sample _pref_minimum
Definition: aquamaps.hh:261
const Scalar MAXIMUM_MINDEPTH
Definition: aquamaps.hh:90
void _adjustInterquartile(int layerIndex, Scalar adjmin, Scalar adjmax)
Definition: aquamaps.cpp:882
int done() const
Definition: aquamaps.cpp:391
Sample _inner_size
Definition: aquamaps.hh:252
const int ICE_CONCENTRATION
Definition: aquamaps.hh:173
int _getAndCheckParameter(std::string const &name, int *value)
Definition: aquamaps.cpp:401
int _use_surface_layers
Definition: aquamaps.hh:274
const Scalar BOTTOM_UPPER_LIMIT[7]
Definition: aquamaps.hh:145
bool _hasExpertRange(sqlite3_stmt *stmt, int varIndex)
Definition: aquamaps.cpp:804
int initialize()
Definition: aquamaps.cpp:271
Sample _pref_maximum
Definition: aquamaps.hh:264
const Scalar MINIMUM_PRIMARY_PRODUCTION
Definition: aquamaps.hh:101
const int MINDEPTH
Definition: aquamaps.hh:172
const Scalar MINIMUM_ENVELOPE_SIZE_FOR_PRIMARY_PRODUCTION
Definition: aquamaps.hh:103
float getProgress() const
Definition: aquamaps.cpp:382
const Scalar DEPTH_LIMIT
Definition: aquamaps.hh:83
void _ensureEnvelopeSize(int layerIndex)
Definition: aquamaps.cpp:899
void _readSpeciesData(const char *species)
Definition: aquamaps.cpp:671
const Scalar MINIMUM_ENVELOPE_SIZE_FOR_TEMPERATURE
Definition: aquamaps.hh:119
const Scalar MINIMUM_BOTTOM_SALINITY
Definition: aquamaps.hh:108
int _pelagic
Definition: aquamaps.hh:269
const Scalar MAXIMUM_DISTANCE_TO_LAND
Definition: aquamaps.hh:98
void _percentile(Scalar *result, int n, double percent, std::vector< ScalarVector > *matrix, int layerIndex)
Definition: aquamaps.cpp:642
virtual void _getConfiguration(ConfigurationPtr &) const
Definition: aquamaps.cpp:1111
const Scalar MAXIMUM_SURFACE_SALINITY
Definition: aquamaps.hh:106
const Scalar SURFACE_UPPER_LIMIT[7]
Definition: aquamaps.hh:137
const Scalar MINIMUM_ENVELOPE_SIZE_FOR_MAXDEPTH
Definition: aquamaps.hh:87
float _progress
Definition: aquamaps.hh:280
Sample _lower_limit
Definition: aquamaps.hh:246
const Scalar SURFACE_LOWER_LIMIT[7]
Definition: aquamaps.hh:121
int iterate()
Definition: aquamaps.cpp:359
const Scalar MINIMUM_SURFACE_TEMPERATURE
Definition: aquamaps.hh:113
const Scalar MINIMUM_MAXDEPTH
Definition: aquamaps.hh:85
const Scalar MINIMUM_ENVELOPE_SIZE_FOR_DISTANCE_TO_LAND
Definition: aquamaps.hh:99
const Scalar MINIMUM_ENVELOPE_SIZE_FOR_ICE_CONCENTRATION
Definition: aquamaps.hh:95
const Scalar BOTTOM_LOWER_LIMIT[7]
Definition: aquamaps.hh:129
const int DISTANCE_TO_LAND
Definition: aquamaps.hh:174
const Scalar MAXIMUM_MAXDEPTH
Definition: aquamaps.hh:86
int _getRelatedIndex(int index)
Definition: aquamaps.cpp:1187
const int SALINITY
Definition: aquamaps.hh:176
int getConvergence(Scalar *const val) const
Definition: aquamaps.cpp:372
const Scalar MAXIMUM_ICE_CONCENTRATION
Definition: aquamaps.hh:94
const int PRIMARY_PRODUCTION
Definition: aquamaps.hh:175
const Scalar MINIMUM_ENVELOPE_SIZE_FOR_MINDEPTH
Definition: aquamaps.hh:91
const Scalar MINIMUM_ENVELOPE_SIZE_FOR_SALINITY
Definition: aquamaps.hh:111
Definition: Sample.hh:25
const std::string NAME[7]
Definition: aquamaps.hh:161
const Scalar MAXIMUM_PRIMARY_PRODUCTION
Definition: aquamaps.hh:102