DamBreak++ Wave Simulator 0.3
DamBreak++ Simulation Framework
Loading...
Searching...
No Matches
dbpp_LDeltaOperator.h
Go to the documentation of this file.
1#pragma once
2
3// C++ include (numeric)
4#include <valarray>
5// App include
6#include "Sfx/Sfx_StateVectorField.h"
7
8namespace dbpp { class SweRhsAlgorithm; }
9
10namespace dbpp
11{
12 using float64 = double; // temp fix
19 {
20 public:
21 SweLDeltaOperator(/*GblDiscr??*/SweRhsAlgorithm* aSweRhsAlgo /*predictor step*/) : m_rhsAlgo{aSweRhsAlgo} {}
22
23 // should be virtual pure (interface) and overriden by subclass
24 SweRhsEquations applyTo( const std::valarray<float64>& aU1,
25 const std::valarray<float64>& aU2, float64 aDt)
26 {
27 switch (switch_on)
28 {
29 default:
30 break;
31 }
32
33 // -------------------------PREDICTOR
34 Sfx::StateVectorField w_stateVecField{aName,aU1,aU2};
35 SweRhsEquationsData w_rhsEqTerms;
36
37 auto w_rhsTerms = m_rhsAlgo->calculate(/*GblDiscr??*/w_stateVecField);
38 w_rhsEqTerms.setMassEq(aU1 - lambda * w_rhsTerms.dFF1); // mass equations
39 w_rhsEqTerms.setMomentumEq(aU2 - lambda * w_rhsTerms.dFF1 - dt * w_rhsTerms.S); // momentum equation
40
41 return w_rhsEqTerms;
42
43 // -------------------------CORRECTOR
44 auto w_rhsTerms = m_rhsAlgo->calculate(w_stateVecField.asStateVector());
45 w_rhsEqTerms.setMassEq(aU1 - aU2 - lambda* w_rhsTerms.dFF1); // mass equation
46 w_rhsEqTerms.setMomentumEq(0.5*(aU2 - lambda * w_rhsTerms.dFF1 - dt * w_rhsTerms.S)); // momentum equation
47
48 return w_rhsEqTerms;
49 }
50
51 bool isTimeDependent() const { return true; }
52 unsigned getNumberEquations() const { return 2; }
53 void setStep(/*predictor/corrector*/) {/*two-time-steps*/ }
54 protected:
55 // ??? all contains in SweRhsAlgorithm!! isn't?
56 virtual void setCalculFF(/*FluxAlgorithm*/)
57 {
58 aFluxAlgo->isGodunovType();
59 m_rhsAlgo->setFaceFluxAlgo(aFFalgo);
60 }
61 virtual void setSourceTerms(/*SrcTermDiscr*/) {/**/ }
62 virtual void setPressureTerm(/**/) {/**/}
63 private:
64 /*GblDiscr?? m_gblDiscr*/
66 };
67} // End of namespace
virtual void setSourceTerms()
Definition dbpp_LDeltaOperator.h:61
void setStep()
Definition dbpp_LDeltaOperator.h:53
virtual void setCalculFF()
Definition dbpp_LDeltaOperator.h:56
SweLDeltaOperator(SweRhsAlgorithm *aSweRhsAlgo)
Definition dbpp_LDeltaOperator.h:21
unsigned getNumberEquations() const
Definition dbpp_LDeltaOperator.h:52
SweRhsAlgorithm * m_rhsAlgo
Definition dbpp_LDeltaOperator.h:65
SweRhsEquations applyTo(const std::valarray< float64 > &aU1, const std::valarray< float64 > &aU2, float64 aDt)
Definition dbpp_LDeltaOperator.h:24
bool isTimeDependent() const
Definition dbpp_LDeltaOperator.h:51
virtual void setPressureTerm()
Definition dbpp_LDeltaOperator.h:62
Abstract class. "Model" of the right-hand-side terms discretization. Hold discretization scheme or al...
Definition dbpp_SweRhsAlgorithm.h:28
Definition DamBreakProb.h:15
double float64
Definition dbpp_LDeltaOperator.h:12