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

Core finite-volume evaluator for compressible Navier-Stokes / Euler equations. More...

#include "Gas.hpp"
#include "Geom/Mesh.hpp"
#include "CFV/VariationalReconstruction.hpp"
#include "DNDS/JsonUtil.hpp"
#include "Euler.hpp"
#include "EulerBC.hpp"
#include "EulerJacobian.hpp"
#include "EulerEvaluatorSettings.hpp"
#include "DNDS/SerializerBase.hpp"
#include "RANS_ke.hpp"
#include "fmt/core.h"
#include <iomanip>
#include <functional>
Include dependency graph for EulerEvaluator.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  DNDS::Euler::EulerEvaluator< model >
 Core finite-volume evaluator for compressible Navier-Stokes / Euler equations. More...
 
struct  DNDS::Euler::EulerEvaluator< model >::OutputOverlapDataRefs
 References to arrays needed by the output data picker. More...
 

Namespaces

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

Macros

#define DNDS_EulerEvaluator_INS_EXTERN(model, ext)
 
#define DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN(model, ext)
 
#define DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN(model, ext)
 

Functions

 DNDS_EulerEvaluator_INS_EXTERN (NS, extern)
 
 DNDS_EulerEvaluator_INS_EXTERN (NS_2D, extern)
 
 DNDS_EulerEvaluator_INS_EXTERN (NS_SA, extern)
 
 DNDS_EulerEvaluator_INS_EXTERN (NS_2EQ, extern)
 
 DNDS_EulerEvaluator_INS_EXTERN (NS_3D, extern)
 
 DNDS_EulerEvaluator_INS_EXTERN (NS_SA_3D, extern)
 
 DNDS_EulerEvaluator_INS_EXTERN (NS_2EQ_3D, extern)
 
 DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (NS, extern)
 
 DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (NS_2D, extern)
 
 DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (NS_SA, extern)
 
 DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (NS_2EQ, extern)
 
 DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (NS_3D, extern)
 
 DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (NS_SA_3D, extern)
 
 DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (NS_2EQ_3D, extern)
 
 DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (NS, extern)
 
 DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (NS_2D, extern)
 
 DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (NS_SA, extern)
 
 DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (NS_2EQ, extern)
 
 DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (NS_3D, extern)
 
 DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (NS_SA_3D, extern)
 
 DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (NS_2EQ_3D, extern)
 

Detailed Description

Core finite-volume evaluator for compressible Navier-Stokes / Euler equations.

Provides the EulerEvaluator class template, parameterized by EulerModel, which encapsulates the spatial discretization of the compressible Navier-Stokes equations using Compact Finite Volume (CFV) methods with variational reconstruction.

Responsibilities include:

  • Right-hand side (RHS) evaluation of the semi-discrete system
  • Local time step estimation
  • Implicit Jacobian assembly (LU-SGS / SGS / GMRES preconditioning)
  • Boundary condition ghost-value generation for all supported BC types
  • Wall distance computation (AABB tree, batched AABB, p-Poisson)
  • Positivity-preserving limiters and increment compression
  • RANS turbulence model source terms (SA, k-omega SST, k-omega Wilcox, Realizable k-e)
  • Periodic boundary handling and rotating-frame transformations

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

See also
EulerSolver.hpp Top-level solver orchestrating time marching
EulerBC.hpp Boundary condition handler
Gas.hpp Gas thermodynamic and Riemann solver routines

Definition in file EulerEvaluator.hpp.

Macro Definition Documentation

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN

#define DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN (   model,
  ext 
)

Definition at line 2128 of file EulerEvaluator.hpp.

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN

#define DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN (   model,
  ext 
)
Value:
namespace DNDS::Euler \
{ \
ArrayDOFV<nVarsFixed> &rhs, \
JacobianDiagBlock<nVarsFixed> &JSource, \
ArrayDOFV<nVarsFixed> &u, \
ArrayRECV<nVarsFixed> &uRecUnlim, \
ArrayRECV<nVarsFixed> &uRec, \
ArrayDOFV<1> &uRecBeta, \
ArrayDOFV<1> &cellRHSAlpha, \
bool onlyOnHalfAlpha, \
real t, \
uint64_t flags); \
}
void EvaluateRHS(ArrayDOFV< nVarsFixed > &rhs, JacobianDiagBlock< nVarsFixed > &JSource, ArrayDOFV< nVarsFixed > &u, ArrayRECV< nVarsFixed > &uRecUnlim, ArrayRECV< nVarsFixed > &uRec, ArrayDOFV< 1 > &uRecBeta, ArrayDOFV< 1 > &cellRHSAlpha, bool onlyOnHalfAlpha, real t, uint64_t flags=RHS_No_Flags)
Evaluate the spatial right-hand side of the semi-discrete system.
double real
Canonical floating-point scalar used throughout DNDSR (double precision).
Definition Defines.hpp:105

Definition at line 2220 of file EulerEvaluator.hpp.

◆ DNDS_EulerEvaluator_INS_EXTERN

#define DNDS_EulerEvaluator_INS_EXTERN (   model,
  ext 
)

Definition at line 1983 of file EulerEvaluator.hpp.

Function Documentation

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN() [1/7]

DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN ( NS  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN() [2/7]

DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN ( NS_2D  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN() [3/7]

DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN ( NS_2EQ  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN() [4/7]

DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN ( NS_2EQ_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN() [5/7]

DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN ( NS_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN() [6/7]

DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN ( NS_SA  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN() [7/7]

DNDS_EulerEvaluator_EvaluateDt_INS_EXTERN ( NS_SA_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN() [1/7]

DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN ( NS  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN() [2/7]

DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN ( NS_2D  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN() [3/7]

DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN ( NS_2EQ  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN() [4/7]

DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN ( NS_2EQ_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN() [5/7]

DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN ( NS_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN() [6/7]

DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN ( NS_SA  ,
extern   
)

◆ DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN() [7/7]

DNDS_EulerEvaluator_EvaluateRHS_INS_EXTERN ( NS_SA_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_INS_EXTERN() [1/7]

DNDS_EulerEvaluator_INS_EXTERN ( NS  ,
extern   
)

◆ DNDS_EulerEvaluator_INS_EXTERN() [2/7]

DNDS_EulerEvaluator_INS_EXTERN ( NS_2D  ,
extern   
)

◆ DNDS_EulerEvaluator_INS_EXTERN() [3/7]

DNDS_EulerEvaluator_INS_EXTERN ( NS_2EQ  ,
extern   
)

◆ DNDS_EulerEvaluator_INS_EXTERN() [4/7]

DNDS_EulerEvaluator_INS_EXTERN ( NS_2EQ_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_INS_EXTERN() [5/7]

DNDS_EulerEvaluator_INS_EXTERN ( NS_3D  ,
extern   
)

◆ DNDS_EulerEvaluator_INS_EXTERN() [6/7]

DNDS_EulerEvaluator_INS_EXTERN ( NS_SA  ,
extern   
)

◆ DNDS_EulerEvaluator_INS_EXTERN() [7/7]

DNDS_EulerEvaluator_INS_EXTERN ( NS_SA_3D  ,
extern   
)