Nektar++
Loading...
Searching...
No Matches
Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
Nektar::AUSM1Solver Class Reference

#include <AUSM1Solver.h>

Inheritance diagram for Nektar::AUSM1Solver:
[legend]

Static Public Member Functions

static RiemannSolverSharedPtr create (const LibUtilities::SessionReaderSharedPtr &pSession)
 
- Static Public Member Functions inherited from Nektar::AUSM0Solver
static RiemannSolverSharedPtr create (const LibUtilities::SessionReaderSharedPtr &pSession)
 

Static Public Attributes

static std::string solverName
 
- Static Public Attributes inherited from Nektar::AUSM0Solver
static std::string solverName
 

Protected Member Functions

 AUSM1Solver (const LibUtilities::SessionReaderSharedPtr &pSession)
 
void v_PointSolve (double rhoL, double rhouL, double rhovL, double rhowL, double EL, double rhoR, double rhouR, double rhovR, double rhowR, double ER, double &rhof, double &rhouf, double &rhovf, double &rhowf, double &Ef) override
 AUSM1 Riemann solver.
 
- Protected Member Functions inherited from Nektar::AUSM0Solver
 AUSM0Solver (const LibUtilities::SessionReaderSharedPtr &pSession)
 
double M1Function (int A, double M)
 
double M2Function (int A, double M)
 
double M4Function (int A, double beta, double M)
 
double P5Function (int A, double alpha, double M)
 
- Protected Member Functions inherited from Nektar::CompressibleSolver
 CompressibleSolver (const LibUtilities::SessionReaderSharedPtr &pSession)
 Session ctor.
 
 CompressibleSolver ()
 Programmatic ctor.
 
void v_Solve (const int nDim, const Array< OneD, const Array< OneD, ND > > &Fwd, const Array< OneD, const Array< OneD, ND > > &Bwd, Array< OneD, Array< OneD, ND > > &flux) override
 
virtual void v_ArraySolve (const Array< OneD, const Array< OneD, ND > > &Fwd, const Array< OneD, const Array< OneD, ND > > &Bwd, Array< OneD, Array< OneD, ND > > &flux)
 
ND GetRoeSoundSpeed (ND rhoL, ND pL, ND eL, ND HL, ND srL, ND rhoR, ND pR, ND eR, ND HR, ND srR, ND HRoe, ND URoe2, ND srLR)
 
- Protected Member Functions inherited from Nektar::SolverUtils::RiemannSolver
SOLVER_UTILS_EXPORT RiemannSolver ()
 
SOLVER_UTILS_EXPORT RiemannSolver (const LibUtilities::SessionReaderSharedPtr &pSession)
 
virtual SOLVER_UTILS_EXPORT ~RiemannSolver ()
 
SOLVER_UTILS_EXPORT void GenerateRotationMatrices (const Array< OneD, const Array< OneD, NekDouble > > &normals)
 Generate rotation matrices for 3D expansions.
 
void FromToRotation (Array< OneD, const NekDouble > &from, Array< OneD, const NekDouble > &to, NekDouble *mat)
 A function for creating a rotation matrix that rotates a vector from into another vector to.
 
SOLVER_UTILS_EXPORT void rotateToNormal (const Array< OneD, const Array< OneD, NekDouble > > &inarray, const Array< OneD, const Array< OneD, NekDouble > > &normals, const Array< OneD, const Array< OneD, NekDouble > > &vecLocs, Array< OneD, Array< OneD, NekDouble > > &outarray)
 Rotate a vector field to trace normal.
 
SOLVER_UTILS_EXPORT void rotateFromNormal (const Array< OneD, const Array< OneD, NekDouble > > &inarray, const Array< OneD, const Array< OneD, NekDouble > > &normals, const Array< OneD, const Array< OneD, NekDouble > > &vecLocs, Array< OneD, Array< OneD, NekDouble > > &outarray)
 Rotate a vector field from trace normal.
 
SOLVER_UTILS_EXPORT bool CheckScalars (std::string name)
 Determine whether a scalar has been defined in m_scalars.
 
SOLVER_UTILS_EXPORT bool CheckVectors (std::string name)
 Determine whether a vector has been defined in m_vectors.
 
SOLVER_UTILS_EXPORT bool CheckParams (std::string name)
 Determine whether a parameter has been defined in m_params.
 
SOLVER_UTILS_EXPORT bool CheckAuxScal (std::string name)
 Determine whether a scalar has been defined in m_auxScal.
 
SOLVER_UTILS_EXPORT bool CheckAuxVec (std::string name)
 Determine whether a vector has been defined in m_auxVec.
 
