DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
EulerSolver.hpp File Reference

Top-level solver orchestrator for compressible Navier-Stokes / Euler simulations. More...

#include <iomanip>
#include <functional>
#include <tuple>
#include <filesystem>
#include <mutex>
#include <future>
#include "DNDS/JsonUtil.hpp"
#include "DNDS/ConfigParam.hpp"
#include "DNDS/SerializerFactory.hpp"
#include "DNDS/CsvLog.hpp"
#include "DNDS/ObjectPool.hpp"
#include "Solver/Linear.hpp"
#include "Geom/Mesh.hpp"
#include "CFV/VariationalReconstruction.hpp"
#include "Gas.hpp"
#include "EulerEvaluator.hpp"
#include "EulerBC.hpp"
#include "Solver/ODE.hpp"
Include dependency graph for EulerSolver.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  DNDS::Euler::EulerSolver< model >
 Top-level solver orchestrator for compressible Navier-Stokes / Euler equations. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration
 Complete solver configuration, serializable to/from JSON. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::TimeMarchControl
 Time marching control parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::ImplicitReconstructionControl
 Implicit reconstruction control parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::OutputControl
 Output control parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::ImplicitCFLControl
 Implicit CFL number control parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::ConvergenceControl
 Convergence monitoring parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::DataIOControl
 Data I/O control parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::BoundaryDefinition
 Periodic boundary geometry definitions. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::LimiterControl
 Slope limiter control parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::LinearSolverControl
 Linear solver control parameters. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::LinearSolverControl::CoarseGridLinearSolverControl
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::RestartState
 Restart checkpoint state. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::TimeAverageControl
 Time-averaging control for unsteady simulations. More...
 
struct  DNDS::Euler::EulerSolver< model >::Configuration::Others
 Miscellaneous solver options (axisymmetric mode, passive scalar freezing, rec matrix output). More...
 
struct  DNDS::Euler::EulerSolver< model >::RunningEnvironment
 Mutable state bundle for the time-marching loop. More...
 

Namespaces

namespace  DNDS
 the host side operators are provided as implemented
 
namespace  DNDS::Euler
 

Macros

#define DNDS_EULERSOLVER_RUNNINGENV_GET_REF(name)   auto &name = runningEnvironment.name
 
#define DNDS_EULERSOLVER_RUNNINGENV_GET_REF_LIST
 
#define DNDS_EULERSOLVER_INS_EXTERN(model, ext)
 
#define DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN(model, ext)
 
#define DNDS_EULERSOLVER_INIT_INS_EXTERN(model, ext)
 

Functions

 DNDS_EULERSOLVER_INS_EXTERN (NS, extern)
 
 DNDS_EULERSOLVER_INS_EXTERN (NS_2D, extern)
 
 DNDS_EULERSOLVER_INS_EXTERN (NS_SA, extern)
 
 DNDS_EULERSOLVER_INS_EXTERN (NS_2EQ, extern)
 
 DNDS_EULERSOLVER_INS_EXTERN (NS_3D, extern)
 
 DNDS_EULERSOLVER_INS_EXTERN (NS_SA_3D, extern)
 
 DNDS_EULERSOLVER_INS_EXTERN (NS_2EQ_3D, extern)
 
 DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (NS, extern)
 
 DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (NS_2D, extern)
 
 DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (NS_SA, extern)
 
 DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (NS_2EQ, extern)
 
 DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (NS_3D, extern)
 
 DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (NS_SA_3D, extern)
 
 DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (NS_2EQ_3D, extern)
 
 DNDS_EULERSOLVER_INIT_INS_EXTERN (NS, extern)
 
 DNDS_EULERSOLVER_INIT_INS_EXTERN (NS_2D, extern)
 
 DNDS_EULERSOLVER_INIT_INS_EXTERN (NS_SA, extern)
 
 DNDS_EULERSOLVER_INIT_INS_EXTERN (NS_2EQ, extern)
 
 DNDS_EULERSOLVER_INIT_INS_EXTERN (NS_3D, extern)
 
 DNDS_EULERSOLVER_INIT_INS_EXTERN (NS_SA_3D, extern)
 
 DNDS_EULERSOLVER_INIT_INS_EXTERN (NS_2EQ_3D, extern)
 

Detailed Description

Top-level solver orchestrator for compressible Navier-Stokes / Euler simulations.

Provides the EulerSolver class template which owns and coordinates all solver components: mesh infrastructure, variational reconstruction, the EulerEvaluator spatial discretization, DOF arrays, ODE integrators, linear solvers (LU-SGS / GMRES), and I/O subsystems.

Responsibilities include:

  • JSON-based configuration loading, merging, and validation
  • Mesh reading (serial CGNS or distributed), partitioning, order elevation, and bisection
  • Solver initialization (evaluator, DOF allocation, restart loading)
  • Implicit time-marching loop (dual time stepping, CFL ramping, convergence monitoring)
  • VTK/HDF5/Tecplot data output and restart I/O
  • Time-averaging for unsteady statistics

Supported model specializations (via EulerModel enum): NS, NS_2D, NS_SA, NS_SA_3D, NS_2EQ, NS_2EQ_3D, NS_3D

See also
EulerEvaluator.hpp Spatial discretization and flux evaluation
Solver/ODE.hpp ODE integrator interface
Solver/Linear.hpp GMRES and preconditioner interface

Definition in file EulerSolver.hpp.

Macro Definition Documentation

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN

#define DNDS_EULERSOLVER_INIT_INS_EXTERN (   model,
  ext 
)
Value:
namespace DNDS::Euler \
{ \
ext template bool EulerSolver<model>::functor_fstop( \
int iter, ArrayDOFV<nVarsFixed> &cres, int iStep, RunningEnvironment &env); \
RunningEnvironment &env); \
}
void ReadMeshAndInitialize()
Read the mesh and initialize the full solver pipeline.
bool functor_fstop(int iter, ArrayDOFV< nVarsFixed > &cres, int iStep, RunningEnvironment &env)
Convergence/termination check functor called after each inner iteration.
bool functor_fmainloop(RunningEnvironment &env)
Main outer-loop functor: performs one full time step (reconstruction, RHS, linear solve,...

Definition at line 1443 of file EulerSolver.hpp.

◆ DNDS_EULERSOLVER_INS_EXTERN

#define DNDS_EULERSOLVER_INS_EXTERN (   model,
  ext 
)
Value:
namespace DNDS::Euler \
{ \
ext template void EulerSolver<model>::RunImplicitEuler(); \
EulerSolver<model>::RunningEnvironment &env); \
}
void RunImplicitEuler()
Run the main implicit time-marching loop.
void InitializeRunningEnvironment(RunningEnvironment &env)
Populate a RunningEnvironment with allocated solvers, loggers, and initial state.

Definition at line 1402 of file EulerSolver.hpp.

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN

#define DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN (   model,
  ext 
)
Value:
namespace DNDS::Euler \
{ \
ext template void EulerSolver<model>::PrintData( \
const std::string &fname, const std::string &fnameSeries, \
const tCellScalarFGet &odeResidualF, \
tAdditionalCellScalarList &additionalCellScalars, \
TEval &eval, real tSimu, \
PrintDataMode mode); \
ext template void EulerSolver<model>::PrintRestart( \
std::string fname); \
ext template void EulerSolver<model>::ReadRestart( \
std::string fname); \
std::string fname, const std::vector<int> &dimStore); \
}
void PrintData(const std::string &fname, const std::string &fnameSeries, const tCellScalarFGet &odeResidualF, tAdditionalCellScalarList &additionalCellScalars, TEval &eval, real TSimu=-1.0, PrintDataMode mode=PrintDataLatest)
Write solution data to VTK/HDF5/Tecplot output files.
void ReadRestartOtherSolver(std::string fname, const std::vector< int > &dimStore)
Read a restart file from a different solver/model, remapping variable dimensions.
void ReadRestart(std::string fname)
Read a restart file and populate u (and optionally uRec) from it.
void PrintRestart(std::string fname)
Write the current solution state to a restart file.
std::function< real(index)> tCellScalarFGet
Function type returning a scalar value for a given cell index [0, NumCell).
Definition EulerBC.hpp:704
double real
Canonical floating-point scalar used throughout DNDSR (double precision).
Definition Defines.hpp:105

Definition at line 1418 of file EulerSolver.hpp.

◆ DNDS_EULERSOLVER_RUNNINGENV_GET_REF

#define DNDS_EULERSOLVER_RUNNINGENV_GET_REF (   name)    auto &name = runningEnvironment.name

Definition at line 1298 of file EulerSolver.hpp.

◆ DNDS_EULERSOLVER_RUNNINGENV_GET_REF_LIST

#define DNDS_EULERSOLVER_RUNNINGENV_GET_REF_LIST

Definition at line 1300 of file EulerSolver.hpp.

Function Documentation

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN() [1/7]

DNDS_EULERSOLVER_INIT_INS_EXTERN ( NS  ,
extern   
)

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN() [2/7]

DNDS_EULERSOLVER_INIT_INS_EXTERN ( NS_2D  ,
extern   
)

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN() [3/7]

DNDS_EULERSOLVER_INIT_INS_EXTERN ( NS_2EQ  ,
extern   
)

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN() [4/7]

DNDS_EULERSOLVER_INIT_INS_EXTERN ( NS_2EQ_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN() [5/7]

DNDS_EULERSOLVER_INIT_INS_EXTERN ( NS_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN() [6/7]

DNDS_EULERSOLVER_INIT_INS_EXTERN ( NS_SA  ,
extern   
)

◆ DNDS_EULERSOLVER_INIT_INS_EXTERN() [7/7]

DNDS_EULERSOLVER_INIT_INS_EXTERN ( NS_SA_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_INS_EXTERN() [1/7]

DNDS_EULERSOLVER_INS_EXTERN ( NS  ,
extern   
)

◆ DNDS_EULERSOLVER_INS_EXTERN() [2/7]

DNDS_EULERSOLVER_INS_EXTERN ( NS_2D  ,
extern   
)

◆ DNDS_EULERSOLVER_INS_EXTERN() [3/7]

DNDS_EULERSOLVER_INS_EXTERN ( NS_2EQ  ,
extern   
)

◆ DNDS_EULERSOLVER_INS_EXTERN() [4/7]

DNDS_EULERSOLVER_INS_EXTERN ( NS_2EQ_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_INS_EXTERN() [5/7]

DNDS_EULERSOLVER_INS_EXTERN ( NS_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_INS_EXTERN() [6/7]

DNDS_EULERSOLVER_INS_EXTERN ( NS_SA  ,
extern   
)

◆ DNDS_EULERSOLVER_INS_EXTERN() [7/7]

DNDS_EULERSOLVER_INS_EXTERN ( NS_SA_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN() [1/7]

DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN ( NS  ,
extern   
)

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN() [2/7]

DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN ( NS_2D  ,
extern   
)

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN() [3/7]

DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN ( NS_2EQ  ,
extern   
)

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN() [4/7]

DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN ( NS_2EQ_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN() [5/7]

DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN ( NS_3D  ,
extern   
)

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN() [6/7]

DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN ( NS_SA  ,
extern   
)

◆ DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN() [7/7]

DNDS_EULERSOLVER_PRINTDATA_INS_EXTERN ( NS_SA_3D  ,
extern   
)