|
| UpwindPulseSolver (const LibUtilities::SessionReaderSharedPtr &pSession) |
|
virtual void | v_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) |
|
void | RiemannSolverUpwind (NekDouble AL, NekDouble uL, NekDouble AR, NekDouble uR, NekDouble &Aflux, NekDouble &uflux, NekDouble A_0, NekDouble beta, NekDouble n) |
|
SOLVER_UTILS_EXPORT | RiemannSolver (const LibUtilities::SessionReaderSharedPtr &pSession) |
|
virtual SOLVER_UTILS_EXPORT | ~RiemannSolver () |
|
virtual void | v_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)=0 |
|
void | GenerateRotationMatrices (const Array< OneD, const Array< OneD, NekDouble > > &normals) |
| Generate rotation matrices for 3D expansions. More...
|
|
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. More...
|
|
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. More...
|
|
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. More...
|
|
SOLVER_UTILS_EXPORT bool | CheckScalars (std::string name) |
| Determine whether a scalar has been defined in m_scalars. More...
|
|
SOLVER_UTILS_EXPORT bool | CheckVectors (std::string name) |
| Determine whether a vector has been defined in m_vectors. More...
|
|
SOLVER_UTILS_EXPORT bool | CheckParams (std::string name) |
| Determine whether a parameter has been defined in m_params. More...
|
|
SOLVER_UTILS_EXPORT bool | CheckAuxScal (std::string name) |
| Determine whether a scalar has been defined in m_auxScal. More...
|
|
SOLVER_UTILS_EXPORT bool | CheckAuxVec (std::string name) |
| Determine whether a vector has been defined in m_auxVec. More...
|
|
|
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. More...
|
|
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) |
|
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) |
|
std::map< std::string, RSScalarFuncType > & | GetScalars () |
|
std::map< std::string, RSVecFuncType > & | GetVectors () |
|
std::map< std::string, RSParamFuncType > & | GetParams () |
|
int | m_spacedim |
|
bool | m_requiresRotation |
| Indicates whether the Riemann solver requires a rotation to be applied to the velocity fields. More...
|
|
std::map< std::string, RSScalarFuncType > | m_scalars |
| Map of scalar function types. More...
|
|
std::map< std::string, RSVecFuncType > | m_vectors |
| Map of vector function types. More...
|
|
std::map< std::string, RSParamFuncType > | m_params |
| Map of parameter function types. More...
|
|
std::map< std::string, RSScalarFuncType > | m_auxScal |
| Map of auxiliary scalar function types. More...
|
|
std::map< std::string, RSVecFuncType > | m_auxVec |
| Map of auxiliary vector function types. More...
|
|
Array< OneD, Array< OneD, NekDouble > > | m_rotMat |
| Rotation matrices for each trace quadrature point. More...
|
|
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > | m_rotStorage |
| Rotation storage. More...
|
|
Definition at line 44 of file UpwindPulseSolver.h.
Riemann solver for upwinding at an interface between two elements. Uses the characteristic variables for calculating the upwinded state \((A_u,u_u)\) from the left \((A_L,u_L)\) and right state \((A_R,u_R)\). Returns the upwinded flux ${F}^u$ needed for the weak formulation (1). Details can be found in "Pulse wave propagation in the
human vascular system", section 3.3
Definition at line 89 of file UpwindPulseSolver.cpp.
References ASSERTL1, Nektar::SolverUtils::RiemannSolver::CheckParams(), Nektar::SolverUtils::RiemannSolver::m_params, and CellMLToNektar.cellml_metadata::p.
Referenced by v_Solve().
95 Array<OneD, NekDouble> W(2);
96 Array<OneD, NekDouble> upwindedphysfield(2);
115 cL = sqrt(beta * sqrt(AL) / (2 * rho)) * n;
116 cR = sqrt(beta * sqrt(AR) / (2 * rho)) * n;
118 ASSERTL1(fabs(cL + cR) > fabs(uL + uR),
"Conditions are not sub-sonic");
131 upwindedphysfield[0] = w0mw1 * fac;
132 upwindedphysfield[1] = 0.5 * (W[0] + W[1]);
135 Aflux = upwindedphysfield[0] * upwindedphysfield[1] * n;
136 p = pext + beta * (sqrt(upwindedphysfield[0]) - sqrt(A_0));
137 p_t = 0.5 * (upwindedphysfield[1] * upwindedphysfield[1]) + p / rho;
std::map< std::string, RSParamFuncType > m_params
Map of parameter function types.
SOLVER_UTILS_EXPORT bool CheckParams(std::string name)
Determine whether a parameter has been defined in m_params.
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...