virtual SOLVER_UTILS_EXPORT void v_CalcFluxJacobian (const int nDim, const Array< OneD, const Array< OneD, NekDouble > > &Fwd, const Array< OneD, const Array< OneD, NekDouble > > &Bwd, const Array< OneD, const Array< OneD, NekDouble > > &normals, DNekBlkMatSharedPtr &FJac, DNekBlkMatSharedPtr &BJac)
 

Additional Inherited Members

- Public Member Functions inherited from Nektar::SolverUtils::RiemannSolver
SOLVER_UTILS_EXPORT void Solve (const int nDim, const Array< OneD, const Array< OneD, NekDouble > > &Fwd, const Array< OneD, const Array< OneD, NekDouble > > &Bwd, Array< OneD, Array< OneD, NekDouble > > &flux)
 Perform the Riemann solve given the forwards and backwards spaces.
 
template<typename FuncPointerT , typename ObjectPointerT >
void SetScalar (std::string name, FuncPointerT func, ObjectPointerT obj)
 
void SetScalar (std::string name, RSScalarFuncType fp)
 
template<typename FuncPointerT , typename ObjectPointerT >
void SetVector (std::string name, FuncPointerT func, ObjectPointerT obj)
 
void SetVector (std::string name, RSVecFuncType fp)
 
template<typename FuncPointerT , typename ObjectPointerT >
void SetParam (std::string name, FuncPointerT func, ObjectPointerT obj)
 
template<typename FuncPointerT , typename ObjectPointerT >
void SetUpdateNormalsFlag (FuncPointerT func, ObjectPointerT obj)
 
void SetALEFlag (bool &ALE)
 
void SetParam (std::string name, RSParamFuncType fp)
 
template<typename FuncPointerT , typename ObjectPointerT >
void SetAuxScal (std::string name, FuncPointerT func, ObjectPointerT obj)
 
template<typename FuncPointerT , typename ObjectPointerT >
void SetAuxVec (std::string name, FuncPointerT func, ObjectPointerT obj)
 
void SetAuxVec (std::string name, RSVecFuncType fp)
 
std::map< std::string, RSScalarFuncType > & GetScalars ()
 
std::map< std::string, RSVecFuncType > & GetVectors ()
 
std::map< std::string, RSParamFuncType > & GetParams ()
 
SOLVER_UTILS_EXPORT void CalcFluxJacobian (const int nDim, const Array< OneD, const Array< OneD, NekDouble > > &Fwd, const Array< OneD, const Array< OneD, NekDouble > > &Bwd, DNekBlkMatSharedPtr &FJac, DNekBlkMatSharedPtr &BJac)
 Calculate the flux jacobian of Fwd and Bwd.
 
SOLVER_UTILS_EXPORT void ResetRotMatrix (void)
 
- Public Attributes inherited from Nektar::SolverUtils::RiemannSolver
int m_spacedim
 
- Protected Types inherited from Nektar::CompressibleSolver
using ND = NekDouble
 
- Protected Attributes inherited from Nektar::CompressibleSolver
bool m_pointSolve
 
EquationOfStateSharedPtr m_eos
 
bool m_idealGas
 
- Protected Attributes inherited from Nektar::SolverUtils::RiemannSolver
bool m_requiresRotation
 Indicates whether the Riemann solver requires a rotation to be applied to the velocity fields.
 
std::map< std::string, RSScalarFuncTypem_scalars
 Map of scalar function types.
 
std::map< std::string, RSVecFuncTypem_vectors
 Map of vector function types.
 
std::map< std::string, RSParamFuncTypem_params
 Map of parameter function types.
 
std::map< std::string, RSScalarFuncTypem_auxScal
 Map of auxiliary scalar function types.
 
std::map< std::string, RSVecFuncTypem_auxVec
 Map of auxiliary vector function types.
 
std::function< bool()> m_updateNormals
 Function of normals updated flag.
 
Array< OneD, Array< OneD, NekDouble > > m_rotMat
 Rotation matrices for each trace quadrature point.
 
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_rotStorage
 Rotation storage.
 
bool m_ALESolver = false
 Flag if using the ALE formulation.
 

Detailed Description

Definition at line 43 of file AUSM1Solver.h.

Constructor & Destructor Documentation

◆ AUSM1Solver()

Nektar::AUSM1Solver::AUSM1Solver ( const LibUtilities::SessionReaderSharedPtr pSession)
protected

Definition at line 44 of file AUSM1Solver.cpp.

45 : AUSM0Solver(pSession)
46{
47}
AUSM0Solver(const LibUtilities::SessionReaderSharedPtr &pSession)

Member Function Documentation

◆ create()

static RiemannSolverSharedPtr Nektar::AUSM1Solver::create ( const LibUtilities::SessionReaderSharedPtr pSession)
inlinestatic

