World Ocean Simulation System (WOSS) library
sediment-deck41-db.h
Go to the documentation of this file.
1/* WOSS - World Ocean Simulation System -
2 *
3 * Copyright (C) 2009 2025 Federico Guerra
4 * and regents of the SIGNET lab, University of Padova
5 *
6 * Author: Federico Guerra - WOSS@guerra-tlc.com
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation;
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22
33#ifndef WOSS_SEDIMENT_DECK41_DB_H
34#define WOSS_SEDIMENT_DECK41_DB_H
35
36
37#ifdef WOSS_NETCDF_SUPPORT
38
39#include <map>
44
45
46namespace woss {
47
48
53 using FrequencyMap = std::map<int, int>;
54 using FMCIter = FrequencyMap::const_iterator;
55 using FMIter = FrequencyMap::iterator;
56 using FMRIter = FrequencyMap::reverse_iterator;
57 using FMCRIter = FrequencyMap::const_reverse_iterator;
58
59
64 using SedimWeightMap = std::map< char, double >;
65 using SWIter = SedimWeightMap::iterator;
66 using SWRIter = SedimWeightMap::reverse_iterator;
67
68
75 class SedimDeck41Db : public WossDb, public WossSedimentDb {
76
78
79 public:
80
81
86 SedimDeck41Db( const std::string& name );
87
88 virtual ~SedimDeck41Db() override = default;
89
93 virtual bool openConnection() override { return false; }
94
98 virtual bool finalizeConnection() override { return false; }
99
100
105 virtual bool closeConnection() override;
106
107
114 virtual bool insertValue( const Coord& coordinates, const Sediment& sediment_value ) override;
115
116
124 virtual std::unique_ptr<Sediment> getValue( const CoordZ& coordz ) const override;
125
133 virtual std::unique_ptr<Sediment> getValue( const CoordZVector& coordz_vector ) const override;
134
135
136 protected:
137
138
143
148
153
158
163
168
169
175
176
182 double calculateAvgDepth( const CoordZVector& coordz_vector ) const;
183
184
190 Deck41Types getDeck41TypesFromCoords( const CoordZVector& coordz_vector ) const;
191
197 Deck41Types getDeck41TypesFromMarsdenCoords( const CoordZVector& coordz_vector ) const ;
198
204 Deck41Types getDeck41TypesFromMarsdenSquare( const CoordZVector& coordz_vector ) const ;
205
206
214 Deck41Types calculateDeck41Types( const CoordZVector& coordz_vector ) const;
215
216
223 std::unique_ptr<Sediment> calculateSediment( const Deck41Types& floor_types, double avg_depth ) const;
224
232 std::unique_ptr<Sediment> createSediment( int deck41_type, double depth ) const;
233
234
240 int getMaxAppereanceFrequencyValue( const FrequencyMap& frequency_map ) const;
241
242
249 bool doTestA( const Deck41TypeTests& test ) const;
250
257 bool doTestB( const Deck41TypeTests& test ) const;
258
265 bool doTestC( const Deck41TypeTests& test ) const;
266
267 };
268
269
270 // inline functions
272
273 inline bool SedimDeck41Db::doTestA(const Deck41TypeTests& floor) const {
274 return ((floor.getConditionA() == true) || (floor.getConditionB() == true) || (floor.getConditionE() == true) ||
275 (floor.getConditionF() == true));
276 }
277
278
279 inline bool SedimDeck41Db::doTestB(const Deck41TypeTests& floor) const {
280 return ((floor.getConditionC() == true) || (floor.getConditionD() == true) || (floor.getConditionG() == true) );
281 }
282
283
284 inline bool SedimDeck41Db::doTestC(const Deck41TypeTests& floor) const {
285 return ((floor.getConditionC() == true) || (floor.getConditionD() == true));
286 }
287
288}
289
290#endif // WOSS_NETCDF_SUPPORT
291
292#endif /* WOSS_SEDIMENT_DECK41_DB_H */
293
294
295
3D-Coordinates (lat, long, depth) class definitions and functions library
Definition coordinates-definitions.h:384
Coordinates (lat, long) class definitions and functions library.
Definition coordinates-definitions.h:98
Abstraction layer for database and data manipulation.
Definition sediment-deck41-db-logic-control.h:74
constexpr bool getConditionF() const
Definition sediment-deck41-db-logic-control.h:170
constexpr bool getConditionA() const
Definition sediment-deck41-db-logic-control.h:140
constexpr bool getConditionD() const
Definition sediment-deck41-db-logic-control.h:158
constexpr bool getConditionB() const
Definition sediment-deck41-db-logic-control.h:146
constexpr bool getConditionE() const
Definition sediment-deck41-db-logic-control.h:164
constexpr bool getConditionG() const
Definition sediment-deck41-db-logic-control.h:176
constexpr bool getConditionC() const
Definition sediment-deck41-db-logic-control.h:152
WossDb for custom made NetCDF DECK41 Sediment database.
Definition sediment-deck41-coord-db.h:87
DbCreator for NetCDF Deck41 Sediment database.
Definition sediment-deck41-db-creator.h:52
WossDb for NetCDF DECK41 Sediment database.
Definition sediment-deck41-db.h:75
Deck41Types getDeck41TypesFromCoords(const CoordZVector &coordz_vector) const
Definition sediment-deck41-db.cpp:172
virtual bool closeConnection() override
Definition sediment-deck41-db.cpp:58
Deck41Types getDeck41TypesFromMarsdenCoords(const CoordZVector &coordz_vector) const
Definition sediment-deck41-db.cpp:194
SedimDeck41CoordDb sediment_coord_db
Definition sediment-deck41-db.h:142
std::unique_ptr< Sediment > calculateSediment(const Deck41Types &floor_types, double avg_depth) const
Definition sediment-deck41-db.cpp:302
Deck41TypeTests curr_tests_state
Definition sediment-deck41-db.h:157
static SedimWeightMap sediment_weight_map
Definition sediment-deck41-db.h:167
virtual ~SedimDeck41Db() override=default
virtual bool insertValue(const Coord &coordinates, const Sediment &sediment_value) override
Definition sediment-deck41-db.cpp:64
bool doTestC(const Deck41TypeTests &test) const
Definition sediment-deck41-db.h:284
double calculateAvgDepth(const CoordZVector &coordz_vector) const
Definition sediment-deck41-db.cpp:142
Deck41Types calculateDeck41Types(const CoordZVector &coordz_vector) const
Definition sediment-deck41-db.cpp:238
Deck41Types getDeck41TypesFromMarsdenSquare(const CoordZVector &coordz_vector) const
Definition sediment-deck41-db.cpp:216
bool doTestA(const Deck41TypeTests &test) const
Definition sediment-deck41-db.h:273
virtual bool openConnection() override
Definition sediment-deck41-db.h:93
Deck41TypeTests prev_tests_state
Definition sediment-deck41-db.h:162
static SedimWeightMap initSedimWeightMap()
Definition sediment-deck41-db.cpp:70
SedimDeck41MarsdenDb sediment_marsden_db
Definition sediment-deck41-db.h:147
std::unique_ptr< Sediment > createSediment(int deck41_type, double depth) const
Definition sediment-deck41-db.cpp:80
virtual bool finalizeConnection() override
Definition sediment-deck41-db.h:98
SedimDeck41MarsdenOneDb sediment_marsden_one_db
Definition sediment-deck41-db.h:152
virtual std::unique_ptr< Sediment > getValue(const CoordZ &coordz) const override
Definition sediment-deck41-db.cpp:358
int getMaxAppereanceFrequencyValue(const FrequencyMap &frequency_map) const
Definition sediment-deck41-db.cpp:155
bool doTestB(const Deck41TypeTests &test) const
Definition sediment-deck41-db.h:279
WossDb for custom made NetCDF marsden square DECK41 Sediment database.
Definition sediment-deck41-marsden-db.h:54
WossDb for custom made NetCDF marsden coordinates DECK41 Sediment database.
Definition sediment-deck41-marsden-one-db.h:55
Surficial sediment geoacoustic parameters definitions.
Definition sediment-definitions.h:54
Abstract class that provides the interface of databases.
Definition woss-db.h:79
Data behaviour class for Sediment database.
Definition woss-db.h:296
Definition ac-toolbox-arr-asc-reader.h:44
std::pair< int, int > Deck41Types
Definition sediment-definitions.h:46
std::vector< CoordZ > CoordZVector
Definition coordinates-definitions.h:58
std::map< int, int > FrequencyMap
Definition sediment-deck41-db.h:53
SedimWeightMap::reverse_iterator SWRIter
Definition sediment-deck41-db.h:66
FrequencyMap::iterator FMIter
Definition sediment-deck41-db.h:55
SedimWeightMap::iterator SWIter
Definition sediment-deck41-db.h:65
std::map< char, double > SedimWeightMap
Definition sediment-deck41-db.h:64
FrequencyMap::const_iterator FMCIter
Definition sediment-deck41-db.h:54
FrequencyMap::const_reverse_iterator FMCRIter
Definition sediment-deck41-db.h:57
FrequencyMap::reverse_iterator FMRIter
Definition sediment-deck41-db.h:56
Provides the interface for woss::SedimDeck41CoordDb class.
Provides the interface for woss::Deck41TypeTests class.
Provides the interface for woss::SedimDeck41MarsdenDb class.
Provides the interface for woss::SedimDeck41MarsdenOneDb class.