Nektar++
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | List of all members
Nektar::SolverUtils::EquationSystem Class Reference

A base class for describing how to solve specific equations. More...

#include <EquationSystem.h>

Inheritance diagram for Nektar::SolverUtils::EquationSystem:
[legend]

Public Member Functions

virtual SOLVER_UTILS_EXPORT ~EquationSystem ()
 Destructor. More...
 
SOLVER_UTILS_EXPORT void SetUpTraceNormals (void)
 
SOLVER_UTILS_EXPORT void InitObject ()
 Initialises the members of this object. More...
 
SOLVER_UTILS_EXPORT void DoInitialise ()
 Perform any initialisation necessary before solving the problem. More...
 
SOLVER_UTILS_EXPORT void DoSolve ()
 Solve the problem. More...
 
SOLVER_UTILS_EXPORT void TransCoeffToPhys ()
 Transform from coefficient to physical space. More...
 
SOLVER_UTILS_EXPORT void TransPhysToCoeff ()
 Transform from physical to coefficient space. More...
 
SOLVER_UTILS_EXPORT void Output ()
 Perform output operations after solve. More...
 
SOLVER_UTILS_EXPORT NekDouble LinfError (unsigned int field, const Array< OneD, NekDouble > &exactsoln=NullNekDouble1DArray)
 Linf error computation. More...
 
SOLVER_UTILS_EXPORT std::string GetSessionName ()
 Get Session name. More...
 
template<class T >
std::shared_ptr< T > as ()
 
SOLVER_UTILS_EXPORT void ResetSessionName (std::string newname)
 Reset Session name. More...
 
SOLVER_UTILS_EXPORT LibUtilities::SessionReaderSharedPtr GetSession ()
 Get Session name. More...
 
SOLVER_UTILS_EXPORT MultiRegions::ExpListSharedPtr GetPressure ()
 Get pressure field if available. More...
 
SOLVER_UTILS_EXPORT void ExtraFldOutput (std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)
 
SOLVER_UTILS_EXPORT void PrintSummary (std::ostream &out)
 Print a summary of parameters and solver characteristics. More...
 
SOLVER_UTILS_EXPORT void SetLambda (NekDouble lambda)
 Set parameter m_lambda. More...
 
SOLVER_UTILS_EXPORT SessionFunctionSharedPtr GetFunction (std::string name, const MultiRegions::ExpListSharedPtr &field=MultiRegions::NullExpListSharedPtr, bool cache=false)
 Get a SessionFunction by name. More...
 
SOLVER_UTILS_EXPORT void SetInitialConditions (NekDouble initialtime=0.0, bool dumpInitialConditions=true, const int domain=0)
 Initialise the data in the dependent fields. More...
 
SOLVER_UTILS_EXPORT void EvaluateExactSolution (int field, Array< OneD, NekDouble > &outfield, const NekDouble time)
 Evaluates an exact solution. More...
 
SOLVER_UTILS_EXPORT NekDouble L2Error (unsigned int field, const Array< OneD, NekDouble > &exactsoln, bool Normalised=false)
 Compute the L2 error between fields and a given exact solution. More...
 
SOLVER_UTILS_EXPORT NekDouble L2Error (unsigned int field, bool Normalised=false)
 Compute the L2 error of the fields. More...
 
SOLVER_UTILS_EXPORT Array< OneD, NekDoubleErrorExtraPoints (unsigned int field)
 Compute error (L2 and L_inf) over an larger set of quadrature points return [L2 Linf]. More...
 
SOLVER_UTILS_EXPORT void Checkpoint_Output (const int n)
 Write checkpoint file of m_fields. More...
 
SOLVER_UTILS_EXPORT void Checkpoint_Output (const int n, MultiRegions::ExpListSharedPtr &field, std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)
 Write checkpoint file of custom data fields. More...
 
SOLVER_UTILS_EXPORT void Checkpoint_BaseFlow (const int n)
 Write base flow file of m_fields. More...
 
SOLVER_UTILS_EXPORT void WriteFld (const std::string &outname)
 Write field data to the given filename. More...
 
SOLVER_UTILS_EXPORT void WriteFld (const std::string &outname, MultiRegions::ExpListSharedPtr &field, std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)
 Write input fields to the given filename. More...
 
SOLVER_UTILS_EXPORT void ImportFld (const std::string &infile, Array< OneD, MultiRegions::ExpListSharedPtr > &pFields)
 Input field data from the given file. More...
 
SOLVER_UTILS_EXPORT void ImportFldToMultiDomains (const std::string &infile, Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const int ndomains)
 Input field data from the given file to multiple domains. More...
 
SOLVER_UTILS_EXPORT void ImportFld (const std::string &infile, std::vector< std::string > &fieldStr, Array< OneD, Array< OneD, NekDouble > > &coeffs)
 Output a field. Input field data into array from the given file. More...
 
SOLVER_UTILS_EXPORT void ImportFld (const std::string &infile, MultiRegions::ExpListSharedPtr &pField, std::string &pFieldName)
 Output a field. Input field data into ExpList from the given file. More...
 
SOLVER_UTILS_EXPORT void SessionSummary (SummaryList &vSummary)
 Write out a session summary. More...
 
SOLVER_UTILS_EXPORT Array< OneD, MultiRegions::ExpListSharedPtr > & UpdateFields ()
 
SOLVER_UTILS_EXPORT LibUtilities::FieldMetaDataMapUpdateFieldMetaDataMap ()
 Get hold of FieldInfoMap so it can be updated. More...
 
SOLVER_UTILS_EXPORT NekDouble GetFinalTime ()
 Return final time. More...
 
SOLVER_UTILS_EXPORT int GetNcoeffs ()
 
SOLVER_UTILS_EXPORT int GetNcoeffs (const int eid)
 
SOLVER_UTILS_EXPORT int GetNumExpModes ()
 
SOLVER_UTILS_EXPORT const Array< OneD, int > GetNumExpModesPerExp ()
 
SOLVER_UTILS_EXPORT int GetNvariables ()
 
SOLVER_UTILS_EXPORT const std::string GetVariable (unsigned int i)
 
SOLVER_UTILS_EXPORT int GetTraceTotPoints ()
 
SOLVER_UTILS_EXPORT int GetTraceNpoints ()
 
SOLVER_UTILS_EXPORT int GetExpSize ()
 
SOLVER_UTILS_EXPORT int GetPhys_Offset (int n)
 
SOLVER_UTILS_EXPORT int GetCoeff_Offset (int n)
 
SOLVER_UTILS_EXPORT int GetTotPoints ()
 
SOLVER_UTILS_EXPORT int GetTotPoints (int n)
 
SOLVER_UTILS_EXPORT int GetNpoints ()
 
SOLVER_UTILS_EXPORT int GetSteps ()
 
SOLVER_UTILS_EXPORT NekDouble GetTimeStep ()
 
SOLVER_UTILS_EXPORT void CopyFromPhysField (const int i, Array< OneD, NekDouble > &output)
 
SOLVER_UTILS_EXPORT void CopyToPhysField (const int i, Array< OneD, NekDouble > &output)
 
SOLVER_UTILS_EXPORT void SetSteps (const int steps)
 
SOLVER_UTILS_EXPORT void ZeroPhysFields ()
 
SOLVER_UTILS_EXPORT void FwdTransFields ()
 
SOLVER_UTILS_EXPORT void SetModifiedBasis (const bool modbasis)
 
SOLVER_UTILS_EXPORT int GetCheckpointNumber ()
 
SOLVER_UTILS_EXPORT void SetCheckpointNumber (int num)
 
SOLVER_UTILS_EXPORT int GetCheckpointSteps ()
 
SOLVER_UTILS_EXPORT void SetCheckpointSteps (int num)
 
SOLVER_UTILS_EXPORT void SetTime (const NekDouble time)
 
SOLVER_UTILS_EXPORT void SetInitialStep (const int step)
 
SOLVER_UTILS_EXPORT void SetBoundaryConditions (NekDouble time)
 Evaluates the boundary conditions at the given time. More...
 
virtual SOLVER_UTILS_EXPORT bool v_NegatedOp ()
 Virtual function to identify if operator is negated in DoSolve. More...
 

Protected Types

enum  HomogeneousType { eHomogeneous1D , eHomogeneous2D , eHomogeneous3D , eNotHomogeneous }
 Parameter for homogeneous expansions. More...
 

Protected Member Functions

SOLVER_UTILS_EXPORT EquationSystem (const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph)
 Initialises EquationSystem class members. More...
 
virtual SOLVER_UTILS_EXPORT void v_InitObject ()
 Initialisation object for EquationSystem. More...
 
virtual SOLVER_UTILS_EXPORT void v_DoInitialise ()
 Virtual function for initialisation implementation. More...
 
virtual SOLVER_UTILS_EXPORT void v_DoSolve ()
 Virtual function for solve implementation. More...
 
virtual SOLVER_UTILS_EXPORT NekDouble v_LinfError (unsigned int field, const Array< OneD, NekDouble > &exactsoln=NullNekDouble1DArray)
 Virtual function for the L_inf error computation between fields and a given exact solution. More...
 
virtual SOLVER_UTILS_EXPORT NekDouble v_L2Error (unsigned int field, const Array< OneD, NekDouble > &exactsoln=NullNekDouble1DArray, bool Normalised=false)
 Virtual function for the L_2 error computation between fields and a given exact solution. More...
 
virtual SOLVER_UTILS_EXPORT void v_TransCoeffToPhys ()
 Virtual function for transformation to physical space. More...
 
virtual SOLVER_UTILS_EXPORT void v_TransPhysToCoeff ()
 Virtual function for transformation to coefficient space. More...
 
virtual SOLVER_UTILS_EXPORT void v_GenerateSummary (SummaryList &l)
 Virtual function for generating summary information. More...
 
virtual SOLVER_UTILS_EXPORT void v_SetInitialConditions (NekDouble initialtime=0.0, bool dumpInitialConditions=true, const int domain=0)
 
virtual SOLVER_UTILS_EXPORT void v_EvaluateExactSolution (unsigned int field, Array< OneD, NekDouble > &outfield, const NekDouble time)
 
virtual SOLVER_UTILS_EXPORT void v_Output (void)
 
virtual SOLVER_UTILS_EXPORT MultiRegions::ExpListSharedPtr v_GetPressure (void)
 
virtual SOLVER_UTILS_EXPORT void v_ExtraFldOutput (std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)
 

Protected Attributes

LibUtilities::CommSharedPtr m_comm
 Communicator. More...
 
bool m_verbose
 
bool m_root
 
LibUtilities::SessionReaderSharedPtr m_session
 The session reader. More...
 
std::map< std::string, SolverUtils::SessionFunctionSharedPtrm_sessionFunctions
 Map of known SessionFunctions. More...
 
LibUtilities::FieldIOSharedPtr m_fld
 Field input/output. More...
 
Array< OneD, MultiRegions::ExpListSharedPtrm_fields
 Array holding all dependent variables. More...
 
SpatialDomains::BoundaryConditionsSharedPtr m_boundaryConditions
 Pointer to boundary conditions object. More...
 
SpatialDomains::MeshGraphSharedPtr m_graph
 Pointer to graph defining mesh. More...
 
std::string m_sessionName
 Name of the session. More...
 
NekDouble m_time
 Current time of simulation. More...
 
int m_initialStep
 Number of the step where the simulation should begin. More...
 
NekDouble m_fintime
 Finish time of the simulation. More...
 
NekDouble m_timestep
 Time step size. More...
 
NekDouble m_timestepMax = -1.0
 Time step size. More...
 
NekDouble m_lambda
 Lambda constant in real system if one required. More...
 
NekDouble m_checktime
 Time between checkpoints. More...
 
NekDouble m_lastCheckTime
 
NekDouble m_TimeIncrementFactor
 
int m_nchk
 Number of checkpoints written so far. More...
 
int m_steps
 Number of steps to take. More...
 
int m_checksteps
 Number of steps between checkpoints. More...
 
int m_spacedim
 Spatial dimension (>= expansion dim). More...
 
int m_expdim
 Expansion dimension. More...
 
bool m_singleMode
 Flag to determine if single homogeneous mode is used. More...
 
bool m_halfMode
 Flag to determine if half homogeneous mode is used. More...
 
bool m_multipleModes
 Flag to determine if use multiple homogenenous modes are used. More...
 
bool m_useFFT
 Flag to determine if FFT is used for homogeneous transform. More...
 
bool m_homogen_dealiasing
 Flag to determine if dealiasing is used for homogeneous simulations. More...
 
bool m_specHP_dealiasing
 Flag to determine if dealisising is usde for the Spectral/hp element discretisation. More...
 
enum MultiRegions::ProjectionType m_projectionType
 Type of projection; e.g continuous or discontinuous. More...
 
Array< OneD, Array< OneD, NekDouble > > m_traceNormals
 Array holding trace normals for DG simulations in the forwards direction. More...
 
Array< OneD, bool > m_checkIfSystemSingular
 Flag to indicate if the fields should be checked for singularity. More...
 
LibUtilities::FieldMetaDataMap m_fieldMetaDataMap
 Map to identify relevant solver info to dump in output fields. More...
 
int m_NumQuadPointsError
 Number of Quadrature points used to work out the error. More...
 
enum HomogeneousType m_HomogeneousType
 
NekDouble m_LhomX
 physical length in X direction (if homogeneous) More...
 
NekDouble m_LhomY
 physical length in Y direction (if homogeneous) More...
 
NekDouble m_LhomZ
 physical length in Z direction (if homogeneous) More...
 
int m_npointsX
 number of points in X direction (if homogeneous) More...
 
int m_npointsY
 number of points in Y direction (if homogeneous) More...
 
int m_npointsZ
 number of points in Z direction (if homogeneous) More...
 
int m_HomoDirec
 number of homogenous directions More...
 

Static Protected Attributes

static std::string equationSystemTypeLookupIds []
 

Private Member Functions

virtual SOLVER_UTILS_EXPORT Array< OneD, bool > v_GetSystemSingularChecks ()
 
SOLVER_UTILS_EXPORT void PrintProgressbar (const int position, const int goal) const
 

Detailed Description

A base class for describing how to solve specific equations.

This class is a base class for all solver implementations. It provides the underlying generic functionality and interface for solving equations.

To solve a steady-state equation, create a derived class from this class and reimplement the virtual functions to provide custom implementation for the problem.

To solve unsteady problems, derive from the UnsteadySystem class instead which provides general time integration.

Definition at line 76 of file EquationSystem.h.

Member Enumeration Documentation

◆ HomogeneousType

Parameter for homogeneous expansions.

Enumerator
eHomogeneous1D 
eHomogeneous2D 
eHomogeneous3D 
eNotHomogeneous 

Definition at line 410 of file EquationSystem.h.

Constructor & Destructor Documentation

◆ ~EquationSystem()

Nektar::SolverUtils::EquationSystem::~EquationSystem ( )
virtual

Destructor.

Destructor for class EquationSystem.

Definition at line 688 of file EquationSystem.cpp.

689  {
690  LibUtilities::NekManager<LocalRegions::MatrixKey,
691  DNekScalMat, LocalRegions::MatrixKey::opLess>::ClearManager();
692  LibUtilities::NekManager<LocalRegions::MatrixKey,
693  DNekScalBlkMat, LocalRegions::MatrixKey::opLess>::ClearManager();
694  }
NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > DNekScalMat
NekMatrix< NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > DNekScalBlkMat
Definition: NekTypeDefs.hpp:65

◆ EquationSystem()

Nektar::SolverUtils::EquationSystem::EquationSystem ( const LibUtilities::SessionReaderSharedPtr pSession,
const SpatialDomains::MeshGraphSharedPtr pGraph 
)
protected

Initialises EquationSystem class members.

This constructor is protected as the objects of this class are never instantiated directly.

Parameters
pSessionThe session reader holding problem parameters.

Definition at line 98 of file EquationSystem.cpp.

101  : m_comm (pSession->GetComm()),
102  m_session (pSession),
103  m_graph (pGraph),
104  m_lambda (0),
106  {
107  // set up session names in fieldMetaDataMap
108  const vector<std::string> filenames = m_session->GetFilenames();
109 
110  for(int i = 0; i < filenames.size(); ++i)
111  {
112  string sessionname = "SessionName";
113  sessionname += boost::lexical_cast<std::string>(i);
114  m_fieldMetaDataMap[sessionname] = filenames[i];
115  m_fieldMetaDataMap["ChkFileNum"] =
116  boost::lexical_cast<std::string>(0);
117  }
118 
119  }
SpatialDomains::MeshGraphSharedPtr m_graph
Pointer to graph defining mesh.
LibUtilities::CommSharedPtr m_comm
Communicator.
NekDouble m_lambda
Lambda constant in real system if one required.
LibUtilities::SessionReaderSharedPtr m_session
The session reader.
LibUtilities::FieldMetaDataMap m_fieldMetaDataMap
Map to identify relevant solver info to dump in output fields.
static FieldMetaDataMap NullFieldMetaDataMap
Definition: FieldIO.h:53

References m_fieldMetaDataMap, and m_session.

Member Function Documentation

◆ as()

template<class T >
std::shared_ptr<T> Nektar::SolverUtils::EquationSystem::as ( )
inline

Definition at line 114 of file EquationSystem.h.

115  {
116  return std::dynamic_pointer_cast<T>( shared_from_this() );
117  }

◆ Checkpoint_BaseFlow()

void Nektar::SolverUtils::EquationSystem::Checkpoint_BaseFlow ( const int  n)

Write base flow file of m_fields.

Write the n-th base flow into a .chk file

Parameters
nThe index of the base flow file.

Definition at line 1145 of file EquationSystem.cpp.

1146  {
1147  std::string outname = m_sessionName + "_BaseFlow_" +
1148  boost::lexical_cast<std::string>(n);
1149 
1150  WriteFld(outname + ".chk");
1151  }
SOLVER_UTILS_EXPORT void WriteFld(const std::string &outname)
Write field data to the given filename.
std::string m_sessionName
Name of the session.

References m_sessionName, and WriteFld().

◆ Checkpoint_Output() [1/2]

void Nektar::SolverUtils::EquationSystem::Checkpoint_Output ( const int  n)

Write checkpoint file of m_fields.

Write the n-th checkpoint file.

Parameters
nThe index of the checkpoint file.

Definition at line 1119 of file EquationSystem.cpp.

1120  {
1121  std::string outname = m_sessionName + "_" +
1122  boost::lexical_cast<std::string>(n);
1123  WriteFld(outname + ".chk");
1124  }

References m_sessionName, and WriteFld().

