10#include "include/Sfx_UniversalConstants.h"
28 using slnpairvarray = std::pair<std::valarray<float64>, std::valarray<float64>>;
32 using slnpairvector = std::pair<std::vector<float64>, std::vector<float64>>;
71 template<
typename Range>
74 assert(std::ranges::size(aRng1) == std::ranges::size(aRng2));
76 if( std::ranges::size(aRng1) == Sfx::DIM::value+1)
78 if constexpr( std::is_same_v<Range,std::valarray<float64>>)
80 auto&& w_vw1 = std::views::counted(std::ranges::begin(aRng1), std::ranges::size(aRng1) - 1);
81 auto&& w_vw2 = std::views::counted(std::ranges::begin(aRng2), std::ranges::size(aRng2) - 1);
90 auto&& w_vw1 = std::views::counted(aRng1.cbegin(), std::ranges::size(aRng1) - 1);
91 auto&& w_vw2 = std::views::counted(aRng2.cbegin(), std::ranges::size(aRng2) - 1);
99 else if ( std::ranges::size(aRng1) == Sfx::DIM::value)
108 Sfx::Logger::instance()->OutputError(std::string{
"Not supported container (NujicIntegrator)" }.data());
250 template<
typename Range>
254 assert(std::ranges::size(aRng1) == std::ranges::size(aRng2));
257 if constexpr (std::ranges::view<Range>)
261 auto&& w_vw1 = std::views::counted(aRng1.cbegin(), std::ranges::size(aRng1) - 1);
262 auto&& w_vw2 = std::views::counted(aRng2.cbegin(), std::ranges::size(aRng2) - 1);
278 else if constexpr (std::is_same_v<Range, std::valarray<float64>> )
285 std::copy(aRng1.cbegin(), aRng1.cend(), std::begin(
m_currU1Values));
286 std::copy(aRng2.cbegin(), aRng2.cend(), std::begin(
m_currU2Values));
std::pair< fieldptr, fieldptr > StateVector
Definition SimulationConfig.h:27
void allocField()
memory allocation
Definition dbpp_NujicIntegrator.cpp:405
slnpairvarray getSolutionAsVarray() const
solution of the integration step
Definition dbpp_NujicIntegrator.h:139
std::valarray< float64 > m_currU2Values
Definition dbpp_NujicIntegrator.h:241
StateVector getSolutionAsField() const noexcept
Getter.
Definition dbpp_NujicIntegrator.h:171
std::valarray< float64 > m_prevU2Values
Definition dbpp_NujicIntegrator.h:238
void step(dbpp::SweRhsData< float64, std::valarray< float64 > > &&aRhs, float64 aDt)
Step algorithm.
Definition dbpp_NujicIntegrator.cpp:361
StateVector getMidState() const
Getter.
Definition dbpp_NujicIntegrator.h:131
std::valarray< float64 > m_prevU1Values
Definition dbpp_NujicIntegrator.h:237
void corrector(dbpp::SweRhsData< float64, std::valarray< float64 > > &&aRhs, float64 aDt)
corrector algorithm
Definition dbpp_NujicIntegrator.cpp:271
eIntegratorStep
Enumeration integrator steps.
Definition dbpp_NujicIntegrator.h:37
@ predictor
Definition dbpp_NujicIntegrator.h:38
@ corrector
Definition dbpp_NujicIntegrator.h:39
void setIntegratorStep(const eIntegratorStep aIntegratorStep)
Set integrator algorithm step.
Definition dbpp_NujicIntegrator.h:193
void initialSolution(const Range &aRng1, const Range &aRng2)
Initial solution.
Definition dbpp_NujicIntegrator.h:72
void setInitialState(StateVector aField)
Initial state.
Definition dbpp_NujicIntegrator.cpp:392
eIntegratorStep m_integratorStep
Definition dbpp_NujicIntegrator.h:236
std::valarray< float64 > m_currU1Values
Definition dbpp_NujicIntegrator.h:240
StateVector m_currState
Definition dbpp_NujicIntegrator.h:242
slnpairvector getSolutionAsVector() const
Getter.
Definition dbpp_NujicIntegrator.h:151
float64 m_spatialStep
Definition dbpp_NujicIntegrator.h:234
void TwoInOneStep(dbpp::SweRhsAlgorithm *aRhsAlgo, const float64 aDt)
Step algorithm.
Definition dbpp_NujicIntegrator.cpp:20
StateVector m_prevState
Definition dbpp_NujicIntegrator.h:239
void predictor(dbpp::SweRhsData< float64, std::valarray< float64 > > &&aRhs, float64 aDt)
predictor algorithm
Definition dbpp_NujicIntegrator.cpp:232
std::pair< std::valarray< float64 >, std::valarray< float64 > > slnpairvarray
Alias (pair of numerical array fast floating)
Definition dbpp_NujicIntegrator.h:28
std::pair< std::vector< float64 >, std::vector< float64 > > slnpairvector
Alias (pair of vector)
Definition dbpp_NujicIntegrator.h:32
StateVector getCurrentState() const
Getter.
Definition dbpp_NujicIntegrator.h:122
float64 m_step
Definition dbpp_NujicIntegrator.h:233
std::pair< float64, float64 > m_leftBCValues
Definition dbpp_NujicIntegrator.h:235
float64 getStep() const noexcept
Getter.
Definition dbpp_NujicIntegrator.h:188
void setStep(float64 aStep) noexcept
Set time step.
Definition dbpp_NujicIntegrator.h:183
eIntegratorStep getIntegratorStep() const noexcept
Getter.
Definition dbpp_NujicIntegrator.h:204
NujicIntegrator()
Default ctor.
Definition dbpp_NujicIntegrator.cpp:313
std::size_t m_numOfGridPts
Definition dbpp_NujicIntegrator.h:232
void setPhysicalBoundaryCnd()
Not implemented.
Definition dbpp_NujicIntegrator.h:208
void setLeftNodeBCValues(const std::pair< float64, float64 > &aPairLeftBC)
Left node (far left computational domain)
Definition dbpp_NujicIntegrator.h:213
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
Aggregate (must support operator[])
Definition dbpp_SweRhsData.hpp:17