Definition at line 46 of file AUSM1Solver.h.

48 {
49 return RiemannSolverSharedPtr(new AUSM1Solver(pSession));
50 }
AUSM1Solver(const LibUtilities::SessionReaderSharedPtr &pSession)
std::shared_ptr< RiemannSolver > RiemannSolverSharedPtr
A shared pointer to an EquationSystem object.

◆ v_PointSolve()

void Nektar::AUSM1Solver::v_PointSolve ( double  rhoL,
double  rhouL,
double  rhovL,
double  rhowL,
double  EL,
double  rhoR,
double  rhouR,
double  rhovR,
double  rhowR,
double  ER,
double &  rhof,
double &  rhouf,
double &  rhovf,
double &  rhowf,
double &  Ef 
)
overrideprotectedvirtual

AUSM1 Riemann solver.

Parameters
rhoLDensity left state.
rhoRDensity right state.
rhouLx-momentum component left state.
rhouRx-momentum component right state.
rhovLy-momentum component left state.
rhovRy-momentum component right state.
rhowLz-momentum component left state.
rhowRz-momentum component right state.
ELEnergy left state.
EREnergy right state.
rhofComputed Riemann flux for density.
rhoufComputed Riemann flux for x-momentum component
rhovfComputed Riemann flux for y-momentum component
rhowfComputed Riemann flux for z-momentum component
EfComputed Riemann flux for energy.

Reimplemented from Nektar::AUSM0Solver.

Definition at line 68 of file AUSM1Solver.cpp.

73{
74 // Left and Right velocities
75 NekDouble uL = rhouL / rhoL;
76 NekDouble vL = rhovL / rhoL;
77 NekDouble wL = rhowL / rhoL;
78 NekDouble uR = rhouR / rhoR;
79 NekDouble vR = rhovR / rhoR;
80 NekDouble wR = rhowR / rhoR;
81
82 // Internal energy (per unit mass)
83 NekDouble eL = (EL - 0.5 * (rhouL * uL + rhovL * vL + rhowL * wL)) / rhoL;
84 NekDouble eR = (ER - 0.5 * (rhouR * uR + rhovR * vR + rhowR * wR)) / rhoR;
85 // Pressure
86 NekDouble pL = m_eos->GetPressure(rhoL, eL);
87 NekDouble pR = m_eos->GetPressure(rhoR, eR);
88 // Speed of sound
89 NekDouble cL = m_eos->GetSoundSpeed(rhoL, eL);
90 NekDouble cR = m_eos->GetSoundSpeed(rhoR, eR);
91
92 // Average speeds of sound
93 NekDouble cA = 0.5 * (cL + cR);
94
95 // Local Mach numbers
96 NekDouble ML = uL / cA;
97 NekDouble MR = uR / cA;
98
99 // Parameters for specify the upwinding
100 NekDouble beta = 0.125;
101 NekDouble alpha = 0.1875;
102 NekDouble Mbar = M4Function(0, beta, ML) + M4Function(1, beta, MR);
103 NekDouble pbar =
104 pL * P5Function(0, alpha, ML) + pR * P5Function(1, alpha, MR);
105
106 if (Mbar >= 0.0)
107 {
108 rhof = cA * Mbar * rhoL;
109 rhouf = cA * Mbar * rhoL * uL + pbar;
110 rhovf = cA * Mbar * rhoL * vL;
111 rhowf = cA * Mbar * rhoL * wL;
112 Ef = cA * Mbar * (EL + pL);
113 }
114 else
115 {
116 rhof = cA * Mbar * rhoR;
117 rhouf = cA * Mbar * rhoR * uR + pbar;
118 rhovf = cA * Mbar * rhoR * vR;
119 rhowf = cA * Mbar * rhoR * wR;
120 Ef = cA * Mbar * (ER + pR);
121 }
122}
double P5Function(int A, double alpha, double M)
double M4Function(int A, double beta, double M)
EquationOfStateSharedPtr m_eos
@ beta
Gauss Radau pinned at x=-1,.
Definition PointsType.h:59

References Nektar::LibUtilities::beta, Nektar::AUSM0Solver::M4Function(), Nektar::CompressibleSolver::m_eos, and Nektar::AUSM0Solver::P5Function().

Member Data Documentation

◆ solverName

std::string Nektar::AUSM1Solver::solverName
static
Initial value:
=
"AUSM1", AUSM1Solver::create, "AUSM1 Riemann solver")
static RiemannSolverSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession)
Definition AUSM1Solver.h:46
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
RiemannSolverFactory & GetRiemannSolverFactory()

Definition at line 52 of file AUSM1Solver.h.