Referenced by Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::MMFAdvection::v_DoSolve(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::MMFSWE::v_DoSolve(), Nektar::CoupledLinearNS::v_DoSolve(), v_SetInitialConditions(), Nektar::CompressibleFlowSystem::v_SetInitialConditions(), Nektar::IsentropicVortex::v_SetInitialConditions(), and Nektar::NonlinearPeregrine::v_SetInitialConditions().

◆ Checkpoint_Output() [2/2]

void Nektar::SolverUtils::EquationSystem::Checkpoint_Output ( const int  n,
MultiRegions::ExpListSharedPtr field,
std::vector< Array< OneD, NekDouble > > &  fieldcoeffs,
std::vector< std::string > &  variables 
)

Write checkpoint file of custom data fields.

Write the n-th checkpoint file.

Parameters
nThe index of the checkpoint file.

Definition at line 1130 of file EquationSystem.cpp.

1135  {
1136  std::string outname = m_sessionName + "_" +
1137  boost::lexical_cast<std::string>(n);
1138  WriteFld(outname, field, fieldcoeffs, variables);
1139  }

References m_sessionName, and WriteFld().

◆ CopyFromPhysField()

void Nektar::SolverUtils::EquationSystem::CopyFromPhysField ( const int  i,
Array< OneD, NekDouble > &  output 
)
inline

Definition at line 743 of file EquationSystem.h.

745  {
746  Vmath::Vcopy(output.size(), m_fields[i]->GetPhys(), 1, output, 1 );
747  }
Array< OneD, MultiRegions::ExpListSharedPtr > m_fields
Array holding all dependent variables.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1199

References m_fields, and Vmath::Vcopy().

◆ CopyToPhysField()

void Nektar::SolverUtils::EquationSystem::CopyToPhysField ( const int  i,
Array< OneD, NekDouble > &  output 
)
inline

Definition at line 749 of file EquationSystem.h.

751  {
752  Vmath::Vcopy(output.size(), output, 1, m_fields[i]->UpdatePhys(), 1 );
753  }

References m_fields, and Vmath::Vcopy().

◆ DoInitialise()

void Nektar::SolverUtils::EquationSystem::DoInitialise ( )
inline

Perform any initialisation necessary before solving the problem.

This allows initialisation of the solver which cannot be completed during object construction (such as setting of initial conditions).

Public interface routine to virtual function implementation.

Definition at line 515 of file EquationSystem.h.

516  {
517  v_DoInitialise();
518  }
virtual SOLVER_UTILS_EXPORT void v_DoInitialise()
Virtual function for initialisation implementation.

References v_DoInitialise().

◆ DoSolve()

void Nektar::SolverUtils::EquationSystem::DoSolve ( void  )
inline

Solve the problem.

Performs the actual solve.

Public interface routine to virtual function implementation.

Definition at line 547 of file EquationSystem.h.

548  {
549  v_DoSolve();
550  }
virtual SOLVER_UTILS_EXPORT void v_DoSolve()
Virtual function for solve implementation.

References v_DoSolve().

◆ ErrorExtraPoints()

Array< OneD, NekDouble > Nektar::SolverUtils::EquationSystem::ErrorExtraPoints ( unsigned int  field)

Compute error (L2 and L_inf) over an larger set of quadrature points return [L2 Linf].

Compute the error in the L2-norm, L-inf for a larger number of quadrature points.

Parameters
fieldThe field to compare.
Returns
Error in the L2-norm and L-inf norm.

Definition at line 863 of file EquationSystem.cpp.

865  {
866  int NumModes = GetNumExpModes();
867  Array<OneD,NekDouble> L2INF(2);
868 
869  const LibUtilities::PointsKey PkeyT1(
871  const LibUtilities::PointsKey PkeyT2(
873  const LibUtilities::PointsKey PkeyQ1(
875  const LibUtilities::PointsKey PkeyQ2(
877  const LibUtilities::BasisKey BkeyT1(
878  LibUtilities::eModified_A,NumModes, PkeyT1);
879  const LibUtilities::BasisKey BkeyT2(
880  LibUtilities::eModified_B, NumModes, PkeyT2);
881  const LibUtilities::BasisKey BkeyQ1(
882  LibUtilities::eModified_A, NumModes, PkeyQ1);
883  const LibUtilities::BasisKey BkeyQ2(
884  LibUtilities::eModified_A, NumModes, PkeyQ2);
885 
886  LibUtilities::BasisKeyVector Tkeys, Qkeys;
887 
888  // make a copy of the ExpansionInfoMap
889  SpatialDomains::ExpansionInfoMap NewExpInfo = m_graph->GetExpansionInfo();
892 
893  // reset new graph with new keys
894  Tkeys.push_back(BkeyT1);
895  Tkeys.push_back(BkeyT2);
896  m_graph->ResetExpansionInfoToBasisKey(ExpInfo, LibUtilities::eTriangle, Tkeys);
897  Qkeys.push_back(BkeyQ1);
898  Qkeys.push_back(BkeyQ2);
899  m_graph->ResetExpansionInfoToBasisKey(ExpInfo, LibUtilities::eQuadrilateral, Qkeys);
900 
901 
904 
905  int ErrorCoordim = ErrorExp->GetCoordim(0);
906  int ErrorNq = ErrorExp->GetTotPoints();
907 
908  Array<OneD,NekDouble> ErrorXc0(ErrorNq, 0.0);
909  Array<OneD,NekDouble> ErrorXc1(ErrorNq, 0.0);
910  Array<OneD,NekDouble> ErrorXc2(ErrorNq, 0.0);
911 
912  switch(ErrorCoordim)
913  {
914  case 1:
915  ErrorExp->GetCoords(ErrorXc0);
916  break;
917  case 2:
918  ErrorExp->GetCoords(ErrorXc0, ErrorXc1);
919  break;
920  case 3:
921  ErrorExp->GetCoords(ErrorXc0, ErrorXc1, ErrorXc2);
922  break;
923  }
925  m_session->GetFunction("ExactSolution", field);
926 
927  // Evaluate the exact solution
928  Array<OneD,NekDouble> ErrorSol(ErrorNq);
929 
930  exSol->Evaluate(ErrorXc0,ErrorXc1,ErrorXc2,m_time,ErrorSol);
931 
932  // Calcualte spectral/hp approximation on the quadrature points
933  // of this new expansion basis
934  ErrorExp->BwdTrans_IterPerExp(m_fields[field]->GetCoeffs(),
935  ErrorExp->UpdatePhys());
936 
937  L2INF[0] = ErrorExp->L2 (ErrorExp->GetPhys(), ErrorSol);
938  L2INF[1] = ErrorExp->Linf(ErrorExp->GetPhys(), ErrorSol);
939 
940  return L2INF;
941  }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
NekDouble m_time
Current time of simulation.
int m_NumQuadPointsError
Number of Quadrature points used to work out the error.
SOLVER_UTILS_EXPORT int GetNumExpModes()
std::shared_ptr< Equation > EquationSharedPtr
Definition: Equation.h:131
std::vector< BasisKey > BasisKeyVector
Name for a vector of BasisKeys.
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
Definition: PointsType.h:51
@ eGaussRadauMAlpha1Beta0
Gauss Radau pinned at x=-1, .
Definition: PointsType.h:58
@ eModified_B
Principle Modified Functions .
Definition: BasisType.h:49
@ eModified_A
Principle Modified Functions .
Definition: BasisType.h:48
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::shared_ptr< ExpansionInfoMap > ExpansionInfoMapShPtr
Definition: MeshGraph.h:145
std::map< int, ExpansionInfoShPtr > ExpansionInfoMap
Definition: MeshGraph.h:143

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::LibUtilities::eGaussLobattoLegendre, Nektar::LibUtilities::eGaussRadauMAlpha1Beta0, Nektar::LibUtilities::eModified_A, Nektar::LibUtilities::eModified_B, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eTriangle, GetNumExpModes(), m_fields, m_graph, m_NumQuadPointsError, m_session, and m_time.

Referenced by Nektar::MMFSWE::v_L2Error(), v_L2Error(), and v_LinfError().

◆ EvaluateExactSolution()

void Nektar::SolverUtils::EquationSystem::EvaluateExactSolution ( int  field,
Array< OneD, NekDouble > &  outfield,
const NekDouble  time 
)
inline

Evaluates an exact solution.

Definition at line 639 of file EquationSystem.h.

642  {
643  v_EvaluateExactSolution(field, outfield, time);
644  }
virtual SOLVER_UTILS_EXPORT void v_EvaluateExactSolution(unsigned int field, Array< OneD, NekDouble > &outfield, const NekDouble time)

References v_EvaluateExactSolution().

Referenced by Nektar::MMFSWE::v_LinfError().

◆ ExtraFldOutput()

void Nektar::SolverUtils::EquationSystem::ExtraFldOutput ( std::vector< Array< OneD, NekDouble > > &  fieldcoeffs,
std::vector< std::string > &  variables 
)
inline

Append the coefficients and name of variables with solver specific extra variables

Parameters
fieldcoeffsVector with coefficients
variablesVector with name of variables

Definition at line 594 of file EquationSystem.h.

597  {
598  v_ExtraFldOutput(fieldcoeffs, variables);
599  }
virtual SOLVER_UTILS_EXPORT void v_ExtraFldOutput(std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)

References v_ExtraFldOutput().

Referenced by WriteFld().

◆ FwdTransFields()

void Nektar::SolverUtils::EquationSystem::FwdTransFields ( void  )

FwdTrans the m_fields members

Definition at line 1105 of file EquationSystem.cpp.

1106  {
1107  for (int i = 0; i < m_fields.size(); i++)
1108  {
1109  m_fields[i]->FwdTrans(m_fields[i]->GetPhys(),
1110  m_fields[i]->UpdateCoeffs());
1111  m_fields[i]->SetPhysState(false);
1112  }
1113  }

References m_fields.

◆ GetCheckpointNumber()

SOLVER_UTILS_EXPORT int Nektar::SolverUtils::EquationSystem::GetCheckpointNumber ( )
inline

Definition at line 293 of file EquationSystem.h.

294  {
295  return m_nchk;
296  }
int m_nchk
Number of checkpoints written so far.

References m_nchk.

◆ GetCheckpointSteps()

SOLVER_UTILS_EXPORT int Nektar::SolverUtils::EquationSystem::GetCheckpointSteps ( )
inline

Definition at line 303 of file EquationSystem.h.

304  {
305  return m_checksteps;
306  }
int m_checksteps
Number of steps between checkpoints.

References m_checksteps.

◆ GetCoeff_Offset()

int Nektar::SolverUtils::EquationSystem::GetCoeff_Offset ( int  n)
inline

Definition at line 708 of file EquationSystem.h.

709  {
710  return m_fields[0]->GetCoeff_Offset(n);
711  }

References m_fields.

Referenced by Nektar::IncNavierStokes::SetRadiationBoundaryForcing().

◆ GetExpSize()

int Nektar::SolverUtils::EquationSystem::GetExpSize ( void  )
inline

◆ GetFinalTime()

NekDouble Nektar::SolverUtils::EquationSystem::GetFinalTime ( )
inline

Return final time.

Definition at line 652 of file EquationSystem.h.

653  {
654  return m_time;
655  }

References m_time.

◆ GetFunction()

SessionFunctionSharedPtr Nektar::SolverUtils::EquationSystem::GetFunction ( std::string  name,
const MultiRegions::ExpListSharedPtr field = MultiRegions::NullExpListSharedPtr,
bool  cache = false 
)

Get a SessionFunction by name.

Definition at line 696 of file EquationSystem.cpp.

700  {
701  MultiRegions::ExpListSharedPtr vField = field;
702  if (!field)
703  {
704  vField = m_fields[0];
705  }
706 
707  if (cache)
708  {
709  if ((m_sessionFunctions.find(name) == m_sessionFunctions.end())
710  || (m_sessionFunctions[name]->GetSession() != m_session)
711  || (m_sessionFunctions[name]->GetExpansion() != vField)
712  )
713  {
716  m_session, vField, name, cache);
717  }
718 
719  return m_sessionFunctions[name];
720  }
721  else
722  {
724  new SessionFunction(m_session,vField, name, cache));
725  }
726  }
std::map< std::string, SolverUtils::SessionFunctionSharedPtr > m_sessionFunctions
Map of known SessionFunctions.
std::shared_ptr< SessionFunction > SessionFunctionSharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), m_fields, m_session, m_sessionFunctions, and CellMLToNektar.pycml::name.

Referenced by Nektar::CoupledLinearNS::DefineForcingTerm(), Nektar::MMFSWE::EvaluateCoriolis(), Nektar::ShallowWaterSystem::EvaluateCoriolis(), Nektar::ShallowWaterSystem::EvaluateWaterDepth(), Nektar::SmoothedProfileMethod::ReadPhi(), Nektar::VelocityCorrectionScheme::SetUpSVV(), Nektar::SteadyAdvectionDiffusion::v_DoInitialise(), Nektar::CoupledLinearNS::v_DoInitialise(), Nektar::LinearElasticSystem::v_DoSolve(), v_EvaluateExactSolution(), Nektar::Poisson::v_GenerateSummary(), Nektar::APE::v_InitObject(), Nektar::LEE::v_InitObject(), Nektar::CFLtester::v_InitObject(), Nektar::EigenValuesAdvection::v_InitObject(), Nektar::MMFAdvection::v_InitObject(), Nektar::Poisson::v_InitObject(), Nektar::Projection::v_InitObject(), Nektar::SteadyAdvectionDiffusion::v_InitObject(), Nektar::UnsteadyAdvection::v_InitObject(), Nektar::UnsteadyAdvectionDiffusion::v_InitObject(), Nektar::BidomainRoth::v_InitObject(), Nektar::Monodomain::v_InitObject(), Nektar::PulseWaveSystem::v_InitObject(), v_L2Error(), Nektar::PulseWaveSystem::v_L2Error(), v_LinfError(), Nektar::PulseWaveSystem::v_LinfError(), Nektar::Dummy::v_PostIntegrate(), Nektar::AcousticSystem::v_PreIntegrate(), and v_SetInitialConditions().

◆ GetNcoeffs() [1/2]

int Nektar::SolverUtils::EquationSystem::GetNcoeffs ( void  )
inline

Definition at line 657 of file EquationSystem.h.

658  {
659  return m_fields[0]->GetNcoeffs();
660  }

References m_fields.

Referenced by Nektar::LinearSWE::AddCoriolis(), Nektar::NonlinearPeregrine::AddCoriolis(), Nektar::NonlinearSWE::AddCoriolis(), Nektar::NonlinearPeregrine::AddVariableDepth(), Nektar::NonlinearSWE::AddVariableDepth(), Nektar::CoupledLinearNS::DefineForcingTerm(), Nektar::CFLtester::DoOdeProjection(), Nektar::UnsteadyAdvection::DoOdeProjection(), Nektar::UnsteadyAdvectionDiffusion::DoOdeProjection(), Nektar::UnsteadyDiffusion::DoOdeProjection(), Nektar::UnsteadyInviscidBurger::DoOdeProjection(), Nektar::UnsteadyReactionDiffusion::DoOdeProjection(), Nektar::LinearSWE::DoOdeProjection(), Nektar::NonlinearPeregrine::DoOdeProjection(), Nektar::NonlinearSWE::DoOdeProjection(), Nektar::MMFAdvection::DoOdeProjection(), Nektar::NonlinearPeregrine::DoOdeRhs(), Nektar::MMFMaxwell::DoOdeRhs(), Nektar::MMFSWE::DoOdeRhs(), Nektar::CFSImplicit::DoOdeRhsCoeff(), ImportFld(), ImportFldToMultiDomains(), Nektar::CFSImplicit::MultiplyElmtInvMassPlusSource(), Nektar::VelocityCorrectionScheme::SetupFlowrate(), Nektar::CoupledLinearNS::Solve(), Nektar::CoupledLinearNS::SolveLinearNS(), Nektar::CoupledLinearNS::SolveSteadyNavierStokes(), Nektar::CoupledLinearNS::SolveUnsteadyStokesSystem(), Nektar::LEE::v_AddLinTerm(), Nektar::NavierStokesImplicitCFE::v_DoDiffusionCoeff(), Nektar::EigenValuesAdvection::v_DoSolve(), Nektar::Laplace::v_DoSolve(), Nektar::Projection::v_DoSolve(), Nektar::SteadyAdvectionDiffusion::v_DoSolve(), Nektar::AcousticSystem::v_ExtraFldOutput(), Nektar::CoupledLinearNS::v_Output(), v_SetInitialConditions(), Nektar::MMFAdvection::WeakDGDirectionalAdvection(), Nektar::MMFMaxwell::WeakDGMaxwellDirDeriv(), Nektar::MMFSWE::WeakDGSWEDirDeriv(), WriteFld(), and Nektar::PulseWaveSystem::WriteVessels().

◆ GetNcoeffs() [2/2]

int Nektar::SolverUtils::EquationSystem::GetNcoeffs ( const int  eid)
inline

Definition at line 662 of file EquationSystem.h.

663  {
664  return m_fields[0]->GetNcoeffs(eid);
665  }

References m_fields.

◆ GetNpoints()

int Nektar::SolverUtils::EquationSystem::GetNpoints ( void  )
inline

Definition at line 723 of file EquationSystem.h.

724  {
725  return m_fields[0]->GetNpoints();
726  }

References m_fields.

Referenced by Nektar::MMFMaxwell::ComputeMaterialMicroWaveCloak(), Nektar::MMFMaxwell::ComputeMaterialOpticalCloak(), Nektar::MMFMaxwell::ComputeRadCloak(), Nektar::CFLtester::DoOdeProjection(), Nektar::UnsteadyAdvection::DoOdeProjection(), Nektar::UnsteadyAdvectionDiffusion::DoOdeProjection(), Nektar::UnsteadyDiffusion::DoOdeProjection(), Nektar::UnsteadyInviscidBurger::DoOdeProjection(), Nektar::UnsteadyViscousBurgers::DoOdeProjection(), Nektar::ImageWarpingSystem::DoOdeProjection(), Nektar::LinearSWE::DoOdeProjection(), Nektar::NonlinearPeregrine::DoOdeProjection(), Nektar::NonlinearSWE::DoOdeProjection(), Nektar::MMFAdvection::DoOdeProjection(), Nektar::CompressibleFlowSystem::DoOdeProjection(), Nektar::MMFMaxwell::DoOdeProjection(), Nektar::CFLtester::DoOdeRhs(), Nektar::UnsteadyAdvection::DoOdeRhs(), Nektar::UnsteadyAdvectionDiffusion::DoOdeRhs(), Nektar::UnsteadyInviscidBurger::DoOdeRhs(), Nektar::UnsteadyViscousBurgers::DoOdeRhs(), Nektar::ImageWarpingSystem::DoOdeRhs(), Nektar::MMFAdvection::DoOdeRhs(), Nektar::CompressibleFlowSystem::DoOdeRhs(), Nektar::UnsteadyInviscidBurger::GetFluxVector(), Nektar::UnsteadyInviscidBurger::GetNormalVelocity(), Nektar::CFSImplicit::NumCalcRiemFluxJac(), Nektar::CoupledLinearNS::Solve(), Nektar::SolverUtils::UnsteadySystem::v_AppendOutput1D(), Nektar::NavierStokesCFE::v_DoDiffusion(), Nektar::NavierStokesCFEAxisym::v_DoDiffusion(), Nektar::NavierStokesImplicitCFE::v_DoDiffusionCoeff(), Nektar::EigenValuesAdvection::v_DoSolve(), Nektar::LinearElasticSystem::v_DoSolve(), Nektar::NavierStokesCFEAxisym::v_InitObject(), Nektar::MMFSWE::v_L2Error(), v_L2Error(), Nektar::PulseWaveSystem::v_L2Error(), v_LinfError(), Nektar::PulseWaveSystem::v_LinfError(), Nektar::MMFMaxwell::WeakDGMaxwellDirDeriv(), Nektar::MMFSWE::WeakDGSWEDirDeriv(), and ZeroPhysFields().

◆ GetNumExpModes()

int Nektar::SolverUtils::EquationSystem::GetNumExpModes ( void  )
inline

Definition at line 667 of file EquationSystem.h.

668  {
669  return m_graph->GetExpansionInfo().begin()->second->m_basisKeyVector[0]
670  .GetNumModes();
671  }

References m_graph.

Referenced by ErrorExtraPoints().

◆ GetNumExpModesPerExp()

const Array< OneD, int > Nektar::SolverUtils::EquationSystem::GetNumExpModesPerExp ( void  )
inline

Definition at line 673 of file EquationSystem.h.

674  {
675  return m_fields[0]->EvalBasisNumModesMaxPerExp();
676  }

References m_fields.

Referenced by Nektar::SolverUtils::AdvectionSystem::GetElmtCFLVals().

◆ GetNvariables()

int Nektar::SolverUtils::EquationSystem::GetNvariables ( void  )
inline

Definition at line 678 of file EquationSystem.h.

679  {
680  return m_session->GetVariables().size();
681  }

References m_session.

Referenced by ImportFldToMultiDomains().

◆ GetPhys_Offset()

int Nektar::SolverUtils::EquationSystem::GetPhys_Offset ( int  n)
inline

◆ GetPressure()

MultiRegions::ExpListSharedPtr Nektar::SolverUtils::EquationSystem::GetPressure ( void  )
inline

Get pressure field if available.

Get Pressure field if available

Definition at line 582 of file EquationSystem.h.

583  {
584  return v_GetPressure();
585  }
virtual SOLVER_UTILS_EXPORT MultiRegions::ExpListSharedPtr v_GetPressure(void)

References v_GetPressure().

◆ GetSession()

SOLVER_UTILS_EXPORT LibUtilities::SessionReaderSharedPtr Nektar::SolverUtils::EquationSystem::GetSession ( )
inline

Get Session name.

Definition at line 126 of file EquationSystem.h.

127  {
128  return m_session;
129  }

References m_session.

◆ GetSessionName()

SOLVER_UTILS_EXPORT std::string Nektar::SolverUtils::EquationSystem::GetSessionName ( )
inline

Get Session name.

Definition at line 108 of file EquationSystem.h.

109  {
110  return m_sessionName;
111  }

References m_sessionName.

◆ GetSteps()

int Nektar::SolverUtils::EquationSystem::GetSteps ( void  )
inline

Definition at line 728 of file EquationSystem.h.

729  {
730  return m_steps;
731  }
int m_steps
Number of steps to take.

References m_steps.

◆ GetTimeStep()

NekDouble Nektar::SolverUtils::EquationSystem::GetTimeStep ( void  )
inline

Definition at line 733 of file EquationSystem.h.

734  {
735  return m_timestep;
736  }
NekDouble m_timestep
Time step size.

References m_timestep.

Referenced by Nektar::SolverUtils::UnsteadySystem::v_DoSolve().

◆ GetTotPoints() [1/2]

int Nektar::SolverUtils::EquationSystem::GetTotPoints ( void  )
inline

Definition at line 713 of file EquationSystem.h.

714  {
715  return m_fields[0]->GetNpoints();
716  }

References m_fields.

Referenced by Nektar::LinearSWE::AddCoriolis(), Nektar::NonlinearPeregrine::AddCoriolis(), Nektar::NonlinearSWE::AddCoriolis(), Nektar::SolverUtils::MMFSystem::AdddedtMaxwell(), Nektar::NonlinearPeregrine::AddVariableDepth(), Nektar::NonlinearSWE::AddVariableDepth(), Nektar::SolverUtils::UnsteadySystem::CheckSteadyState(), Nektar::SolverUtils::MMFSystem::Computedemdxicdote(), Nektar::MMFMaxwell::ComputeEnergyDensity(), Nektar::LinearSWE::ConservativeToPrimitive(), Nektar::NonlinearPeregrine::ConservativeToPrimitive(), Nektar::NonlinearSWE::ConservativeToPrimitive(), Nektar::MMFSWE::ConservativeToPrimitive(), Nektar::CoupledLinearNS::Continuation(), Nektar::CoupledLinearNS::DefineForcingTerm(), Nektar::SolverUtils::MMFSystem::DeriveCrossProductMF(), Nektar::MMFDiffusion::DoOdeRhs(), Nektar::Dummy::DoOdeRhs(), Nektar::LinearSWE::DoOdeRhs(), Nektar::NonlinearPeregrine::DoOdeRhs(), Nektar::NonlinearSWE::DoOdeRhs(), Nektar::AcousticSystem::DoOdeRhs(), Nektar::MMFMaxwell::DoOdeRhs(), Nektar::MMFSWE::DoOdeRhs(), Nektar::MMFMaxwell::EvaluateCoriolis(), Nektar::MMFSWE::EvaluateCoriolisForZonalFlow(), Nektar::CoupledLinearNS::EvaluateNewtonRHS(), Nektar::MMFSWE::EvaluateStandardCoriolis(), Nektar::MMFSWE::EvaluateWaterDepth(), Nektar::RinglebFlow::GetExactRinglebFlow(), Nektar::CFLtester::GetStdVelocity(), Nektar::MMFSWE::IsolatedMountainFlow(), Nektar::NonlinearPeregrine::LaitoneSolitaryWave(), Nektar::MMFDiffusion::Morphogenesis(), Nektar::CFSImplicit::MultiplyElmtInvMassPlusSource(), Nektar::MMFDiffusion::PlanePhiWave(), Nektar::LinearSWE::PrimitiveToConservative(), Nektar::NonlinearPeregrine::PrimitiveToConservative(), Nektar::NonlinearSWE::PrimitiveToConservative(), Nektar::MMFSWE::PrimitiveToConservative(), Nektar::MMFSWE::RossbyWave(), Nektar::CoupledLinearNS::SetUpCoupledMatrix(), Nektar::CoupledLinearNS::SolveSteadyNavierStokes(), Nektar::MMFSWE::SteadyZonalFlow(), Nektar::MMFDiffusion::TestCubeProblem(), Nektar::MMFDiffusion::TestPlaneProblem(), Nektar::MMFSWE::UnstableJetFlow(), Nektar::MMFSWE::UnsteadyZonalFlow(), Nektar::LEE::v_AddLinTerm(), Nektar::NavierStokesImplicitCFE::v_CalcPhysDeriv(), Nektar::LinearSWE::v_ConservativeToPrimitive(), Nektar::NonlinearPeregrine::v_ConservativeToPrimitive(), Nektar::NonlinearSWE::v_ConservativeToPrimitive(), Nektar::CoupledLinearNS::v_DoInitialise(), Nektar::VCSMapping::v_DoInitialise(), Nektar::VelocityCorrectionScheme::v_DoInitialise(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::MMFDiffusion::v_EvaluateExactSolution(), Nektar::IsentropicVortex::v_EvaluateExactSolution(), Nektar::NavierStokesImplicitCFE::v_GetFluxDerivJacDirctn(), Nektar::CompressibleFlowSystem::v_GetMaxStdVelocity(), Nektar::APE::v_InitObject(), Nektar::LEE::v_InitObject(), Nektar::ShallowWaterSystem::v_InitObject(), Nektar::Dummy::v_Output(), Nektar::LinearSWE::v_PrimitiveToConservative(), Nektar::NonlinearPeregrine::v_PrimitiveToConservative(), Nektar::NonlinearSWE::v_PrimitiveToConservative(), Nektar::MMFMaxwell::v_SetInitialConditions(), Nektar::MMFSWE::v_SetInitialConditions(), Nektar::MMFDiffusion::v_SetInitialConditions(), Nektar::IsentropicVortex::v_SetInitialConditions(), Nektar::SolverUtils::UnsteadySystem::v_SteadyStateResidual(), Nektar::CompressibleFlowSystem::v_SteadyStateResidual(), and Nektar::NonlinearPeregrine::WCESolve().

◆ GetTotPoints() [2/2]

int Nektar::SolverUtils::EquationSystem::GetTotPoints ( int  n)
inline

Definition at line 718 of file EquationSystem.h.

719  {
720  return m_fields[0]->GetTotPoints(n);
721  }

References m_fields.

◆ GetTraceNpoints()

int Nektar::SolverUtils::EquationSystem::GetTraceNpoints ( void  )
inline

◆ GetTraceTotPoints()

int Nektar::SolverUtils::EquationSystem::GetTraceTotPoints ( void  )
inline

Definition at line 688 of file EquationSystem.h.

689  {
690  return GetTraceNpoints();
691  }
SOLVER_UTILS_EXPORT int GetTraceNpoints()

References GetTraceNpoints().

Referenced by Nektar::SolverUtils::MMFSystem::AverageMaxwellFlux1D(), Nektar::SolverUtils::MMFSystem::ComputeMFtrace(), Nektar::SolverUtils::MMFSystem::ComputeNtimesF12(), Nektar::SolverUtils::MMFSystem::ComputeNtimesFz(), Nektar::SolverUtils::MMFSystem::ComputeNtimestimesdF12(), Nektar::SolverUtils::MMFSystem::ComputeNtimestimesdFz(), Nektar::MMFMaxwell::ComputeSurfaceCurrent(), Nektar::NonlinearPeregrine::DoOdeRhs(), Nektar::CompressibleFlowSystem::DoOdeRhs(), Nektar::CFSImplicit::DoOdeRhsCoeff(), Nektar::CFSImplicit::GetTraceJac(), Nektar::SolverUtils::MMFSystem::LaxFriedrichMaxwellFlux1D(), Nektar::CFSImplicit::NumCalcRiemFluxJac(), Nektar::NonlinearPeregrine::NumericalFluxConsVariables(), Nektar::NonlinearPeregrine::NumericalFluxForcing(), Nektar::SolverUtils::MMFSystem::NumericalMaxwellFluxTE(), Nektar::SolverUtils::MMFSystem::NumericalMaxwellFluxTM(), Nektar::MMFSWE::NumericalSWEFlux(), Nektar::MMFMaxwell::Printout_SurfaceCurrent(), Nektar::LinearSWE::SetBoundaryConditions(), Nektar::NonlinearPeregrine::SetBoundaryConditions(), Nektar::NonlinearSWE::SetBoundaryConditions(), Nektar::AcousticSystem::SetBoundaryConditions(), Nektar::CompressibleFlowSystem::SetBoundaryConditions(), Nektar::SolverUtils::MMFSystem::UpwindMaxwellFlux1D(), Nektar::NavierStokesCFE::v_DoDiffusion(), Nektar::NavierStokesImplicitCFE::v_DoDiffusionCoeff(), Nektar::PulseWaveSystem::v_InitObject(), Nektar::MMFSWE::WallBoundary2D(), Nektar::NonlinearPeregrine::WallBoundaryContVariables(), and Nektar::NonlinearPeregrine::WallBoundaryForcing().

◆ GetVariable()

const std::string Nektar::SolverUtils::EquationSystem::GetVariable ( unsigned int  i)
inline

Definition at line 683 of file EquationSystem.h.

684  {
685  return m_session->GetVariable(i);
686  }

References m_session.

◆ ImportFld() [1/3]

void Nektar::SolverUtils::EquationSystem::ImportFld ( const std::string &  infile,
Array< OneD, MultiRegions::ExpListSharedPtr > &  pFields 
)

Input field data from the given file.

Import field from infile and load into m_fields. This routine will also perform a BwdTrans to ensure data is in both the physical and coefficient storage.

Parameters
infileFilename to read.

Definition at line 1255 of file EquationSystem.cpp.

1258  {
1259  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1260  std::vector<std::vector<NekDouble> > FieldData;
1261  LibUtilities::FieldIOSharedPtr field_fld =
1263  field_fld->Import(infile,FieldDef,FieldData);
1264 
1265  // Copy FieldData into m_fields
1266  for(int j = 0; j < pFields.size(); ++j)
1267  {
1268  Vmath::Zero(pFields[j]->GetNcoeffs(),
1269  pFields[j]->UpdateCoeffs(),1);
1270 
1271  for(int i = 0; i < FieldDef.size(); ++i)
1272  {
1273  ASSERTL1(FieldDef[i]->m_fields[j] ==
1274  m_session->GetVariable(j),
1275  std::string("Order of ") + infile
1276  + std::string(" data and that defined in "
1277  "m_boundaryconditions differs"));
1278 
1279  pFields[j]->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
1280  FieldDef[i]->m_fields[j],
1281  pFields[j]->UpdateCoeffs());
1282  }
1283  pFields[j]->BwdTrans(pFields[j]->GetCoeffs(),
1284  pFields[j]->UpdatePhys());
1285  }
1286  }
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:250
static std::shared_ptr< FieldIO > CreateForFile(const LibUtilities::SessionReaderSharedPtr session, const std::string &filename)
Construct a FieldIO object for a given input filename.
Definition: FieldIO.cpp:226
SOLVER_UTILS_EXPORT int GetNcoeffs()
std::shared_ptr< FieldIO > FieldIOSharedPtr
Definition: FieldIO.h:306
void Zero(int n, T *x, const int incx)
Zero vector.
Definition: Vmath.cpp:436

References ASSERTL1, Nektar::LibUtilities::FieldIO::CreateForFile(), GetNcoeffs(), m_fields, m_session, and Vmath::Zero().

◆ ImportFld() [2/3]

void Nektar::SolverUtils::EquationSystem::ImportFld ( const std::string &  infile,
MultiRegions::ExpListSharedPtr pField,
std::string &  pFieldName 
)

Output a field. Input field data into ExpList from the given file.

Import field from infile and load into pField. This routine will also perform a BwdTrans to ensure data is in both the physical and coefficient storage.

Definition at line 1345 of file EquationSystem.cpp.

1349  {
1350  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1351  std::vector<std::vector<NekDouble> > FieldData;
1352 
1353  LibUtilities::FieldIOSharedPtr field_fld =
1355  field_fld->Import(infile,FieldDef,FieldData);
1356  int idx = -1;
1357 
1358  Vmath::Zero(pField->GetNcoeffs(),pField->UpdateCoeffs(),1);
1359 
1360  for(int i = 0; i < FieldDef.size(); ++i)
1361  {
1362  // find the index of the required field in the file.
1363  for(int j = 0; j < FieldData.size(); ++j)
1364  {
1365  if (FieldDef[i]->m_fields[j] == pFieldName)
1366  {
1367  idx = j;
1368  }
1369  }
1370  ASSERTL1(idx >= 0, "Field " + pFieldName + " not found.");
1371 
1372  pField->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
1373  FieldDef[i]->m_fields[idx],
1374  pField->UpdateCoeffs());
1375  }
1376  pField->BwdTrans(pField->GetCoeffs(), pField->UpdatePhys());
1377  }

References ASSERTL1, Nektar::LibUtilities::FieldIO::CreateForFile(), m_fields, m_session, and Vmath::Zero().

◆ ImportFld() [3/3]

void Nektar::SolverUtils::EquationSystem::ImportFld ( const std::string &  infile,
std::vector< std::string > &  fieldStr,
Array< OneD, Array< OneD, NekDouble > > &  coeffs 
)

Output a field. Input field data into array from the given file.

Import field from infile and load into the array coeffs.

Parameters
infileFilename to read.
fieldStran array of string identifying fields to be imported
coeffsarray of array of coefficients to store imported data

Definition at line 1386 of file EquationSystem.cpp.

1390  {
1391 
1392  ASSERTL0(fieldStr.size() <= coeffs.size(),
1393  "length of fieldstr should be the same as pFields");
1394 
1395  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1396  std::vector<std::vector<NekDouble> > FieldData;
1397 
1398  LibUtilities::FieldIOSharedPtr field_fld =
1400  field_fld->Import(infile,FieldDef,FieldData);
1401 
1402  // Copy FieldData into m_fields
1403  for(int j = 0; j < fieldStr.size(); ++j)
1404  {
1405  Vmath::Zero(coeffs[j].size(),coeffs[j],1);
1406  for(int i = 0; i < FieldDef.size(); ++i)
1407  {
1408  m_fields[0]->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
1409  fieldStr[j], coeffs[j]);
1410  }
1411  }
1412  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216

References ASSERTL0, Nektar::LibUtilities::FieldIO::CreateForFile(), m_fields, m_session, and Vmath::Zero().

◆ ImportFldToMultiDomains()

void Nektar::SolverUtils::EquationSystem::ImportFldToMultiDomains ( const std::string &  infile,
Array< OneD, MultiRegions::ExpListSharedPtr > &  pFields,
const int  ndomains 
)

Input field data from the given file to multiple domains.

Import field from infile and load into m_fields. This routine will also perform a BwdTrans to ensure data is in both the physical and coefficient storage.

Parameters
infileFilename to read. If optionan ndomains is specified it assumes we loop over nodmains for each nvariables.

Definition at line 1298 of file EquationSystem.cpp.

1302  {
1303  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1304  std::vector<std::vector<NekDouble> > FieldData;
1305 
1306  LibUtilities::Import(infile,FieldDef,FieldData);
1307 
1308  int nvariables = GetNvariables();
1309 
1310  ASSERTL0(ndomains*nvariables == pFields.size(),
1311  "Number of fields does not match the number of variables and domains");
1312 
1313  // Copy FieldData into m_fields
1314  for(int j = 0; j < ndomains; ++j)
1315  {
1316  for(int i = 0; i < nvariables; ++i)
1317  {
1318  Vmath::Zero(pFields[j*nvariables+i]->GetNcoeffs(),
1319  pFields[j*nvariables+i]->UpdateCoeffs(),1);
1320 
1321  for(int n = 0; n < FieldDef.size(); ++n)
1322  {
1323  ASSERTL1(FieldDef[n]->m_fields[i] == m_session->GetVariable(i),
1324  std::string("Order of ") + infile
1325  + std::string(" data and that defined in "
1326  "m_boundaryconditions differs"));
1327 
1328  pFields[j*nvariables+i]->ExtractDataToCoeffs(
1329  FieldDef[n], FieldData[n],
1330  FieldDef[n]->m_fields[i],
1331  pFields[j*nvariables+i]->UpdateCoeffs());
1332  }
1333  pFields[j*nvariables+i]->BwdTrans(
1334  pFields[j*nvariables+i]->GetCoeffs(),
1335  pFields[j*nvariables+i]->UpdatePhys());
1336  }
1337  }
1338  }
SOLVER_UTILS_EXPORT int GetNvariables()
void Import(const std::string &infilename, std::vector< FieldDefinitionsSharedPtr > &fielddefs, std::vector< std::vector< NekDouble > > &fielddata, FieldMetaDataMap &fieldinfomap, const Array< OneD, int > &ElementIDs)
This function allows for data to be imported from an FLD file when a session and/or communicator is n...
Definition: FieldIO.cpp:293

References ASSERTL0, ASSERTL1, GetNcoeffs(), GetNvariables(), Nektar::LibUtilities::Import(), m_fields, m_session, and Vmath::Zero().

◆ InitObject()

void Nektar::SolverUtils::EquationSystem::InitObject ( )
inline

Initialises the members of this object.

This is the second part of the two-phase initialisation process. Calls to virtual functions will correctly resolve to the derived class during this phase of the construction.

Definition at line 503 of file EquationSystem.h.

504  {
505  v_InitObject();
506  }
virtual SOLVER_UTILS_EXPORT void v_InitObject()
Initialisation object for EquationSystem.

References v_InitObject().

◆ L2Error() [1/2]

SOLVER_UTILS_EXPORT NekDouble Nektar::SolverUtils::EquationSystem::L2Error ( unsigned int  field,
bool  Normalised = false 
)
inline

Compute the L2 error of the fields.

Definition at line 170 of file EquationSystem.h.

173  {
174  return L2Error(field,NullNekDouble1DArray,Normalised);
175  }
SOLVER_UTILS_EXPORT NekDouble L2Error(unsigned int field, const Array< OneD, NekDouble > &exactsoln, bool Normalised=false)
Compute the L2 error between fields and a given exact solution.
static Array< OneD, NekDouble > NullNekDouble1DArray

References L2Error(), and Nektar::NullNekDouble1DArray.

◆ L2Error() [2/2]

NekDouble Nektar::SolverUtils::EquationSystem::L2Error ( unsigned int  field,
const Array< OneD, NekDouble > &  exactsoln,
bool  Normalised = false 
)
inline

Compute the L2 error between fields and a given exact solution.

L_2 Error computation Public interface routine to virtual function implementation.

Definition at line 574 of file EquationSystem.h.

575  {
576  return v_L2Error(field, exactsoln, Normalised);
577  }
virtual SOLVER_UTILS_EXPORT NekDouble v_L2Error(unsigned int field, const Array< OneD, NekDouble > &exactsoln=NullNekDouble1DArray, bool Normalised=false)
Virtual function for the L_2 error computation between fields and a given exact solution.

References v_L2Error().

Referenced by L2Error().

◆ LinfError()

NekDouble Nektar::SolverUtils::EquationSystem::LinfError ( unsigned int  field,
const Array< OneD, NekDouble > &  exactsoln = NullNekDouble1DArray 
)
inline

Linf error computation.

L_inf Error computation Public interface routine to virtual function implementation.

Definition at line 565 of file EquationSystem.h.

566  {
567  return v_LinfError(field, exactsoln);
568  }
virtual SOLVER_UTILS_EXPORT NekDouble v_LinfError(unsigned int field, const Array< OneD, NekDouble > &exactsoln=NullNekDouble1DArray)
Virtual function for the L_inf error computation between fields and a given exact solution.

References v_LinfError().

Referenced by Nektar::MMFSWE::v_LinfError().

◆ Output()

void Nektar::SolverUtils::EquationSystem::Output ( void  )
inline

Perform output operations after solve.

Perform output operations after solve.

Definition at line 556 of file EquationSystem.h.

557  {
558  v_Output();
559  }
virtual SOLVER_UTILS_EXPORT void v_Output(void)

References v_Output().

◆ PrintProgressbar()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::PrintProgressbar ( const int  position,
const int  goal 
) const
inlineprivate

Definition at line 490 of file EquationSystem.h.

492  {
493  LibUtilities::PrintProgressbar(position, goal, "Interpolating");
494  }
int PrintProgressbar(const int position, const int goal, const std::string message, int lastprogress=-1)
Prints a progressbar.
Definition: Progressbar.hpp:67

References Nektar::LibUtilities::PrintProgressbar().

◆ PrintSummary()

void Nektar::SolverUtils::EquationSystem::PrintSummary ( std::ostream &  out)
inline

Print a summary of parameters and solver characteristics.

Prints a summary of variables and problem parameters.

Public interface routine to virtual function implementation.

Parameters
outThe ostream object to write to.

Definition at line 608 of file EquationSystem.h.

609  {
610  if (m_session->GetComm()->GetRank() == 0)
611  {
612  std::vector<std::pair<std::string, std::string> > vSummary;
613  v_GenerateSummary(vSummary);
614 
615  out << "=======================================================================" << std::endl;
616  for (auto &x : vSummary)
617  {
618  out << "\t";
619  out.width(20);
620  out << x.first << ": " << x.second << std::endl;
621  }
622  out << "=======================================================================" << std::endl;
623  }
624  }
virtual SOLVER_UTILS_EXPORT void v_GenerateSummary(SummaryList &l)
Virtual function for generating summary information.

References m_session, and v_GenerateSummary().

◆ ResetSessionName()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::ResetSessionName ( std::string  newname)
inline

Reset Session name.

Definition at line 120 of file EquationSystem.h.

121  {
122  m_sessionName = newname;
123  }

References m_sessionName.

◆ SessionSummary()

void Nektar::SolverUtils::EquationSystem::SessionSummary ( SummaryList s)

Write out a session summary.

Write out a summary of the session data.

Parameters
outOutput stream to write data to.

Definition at line 1418 of file EquationSystem.cpp.

1419  {
1420  AddSummaryItem(s, "EquationType",
1421  m_session->GetSolverInfo("EQTYPE"));
1422  AddSummaryItem(s, "Session Name", m_sessionName);
1423  AddSummaryItem(s, "Spatial Dim.", m_spacedim);
1424  AddSummaryItem(s, "Max SEM Exp. Order",
1425  m_fields[0]->EvalBasisNumModesMax());
1426 
1427  if (m_session->GetComm()->GetSize() > 1)
1428  {
1429  AddSummaryItem(s, "Num. Processes",
1430  m_session->GetComm()->GetSize());
1431  }
1432 
1434  {
1435  AddSummaryItem(s, "Quasi-3D", "Homogeneous in z-direction");
1436  AddSummaryItem(s, "Expansion Dim.", m_expdim + 1);
1437  AddSummaryItem(s, "Num. Hom. Modes (z)", m_npointsZ);
1438  AddSummaryItem(s, "Hom. length (LZ)", m_LhomZ);
1439  AddSummaryItem(s, "FFT Type", m_useFFT ? "FFTW" : "MVM");
1440  if (m_halfMode)
1441  {
1442  AddSummaryItem(s, "ModeType", "Half Mode");
1443  }
1444  else if (m_singleMode)
1445  {
1446  AddSummaryItem(s, "ModeType", "Single Mode");
1447  }
1448  else if (m_multipleModes)
1449  {
1450  AddSummaryItem(s, "ModeType", "Multiple Modes");
1451  }
1452  }
1453  else if(m_HomogeneousType == eHomogeneous2D)
1454  {
1455  AddSummaryItem(s, "Quasi-3D", "Homogeneous in yz-plane");
1456  AddSummaryItem(s, "Expansion Dim.", m_expdim + 2);
1457  AddSummaryItem(s, "Num. Hom. Modes (y)", m_npointsY);
1458  AddSummaryItem(s, "Num. Hom. Modes (z)", m_npointsZ);
1459  AddSummaryItem(s, "Hom. length (LY)", m_LhomY);
1460  AddSummaryItem(s, "Hom. length (LZ)", m_LhomZ);
1461  AddSummaryItem(s, "FFT Type", m_useFFT ? "FFTW" : "MVM");
1462  }
1463  else
1464  {
1465  AddSummaryItem(s, "Expansion Dim.", m_expdim);
1466  }
1467 
1468  if (m_session->DefinesSolverInfo("UpwindType"))
1469  {
1470  AddSummaryItem(s, "Riemann Solver",
1471  m_session->GetSolverInfo("UpwindType"));
1472  }
1473 
1474  if (m_session->DefinesSolverInfo("AdvectionType"))
1475  {
1476  std::string AdvectionType;
1477  AdvectionType = m_session->GetSolverInfo("AdvectionType");
1478  AddSummaryItem(s, "Advection Type", GetAdvectionFactory().
1479  GetClassDescription(AdvectionType));
1480  }
1481 
1483  {
1484  AddSummaryItem(s, "Projection Type", "Continuous Galerkin");
1485  }
1487  {
1488  AddSummaryItem(s, "Projection Type", "Discontinuous Galerkin");
1489  }
1491  {
1492  AddSummaryItem(s, "Projection Type",
1493  "Mixed Continuous Galerkin and Discontinuous");
1494  }
1495 
1496  if (m_session->DefinesSolverInfo("DiffusionType"))
1497  {
1498  std::string DiffusionType;
1499  DiffusionType = m_session->GetSolverInfo("DiffusionType");
1500  AddSummaryItem(s, "Diffusion Type", GetDiffusionFactory().
1501  GetClassDescription(DiffusionType));
1502  }
1503  }
int m_spacedim
Spatial dimension (>= expansion dim).
bool m_useFFT
Flag to determine if FFT is used for homogeneous transform.
int m_expdim
Expansion dimension.
bool m_multipleModes
Flag to determine if use multiple homogenenous modes are used.
int m_npointsZ
number of points in Z direction (if homogeneous)
NekDouble m_LhomY
physical length in Y direction (if homogeneous)
int m_npointsY
number of points in Y direction (if homogeneous)
bool m_singleMode
Flag to determine if single homogeneous mode is used.
enum HomogeneousType m_HomogeneousType
enum MultiRegions::ProjectionType m_projectionType
Type of projection; e.g continuous or discontinuous.
NekDouble m_LhomZ
physical length in Z direction (if homogeneous)
bool m_halfMode
Flag to determine if half homogeneous mode is used.
AdvectionFactory & GetAdvectionFactory()
Gets the factory for initialising advection objects.
Definition: Advection.cpp:47
DiffusionFactory & GetDiffusionFactory()
Definition: Diffusion.cpp:41
void AddSummaryItem(SummaryList &l, const std::string &name, const std::string &value)
Adds a summary item to the summary info list.
Definition: Misc.cpp:47

References Nektar::SolverUtils::AddSummaryItem(), Nektar::MultiRegions::eDiscontinuous, Nektar::MultiRegions::eGalerkin, eHomogeneous1D, eHomogeneous2D, Nektar::MultiRegions::eMixed_CG_Discontinuous, Nektar::SolverUtils::GetAdvectionFactory(), Nektar::SolverUtils::GetDiffusionFactory(), m_expdim, m_fields, m_halfMode, m_HomogeneousType, m_LhomY, m_LhomZ, m_multipleModes, m_npointsY, m_npointsZ, m_projectionType, m_session, m_sessionName, m_singleMode, m_spacedim, and m_useFFT.

Referenced by Nektar::Laplace::v_GenerateSummary(), Nektar::Projection::v_GenerateSummary(), Nektar::LinearElasticSystem::v_GenerateSummary(), and v_GenerateSummary().

◆ SetBoundaryConditions()

void Nektar::SolverUtils::EquationSystem::SetBoundaryConditions ( NekDouble  time)

◆ SetCheckpointNumber()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::SetCheckpointNumber ( int  num)
inline

Definition at line 298 of file EquationSystem.h.

299  {
300  m_nchk = num;
301  }

References m_nchk.

◆ SetCheckpointSteps()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::SetCheckpointSteps ( int  num)
inline

Definition at line 308 of file EquationSystem.h.

309  {
310  m_checksteps = num;
311  }

References m_checksteps.

◆ SetInitialConditions()

void Nektar::SolverUtils::EquationSystem::SetInitialConditions ( NekDouble  initialtime = 0.0,
bool  dumpInitialConditions = true,
const int  domain = 0 
)
inline

Initialise the data in the dependent fields.

Definition at line 631 of file EquationSystem.h.

634  {
635  v_SetInitialConditions(initialtime,dumpInitialConditions,domain);
636  }
virtual SOLVER_UTILS_EXPORT void v_SetInitialConditions(NekDouble initialtime=0.0, bool dumpInitialConditions=true, const int domain=0)

References v_SetInitialConditions().

Referenced by main(), Nektar::SolverUtils::UnsteadySystem::v_DoInitialise(), Nektar::PulseWaveSystem::v_DoInitialise(), Nektar::MMFSWE::v_DoInitialise(), and Nektar::CoupledLinearNS::v_DoInitialise().

◆ SetInitialStep()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::SetInitialStep ( const int  step)
inline

Definition at line 319 of file EquationSystem.h.

321  {
322  m_initialStep = step;
323  }
int m_initialStep
Number of the step where the simulation should begin.

References m_initialStep.

◆ SetLambda()

void Nektar::SolverUtils::EquationSystem::SetLambda ( NekDouble  lambda)
inline

Set parameter m_lambda.

Definition at line 626 of file EquationSystem.h.

627  {
628  m_lambda = lambda;
629  }

References m_lambda.

◆ SetModifiedBasis()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::SetModifiedBasis ( const bool  modbasis)
inline

◆ SetSteps()

void Nektar::SolverUtils::EquationSystem::SetSteps ( const int  steps)
inline

Definition at line 738 of file EquationSystem.h.

739  {
740  m_steps = steps;
741  }

References m_steps.

◆ SetTime()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::SetTime ( const NekDouble  time)
inline

Definition at line 313 of file EquationSystem.h.

315  {
316  m_time = time;
317  }

References m_time.

◆ SetUpTraceNormals()

SOLVER_UTILS_EXPORT void Nektar::SolverUtils::EquationSystem::SetUpTraceNormals ( void  )

◆ TransCoeffToPhys()

void Nektar::SolverUtils::EquationSystem::TransCoeffToPhys ( void  )
inline

Transform from coefficient to physical space.

Performs the transformation from coefficient to physical space.

Public interface routine to virtual function implementation.

Definition at line 526 of file EquationSystem.h.

527  {
529  }
virtual SOLVER_UTILS_EXPORT void v_TransCoeffToPhys()
Virtual function for transformation to physical space.

References v_TransCoeffToPhys().

◆ TransPhysToCoeff()

void Nektar::SolverUtils::EquationSystem::TransPhysToCoeff ( void  )
inline

Transform from physical to coefficient space.

Performs the transformation from physical to coefficient space.

Public interface routine to virtual function implementation.

Definition at line 536 of file EquationSystem.h.

537  {
539  }
virtual SOLVER_UTILS_EXPORT void v_TransPhysToCoeff()
Virtual function for transformation to coefficient space.

References v_TransPhysToCoeff().

◆ UpdateFieldMetaDataMap()

SOLVER_UTILS_EXPORT LibUtilities::FieldMetaDataMap& Nektar::SolverUtils::EquationSystem::UpdateFieldMetaDataMap ( )
inline

Get hold of FieldInfoMap so it can be updated.

◆ UpdateFields()

Array< OneD, MultiRegions::ExpListSharedPtr > & Nektar::SolverUtils::EquationSystem::UpdateFields ( void  )
inline

Definition at line 646 of file EquationSystem.h.

647  {
648  return m_fields;
649  }

References m_fields.

◆ v_DoInitialise()

void Nektar::SolverUtils::EquationSystem::v_DoInitialise ( void  )
protectedvirtual

Virtual function for initialisation implementation.

By default, nothing needs initialising at the EquationSystem level.

Reimplemented in Nektar::VelocityCorrectionScheme, Nektar::VCSMapping, Nektar::CoupledLinearNS, Nektar::MMFSWE, Nektar::PulseWaveSystem, Nektar::SteadyAdvectionDiffusion, Nektar::EigenValuesAdvection, and Nektar::SolverUtils::UnsteadySystem.

Definition at line 1034 of file EquationSystem.cpp.

1035  {
1036 
1037  }

Referenced by DoInitialise().

◆ v_DoSolve()

void Nektar::SolverUtils::EquationSystem::v_DoSolve ( void  )
protectedvirtual

◆ v_EvaluateExactSolution()

void Nektar::SolverUtils::EquationSystem::v_EvaluateExactSolution ( unsigned int  field,
Array< OneD, NekDouble > &  outfield,
const NekDouble  time 
)
protectedvirtual

Reimplemented in Nektar::RinglebFlow, Nektar::IsentropicVortex, Nektar::MMFSWE, Nektar::MMFMaxwell, Nektar::MMFDiffusion, and Nektar::MMFAdvection.

Definition at line 1015 of file EquationSystem.cpp.

1019  {
1020  ASSERTL0 (outfield.size() == m_fields[field]->GetNpoints(),
1021  "ExactSolution array size mismatch.");
1022  Vmath::Zero(outfield.size(), outfield, 1);
1023  if (m_session->DefinesFunction("ExactSolution"))
1024  {
1025  GetFunction("ExactSolution")->Evaluate(
1026  m_session->GetVariable(field), outfield, time);
1027  }
1028  }
SOLVER_UTILS_EXPORT SessionFunctionSharedPtr GetFunction(std::string name, const MultiRegions::ExpListSharedPtr &field=MultiRegions::NullExpListSharedPtr, bool cache=false)
Get a SessionFunction by name.

References ASSERTL0, GetFunction(), m_fields, m_session, and Vmath::Zero().

Referenced by EvaluateExactSolution(), and Nektar::MMFDiffusion::v_EvaluateExactSolution().

◆ v_ExtraFldOutput()

void Nektar::SolverUtils::EquationSystem::v_ExtraFldOutput ( std::vector< Array< OneD, NekDouble > > &  fieldcoeffs,
std::vector< std::string > &  variables 
)
protectedvirtual

Reimplemented in Nektar::LinearElasticSystem, and Nektar::CompressibleFlowSystem.

Definition at line 1517 of file EquationSystem.cpp.

1520  {
1521  boost::ignore_unused(fieldcoeffs, variables);
1522  }

Referenced by ExtraFldOutput().

◆ v_GenerateSummary()

void Nektar::SolverUtils::EquationSystem::v_GenerateSummary ( SummaryList l)
protectedvirtual

◆ v_GetPressure()

MultiRegions::ExpListSharedPtr Nektar::SolverUtils::EquationSystem::v_GetPressure ( void  )
protectedvirtual

Reimplemented in Nektar::IncNavierStokes.

Definition at line 1510 of file EquationSystem.cpp.

1511  {
1512  ASSERTL0(false, "This function is not valid for the Base class");
1514  return null;
1515  }

References ASSERTL0.

Referenced by GetPressure().

◆ v_GetSystemSingularChecks()

Array< OneD, bool > Nektar::SolverUtils::EquationSystem::v_GetSystemSingularChecks ( )
privatevirtual

Reimplemented in Nektar::VelocityCorrectionScheme, Nektar::Poisson, Nektar::Laplace, and Nektar::Helmholtz.

Definition at line 1505 of file EquationSystem.cpp.

1506  {
1507  return Array<OneD, bool>(m_session->GetVariables().size(), false);
1508  }

References m_session.

Referenced by v_InitObject().

◆ v_InitObject()

void Nektar::SolverUtils::EquationSystem::v_InitObject ( )
protectedvirtual

Initialisation object for EquationSystem.

Continuous field

Setting up the normals

Setting up the normals

Reimplemented in Nektar::ShallowWaterSystem, Nektar::NonlinearSWE, Nektar::NonlinearPeregrine, Nektar::MMFSWE, Nektar::LinearSWE, Nektar::PulseWaveSystemOutput, Nektar::PulseWaveSystem, Nektar::PulseWavePropagation, Nektar::MMFMaxwell, Nektar::LinearElasticSystem, Nektar::IterativeElasticSystem, Nektar::VelocityCorrectionScheme, Nektar::VCSMapping, Nektar::SmoothedProfileMethod, Nektar::IncNavierStokes, Nektar::CoupledLinearNS, Nektar::ImageWarpingSystem, Nektar::Dummy, Nektar::MMFDiffusion, Nektar::NavierStokesImplicitCFE, Nektar::NavierStokesCFEAxisym, Nektar::NavierStokesCFE, Nektar::EulerImplicitCFE, Nektar::EulerCFE, Nektar::CFSImplicit, Nektar::CompressibleFlowSystem, Nektar::Monodomain, Nektar::BidomainRoth, Nektar::Bidomain, Nektar::UnsteadyViscousBurgers, Nektar::UnsteadyReactionDiffusion, Nektar::UnsteadyInviscidBurger, Nektar::UnsteadyDiffusion, Nektar::UnsteadyAdvectionDiffusion, Nektar::UnsteadyAdvection, Nektar::SteadyAdvectionDiffusionReaction, Nektar::SteadyAdvectionDiffusion, Nektar::Projection, Nektar::Poisson, Nektar::MMFAdvection, Nektar::Laplace, Nektar::Helmholtz, Nektar::EigenValuesAdvection, Nektar::CFLtester, Nektar::LEE, Nektar::APE, Nektar::AcousticSystem, Nektar::SolverUtils::UnsteadySystem, and Nektar::SolverUtils::AdvectionSystem.

Definition at line 124 of file EquationSystem.cpp.

125  {
126  // Save the basename of input file name for output details
127  m_sessionName = m_session->GetSessionName();
128 
129  // Instantiate a field reader/writer
131 
132  // Also read and store the boundary conditions
136 
137  // Set space dimension for use in class
138  m_spacedim = m_graph->GetSpaceDimension();
139 
140  // Setting parameteres for homogenous problems
141  m_HomoDirec = 0;
142  m_useFFT = false;
143  m_homogen_dealiasing = false;
144  m_singleMode = false;
145  m_halfMode = false;
146  m_multipleModes = false;
148 
149  m_verbose = m_session->DefinesCmdLineArgument("verbose");
150  m_root = false;
151  if (0 == m_comm->GetRank())
152  {
153  m_root =true;
154  }
155 
156  if (m_session->DefinesSolverInfo("HOMOGENEOUS"))
157  {
158  std::string HomoStr = m_session->GetSolverInfo("HOMOGENEOUS");
159  m_spacedim = 3;
160 
161  if ((HomoStr == "HOMOGENEOUS1D") || (HomoStr == "Homogeneous1D")
162  || (HomoStr == "1D") || (HomoStr == "Homo1D"))
163  {
165  m_session->LoadParameter("LZ", m_LhomZ);
166  m_HomoDirec = 1;
167 
168  if(m_session->DefinesSolverInfo("ModeType"))
169  {
170  m_session->MatchSolverInfo("ModeType", "SingleMode",
171  m_singleMode, false);
172  m_session->MatchSolverInfo("ModeType", "HalfMode",
173  m_halfMode, false);
174  m_session->MatchSolverInfo("ModeType", "MultipleModes",
175  m_multipleModes, false);
176  }
177 
178  // Stability Analysis flags
179  if (m_session->DefinesSolverInfo("ModeType"))
180  {
181  if(m_singleMode)
182  {
183  m_npointsZ = 2;
184  }
185  else if(m_halfMode)
186  {
187  m_npointsZ = 1;
188  }
189  else if(m_multipleModes)
190  {
191  m_npointsZ = m_session->GetParameter("HomModesZ");
192  }
193  else
194  {
195  ASSERTL0(false, "SolverInfo ModeType not valid");
196  }
197  }
198  else
199  {
200  m_npointsZ = m_session->GetParameter("HomModesZ");
201  }
202  }
203 
204  if ((HomoStr == "HOMOGENEOUS2D") || (HomoStr == "Homogeneous2D")
205  || (HomoStr == "2D") || (HomoStr == "Homo2D"))
206  {
208  m_session->LoadParameter("HomModesY", m_npointsY);
209  m_session->LoadParameter("LY", m_LhomY);
210  m_session->LoadParameter("HomModesZ", m_npointsZ);
211  m_session->LoadParameter("LZ", m_LhomZ);
212  m_HomoDirec = 2;
213  }
214 
215  if ((HomoStr == "HOMOGENEOUS3D") || (HomoStr == "Homogeneous3D")
216  || (HomoStr == "3D") || (HomoStr == "Homo3D"))
217  {
219  m_session->LoadParameter("HomModesY", m_npointsY);
220  m_session->LoadParameter("LY", m_LhomY);
221  m_session->LoadParameter("HomModesZ", m_npointsZ);
222  m_session->LoadParameter("LZ", m_LhomZ);
223  m_HomoDirec = 2;
224  }
225 
226  m_session->MatchSolverInfo("USEFFT", "FFTW", m_useFFT, false);
227 
228  m_session->MatchSolverInfo("DEALIASING", "True",
229  m_homogen_dealiasing, false);
230  }
231  else
232  {
233  // set to default value so can use to identify 2d or 3D
234  // (homogeneous) expansions
235  m_npointsZ = 1;
236  }
237 
238  m_session->MatchSolverInfo("SPECTRALHPDEALIASING", "True",
239  m_specHP_dealiasing, false);
240  if (m_specHP_dealiasing == false)
241  {
242  m_session->MatchSolverInfo("SPECTRALHPDEALIASING", "On",
243  m_specHP_dealiasing, false);
244  }
245 
246  // Options to determine type of projection from file or directly
247  // from constructor
248  if (m_session->DefinesSolverInfo("PROJECTION"))
249  {
250  std::string ProjectStr = m_session->GetSolverInfo("PROJECTION");
251 
252  if ((ProjectStr == "Continuous") || (ProjectStr == "Galerkin") ||
253  (ProjectStr == "CONTINUOUS") || (ProjectStr == "GALERKIN"))
254  {
256  }
257  else if ((ProjectStr == "MixedCGDG") ||
258  (ProjectStr == "Mixed_CG_Discontinuous"))
259  {
261  }
262  else if(ProjectStr == "DisContinuous")
263  {
265  }
266  else
267  {
268  ASSERTL0(false,"PROJECTION value not recognised");
269  }
270  }
271  else
272  {
273  cerr << "Projection type not specified in SOLVERINFO,"
274  "defaulting to continuous Galerkin" << endl;
276  }
277 
278  // Enforce singularity check for some problems
280 
281  int i;
282  int nvariables = m_session->GetVariables().size();
283  bool DeclareCoeffPhysArrays = true;
284 
285 
286  m_fields = Array<OneD, MultiRegions::ExpListSharedPtr>(nvariables);
287  m_spacedim = m_graph->GetSpaceDimension()+m_HomoDirec;
288  m_expdim = m_graph->GetMeshDimension();
289 
290  /// Continuous field
293  {
294  switch(m_expdim)
295  {
296  case 1:
297  {
300  {
301  const LibUtilities::PointsKey PkeyY
303  const LibUtilities::BasisKey BkeyY
305  const LibUtilities::PointsKey PkeyZ
307  const LibUtilities::BasisKey
308  BkeyZ(LibUtilities::eFourier, m_npointsZ, PkeyZ);
309 
310  for (i = 0; i < m_fields.size(); i++)
311  {
312  m_fields[i] = MemoryManager<MultiRegions
313  ::ContField3DHomogeneous2D>
314  ::AllocateSharedPtr(
315  m_session, BkeyY, BkeyZ, m_LhomY,
316  m_LhomZ, m_useFFT,
318  m_session->GetVariable(i));
319  }
320  }
321  else
322  {
323  for (i = 0; i < m_fields.size(); i++)
324  {
325  m_fields[i] = MemoryManager
326  <MultiRegions::ContField>::
327  AllocateSharedPtr(
329  m_session->GetVariable(i));
330  }
331  }
332  break;
333  }
334  case 2:
335  {
337  {
338  // Fourier single mode stability analysis
339  if (m_singleMode)
340  {
341  const LibUtilities::PointsKey PkeyZ(
342  m_npointsZ,
344 
345  const LibUtilities::BasisKey BkeyZ(
347  m_npointsZ,
348  PkeyZ);
349 
350  for(i = 0; i < m_fields.size(); i++)
351  {
352  m_fields[i] = MemoryManager<MultiRegions
353  ::ContField3DHomogeneous1D>
354  ::AllocateSharedPtr(
355  m_session, BkeyZ, m_LhomZ,
357  m_graph,
358  m_session->GetVariable(i),
360  }
361  }
362  // Half mode stability analysis
363  else if(m_halfMode)
364  {
365  const LibUtilities::PointsKey PkeyZ(
366  m_npointsZ,
368 
369  const LibUtilities::BasisKey BkeyZR(
371  m_npointsZ, PkeyZ);
372 
373  const LibUtilities::BasisKey BkeyZI(
375  m_npointsZ, PkeyZ);
376 
377 
378  for (i = 0; i < m_fields.size(); i++)
379  {
380  if(m_session->GetVariable(i).compare("w")
381  == 0)
382  {
383  m_fields[i] = MemoryManager<MultiRegions
384  ::ContField3DHomogeneous1D>
385  ::AllocateSharedPtr(
386  m_session, BkeyZI, m_LhomZ,
387  m_useFFT,
389  m_graph,
390  m_session->GetVariable(i),
392  }
393  else
394  {
395  m_fields[i] = MemoryManager<MultiRegions
396  ::ContField3DHomogeneous1D>
397  ::AllocateSharedPtr(
398  m_session, BkeyZR, m_LhomZ,
400  m_graph,
401  m_session->GetVariable(i),
403  }
404 
405 
406  }
407  }
408  // Normal homogeneous 1D
409  else
410  {
411  const LibUtilities::PointsKey PkeyZ(
412  m_npointsZ,
414  const LibUtilities::BasisKey BkeyZ(
416 
417  for (i = 0; i < m_fields.size(); i++)
418  {
419  m_fields[i] = MemoryManager<MultiRegions
420  ::ContField3DHomogeneous1D>
421  ::AllocateSharedPtr(
422  m_session, BkeyZ, m_LhomZ,
424  m_graph,
425  m_session->GetVariable(i),
427  }
428  }
429  }
430  else
431  {
432  i = 0;
434  firstfield = MemoryManager<MultiRegions::
435  ContField>::AllocateSharedPtr(
437  m_session->GetVariable(i),
438  DeclareCoeffPhysArrays,
440  m_fields[0] = firstfield;
441  for (i = 1; i < m_fields.size(); i++)
442  {
443  if (m_graph->SameExpansionInfo(
444  m_session->GetVariable(0),
445  m_session->GetVariable(i)))
446  {
447  m_fields[i] = MemoryManager<MultiRegions::
448  ContField>::AllocateSharedPtr(
449  *firstfield, m_graph,
450  m_session->GetVariable(i),
451  DeclareCoeffPhysArrays,
453  }
454  else
455  {
456  m_fields[i] = MemoryManager<MultiRegions
457  ::ContField>::AllocateSharedPtr(
458  m_session, m_graph,
459  m_session->GetVariable(i),
460  DeclareCoeffPhysArrays,
462  }
463  }
464 
465  if (m_projectionType ==
467  {
468  /// Setting up the normals
470  Array<OneD, Array<OneD, NekDouble> >
471  (m_spacedim);
472 
473  for (i = 0; i < m_spacedim; ++i)
474  {
475  m_traceNormals[i] = Array<OneD, NekDouble>
476  (GetTraceNpoints());
477  }
478 
479  m_fields[0]->GetTrace()->
480  GetNormals(m_traceNormals);
481  }
482 
483  }
484 
485  break;
486  }
487  case 3:
488  {
489  i = 0;
493  m_session->GetVariable(i),
494  DeclareCoeffPhysArrays,
496 
497  m_fields[0] = firstfield;
498  for (i = 1; i < m_fields.size(); i++)
499  {
500  if(m_graph->SameExpansionInfo(m_session->GetVariable(0),
501  m_session->GetVariable(i)))
502  {
503  m_fields[i] = MemoryManager<MultiRegions
504  ::ContField>::AllocateSharedPtr(
505  *firstfield, m_graph,
506  m_session->GetVariable(i),
507  DeclareCoeffPhysArrays,
509  }
510  else
511  {
512  m_fields[i] = MemoryManager<MultiRegions
513  ::ContField>::AllocateSharedPtr(
514  m_session, m_graph,
515  m_session->GetVariable(i),
516  DeclareCoeffPhysArrays,
518  }
519  }
520 
521  if (m_projectionType ==
523  {
524  /// Setting up the normals
526  Array<OneD, Array<OneD, NekDouble> >
527  (m_spacedim);
528  for(i = 0; i < m_spacedim; ++i)
529  {
530  m_traceNormals[i] =
531  Array<OneD, NekDouble> (GetTraceNpoints());
532  }
533 
534  m_fields[0]->GetTrace()->GetNormals(m_traceNormals);
535  // Call the trace on all fields to ensure DG setup.
536  for(i = 1; i < m_fields.size(); ++i)
537  {
538  m_fields[i]->GetTrace();
539  }
540  }
541  break;
542  }
543  default:
544  ASSERTL0(false,"Expansion dimension not recognised");
545  break;
546  }
547  }
548  // Discontinuous field
549  else
550  {
551  switch(m_expdim)
552  {
553  case 1:
554  {
557  {
558  const LibUtilities::PointsKey PkeyY(
560  const LibUtilities::BasisKey BkeyY(
562  const LibUtilities::PointsKey PkeyZ(
564  const LibUtilities::BasisKey BkeyZ(
566 
567  for (i = 0; i < m_fields.size(); i++)
568  {
569  m_fields[i] = MemoryManager<MultiRegions
570  ::DisContField3DHomogeneous2D>
571  ::AllocateSharedPtr(
572  m_session, BkeyY, BkeyZ, m_LhomY,
573  m_LhomZ, m_useFFT,
575  m_session->GetVariable(i));
576  }
577  }
578  else
579  {
580  for (i = 0; i < m_fields.size(); i++)
581  {
582  m_fields[i] = MemoryManager<MultiRegions::
583  DisContField>::AllocateSharedPtr(
585  m_session->GetVariable(i));
586  }
587  }
588 
589  break;
590  }
591  case 2:
592  {
594  {
595  const LibUtilities::PointsKey PkeyZ(
597  const LibUtilities::BasisKey BkeyZ(
599 
600  for (i = 0; i < m_fields.size(); i++)
601  {
602  m_fields[i] = MemoryManager<MultiRegions
603  ::DisContField3DHomogeneous1D>
604  ::AllocateSharedPtr(
605  m_session, BkeyZ, m_LhomZ, m_useFFT,
607  m_session->GetVariable(i));
608  }
609  }
610  else
611  {
612  for (i = 0; i < m_fields.size(); i++)
613  {
614  m_fields[i] = MemoryManager<MultiRegions::
615  DisContField>::AllocateSharedPtr(
617  m_session->GetVariable(i));
618  }
619  }
620 
621  break;
622  }
623  case 3:
624  {
626  {
627  ASSERTL0(false,
628  "3D fully periodic problems not implemented yet");
629  }
630  else
631  {
632  for (i = 0; i < m_fields.size(); i++)
633  {
634  m_fields[i] = MemoryManager<MultiRegions::
635  DisContField>::AllocateSharedPtr(
637  m_session->GetVariable(i));
638  }
639  }
640  break;
641  }
642  default:
643  ASSERTL0(false, "Expansion dimension not recognised");
644  break;
645  }
646 
647  // Setting up the normals
649  Array<OneD, Array<OneD, NekDouble> >(m_spacedim);
650 
651  for (i = 0; i < m_spacedim; ++i)
652  {
653  m_traceNormals[i] =
654  Array<OneD, NekDouble> (GetTraceNpoints(), 0.0);
655  }
656 
657  m_fields[0]->GetTrace()->GetNormals(m_traceNormals);
658  }
659 
660  // Set Default Parameter
661  m_session->LoadParameter("Time", m_time, 0.0);
662  m_session->LoadParameter("TimeStep", m_timestep, 0.0);
663  m_session->LoadParameter("NumSteps", m_steps, 0);
664  m_session->LoadParameter("IO_CheckSteps", m_checksteps, 0);
665  m_session->LoadParameter("IO_CheckTime", m_checktime, 0.0);
666  m_session->LoadParameter("FinTime", m_fintime, 0);
667  m_session->LoadParameter("NumQuadPointsError",
669 
670  // Check uniqueness of checkpoint output
671  ASSERTL0((m_checktime == 0.0 && m_checksteps == 0) ||
672  (m_checktime > 0.0 && m_checksteps == 0) ||
673  (m_checktime == 0.0 && m_checksteps > 0),
674  "Only one of IO_CheckTime and IO_CheckSteps "
675  "should be set!");
676  m_session->LoadParameter("TimeIncrementFactor",
677  m_TimeIncrementFactor , 1.0);
678 
679  m_nchk = 0;
680 
681  // Zero all physical fields initially
682  ZeroPhysFields();
683  }
static std::shared_ptr< FieldIO > CreateDefault(const LibUtilities::SessionReaderSharedPtr session)
Returns an object for the default FieldIO method.
Definition: FieldIO.cpp:195
LibUtilities::FieldIOSharedPtr m_fld
Field input/output.
NekDouble m_fintime
Finish time of the simulation.
NekDouble m_checktime
Time between checkpoints.
bool m_specHP_dealiasing
Flag to determine if dealisising is usde for the Spectral/hp element discretisation.
SOLVER_UTILS_EXPORT void ZeroPhysFields()
int m_HomoDirec
number of homogenous directions
Array< OneD, Array< OneD, NekDouble > > m_traceNormals
Array holding trace normals for DG simulations in the forwards direction.
Array< OneD, bool > m_checkIfSystemSingular
Flag to indicate if the fields should be checked for singularity.
bool m_homogen_dealiasing
Flag to determine if dealiasing is used for homogeneous simulations.
virtual SOLVER_UTILS_EXPORT Array< OneD, bool > v_GetSystemSingularChecks()
SpatialDomains::BoundaryConditionsSharedPtr m_boundaryConditions
Pointer to boundary conditions object.
@ eFourierEvenlySpaced
1D Evenly-spaced points using Fourier Fit
Definition: PointsType.h:65
@ eFourierSingleModeSpaced
1D Non Evenly-spaced points for Single Mode analysis
Definition: PointsType.h:66
@ eFourierSingleMode
Fourier ModifiedExpansion with just the first mode .
Definition: BasisType.h:59
@ eFourierHalfModeIm
Fourier Modified expansions with just the imaginary part of the first mode
Definition: BasisType.h:61
@ eFourierHalfModeRe
Fourier Modified expansions with just the real part of the first mode
Definition: BasisType.h:60
@ eFourier
Fourier Expansion .
Definition: BasisType.h:53
std::shared_ptr< ContField > ContFieldSharedPtr
Definition: ContField.h:292

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, Nektar::LibUtilities::FieldIO::CreateDefault(), Nektar::MultiRegions::eDiscontinuous, Nektar::LibUtilities::eFourier, Nektar::LibUtilities::eFourierEvenlySpaced, Nektar::LibUtilities::eFourierHalfModeIm, Nektar::LibUtilities::eFourierHalfModeRe, Nektar::LibUtilities::eFourierSingleMode, Nektar::LibUtilities::eFourierSingleModeSpaced, Nektar::MultiRegions::eGalerkin, eHomogeneous1D, eHomogeneous2D, eHomogeneous3D, Nektar::MultiRegions::eMixed_CG_Discontinuous, eNotHomogeneous, GetTraceNpoints(), m_boundaryConditions, m_checkIfSystemSingular, m_checksteps, m_checktime, m_comm, m_expdim, m_fields, m_fintime, m_fld, m_graph, m_halfMode, m_HomoDirec, m_homogen_dealiasing, m_HomogeneousType, m_LhomY, m_LhomZ, m_multipleModes, m_nchk, m_npointsY, m_npointsZ, m_NumQuadPointsError, m_projectionType, m_root, m_session, m_sessionName, m_singleMode, m_spacedim, m_specHP_dealiasing, m_steps, m_time, m_TimeIncrementFactor, m_timestep, m_traceNormals, m_useFFT, m_verbose, v_GetSystemSingularChecks(), and ZeroPhysFields().

Referenced by InitObject(), Nektar::SolverUtils::UnsteadySystem::v_InitObject(), Nektar::EigenValuesAdvection::v_InitObject(), Nektar::Laplace::v_InitObject(), Nektar::Projection::v_InitObject(), Nektar::SteadyAdvectionDiffusion::v_InitObject(), and Nektar::LinearElasticSystem::v_InitObject().

◆ v_L2Error()

NekDouble Nektar::SolverUtils::EquationSystem::v_L2Error ( unsigned int  field,
const Array< OneD, NekDouble > &  exactsoln = NullNekDouble1DArray,
bool  Normalised = false 
)
protectedvirtual

Virtual function for the L_2 error computation between fields and a given exact solution.

Compute the error in the L2-norm.

Parameters
fieldThe field to compare.
exactsolnThe exact solution to compare with.
NormalisedNormalise L2-error.
Returns
Error in the L2-norm.

Reimplemented in Nektar::PulseWaveSystem, and Nektar::MMFSWE.

Definition at line 751 of file EquationSystem.cpp.

755  {
756  NekDouble L2error = -1.0;
757 
758  if (m_NumQuadPointsError == 0)
759  {
760  if (m_fields[field]->GetPhysState() == false)
761  {
762  m_fields[field]->BwdTrans(m_fields[field]->GetCoeffs(),
763  m_fields[field]->UpdatePhys());
764  }
765 
766  if (exactsoln.size())
767  {
768  L2error = m_fields[field]->L2(
769  m_fields[field]->GetPhys(), exactsoln);
770  }
771  else if (m_session->DefinesFunction("ExactSolution"))
772  {
773  Array<OneD, NekDouble>
774  exactsoln(m_fields[field]->GetNpoints());
775 
776  GetFunction("ExactSolution")->Evaluate(
777  m_session->GetVariable(field), exactsoln, m_time);
778 
779  L2error = m_fields[field]->L2(
780  m_fields[field]->GetPhys(), exactsoln);
781  }
782  else
783  {
784  L2error = m_fields[field]->L2(m_fields[field]->GetPhys());
785  }
786 
787  if (Normalised == true)
788  {
789  Array<OneD, NekDouble> one(m_fields[field]->GetNpoints(),
790  1.0);
791 
792  NekDouble Vol = m_fields[field]->Integral(one);
793  L2error = sqrt(L2error*L2error/Vol);
794  }
795  }
796  else
797  {
798  Array<OneD,NekDouble> L2INF(2);
799  L2INF = ErrorExtraPoints(field);
800  L2error = L2INF[0];
801  }
802  return L2error;
803  }
SOLVER_UTILS_EXPORT Array< OneD, NekDouble > ErrorExtraPoints(unsigned int field)
Compute error (L2 and L_inf) over an larger set of quadrature points return [L2 Linf].
SOLVER_UTILS_EXPORT int GetNpoints()
double NekDouble
scalarT< T > sqrt(scalarT< T > in)
Definition: scalar.hpp:267

References ErrorExtraPoints(), GetFunction(), GetNpoints(), m_fields, m_NumQuadPointsError, m_session, m_time, and tinysimd::sqrt().

Referenced by L2Error().

◆ v_LinfError()

NekDouble Nektar::SolverUtils::EquationSystem::v_LinfError ( unsigned int  field,
const Array< OneD, NekDouble > &  exactsoln = NullNekDouble1DArray 
)
protectedvirtual

Virtual function for the L_inf error computation between fields and a given exact solution.

Compute the error in the L_inf-norm

Parameters
fieldThe field to compare.
exactsolnThe exact solution to compare with.
Returns
Error in the L_inft-norm.

Reimplemented in Nektar::PulseWaveSystem, and Nektar::MMFSWE.

Definition at line 811 of file EquationSystem.cpp.

814  {
815  NekDouble Linferror = -1.0;
816 
817  if (m_NumQuadPointsError == 0)
818  {
819  if (m_fields[field]->GetPhysState() == false)
820  {
821  m_fields[field]->BwdTrans(m_fields[field]->GetCoeffs(),
822  m_fields[field]->UpdatePhys());
823  }
824 
825  if (exactsoln.size())
826  {
827  Linferror = m_fields[field]->Linf(
828  m_fields[field]->GetPhys(), exactsoln);
829  }
830  else if (m_session->DefinesFunction("ExactSolution"))
831  {
832  Array<OneD, NekDouble>
833  exactsoln(m_fields[field]->GetNpoints());
834 
835  GetFunction("ExactSolution")->Evaluate(
836  m_session->GetVariable(field), exactsoln, m_time);
837 
838  Linferror = m_fields[field]->Linf(
839  m_fields[field]->GetPhys(), exactsoln);
840  }
841  else
842  {
843  Linferror = m_fields[field]->Linf(
844  m_fields[field]->GetPhys());
845  }
846  }
847  else
848  {
849  Array<OneD,NekDouble> L2INF(2);
850  L2INF = ErrorExtraPoints(field);
851  Linferror = L2INF[1];
852  }
853 
854  return Linferror;
855  }

References ErrorExtraPoints(), GetFunction(), GetNpoints(), m_fields, m_NumQuadPointsError, m_session, and m_time.

Referenced by LinfError().

◆ v_NegatedOp()

bool Nektar::SolverUtils::EquationSystem::v_NegatedOp ( void  )
virtual

Virtual function to identify if operator is negated in DoSolve.

Virtual function to define if operator in DoSolve is negated with regard to the strong form. This is currently only used in Arnoldi solves. Default is false.

Reimplemented in Nektar::CoupledLinearNS.

Definition at line 1052 of file EquationSystem.cpp.

1053  {
1054  return false;
1055  }

◆ v_Output()

void Nektar::SolverUtils::EquationSystem::v_Output ( void  )
protectedvirtual

Write the field data to file. The file is named according to the session name with the extension .fld appended.

Reimplemented in Nektar::PulseWaveSystem, Nektar::CoupledLinearNS, Nektar::Dummy, and Nektar::AcousticSystem.

Definition at line 1085 of file EquationSystem.cpp.

1086  {
1087  WriteFld(m_sessionName + ".fld");
1088  }

References m_sessionName, and WriteFld().

Referenced by Output(), Nektar::AcousticSystem::v_Output(), and Nektar::Dummy::v_Output().

◆ v_SetInitialConditions()

void Nektar::SolverUtils::EquationSystem::v_SetInitialConditions ( NekDouble  initialtime = 0.0,
bool  dumpInitialConditions = true,
const int  domain = 0 
)
protectedvirtual

Set the physical fields based on a restart file, or a function describing the initial condition given in the session.

Parameters
initialtimeTime at which to evaluate the function.
dumpInitialConditionsWrite the initial condition to file?

Reimplemented in Nektar::NonlinearPeregrine, Nektar::IsentropicVortex, Nektar::CompressibleFlowSystem, Nektar::MMFDiffusion, Nektar::Monodomain, Nektar::BidomainRoth, Nektar::Bidomain, Nektar::MMFSWE, Nektar::MMFMaxwell, and Nektar::MMFAdvection.

Definition at line 950 of file EquationSystem.cpp.

953  {
954  boost::ignore_unused(initialtime);
955 
956  if (m_session->GetComm()->GetRank() == 0)
957  {
958  cout << "Initial Conditions:" << endl;
959  }
960 
961  if (m_session->DefinesFunction("InitialConditions"))
962  {
963  GetFunction("InitialConditions")->Evaluate(
964  m_session->GetVariables(), m_fields, m_time, domain);
965  // Enforce C0 Continutiy of initial condiiton
968  {
969  for (int i = 0; i < m_fields.size(); ++i)
970  {
971  m_fields[i]->LocalToGlobal();
972  m_fields[i]->GlobalToLocal();
973  m_fields[i]->BwdTrans(m_fields[i]->GetCoeffs(),
974  m_fields[i]->UpdatePhys());
975  }
976  }
977 
978  if (m_session->GetComm()->GetRank() == 0)
979  {
980 
981  for (int i = 0; i < m_fields.size(); ++i)
982  {
983  std::string varName = m_session->GetVariable(i);
984  cout << " - Field " << varName << ": "
985  << GetFunction("InitialConditions")->Describe(varName, domain)
986  << endl;
987  }
988  }
989  }
990  else
991  {
992  int nq = m_fields[0]->GetNpoints();
993  for (int i = 0; i < m_fields.size(); i++)
994  {
995  Vmath::Zero(nq, m_fields[i]->UpdatePhys(), 1);
996  m_fields[i]->SetPhysState(true);
998  m_fields[i]->UpdateCoeffs(), 1);
999  if (m_session->GetComm()->GetRank() == 0)
1000  {
1001  cout << " - Field " << m_session->GetVariable(i)
1002  << ": 0 (default)" << endl;
1003  }
1004  }
1005 
1006  }
1007 
1008  if (dumpInitialConditions && m_checksteps && m_nchk == 0)
1009  {
1011  }
1012  ++m_nchk;
1013  }
SOLVER_UTILS_EXPORT void Checkpoint_Output(const int n)
Write checkpoint file of m_fields.

References Checkpoint_Output(), Nektar::MultiRegions::eGalerkin, Nektar::MultiRegions::eMixed_CG_Discontinuous, GetFunction(), GetNcoeffs(), m_checksteps, m_fields, m_nchk, m_projectionType, m_session, m_time, and Vmath::Zero().

Referenced by SetInitialConditions(), Nektar::Bidomain::v_SetInitialConditions(), Nektar::BidomainRoth::v_SetInitialConditions(), Nektar::Monodomain::v_SetInitialConditions(), Nektar::MMFDiffusion::v_SetInitialConditions(), Nektar::CompressibleFlowSystem::v_SetInitialConditions(), and Nektar::NonlinearPeregrine::v_SetInitialConditions().

◆ v_TransCoeffToPhys()

void Nektar::SolverUtils::EquationSystem::v_TransCoeffToPhys ( void  )
protectedvirtual

Virtual function for transformation to physical space.

Reimplemented in Nektar::VelocityCorrectionScheme, Nektar::IncNavierStokes, and Nektar::CoupledLinearNS.

Definition at line 1060 of file EquationSystem.cpp.

1061  {
1062 
1063  }

Referenced by TransCoeffToPhys().

◆ v_TransPhysToCoeff()

void Nektar::SolverUtils::EquationSystem::v_TransPhysToCoeff ( void  )
protectedvirtual

Virtual function for transformation to coefficient space.

Reimplemented in Nektar::VelocityCorrectionScheme, Nektar::IncNavierStokes, and Nektar::CoupledLinearNS.

Definition at line 1068 of file EquationSystem.cpp.

1069  {
1070 
1071  }

Referenced by TransPhysToCoeff().

◆ WriteFld() [1/2]

void Nektar::SolverUtils::EquationSystem::WriteFld ( const std::string &  outname)

Write field data to the given filename.

Writes the field data to a file with the given filename.

Parameters
outnameFilename to write to.

Definition at line 1157 of file EquationSystem.cpp.

1158  {
1159  std::vector<Array<OneD, NekDouble> > fieldcoeffs(
1160  m_fields.size());
1161  std::vector<std::string> variables(m_fields.size());
1162 
1163  for (int i = 0; i < m_fields.size(); ++i)
1164  {
1165  if (m_fields[i]->GetNcoeffs() == m_fields[0]->GetNcoeffs())
1166  {
1167  fieldcoeffs[i] = m_fields[i]->UpdateCoeffs();
1168  }
1169  else
1170  {
1171  fieldcoeffs[i] = Array<OneD,NekDouble>(m_fields[0]->
1172  GetNcoeffs());
1173  m_fields[0]->ExtractCoeffsToCoeffs(m_fields[i],
1174  m_fields[i]->GetCoeffs(),
1175  fieldcoeffs[i]);
1176  }
1177  variables[i] = m_boundaryConditions->GetVariable(i);
1178  }
1179 
1180  ExtraFldOutput(fieldcoeffs, variables);
1181 
1182  WriteFld(outname, m_fields[0], fieldcoeffs, variables);
1183  }
SOLVER_UTILS_EXPORT void ExtraFldOutput(std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)

References ExtraFldOutput(), GetNcoeffs(), m_boundaryConditions, and m_fields.

Referenced by Checkpoint_BaseFlow(), Nektar::MMFMaxwell::Checkpoint_EDFluxOutput(), Nektar::MMFMaxwell::Checkpoint_EnergyOutput(), Checkpoint_Output(), Nektar::MMFSWE::Checkpoint_Output_Cartesian(), Nektar::MMFMaxwell::Checkpoint_PlotOutput(), Nektar::MMFMaxwell::Checkpoint_TotalFieldOutput(), Nektar::MMFMaxwell::Checkpoint_TotPlotOutput(), Nektar::BidomainRoth::v_InitObject(), Nektar::Monodomain::v_InitObject(), v_Output(), Nektar::CoupledLinearNS::v_Output(), Nektar::SolverUtils::AdvectionSystem::v_PostIntegrate(), Nektar::MMFAdvection::v_SetInitialConditions(), Nektar::MMFMaxwell::v_SetInitialConditions(), Nektar::MMFSWE::v_SetInitialConditions(), and Nektar::MMFDiffusion::v_SetInitialConditions().

◆ WriteFld() [2/2]

void Nektar::SolverUtils::EquationSystem::WriteFld ( const std::string &  outname,
MultiRegions::ExpListSharedPtr field,
std::vector< Array< OneD, NekDouble > > &  fieldcoeffs,
std::vector< std::string > &  variables 
)

Write input fields to the given filename.

Writes the field data to a file with the given filename.

Parameters
outnameFilename to write to.
fieldExpList on which data is based.
fieldcoeffsAn array of array of expansion coefficients.
variablesAn array of variable names.

Definition at line 1194 of file EquationSystem.cpp.

1199  {
1200  std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef
1201  = field->GetFieldDefinitions();
1202  std::vector<std::vector<NekDouble> > FieldData(FieldDef.size());
1203 
1204  // Copy Data into FieldData and set variable
1205  for(int j = 0; j < fieldcoeffs.size(); ++j)
1206  {
1207  for(int i = 0; i < FieldDef.size(); ++i)
1208  {
1209  // Could do a search here to find correct variable
1210  FieldDef[i]->m_fields.push_back(variables[j]);
1211  field->AppendFieldData(FieldDef[i], FieldData[i],
1212  fieldcoeffs[j]);
1213  }
1214  }
1215 
1216  // Update time in field info if required
1217  if(m_fieldMetaDataMap.find("Time") != m_fieldMetaDataMap.end())
1218  {
1219  m_fieldMetaDataMap["Time"] =
1220  boost::lexical_cast<std::string>(m_time);
1221  }
1222 
1223  // Update step in field info if required
1224  if(m_fieldMetaDataMap.find("ChkFileNum") != m_fieldMetaDataMap.end())
1225  {
1226  m_fieldMetaDataMap["ChkFileNum"] =
1227  boost::lexical_cast<std::string>(m_nchk);
1228  }
1229 
1230  // If necessary, add mapping information to metadata
1231  // and output mapping coordinates
1232  Array<OneD, MultiRegions::ExpListSharedPtr> fields(1);
1233  fields[0] = field;
1237  mapping->Output( fieldMetaDataMap, outname);
1238 
1239 #ifdef NEKTAR_DISABLE_BACKUPS
1240  bool backup = false;
1241 #else
1242  bool backup = true;
1243 #endif
1244 
1245  m_fld->Write(outname, FieldDef, FieldData, fieldMetaDataMap, backup);
1246  }
static GLOBAL_MAPPING_EXPORT MappingSharedPtr Load(const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields)
Return a pointer to the mapping, creating it on first call.
Definition: Mapping.cpp:268
GLOBAL_MAPPING_EXPORT typedef std::shared_ptr< Mapping > MappingSharedPtr
A shared pointer to a Mapping object.
Definition: Mapping.h:50
std::map< std::string, std::string > FieldMetaDataMap
Definition: FieldIO.h:52

References Nektar::GlobalMapping::Mapping::Load(), m_fieldMetaDataMap, m_fld, m_nchk, m_session, m_time, and Nektar::GlobalMapping::MappingSharedPtr.

◆ ZeroPhysFields()

void Nektar::SolverUtils::EquationSystem::ZeroPhysFields ( void  )

Zero the physical fields.

Definition at line 1093 of file EquationSystem.cpp.

1094  {
1095  for (int i = 0; i < m_fields.size(); i++)
1096  {
1098  m_fields[i]->UpdatePhys(),1);
1099  }
1100  }

References GetNpoints(), m_fields, and Vmath::Zero().

Referenced by v_InitObject(), and Nektar::PulseWaveSystem::v_InitObject().

Member Data Documentation

◆ equationSystemTypeLookupIds

std::string Nektar::SolverUtils::EquationSystem::equationSystemTypeLookupIds
staticprotected
Initial value:
= {
"True", 0),
"False", 1)}
static std::string RegisterEnumValue(std::string pEnum, std::string pString, int pEnumValue)
Registers an enumeration value.

Definition at line 484 of file EquationSystem.h.

◆ m_boundaryConditions

SpatialDomains::BoundaryConditionsSharedPtr Nektar::SolverUtils::EquationSystem::m_boundaryConditions
protected

◆ m_checkIfSystemSingular

Array<OneD, bool> Nektar::SolverUtils::EquationSystem::m_checkIfSystemSingular
protected

Flag to indicate if the fields should be checked for singularity.

Definition at line 402 of file EquationSystem.h.

Referenced by v_InitObject().

◆ m_checksteps

int Nektar::SolverUtils::EquationSystem::m_checksteps
protected

◆ m_checktime

NekDouble Nektar::SolverUtils::EquationSystem::m_checktime
protected

◆ m_comm

LibUtilities::CommSharedPtr Nektar::SolverUtils::EquationSystem::m_comm
protected

◆ m_expdim

int Nektar::SolverUtils::EquationSystem::m_expdim
protected

◆ m_fieldMetaDataMap

LibUtilities::FieldMetaDataMap Nektar::SolverUtils::EquationSystem::m_fieldMetaDataMap
protected

◆ m_fields

Array<OneD, MultiRegions::ExpListSharedPtr> Nektar::SolverUtils::EquationSystem::m_fields
protected

Array holding all dependent variables.

Definition at line 343 of file EquationSystem.h.

Referenced by Nektar::SolverUtils::MMFSystem::AbsIntegral(), Nektar::UnsteadyAdvectionDiffusion::AddAdvectionPenaltyFlux(), Nektar::MMFSWE::AddCoriolis(), Nektar::LinearSWE::AddCoriolis(), Nektar::NonlinearPeregrine::AddCoriolis(), Nektar::NonlinearSWE::AddCoriolis(), Nektar::MMFSWE::AddDivForGradient(), Nektar::MMFSWE::AddElevationEffect(), Nektar::MMFMaxwell::AddGreenDerivCompensate(), Nektar::CFSImplicit::AddMatNSBlkDiagBnd(), Nektar::CFSImplicit::AddMatNSBlkDiagVol(), Nektar::MMFMaxwell::AddPML(), Nektar::MMFSWE::AddRotation(), Nektar::NonlinearPeregrine::AddVariableDepth(), Nektar::NonlinearSWE::AddVariableDepth(), Nektar::MMFAdvection::AdvectionBellPlane(), Nektar::MMFAdvection::AdvectionBellSphere(), Nektar::VCSMapping::ApplyIncNSMappingForcing(), Nektar::SolverUtils::MMFSystem::AverageMaxwellFlux1D(), Nektar::SolverUtils::MMFSystem::AvgAbsInt(), Nektar::SolverUtils::MMFSystem::AvgInt(), Nektar::LinearElasticSystem::BuildMatrixSystem(), Nektar::CFSImplicit::CalcRefValues(), Nektar::CFSImplicit::CalcTraceNumericalFlux(), Nektar::CFSImplicit::CalcVolJacStdMat(), Nektar::SolverUtils::MMFSystem::CartesianToMovingframes(), Nektar::SolverUtils::UnsteadySystem::CheckForRestartTime(), Nektar::SolverUtils::MMFSystem::CheckMovingFrames(), Nektar::MMFMaxwell::Checkpoint_EDFluxOutput(), Nektar::MMFMaxwell::Checkpoint_EnergyOutput(), Nektar::MMFSWE::Checkpoint_Output_Cartesian(), Nektar::MMFMaxwell::Checkpoint_PlotOutput(), Nektar::MMFMaxwell::Checkpoint_TotalFieldOutput(), Nektar::MMFMaxwell::Checkpoint_TotPlotOutput(), Nektar::SolverUtils::UnsteadySystem::CheckSteadyState(), Nektar::MMFSWE::Compute_demdt_cdot_ek(), Nektar::SolverUtils::MMFSystem::ComputeCurl(), Nektar::SolverUtils::MMFSystem::Computedemdxicdote(), Nektar::SolverUtils::MMFSystem::ComputeDivCurlMF(), Nektar::MMFSWE::ComputeEnergy(), Nektar::MMFMaxwell::ComputeEnergyDensity(), Nektar::MMFSWE::ComputeEnstrophy(), Nektar::MMFSWE::ComputeMass(), Nektar::MMFMaxwell::ComputeMaterialMicroWaveCloak(), Nektar::MMFMaxwell::ComputeMaterialOpticalCloak(), Nektar::MMFMaxwell::ComputeMaterialVector(), Nektar::SolverUtils::MMFSystem::ComputeMFtrace(), Nektar::MMFAdvection::ComputeNablaCdotVelocity(), Nektar::MMFSWE::ComputeNablaCdotVelocity(), Nektar::SolverUtils::MMFSystem::ComputencdotMF(), Nektar::MMFMaxwell::ComputeRadCloak(), Nektar::MMFMaxwell::ComputeSurfaceCurrent(), Nektar::MMFAdvection::ComputeveldotMF(), Nektar::MMFSWE::ComputeVorticity(), Nektar::SolverUtils::MMFSystem::ComputeZimYim(), Nektar::MMFSWE::ConservativeToPrimitive(), Nektar::CoupledLinearNS::Continuation(), Nektar::SolverUtils::MMFSystem::CopyBoundaryTrace(), Nektar::AcousticSystem::CopyBoundaryTrace(), Nektar::ShallowWaterSystem::CopyBoundaryTrace(), CopyFromPhysField(), CopyToPhysField(), Nektar::CoupledLinearNS::DefineForcingTerm(), Nektar::CompressibleFlowSystem::DoAdvection(), Nektar::CFSImplicit::DoAdvectionCoeff(), Nektar::UnsteadyAdvectionDiffusion::DoImplicitSolve(), Nektar::UnsteadyDiffusion::DoImplicitSolve(), Nektar::UnsteadyReactionDiffusion::DoImplicitSolve(), Nektar::UnsteadyViscousBurgers::DoImplicitSolve(), Nektar::Bidomain::DoImplicitSolve(), Nektar::BidomainRoth::DoImplicitSolve(), Nektar::Monodomain::DoImplicitSolve(), Nektar::MMFDiffusion::DoImplicitSolve(), Nektar::CFSImplicit::DoImplicitSolve(), Nektar::CFLtester::DoOdeProjection(), Nektar::UnsteadyAdvection::DoOdeProjection(), Nektar::UnsteadyAdvectionDiffusion::DoOdeProjection(), Nektar::UnsteadyDiffusion::DoOdeProjection(), Nektar::UnsteadyInviscidBurger::DoOdeProjection(), Nektar::UnsteadyReactionDiffusion::DoOdeProjection(), Nektar::Dummy::DoOdeProjection(), Nektar::LinearSWE::DoOdeProjection(), Nektar::NonlinearPeregrine::DoOdeProjection(), Nektar::NonlinearSWE::DoOdeProjection(), Nektar::AcousticSystem::DoOdeProjection(), Nektar::MMFAdvection::DoOdeProjection(), Nektar::CompressibleFlowSystem::DoOdeProjection(), Nektar::CFLtester::DoOdeRhs(), Nektar::UnsteadyAdvection::DoOdeRhs(), Nektar::UnsteadyAdvectionDiffusion::DoOdeRhs(), Nektar::UnsteadyDiffusion::DoOdeRhs(), Nektar::UnsteadyInviscidBurger::DoOdeRhs(), Nektar::UnsteadyReactionDiffusion::DoOdeRhs(), Nektar::UnsteadyViscousBurgers::DoOdeRhs(), Nektar::Bidomain::DoOdeRhs(), Nektar::BidomainRoth::DoOdeRhs(), Nektar::MMFDiffusion::DoOdeRhs(), Nektar::ImageWarpingSystem::DoOdeRhs(), Nektar::LinearSWE::DoOdeRhs(), Nektar::NonlinearPeregrine::DoOdeRhs(), Nektar::NonlinearSWE::DoOdeRhs(), Nektar::AcousticSystem::DoOdeRhs(), Nektar::MMFAdvection::DoOdeRhs(), Nektar::CompressibleFlowSystem::DoOdeRhs(), Nektar::MMFMaxwell::DoOdeRhs(), Nektar::PulseWavePropagation::DoOdeRhs(), Nektar::MMFSWE::DoOdeRhs(), Nektar::CFSImplicit::DoOdeRhsCoeff(), Nektar::NavierStokesCFE::Ducros(), ErrorExtraPoints(), Nektar::CoupledLinearNS::EvaluateAdvection(), Nektar::IncNavierStokes::EvaluateAdvectionTerms(), Nektar::MMFAdvection::EvaluateAdvectionVelocity(), Nektar::MMFMaxwell::EvaluateCoriolis(), Nektar::MMFSWE::EvaluateCoriolisForZonalFlow(), Nektar::CoupledLinearNS::EvaluateNewtonRHS(), Nektar::MMFSWE::EvaluateStandardCoriolis(), Nektar::MMFSWE::EvaluateWaterDepth(), FwdTransFields(), Nektar::MMFMaxwell::GaussianPulse(), Nektar::MMFMaxwell::GenerateSigmaPML(), Nektar::SolverUtils::AdvectionSystem::GetCFLEstimate(), GetCoeff_Offset(), Nektar::SolverUtils::AdvectionSystem::GetElmtCFLVals(), Nektar::CompressibleFlowSystem::GetElmtMinHP(), Nektar::CompressibleFlowSystem::GetElmtTimeStep(), Nektar::RinglebFlow::GetExactRinglebFlow(), GetExpSize(), Nektar::PulseWavePropagation::GetFluxVector(), Nektar::LinearSWE::GetFluxVector(), Nektar::NonlinearPeregrine::GetFluxVector(), Nektar::NonlinearSWE::GetFluxVector(), Nektar::UnsteadyAdvectionDiffusion::GetFluxVectorAdv(), Nektar::UnsteadyViscousBurgers::GetFluxVectorAdv(), Nektar::UnsteadyAdvection::GetFluxVectorDeAlias(), Nektar::CompressibleFlowSystem::GetFluxVectorDeAlias(), GetFunction(), Nektar::SolverUtils::MMFSystem::GetIncidentField(), Nektar::UnsteadyAdvectionDiffusion::GetMaxStdVelocity(), Nektar::SolverUtils::MMFSystem::GetMaxwellFlux1D(), Nektar::SolverUtils::MMFSystem::GetMaxwellFlux2D(), GetNcoeffs(), Nektar::UnsteadyAdvectionDiffusion::GetNormalVel(), Nektar::CFLtester::GetNormalVelocity(), Nektar::EigenValuesAdvection::GetNormalVelocity(), Nektar::MMFAdvection::GetNormalVelocity(), Nektar::UnsteadyAdvection::GetNormalVelocity(), Nektar::UnsteadyInviscidBurger::GetNormalVelocity(), Nektar::ImageWarpingSystem::GetNormalVelocity(), Nektar::UnsteadyViscousBurgers::GetNormalVelocity(), GetNpoints(), GetNumExpModesPerExp(), GetPhys_Offset(), Nektar::NavierStokesCFE::GetPhysicalAV(), Nektar::CompressibleFlowSystem::GetStabilityLimitVector(), Nektar::CFLtester::GetStdVelocity(), Nektar::UnsteadyAdvectionDiffusion::GetSubstepTimeStep(), Nektar::MMFSWE::GetSWEFluxVector(), GetTotPoints(), Nektar::CFSImplicit::GetTraceJac(), GetTraceNpoints(), ImportFld(), ImportFldToMultiDomains(), Nektar::CompressibleFlowSystem::InitAdvection(), Nektar::CFSImplicit::InitialiseNonlinSysSolver(), Nektar::SolverUtils::UnsteadySystem::InitializeSteadyState(), Nektar::NavierStokesCFE::InitObject_Explicit(), Nektar::MMFSWE::IsolatedMountainFlow(), Nektar::NonlinearPeregrine::LaitoneSolitaryWave(), Nektar::SolverUtils::MMFSystem::LaxFriedrichMaxwellFlux1D(), Nektar::VCSMapping::MappingAccelerationCorrection(), Nektar::VCSMapping::MappingAdvectionCorrection(), Nektar::VCSMapping::MappingPressureCorrection(), Nektar::VelocityCorrectionScheme::MeasureFlowrate(), Nektar::SolverUtils::MMFSystem::MMFInitObject(), Nektar::MMFDiffusion::Morphogenesis(), Nektar::CFSImplicit::MultiplyElmtInvMassPlusSource(), Nektar::CFSImplicit::NonlinSysEvaluatorCoeff(), Nektar::CFSImplicit::NumCalcRiemFluxJac(), Nektar::NonlinearPeregrine::NumericalFluxConsVariables(), Nektar::NonlinearPeregrine::NumericalFluxForcing(), Nektar::SolverUtils::MMFSystem::NumericalMaxwellFluxTE(), Nektar::SolverUtils::MMFSystem::NumericalMaxwellFluxTM(), Nektar::MMFSWE::NumericalSWEFlux(), Nektar::MMFDiffusion::PlanePhiWave(), Nektar::CFSImplicit::PreconCoeff(), Nektar::MMFSWE::PrimitiveToConservative(), Nektar::MMFMaxwell::Printout_SurfaceCurrent(), Nektar::MMFSWE::RossbyWave(), SessionSummary(), Nektar::LinearSWE::SetBoundaryConditions(), Nektar::NonlinearPeregrine::SetBoundaryConditions(), Nektar::NonlinearSWE::SetBoundaryConditions(), Nektar::MMFSWE::SetBoundaryConditions(), Nektar::AcousticSystem::SetBoundaryConditions(), Nektar::CompressibleFlowSystem::SetBoundaryConditions(), SetBoundaryConditions(), Nektar::IncNavierStokes::SetBoundaryConditions(), Nektar::NonlinearPeregrine::SetBoundaryConditionsContVariables(), Nektar::NonlinearPeregrine::SetBoundaryConditionsForcing(), Nektar::IncNavierStokes::SetRadiationBoundaryForcing(), Nektar::SmoothedProfileMethod::SetUpCorrectionPressure(), Nektar::CoupledLinearNS::SetUpCoupledMatrix(), Nektar::SmoothedProfileMethod::SetUpExpansions(), Nektar::VelocityCorrectionScheme::SetUpExtrapolation(), Nektar::VelocityCorrectionScheme::SetupFlowrate(), Nektar::SolverUtils::MMFSystem::SetUpMovingFrames(), Nektar::VelocityCorrectionScheme::SetUpSVV(), Nektar::IncNavierStokes::SetUpWomersley(), Nektar::IncNavierStokes::SetWomersleyBoundary(), Nektar::IncNavierStokes::SetZeroNormalVelocity(), Nektar::CoupledLinearNS::Solve(), Nektar::CoupledLinearNS::SolveLinearNS(), Nektar::CoupledLinearNS::SolveSteadyNavierStokes(), Nektar::CoupledLinearNS::SolveUnsteadyStokesSystem(), Nektar::VelocityCorrectionScheme::SolveUnsteadyStokesSystem(), Nektar::NavierStokesCFE::SpecialBndTreat(), Nektar::MMFSWE::SteadyZonalFlow(), Nektar::UnsteadyAdvectionDiffusion::SubStepAdvance(), Nektar::UnsteadyAdvectionDiffusion::SubStepAdvection(), Nektar::SolverUtils::UnsteadySystem::SVVVarDiffCoeff(), Nektar::VelocityCorrectionScheme::SVVVarDiffCoeff(), Nektar::MMFAdvection::Test2Dproblem(), Nektar::MMFAdvection::Test3Dproblem(), Nektar::MMFDiffusion::TestCubeProblem(), Nektar::MMFMaxwell::TestMaxwell1D(), Nektar::MMFMaxwell::TestMaxwell2DPEC(), Nektar::MMFMaxwell::TestMaxwell2DPMC(), Nektar::MMFMaxwell::TestMaxwellSphere(), Nektar::MMFDiffusion::TestPlaneProblem(), Nektar::MMFSWE::TestSWE2Dproblem(), Nektar::MMFSWE::TestVorticityComputation(), Nektar::MMFSWE::UnstableJetFlow(), Nektar::MMFSWE::UnsteadyZonalFlow(), Nektar::AcousticSystem::UpdateBasefieldFwdBwd(), UpdateFields(), Nektar::SmoothedProfileMethod::UpdateForcing(), Nektar::SolverUtils::MMFSystem::UpwindMaxwellFlux1D(), Nektar::LEE::v_AddLinTerm(), Nektar::SolverUtils::UnsteadySystem::v_AppendOutput1D(), Nektar::NavierStokesImplicitCFE::v_CalcPhysDeriv(), Nektar::LinearSWE::v_ConservativeToPrimitive(), Nektar::NonlinearPeregrine::v_ConservativeToPrimitive(), Nektar::NonlinearSWE::v_ConservativeToPrimitive(), Nektar::NavierStokesCFE::v_DoDiffusion(), Nektar::NavierStokesImplicitCFE::v_DoDiffusionCoeff(), Nektar::SteadyAdvectionDiffusion::v_DoInitialise(), Nektar::PulseWaveSystem::v_DoInitialise(), Nektar::MMFSWE::v_DoInitialise(), Nektar::CoupledLinearNS::v_DoInitialise(), Nektar::VCSMapping::v_DoInitialise(), Nektar::VelocityCorrectionScheme::v_DoInitialise(), Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::EigenValuesAdvection::v_DoSolve(), Nektar::Laplace::v_DoSolve(), Nektar::MMFAdvection::v_DoSolve(), Nektar::Projection::v_DoSolve(), Nektar::SteadyAdvectionDiffusion::v_DoSolve(), Nektar::IterativeElasticSystem::v_DoSolve(), Nektar::LinearElasticSystem::v_DoSolve(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::PulseWaveSystem::v_DoSolve(), Nektar::MMFSWE::v_DoSolve(), Nektar::VCSMapping::v_EvaluateAdvection_SetPressureBCs(), Nektar::VelocityCorrectionScheme::v_EvaluateAdvection_SetPressureBCs(), v_EvaluateExactSolution(), Nektar::MMFMaxwell::v_EvaluateExactSolution(), Nektar::IsentropicVortex::v_EvaluateExactSolution(), Nektar::CompressibleFlowSystem::v_ExtraFldOutput(), Nektar::LinearElasticSystem::v_ExtraFldOutput(), Nektar::AcousticSystem::v_ExtraFldOutput(), Nektar::NavierStokesCFE::v_ExtraFldOutput(), Nektar::Poisson::v_GenerateSummary(), Nektar::Projection::v_GenerateSummary(), Nektar::SolverUtils::MMFSystem::v_GenerateSummary(), Nektar::NavierStokesImplicitCFE::v_GetFluxDerivJacDirctn(), Nektar::AcousticSystem::v_GetMaxStdVelocity(), Nektar::CompressibleFlowSystem::v_GetMaxStdVelocity(), Nektar::IncNavierStokes::v_GetMaxStdVelocity(), Nektar::CompressibleFlowSystem::v_GetTimeStep(), Nektar::CFLtester::v_GetTimeStep(), Nektar::NavierStokesCFEAxisym::v_GetViscousFluxVector(), Nektar::NavierStokesCFE::v_GetViscousFluxVectorDeAlias(), v_InitObject(), Nektar::AcousticSystem::v_InitObject(), Nektar::APE::v_InitObject(), Nektar::LEE::v_InitObject(), Nektar::CFLtester::v_InitObject(), Nektar::EigenValuesAdvection::v_InitObject(), Nektar::MMFAdvection::v_InitObject(), Nektar::Poisson::v_InitObject(), Nektar::Projection::v_InitObject(), Nektar::UnsteadyAdvection::v_InitObject(), Nektar::UnsteadyAdvectionDiffusion::v_InitObject(), Nektar::UnsteadyDiffusion::v_InitObject(), Nektar::UnsteadyInviscidBurger::v_InitObject(), Nektar::UnsteadyReactionDiffusion::v_InitObject(), Nektar::UnsteadyViscousBurgers::v_InitObject(), Nektar::Bidomain::v_InitObject(), Nektar::BidomainRoth::v_InitObject(), Nektar::Monodomain::v_InitObject(), Nektar::CompressibleFlowSystem::v_InitObject(), Nektar::NavierStokesCFEAxisym::v_InitObject(), Nektar::MMFDiffusion::v_InitObject(), Nektar::Dummy::v_InitObject(), Nektar::ImageWarpingSystem::v_InitObject(), Nektar::CoupledLinearNS::v_InitObject(), Nektar::IncNavierStokes::v_InitObject(), Nektar::VCSMapping::v_InitObject(), Nektar::VelocityCorrectionScheme::v_InitObject(), Nektar::IterativeElasticSystem::v_InitObject(), Nektar::LinearElasticSystem::v_InitObject(), Nektar::MMFMaxwell::v_InitObject(), Nektar::PulseWavePropagation::v_InitObject(), Nektar::PulseWaveSystem::v_InitObject(), Nektar::LinearSWE::v_InitObject(), Nektar::MMFSWE::v_InitObject(), Nektar::NonlinearPeregrine::v_InitObject(), Nektar::NonlinearSWE::v_InitObject(), Nektar::ShallowWaterSystem::v_InitObject(), Nektar::MMFSWE::v_L2Error(), v_L2Error(), Nektar::MMFSWE::v_LinfError(), v_LinfError(), Nektar::CoupledLinearNS::v_Output(), Nektar::Dummy::v_PostIntegrate(), Nektar::AcousticSystem::v_PreIntegrate(), Nektar::Dummy::v_PreIntegrate(), Nektar::LinearSWE::v_PrimitiveToConservative(), Nektar::NonlinearPeregrine::v_PrimitiveToConservative(), Nektar::NonlinearSWE::v_PrimitiveToConservative(), Nektar::APE::v_RiemannInvariantBC(), Nektar::LEE::v_RiemannInvariantBC(), Nektar::MMFAdvection::v_SetInitialConditions(), Nektar::MMFMaxwell::v_SetInitialConditions(), Nektar::MMFSWE::v_SetInitialConditions(), Nektar::MMFDiffusion::v_SetInitialConditions(), v_SetInitialConditions(), Nektar::CompressibleFlowSystem::v_SetInitialConditions(), Nektar::IsentropicVortex::v_SetInitialConditions(), Nektar::VCSMapping::v_SetUpPressureForcing(), Nektar::VelocityCorrectionScheme::v_SetUpPressureForcing(), Nektar::VCSWeakPressure::v_SetUpPressureForcing(), Nektar::VCSMapping::v_SetUpViscousForcing(), Nektar::VelocityCorrectionScheme::v_SetUpViscousForcing(), Nektar::VCSMapping::v_SolvePressure(), Nektar::VCSMapping::v_SolveViscous(), Nektar::VelocityCorrectionScheme::v_SolveViscous(), Nektar::SolverUtils::UnsteadySystem::v_SteadyStateResidual(), Nektar::CompressibleFlowSystem::v_SteadyStateResidual(), Nektar::CoupledLinearNS::v_TransCoeffToPhys(), Nektar::VelocityCorrectionScheme::v_TransCoeffToPhys(), Nektar::CoupledLinearNS::v_TransPhysToCoeff(), Nektar::VelocityCorrectionScheme::v_TransPhysToCoeff(), Nektar::AcousticSystem::v_WallBC(), Nektar::AcousticSystem::v_WhiteNoiseBC(), Nektar::LinearSWE::WallBoundary(), Nektar::NonlinearPeregrine::WallBoundary(), Nektar::NonlinearSWE::WallBoundary(), Nektar::LinearSWE::WallBoundary2D(), Nektar::NonlinearPeregrine::WallBoundary2D(), Nektar::NonlinearSWE::WallBoundary2D(), Nektar::MMFSWE::WallBoundary2D(), Nektar::NonlinearPeregrine::WallBoundaryContVariables(), Nektar::NonlinearPeregrine::WallBoundaryForcing(), Nektar::NonlinearPeregrine::WCESolve(), Nektar::MMFAdvection::WeakDGDirectionalAdvection(), Nektar::MMFMaxwell::WeakDGMaxwellDirDeriv(), Nektar::MMFSWE::WeakDGSWEDirDeriv(), WriteFld(), Nektar::IterativeElasticSystem::WriteGeometry(), and ZeroPhysFields().

◆ m_fintime

NekDouble Nektar::SolverUtils::EquationSystem::m_fintime
protected

◆ m_fld

LibUtilities::FieldIOSharedPtr Nektar::SolverUtils::EquationSystem::m_fld
protected

Field input/output.

Definition at line 341 of file EquationSystem.h.

Referenced by v_InitObject(), and WriteFld().

◆ m_graph

SpatialDomains::MeshGraphSharedPtr Nektar::SolverUtils::EquationSystem::m_graph
protected

◆ m_halfMode

bool Nektar::SolverUtils::EquationSystem::m_halfMode
protected

Flag to determine if half homogeneous mode is used.

Definition at line 382 of file EquationSystem.h.

Referenced by SessionSummary(), and v_InitObject().

◆ m_HomoDirec

int Nektar::SolverUtils::EquationSystem::m_HomoDirec
protected

number of homogenous directions

Definition at line 428 of file EquationSystem.h.

Referenced by v_InitObject().

◆ m_homogen_dealiasing

bool Nektar::SolverUtils::EquationSystem::m_homogen_dealiasing
protected

Flag to determine if dealiasing is used for homogeneous simulations.

Definition at line 391 of file EquationSystem.h.

Referenced by Nektar::VelocityCorrectionScheme::v_GenerateSummary(), Nektar::VCSWeakPressure::v_GenerateSummary(), v_InitObject(), and Nektar::CoupledLinearNS::v_InitObject().

◆ m_HomogeneousType

enum HomogeneousType Nektar::SolverUtils::EquationSystem::m_HomogeneousType
protected

◆ m_initialStep

int Nektar::SolverUtils::EquationSystem::m_initialStep
protected

◆ m_lambda

NekDouble Nektar::SolverUtils::EquationSystem::m_lambda
protected

Lambda constant in real system if one required.

Definition at line 362 of file EquationSystem.h.

Referenced by SetLambda(), and Nektar::CoupledLinearNS::v_DoInitialise().

◆ m_lastCheckTime

NekDouble Nektar::SolverUtils::EquationSystem::m_lastCheckTime
protected

◆ m_LhomX

NekDouble Nektar::SolverUtils::EquationSystem::m_LhomX
protected

physical length in X direction (if homogeneous)

Definition at line 420 of file EquationSystem.h.

◆ m_LhomY

NekDouble Nektar::SolverUtils::EquationSystem::m_LhomY
protected

physical length in Y direction (if homogeneous)

Definition at line 421 of file EquationSystem.h.

Referenced by SessionSummary(), and v_InitObject().

◆ m_LhomZ

NekDouble Nektar::SolverUtils::EquationSystem::m_LhomZ
protected

physical length in Z direction (if homogeneous)

Definition at line 422 of file EquationSystem.h.

Referenced by SessionSummary(), Nektar::CoupledLinearNS::SetUpCoupledMatrix(), v_InitObject(), and Nektar::CoupledLinearNS::v_InitObject().

◆ m_multipleModes

bool Nektar::SolverUtils::EquationSystem::m_multipleModes
protected

Flag to determine if use multiple homogenenous modes are used.

Definition at line 384 of file EquationSystem.h.

Referenced by SessionSummary(), and v_InitObject().

◆ m_nchk

int Nektar::SolverUtils::EquationSystem::m_nchk
protected

◆ m_npointsX

int Nektar::SolverUtils::EquationSystem::m_npointsX
protected

number of points in X direction (if homogeneous)

Definition at line 424 of file EquationSystem.h.

◆ m_npointsY

int Nektar::SolverUtils::EquationSystem::m_npointsY
protected

number of points in Y direction (if homogeneous)

Definition at line 425 of file EquationSystem.h.

Referenced by SessionSummary(), and v_InitObject().

◆ m_npointsZ

int Nektar::SolverUtils::EquationSystem::m_npointsZ
protected

◆ m_NumQuadPointsError

int Nektar::SolverUtils::EquationSystem::m_NumQuadPointsError
protected

Number of Quadrature points used to work out the error.

Definition at line 407 of file EquationSystem.h.

Referenced by ErrorExtraPoints(), v_InitObject(), Nektar::MMFSWE::v_L2Error(), v_L2Error(), Nektar::PulseWaveSystem::v_L2Error(), v_LinfError(), and Nektar::PulseWaveSystem::v_LinfError().

◆ m_projectionType

enum MultiRegions::ProjectionType Nektar::SolverUtils::EquationSystem::m_projectionType
protected

Type of projection; e.g continuous or discontinuous.

Definition at line 396 of file EquationSystem.h.

Referenced by Nektar::LinearSWE::AddCoriolis(), Nektar::NonlinearPeregrine::AddCoriolis(), Nektar::NonlinearSWE::AddCoriolis(), Nektar::NonlinearPeregrine::AddVariableDepth(), Nektar::NonlinearSWE::AddVariableDepth(), Nektar::UnsteadyAdvectionDiffusion::DoImplicitSolve(), Nektar::CFLtester::DoOdeProjection(), Nektar::UnsteadyAdvection::DoOdeProjection(), Nektar::UnsteadyAdvectionDiffusion::DoOdeProjection(), Nektar::UnsteadyDiffusion::DoOdeProjection(), Nektar::UnsteadyInviscidBurger::DoOdeProjection(), Nektar::UnsteadyViscousBurgers::DoOdeProjection(), Nektar::ImageWarpingSystem::DoOdeProjection(), Nektar::LinearSWE::DoOdeProjection(), Nektar::NonlinearPeregrine::DoOdeProjection(), Nektar::NonlinearSWE::DoOdeProjection(), Nektar::MMFAdvection::DoOdeProjection(), Nektar::CompressibleFlowSystem::DoOdeProjection(), Nektar::MMFSWE::DoOdeProjection(), Nektar::UnsteadyViscousBurgers::DoOdeRhs(), Nektar::ImageWarpingSystem::DoOdeRhs(), Nektar::LinearSWE::DoOdeRhs(), Nektar::NonlinearPeregrine::DoOdeRhs(), Nektar::NonlinearSWE::DoOdeRhs(), Nektar::MMFAdvection::DoOdeRhs(), Nektar::CompressibleFlowSystem::GetStabilityLimit(), Nektar::CompressibleFlowSystem::InitAdvection(), SessionSummary(), Nektar::EigenValuesAdvection::v_DoSolve(), v_InitObject(), Nektar::AcousticSystem::v_InitObject(), Nektar::CFLtester::v_InitObject(), Nektar::EigenValuesAdvection::v_InitObject(), Nektar::UnsteadyAdvection::v_InitObject(), Nektar::UnsteadyAdvectionDiffusion::v_InitObject(), Nektar::UnsteadyDiffusion::v_InitObject(), Nektar::UnsteadyInviscidBurger::v_InitObject(), Nektar::UnsteadyReactionDiffusion::v_InitObject(), Nektar::UnsteadyViscousBurgers::v_InitObject(), Nektar::SmoothedProfileMethod::v_InitObject(), Nektar::PulseWaveSystem::v_InitObject(), Nektar::LinearSWE::v_InitObject(), Nektar::NonlinearPeregrine::v_InitObject(), Nektar::NonlinearSWE::v_InitObject(), Nektar::ShallowWaterSystem::v_InitObject(), and v_SetInitialConditions().

◆ m_root

bool Nektar::SolverUtils::EquationSystem::m_root
protected

Definition at line 335 of file EquationSystem.h.

Referenced by Nektar::CFSImplicit::CalcRefValues(), and v_InitObject().

◆ m_session

LibUtilities::SessionReaderSharedPtr Nektar::SolverUtils::EquationSystem::m_session
protected

The session reader.

Definition at line 337 of file EquationSystem.h.

Referenced by Nektar::LinearElasticSystem::BuildMatrixSystem(), Nektar::SolverUtils::UnsteadySystem::CheckForRestartTime(), Nektar::SolverUtils::UnsteadySystem::CheckSteadyState(), Nektar::SolverUtils::MMFSystem::CopyBoundaryTrace(), Nektar::CoupledLinearNS::DefineForcingTerm(), Nektar::Bidomain::DoImplicitSolve(), Nektar::Bidomain::DoOdeRhs(), Nektar::BidomainRoth::DoOdeRhs(), Nektar::ImageWarpingSystem::DoOdeRhs(), EquationSystem(), ErrorExtraPoints(), Nektar::PulseWavePropagation::GetFluxVector(), GetFunction(), Nektar::SmoothedProfileMethod::GetFunctionHdl(), GetNvariables(), GetSession(), Nektar::UnsteadyAdvectionDiffusion::GetSubstepTimeStep(), GetVariable(), Nektar::Helmholtz::Helmholtz(), ImportFld(), ImportFldToMultiDomains(), Nektar::CompressibleFlowSystem::InitAdvection(), Nektar::CFSImplicit::InitialiseNonlinSysSolver(), Nektar::CompressibleFlowSystem::InitialiseParameters(), Nektar::SolverUtils::UnsteadySystem::InitializeSteadyState(), Nektar::NavierStokesCFE::InitObject_Explicit(), Nektar::VelocityCorrectionScheme::MeasureFlowrate(), Nektar::SolverUtils::MMFSystem::MMFInitObject(), PrintSummary(), Nektar::SmoothedProfileMethod::ReadPhi(), SessionSummary(), Nektar::LinearSWE::SetBoundaryConditions(), Nektar::NonlinearSWE::SetBoundaryConditions(), Nektar::AcousticSystem::SetBoundaryConditions(), SetBoundaryConditions(), Nektar::IncNavierStokes::SetBoundaryConditions(), Nektar::PulseWavePropagation::SetPulseWaveBoundaryConditions(), Nektar::CoupledLinearNS::SetUpCoupledMatrix(), Nektar::VelocityCorrectionScheme::SetUpExtrapolation(), Nektar::VelocityCorrectionScheme::SetupFlowrate(), Nektar::SolverUtils::MMFSystem::SetUpMovingFrames(), Nektar::VelocityCorrectionScheme::SetUpSVV(), Nektar::SmoothedProfileMethod::SolveCorrectedVelocity(), Nektar::UnsteadyAdvectionDiffusion::SubStepAdvance(), Nektar::SteadyAdvectionDiffusion::v_DoInitialise(), Nektar::PulseWaveSystem::v_DoInitialise(), Nektar::CoupledLinearNS::v_DoInitialise(), Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::MMFAdvection::v_DoSolve(), Nektar::IterativeElasticSystem::v_DoSolve(), Nektar::LinearElasticSystem::v_DoSolve(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::PulseWaveSystem::v_DoSolve(), Nektar::MMFSWE::v_DoSolve(), v_EvaluateExactSolution(), Nektar::CompressibleFlowSystem::v_ExtraFldOutput(), Nektar::AcousticSystem::v_ExtraFldOutput(), Nektar::NavierStokesCFE::v_ExtraFldOutput(), Nektar::Poisson::v_GenerateSummary(), Nektar::Projection::v_GenerateSummary(), Nektar::LinearSWE::v_GenerateSummary(), Nektar::SolverUtils::UnsteadySystem::v_GenerateSummary(), Nektar::Monodomain::v_GenerateSummary(), Nektar::VelocityCorrectionScheme::v_GetForceDimension(), Nektar::CoupledLinearNS::v_GetForceDimension(), v_GetSystemSingularChecks(), Nektar::Helmholtz::v_GetSystemSingularChecks(), Nektar::Laplace::v_GetSystemSingularChecks(), Nektar::Poisson::v_GetSystemSingularChecks(), Nektar::VelocityCorrectionScheme::v_GetSystemSingularChecks(), Nektar::SolverUtils::AdvectionSystem::v_InitObject(), v_InitObject(), Nektar::SolverUtils::UnsteadySystem::v_InitObject(), Nektar::AcousticSystem::v_InitObject(), Nektar::APE::v_InitObject(), Nektar::LEE::v_InitObject(), Nektar::CFLtester::v_InitObject(), Nektar::EigenValuesAdvection::v_InitObject(), Nektar::MMFAdvection::v_InitObject(), Nektar::Poisson::v_InitObject(), Nektar::Projection::v_InitObject(), Nektar::SteadyAdvectionDiffusionReaction::v_InitObject(), Nektar::UnsteadyAdvection::v_InitObject(), Nektar::UnsteadyAdvectionDiffusion::v_InitObject(), Nektar::UnsteadyDiffusion::v_InitObject(), Nektar::UnsteadyInviscidBurger::v_InitObject(), Nektar::UnsteadyReactionDiffusion::v_InitObject(), Nektar::UnsteadyViscousBurgers::v_InitObject(), Nektar::Bidomain::v_InitObject(), Nektar::BidomainRoth::v_InitObject(), Nektar::Monodomain::v_InitObject(), Nektar::CompressibleFlowSystem::v_InitObject(), Nektar::CFSImplicit::v_InitObject(), Nektar::MMFDiffusion::v_InitObject(), Nektar::Dummy::v_InitObject(), Nektar::ImageWarpingSystem::v_InitObject(), Nektar::CoupledLinearNS::v_InitObject(), Nektar::IncNavierStokes::v_InitObject(), Nektar::SmoothedProfileMethod::v_InitObject(), Nektar::VCSMapping::v_InitObject(), Nektar::VelocityCorrectionScheme::v_InitObject(), Nektar::IterativeElasticSystem::v_InitObject(), Nektar::LinearElasticSystem::v_InitObject(), Nektar::MMFMaxwell::v_InitObject(), Nektar::PulseWavePropagation::v_InitObject(), Nektar::PulseWaveSystem::v_InitObject(), Nektar::PulseWaveSystemOutput::v_InitObject(), Nektar::LinearSWE::v_InitObject(), Nektar::MMFSWE::v_InitObject(), Nektar::NonlinearPeregrine::v_InitObject(), Nektar::NonlinearSWE::v_InitObject(), Nektar::ShallowWaterSystem::v_InitObject(), v_L2Error(), Nektar::PulseWaveSystem::v_L2Error(), v_LinfError(), Nektar::PulseWaveSystem::v_LinfError(), Nektar::Dummy::v_Output(), Nektar::Dummy::v_PostIntegrate(), Nektar::AcousticSystem::v_PreIntegrate(), Nektar::Dummy::v_PreIntegrate(), v_SetInitialConditions(), Nektar::CompressibleFlowSystem::v_SetInitialConditions(), Nektar::VCSMapping::v_SolvePressure(), Nektar::VCSMapping::v_SolveViscous(), WriteFld(), Nektar::IterativeElasticSystem::WriteGeometry(), and Nektar::PulseWaveSystem::WriteVessels().

◆ m_sessionFunctions

std::map<std::string, SolverUtils::SessionFunctionSharedPtr> Nektar::SolverUtils::EquationSystem::m_sessionFunctions
protected

Map of known SessionFunctions.

Definition at line 339 of file EquationSystem.h.

Referenced by GetFunction().

◆ m_sessionName

std::string Nektar::SolverUtils::EquationSystem::m_sessionName
protected

◆ m_singleMode

bool Nektar::SolverUtils::EquationSystem::m_singleMode
protected

◆ m_spacedim

int Nektar::SolverUtils::EquationSystem::m_spacedim
protected

Spatial dimension (>= expansion dim).

Definition at line 376 of file EquationSystem.h.

Referenced by Nektar::CFSImplicit::AddMatNSBlkDiagBnd(), Nektar::CFSImplicit::AddMatNSBlkDiagVol(), Nektar::NonlinearPeregrine::AddVariableDepth(), Nektar::NonlinearSWE::AddVariableDepth(), Nektar::CFSImplicit::CalcVolJacStdMat(), Nektar::SolverUtils::MMFSystem::CheckMovingFrames(), Nektar::MMFMaxwell::Checkpoint_EDFluxOutput(), Nektar::MMFMaxwell::Checkpoint_EnergyOutput(), Nektar::MMFSWE::Checkpoint_Output_Cartesian(), Nektar::MMFMaxwell::Checkpoint_PlotOutput(), Nektar::MMFMaxwell::Checkpoint_TotPlotOutput(), Nektar::MMFSWE::Compute_demdt_cdot_ek(), Nektar::SolverUtils::MMFSystem::ComputeCurl(), Nektar::SolverUtils::MMFSystem::Computedemdxicdote(), Nektar::SolverUtils::MMFSystem::ComputeDivCurlMF(), Nektar::MMFSWE::ComputeEnstrophy(), Nektar::SolverUtils::MMFSystem::ComputeMFtrace(), Nektar::MMFAdvection::ComputeNablaCdotVelocity(), Nektar::MMFSWE::ComputeNablaCdotVelocity(), Nektar::SolverUtils::MMFSystem::ComputencdotMF(), Nektar::SolverUtils::MMFSystem::ComputeNtimesF12(), Nektar::SolverUtils::MMFSystem::ComputeNtimesFz(), Nektar::SolverUtils::MMFSystem::ComputeNtimesMF(), Nektar::SolverUtils::MMFSystem::ComputeNtimestimesdFz(), Nektar::MMFAdvection::ComputeveldotMF(), Nektar::SolverUtils::MMFSystem::DeriveCrossProductMF(), Nektar::CompressibleFlowSystem::DoAdvection(), Nektar::CFSImplicit::DoAdvectionCoeff(), Nektar::Bidomain::DoImplicitSolve(), Nektar::LinearSWE::DoOdeRhs(), Nektar::NonlinearSWE::DoOdeRhs(), Nektar::AcousticSystem::DoOdeRhs(), Nektar::MMFAdvection::DoOdeRhs(), Nektar::PulseWavePropagation::DoOdeRhs(), Nektar::MMFAdvection::EvaluateAdvectionVelocity(), Nektar::IsentropicVortex::EvaluateIsentropicVortex(), Nektar::LinearSWE::GetFluxVector(), Nektar::NonlinearPeregrine::GetFluxVector(), Nektar::NonlinearSWE::GetFluxVector(), Nektar::CompressibleFlowSystem::GetFluxVector(), Nektar::UnsteadyAdvection::GetFluxVectorDeAlias(), Nektar::CompressibleFlowSystem::GetFluxVectorDeAlias(), Nektar::CFSImplicit::GetFluxVectorJacPoint(), Nektar::UnsteadyInviscidBurger::GetNormalVelocity(), Nektar::CFSImplicit::GetTraceJac(), Nektar::IncNavierStokes::GetVelocity(), Nektar::LinearSWE::GetVelocityVector(), Nektar::NonlinearPeregrine::GetVelocityVector(), Nektar::NonlinearSWE::GetVelocityVector(), Nektar::SolverUtils::MMFSystem::GramSchumitz(), Nektar::CFSImplicit::InitialiseNonlinSysSolver(), Nektar::MMFSWE::IsolatedMountainFlow(), Nektar::VelocityCorrectionScheme::MeasureFlowrate(), Nektar::SolverUtils::MMFSystem::MMFInitObject(), Nektar::CFSImplicit::NumCalcRiemFluxJac(), Nektar::SolverUtils::MMFSystem::NumericalMaxwellFluxTE(), Nektar::SolverUtils::MMFSystem::NumericalMaxwellFluxTM(), Nektar::MMFSWE::RossbyWave(), SessionSummary(), Nektar::VelocityCorrectionScheme::SetupFlowrate(), Nektar::SolverUtils::MMFSystem::SetUpMovingFrames(), Nektar::IncNavierStokes::SetZeroNormalVelocity(), Nektar::VelocityCorrectionScheme::SolveUnsteadyStokesSystem(), Nektar::MMFSWE::SteadyZonalFlow(), Nektar::MMFMaxwell::TestMaxwellSphere(), Nektar::MMFSWE::TestSWE2Dproblem(), Nektar::MMFSWE::TestVorticityComputation(), Nektar::MMFSWE::UnstableJetFlow(), Nektar::MMFSWE::UnsteadyZonalFlow(), Nektar::LEE::v_AddLinTerm(), Nektar::NavierStokesImplicitCFE::v_CalcPhysDeriv(), Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::IsentropicVortex::v_EvaluateExactSolution(), Nektar::CompressibleFlowSystem::v_ExtraFldOutput(), Nektar::NavierStokesCFE::v_ExtraFldOutput(), Nektar::NavierStokesImplicitCFE::v_GetDiffusionFluxJacPoint(), Nektar::APE::v_GetFluxVector(), Nektar::LEE::v_GetFluxVector(), Nektar::AcousticSystem::v_GetMaxStdVelocity(), Nektar::CompressibleFlowSystem::v_GetMaxStdVelocity(), Nektar::NavierStokesCFE::v_GetViscousFluxVector(), Nektar::NavierStokesCFEAxisym::v_GetViscousFluxVector(), Nektar::NavierStokesCFE::v_GetViscousFluxVectorDeAlias(), v_InitObject(), Nektar::AcousticSystem::v_InitObject(), Nektar::CFLtester::v_InitObject(), Nektar::EigenValuesAdvection::v_InitObject(), Nektar::MMFAdvection::v_InitObject(), Nektar::SteadyAdvectionDiffusion::v_InitObject(), Nektar::UnsteadyAdvection::v_InitObject(), Nektar::UnsteadyAdvectionDiffusion::v_InitObject(), Nektar::Bidomain::v_InitObject(), Nektar::BidomainRoth::v_InitObject(), Nektar::Monodomain::v_InitObject(), Nektar::CompressibleFlowSystem::v_InitObject(), Nektar::NavierStokesImplicitCFE::v_InitObject(), Nektar::MMFDiffusion::v_InitObject(), Nektar::ImageWarpingSystem::v_InitObject(), Nektar::IncNavierStokes::v_InitObject(), Nektar::MMFMaxwell::v_InitObject(), Nektar::ShallowWaterSystem::v_InitObject(), Nektar::APE::v_RiemannInvariantBC(), Nektar::LEE::v_RiemannInvariantBC(), Nektar::IsentropicVortex::v_SetInitialConditions(), Nektar::AcousticSystem::v_WallBC(), Nektar::AcousticSystem::v_WhiteNoiseBC(), Nektar::SolverUtils::MMFSystem::VectorAvgMagnitude(), Nektar::LinearSWE::WallBoundary(), Nektar::NonlinearPeregrine::WallBoundary(), and Nektar::NonlinearSWE::WallBoundary().

◆ m_specHP_dealiasing

bool Nektar::SolverUtils::EquationSystem::m_specHP_dealiasing
protected

◆ m_steps

int Nektar::SolverUtils::EquationSystem::m_steps
protected

◆ m_time

NekDouble Nektar::SolverUtils::EquationSystem::m_time
protected

Current time of simulation.

Definition at line 351 of file EquationSystem.h.

Referenced by Nektar::SolverUtils::UnsteadySystem::CheckSteadyState(), Nektar::AcousticSystem::DoOdeRhs(), ErrorExtraPoints(), Nektar::CoupledLinearNS::EvaluateNewtonRHS(), GetFinalTime(), SetTime(), Nektar::IncNavierStokes::SetWomersleyBoundary(), Nektar::CFSImplicit::UpdateTimeStepCheck(), Nektar::SolverUtils::UnsteadySystem::v_DoInitialise(), Nektar::VelocityCorrectionScheme::v_DoInitialise(), Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::MMFAdvection::v_DoSolve(), Nektar::IterativeElasticSystem::v_DoSolve(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::PulseWaveSystem::v_DoSolve(), Nektar::MMFSWE::v_DoSolve(), v_InitObject(), Nektar::SolverUtils::UnsteadySystem::v_InitObject(), Nektar::APE::v_InitObject(), Nektar::LEE::v_InitObject(), Nektar::IncNavierStokes::v_InitObject(), Nektar::PulseWaveSystem::v_InitObject(), Nektar::MMFSWE::v_L2Error(), v_L2Error(), Nektar::PulseWaveSystem::v_L2Error(), Nektar::MMFSWE::v_LinfError(), v_LinfError(), Nektar::PulseWaveSystem::v_LinfError(), Nektar::Dummy::v_PostIntegrate(), Nektar::VelocityCorrectionScheme::v_PostIntegrate(), Nektar::AcousticSystem::v_PreIntegrate(), Nektar::UnsteadyAdvectionDiffusion::v_PreIntegrate(), Nektar::Dummy::v_PreIntegrate(), Nektar::IncNavierStokes::v_PreIntegrate(), v_SetInitialConditions(), Nektar::CompressibleFlowSystem::v_SteadyStateResidual(), Nektar::AcousticSystem::v_WhiteNoiseBC(), WriteFld(), and Nektar::PulseWaveSystem::WriteVessels().

◆ m_TimeIncrementFactor

NekDouble Nektar::SolverUtils::EquationSystem::m_TimeIncrementFactor
protected

◆ m_timestep

NekDouble Nektar::SolverUtils::EquationSystem::m_timestep
protected

◆ m_timestepMax

NekDouble Nektar::SolverUtils::EquationSystem::m_timestepMax = -1.0
protected

Time step size.

Definition at line 359 of file EquationSystem.h.

Referenced by Nektar::SolverUtils::UnsteadySystem::v_DoSolve().

◆ m_traceNormals

Array<OneD, Array<OneD, NekDouble> > Nektar::SolverUtils::EquationSystem::m_traceNormals
protected

◆ m_useFFT

bool Nektar::SolverUtils::EquationSystem::m_useFFT
protected

Flag to determine if FFT is used for homogeneous transform.

Definition at line 386 of file EquationSystem.h.

Referenced by SessionSummary(), v_InitObject(), and Nektar::CoupledLinearNS::v_InitObject().

◆ m_verbose

bool Nektar::SolverUtils::EquationSystem::m_verbose
protected

Definition at line 334 of file EquationSystem.h.

Referenced by Nektar::CFSImplicit::CalcRefValues(), and v_InitObject().