4#include "include/Sfx_Directory.h"
28 m_U12{ nullptr,nullptr },
36 void initialize(
const std::shared_ptr<dbpp::FiniteVolumeDiscretization>& aGblDiscr)
override final
55 void mainLoop(
const std::shared_ptr<dbpp::FiniteVolumeDiscretization>& aGblDiscr,
56 Sfx::SfxTimePrm& aTimePrm)
override final
62 std::cerr <<
"Couldn't open data store -- Stop simulation\n";
72 std::cout <<
"Simulation initial time is: " << aTimePrm.getStartTime() <<
"\n";
73 std::cout <<
"Simulation final time is: " << aTimePrm.getFinalTime() <<
"\n";
74 std::cout <<
"Simulation delta (time step) is: " << aTimePrm.Delta() <<
"\n";
80 while (!aTimePrm.finished())
86 w_dbgLog->
open(Sfx::Directory::getWrkDbgFile());
89 std::cout <<
"Couldn't open file for writing debug info\n";
93 w_dbgLog->
write2file(std::string(
""), Sfx::SimulationMgr::getSingleton().getNbIterations() + 1);
117 std::vector<double> w_A; w_A.reserve(
w_phySystem->getStateVariables().size());
118 std::vector<double> w_Q; w_Q.reserve(
w_phySystem->getStateVariables().size());
120 namespace vws = std::views;
121 for(
const auto& w_pairVar :
w_phySystem->getStateVariables() | vws::values)
124 w_A.push_back(w_pairVar.first.value());
125 w_Q.push_back(w_pairVar.second.value());
128 auto w_CFL = Sfx::SimulationMgr::getSingleton().getCFL();
130 auto w_dt = w_CFL * TimeStepCriteria::timeStep(w_A, w_Q);
133 Sfx::Simulation::getSingleton().setSimulationTimeStep(w_dt);
134 aTimePrm.increaseTime(w_dt);
136 std::cout <<
"Finished time step at iteration " <<
137 Sfx::SimulationMgr::getSingleton().getNbIterations() + 1 <<
"\n";
140 Sfx::SimulationMgr::getSingleton().incrIteration();
144 std::cout <<
"End of an iteration\n";
173 auto chk = Sfx::Directory::getWrkDbgFile();
174 w_dbgLog->
open(Sfx::Directory::getWrkDbgFile());
177 std::cout <<
"Couldn't open file for writing debug info\n";
196 if (
auto w_rhs =
dynamic_cast<dbpp::TestRhsImpl*
>(
m_rhsAlgo); w_rhs !=
nullptr)
210 const auto w_halfStep = w_twoStepsIntegrator.
getMidState();
214 w_dbgLog->
write2file_p({
static_cast<unsigned>(w_halfStep.first->values().size()),
215 std::vector(std::begin(w_halfStep.first->values()), std::end(w_halfStep.first->values())),
216 std::vector(std::begin(w_halfStep.second->values()),std::end(w_halfStep.second->values())) });
219 if (
auto w_rhs =
dynamic_cast<TestRhsImpl*
>(
m_rhsAlgo); w_rhs !=
nullptr)
230 w_twoStepsIntegrator.
setIntegratorStep(NujicIntegrator::eIntegratorStep::corrector);
238 w_dbgLog->
write2file({
static_cast<unsigned>(
m_U12.first->values().size()),
239 std::vector(std::begin(
m_U12.first->values()),std::end(
m_U12.first->values())),
240 std::vector(std::begin(
m_U12.second->values()),std::end(
m_U12.second->values())) });
std::pair< fieldptr, fieldptr > StateVector
Definition SimulationConfig.h:27
Helper utility that save result to a file to be used for debugging and visualizing.
Definition Sfx_DbgLogger.h:19
bool isOpen()
check file is open
Definition Sfx_DbgLogger.h:43
void open(const std::string &aFilename="LoggerFile.txt")
open file for writing (file name as default)
Definition Sfx_DbgLogger.cpp:43
void close()
close file
Definition Sfx_DbgLogger.cpp:23
void write2file_p(const tuplevec &aTuple)
Write tuple of vector.
Definition Sfx_DbgLogger.cpp:99
void write2file(const std::string &aMsg="")=delete
write a message to file
Abstract class provide an interface with services to implement physical based algorithm to solve st-V...
Definition Sfx_PhysicalAlgorithm.h:20
Physical measuremt taken on physical system (e.g. energy, friction, ...).
Definition Sfx_PhysicalMeasurement.h:14
void advance(const dbpp::PhysicalSystem *aPhysys, const dbpp::FiniteVolumeDiscretization *aGblDiscr, double aDt)
Definition Testvs19_Numethod_f.h:167
Sfx::PhysicalMeasurement * w_phyMeasure
Definition Testvs19_Numethod_f.h:258
void setDebugFileON(bool aFileOn)
Definition Testvs19_Numethod_f.h:162
Sfx::PhysicalAlgorithm * w_phyAlgo
Definition Testvs19_Numethod_f.h:259
void initialize(const std::shared_ptr< dbpp::FiniteVolumeDiscretization > &aGblDiscr) override final
Initialize.
Definition Testvs19_Numethod_f.h:36
Numethod_f(dbpp::SweRhsAlgorithm *aRhsAlgo)
Ctor rhs discretization algorithm.
Definition Testvs19_Numethod_f.h:25
dbpp::PhysicalSystem * w_phySystem
Definition Testvs19_Numethod_f.h:256
Sfx::PhysicalConfigure * w_phyConfig
Definition Testvs19_Numethod_f.h:257
StateVector m_U12
Definition Testvs19_Numethod_f.h:252
bool m_dbgFile
Definition Testvs19_Numethod_f.h:254
bool isDebugFileON() const
Definition Testvs19_Numethod_f.h:163
Sfx::FileDataStore w_fileDatStore
Definition Testvs19_Numethod_f.h:260
void mainLoop(const std::shared_ptr< dbpp::FiniteVolumeDiscretization > &aGblDiscr, Sfx::SfxTimePrm &aTimePrm) override final
Main loop (update nodal values)
Definition Testvs19_Numethod_f.h:55
dbpp::SweRhsAlgorithm * m_rhsAlgo
Definition Testvs19_Numethod_f.h:250
global discretized domain is defined as a set of all nodes and all elements. PHYSICAL ENTITIES includ...
Definition dbpp_FiniteVolumeDiscretization.h:26
Gamma & gamma() const
boundary condition (numeric)
Belongs two-step integrator Runge-Kutta family.
Definition dbpp_NujicIntegrator.h:24
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
eIntegratorStep
Enumeration integrator steps.
Definition dbpp_NujicIntegrator.h:37
@ predictor
Definition dbpp_NujicIntegrator.h:38
void setIntegratorStep(const eIntegratorStep aIntegratorStep)
Set integrator algorithm step.
Definition dbpp_NujicIntegrator.h:193
void setInitialState(StateVector aField)
Initial state.
Definition dbpp_NujicIntegrator.cpp:392
StateVector getCurrentState() const
Getter.
Definition dbpp_NujicIntegrator.h:122
Mapping between continuum and discrete domain. Transformation of the differential or integral equatio...
Definition dbpp_NumericalMethod.h:20
Physical system made of physical objects under study and described by the state variables....
Definition dbpp_PhysicalSystem.h:32
Sfx::StateVectorField getStateVector() const
physical system state vector (scalar field)
Definition dbpp_PhysicalSystem.cpp:80
Wrappper class to support legacy code (C-functions).
Definition dbpp_RhsPtr2FuncFlux.h:21
Abstract class. "Model" of the right-hand-side terms discretization. Hold discretization scheme or al...
Definition dbpp_SweRhsAlgorithm.h:28
Definition Testvs19_BaseRhsPhysicsAlgorithm.cpp:19