DamBreak++ Wave Simulator 0.3
DamBreak++ Simulation Framework
Loading...
Searching...
No Matches
Sfx_DamBreakInitialCnd.h
Go to the documentation of this file.
1
2#pragma once
3
4// BaseNumTypes includes
5#include "Sfx/Sfx_StateVectorField.h"
6// App includes
7#include "Sfx_DamBreakData.h"
8#include "include/Sfx_WaveFunc.h"
9
10namespace Sfx
11{
16 {
18 using wavfuncptr = std::shared_ptr<Sfx::WaveFunc>;
19 public:
24 DamBreakInitialCnd(const DamBreakData& aDbData);
44 DamBreakInitialCnd( DamBreakInitialCnd&& aOther) noexcept;
51 // Default ctor (dam break problem type condition)
52 // The only one supported for now
57 void setIC( DamBreakData aData);
62 bool isUsingFlatBed() const noexcept { return m_dbData.isFlatBed(); }
67 bool isFrictionLess() const noexcept { return m_dbData.isFrictionLess(); }
72 bool isSectionUnitWidth() const noexcept { return m_dbData.isUnitSectionWidth(); }
76 void save2File() {/*Not implemented yet*/}
81 std::vector<float64> xcoordVector() const
82 {
83 return std::vector<float64>{&X[0], &X[0] + NbSections};
84 }
85
89 std::vector<float64> ncoefVector() const
90 {
91 return std::vector<float64>{&n[0], &n[0] + NbSections};
92 }
93
97 std::vector<float64> zbathyVector() const
98 {
99 return std::vector<float64>{&Z[0], &Z[0] + NbSections};
100 }
101 // See Scott Meyers items "Facilitate the Returns Value Optimization"
102 // Actually the function below should return a const object
103 // By returning the vector ctor, we avoid temporary object
104 // New compiler construct the object returned inside the memory of left side
105 // vector vec = XCoord(); copy elison is mandatory C++17
110 std::vector<float64> Xcoord() const noexcept { return std::vector<float64>(&X[0], &X[0] + NbSections); }
115 std::vector<float64> Zvalues() const { return std::vector<float64>(&Z[0], &Z[0] + NbSections); }
120 std::vector<float64> U1values() const { return std::vector<float64>(&U1[0], &U1[0] + NbSections); }
125 std::vector<float64> U2values() const { return std::vector<float64>(&U2[0], &U2[0] + NbSections); }
130 std::vector<float64> Hvalues() const { return std::vector<float64>(&H[0], &H[0] + NbSections); }
135 std::vector<float64> nValues() const { return std::vector<float64>(&n[0], &n[0] + NbSections); }
140 void setManningCoefficients( const std::vector<float64>& aNvec);
145 void setBathyValues( const std::vector<float64>& aNvec);
150 Sfx::StateVectorField setIC(); // temporary fix, shall return
157 template<typename T, typename CONT = std::vector<T>>
158 void setIC( CONT aContOfObj)
159 {
160 /*Not implemented yet*/
161 std::add_lvalue_reference<CONT>; // not sure about this one
162 }
163
167 std::unique_ptr<scalarField1D> setH();
173 private:
175 bool m_flatBed{true};
176 bool m_frictionLess{ true };
177 bool m_sectionUnit{ true };
179 wavfuncptr m_h; // Water depth profile
180 float64* U1;
181 float64* U2;
182 float64* X;
183 float64* H;
184 float64* h;
185 float64 *Z, *n;
187 float64 B;
188 float64 dx;
190 float64 S0am;
191 float64 S0av;
195 void initMcNeil1D();
199 void freeDiscrParams();
203 void allocateDiscrParams();
204 };
205} // End of namespace
Hold data for validation. Two type: EMcneil, Hudson (DamBreak config)
Definition Sfx_DamBreakData.h:17
eDataTypes
Definition Sfx_DamBreakData.h:24
@ emcneil
Definition Sfx_DamBreakData.h:25
Sfx::StateVectorField setIC()
set initial condition
Definition Sfx_DamBreakInitialCnd.cpp:404
DamBreakInitialCnd(const DamBreakData &aDbData)
ctor from data
Definition Sfx_DamBreakInitialCnd.cpp:14
~DamBreakInitialCnd()
dtor
Definition Sfx_DamBreakInitialCnd.cpp:37
std::vector< float64 > nValues() const
Manning friction codefficient.
Definition Sfx_DamBreakInitialCnd.h:135
wavfuncptr m_h
Definition Sfx_DamBreakInitialCnd.h:179
bool m_sectionUnit
Definition Sfx_DamBreakInitialCnd.h:177
bool m_frictionLess
Definition Sfx_DamBreakInitialCnd.h:176
float64 * U2
Definition Sfx_DamBreakInitialCnd.h:181
float64 dx
Definition Sfx_DamBreakInitialCnd.h:188
DamBreakData::eDataTypes getICtype() const
Initial condition type (not completed)
Definition Sfx_DamBreakInitialCnd.h:172
std::vector< float64 > U1values() const
first state variable
Definition Sfx_DamBreakInitialCnd.h:120
std::vector< float64 > U2values() const
second state variable
Definition Sfx_DamBreakInitialCnd.h:125
float64 * H
Definition Sfx_DamBreakInitialCnd.h:183
std::shared_ptr< Sfx::WaveFunc > wavfuncptr
Definition Sfx_DamBreakInitialCnd.h:18
bool isFrictionLess() const noexcept
considering friction
Definition Sfx_DamBreakInitialCnd.h:67
std::unique_ptr< scalarField1D > setH()
water level (height)
Definition Sfx_DamBreakInitialCnd.cpp:321
bool isSectionUnitWidth() const noexcept
considering unit section width
Definition Sfx_DamBreakInitialCnd.h:72
void allocateDiscrParams()
memory allocation
Definition Sfx_DamBreakInitialCnd.cpp:302
std::vector< float64 > zbathyVector() const
node bathymetry or topography (bottom)
Definition Sfx_DamBreakInitialCnd.h:97
std::vector< float64 > Hvalues() const
water level values
Definition Sfx_DamBreakInitialCnd.h:130
void setManningCoefficients(const std::vector< float64 > &aNvec)
values at each node (but first need to call initMcNeil1D)
Definition Sfx_DamBreakInitialCnd.cpp:200
float64 S0av
Definition Sfx_DamBreakInitialCnd.h:191
void setBathyValues(const std::vector< float64 > &aNvec)
Bathymetry values.
Definition Sfx_DamBreakInitialCnd.cpp:220
void setIC(CONT aContOfObj)
set initial condition (Not implemented yet)
Definition Sfx_DamBreakInitialCnd.h:158
void save2File()
Save initial condition in a file (scenario concept)
Definition Sfx_DamBreakInitialCnd.h:76
bool isUsingFlatBed() const noexcept
considering no variable bathymetry
Definition Sfx_DamBreakInitialCnd.h:62
std::vector< float64 > Zvalues() const
bathymetry values
Definition Sfx_DamBreakInitialCnd.h:115
float64 * X
Definition Sfx_DamBreakInitialCnd.h:182
float64 * h
Definition Sfx_DamBreakInitialCnd.h:184
wavfuncptr m_z
Definition Sfx_DamBreakInitialCnd.h:178
bool m_flatBed
Definition Sfx_DamBreakInitialCnd.h:175
float64 * n
Definition Sfx_DamBreakInitialCnd.h:185
std::vector< float64 > Xcoord() const noexcept
x-coordinate
Definition Sfx_DamBreakInitialCnd.h:110
float64 * Z
Definition Sfx_DamBreakInitialCnd.h:185
float64 m_shockLocation
Definition Sfx_DamBreakInitialCnd.h:189
DamBreakInitialCnd & operator=(const DamBreakInitialCnd &aOther)
Assignment ctor.
Definition Sfx_DamBreakInitialCnd.cpp:141
float64 B
Definition Sfx_DamBreakInitialCnd.h:187
float64 S0am
Definition Sfx_DamBreakInitialCnd.h:190
float64 * U1
Definition Sfx_DamBreakInitialCnd.h:180
std::vector< float64 > ncoefVector() const
node friction coefficient
Definition Sfx_DamBreakInitialCnd.h:89
void freeDiscrParams()
memory de-allocation
Definition Sfx_DamBreakInitialCnd.cpp:291
void initMcNeil1D()
E. McNeil initial cnd.
Definition Sfx_DamBreakInitialCnd.cpp:241
DamBreakData m_dbData
Definition Sfx_DamBreakInitialCnd.h:174
int32 NbSections
Definition Sfx_DamBreakInitialCnd.h:186
std::vector< float64 > xcoordVector() const
Domain spatial x-coord.
Definition Sfx_DamBreakInitialCnd.h:81
Definition HydUtils.h:15