53#include <boost/format.hpp>
79 "Projection",
"Mixed_CG_Discontinuous",
113 : m_comm(pSession->GetComm()), m_session(pSession), m_graph(pGraph),
114 m_lambda(0), m_infosteps(10),
118 const vector<std::string> filenames =
m_session->GetFilenames();
120 for (
int i = 0; i < filenames.size(); ++i)
122 string sessionname =
"SessionName";
123 sessionname += std::to_string(i);
170 if (
m_session->DefinesSolverInfo(
"HOMOGENEOUS"))
172 std::string HomoStr =
m_session->GetSolverInfo(
"HOMOGENEOUS");
175 if ((HomoStr ==
"HOMOGENEOUS1D") || (HomoStr ==
"Homogeneous1D") ||
176 (HomoStr ==
"1D") || (HomoStr ==
"Homo1D"))
182 if (
m_session->DefinesSolverInfo(
"ModeType"))
184 m_session->MatchSolverInfo(
"ModeType",
"SingleMode",
188 m_session->MatchSolverInfo(
"ModeType",
"MultipleModes",
193 if (
m_session->DefinesSolverInfo(
"ModeType"))
209 ASSERTL0(
false,
"SolverInfo ModeType not valid");
218 if ((HomoStr ==
"HOMOGENEOUS2D") || (HomoStr ==
"Homogeneous2D") ||
219 (HomoStr ==
"2D") || (HomoStr ==
"Homo2D"))
229 if ((HomoStr ==
"HOMOGENEOUS3D") || (HomoStr ==
"Homogeneous3D") ||
230 (HomoStr ==
"3D") || (HomoStr ==
"Homo3D"))
252 m_session->MatchSolverInfo(
"SPECTRALHPDEALIASING",
"True",
256 m_session->MatchSolverInfo(
"SPECTRALHPDEALIASING",
"On",
262 if (
m_session->DefinesSolverInfo(
"PROJECTION"))
264 std::string ProjectStr =
m_session->GetSolverInfo(
"PROJECTION");
266 if ((ProjectStr ==
"Continuous") || (ProjectStr ==
"Galerkin") ||
267 (ProjectStr ==
"CONTINUOUS") || (ProjectStr ==
"GALERKIN"))
271 else if ((ProjectStr ==
"MixedCGDG") ||
272 (ProjectStr ==
"Mixed_CG_Discontinuous"))
276 else if (ProjectStr ==
"DisContinuous")
282 ASSERTL0(
false,
"PROJECTION value not recognised");
287 cerr <<
"Projection type not specified in SOLVERINFO,"
288 "defaulting to continuous Galerkin"
297 int nvariables =
m_session->GetVariables().size();
298 bool DeclareCoeffPhysArrays =
true;
326 for (i = 0; i <
m_fields.size(); i++)
330 AllocateSharedPtr(
m_session, BkeyY, BkeyZ,
338 for (i = 0; i <
m_fields.size(); i++)
364 for (i = 0; i <
m_fields.size(); i++)
390 for (i = 0; i <
m_fields.size(); i++)
392 if (
m_session->GetVariable(i).compare(
"w") == 0)
396 ContField3DHomogeneous1D>::
407 ContField3DHomogeneous1D>::
424 for (i = 0; i <
m_fields.size(); i++)
443 DeclareCoeffPhysArrays,
446 for (i = 1; i <
m_fields.size(); i++)
448 if (
m_graph->SameExpansionInfo(
457 DeclareCoeffPhysArrays,
467 DeclareCoeffPhysArrays,
498 DeclareCoeffPhysArrays,
502 for (i = 1; i <
m_fields.size(); i++)
504 if (
m_graph->SameExpansionInfo(
513 DeclareCoeffPhysArrays,
523 DeclareCoeffPhysArrays,
542 for (i = 1; i <
m_fields.size(); ++i)
550 ASSERTL0(
false,
"Expansion dimension not recognised");
573 for (i = 0; i <
m_fields.size(); i++)
577 AllocateSharedPtr(
m_session, BkeyY, BkeyZ,
585 for (i = 0; i <
m_fields.size(); i++)
606 for (i = 0; i <
m_fields.size(); i++)
624 for (i = 1; i <
m_fields.size(); i++)
626 if (
m_graph->SameExpansionInfo(
655 "3D fully periodic problems not implemented yet");
665 for (i = 1; i <
m_fields.size(); i++)
667 if (
m_graph->SameExpansionInfo(
690 ASSERTL0(
false,
"Expansion dimension not recognised");
722 "Only one of IO_CheckTime and IO_CheckSteps "
727 if (
m_comm->IsParallelInTime())
730 "Only specify NumSteps and TimeSteps for Parallel-in-Time. "
731 "FinTime should not be used! ");
779 for (
int i = 0; i < nvariables; ++i)
782 m_fields[i]->EvaluateBoundaryConditions(time, varName);
808 bool physwavetrans =
false;
814 physwavetrans =
true;
817 if (exactsoln.size())
822 else if (
m_session->DefinesFunction(
"ExactSolution"))
837 if (Normalised ==
true)
842 L2error =
sqrt(L2error * L2error / Vol);
846 if (physwavetrans ==
true)
851 physwavetrans =
false;
858 L2error = errNorms[0];
882 if (exactsoln.size())
887 else if (
m_session->DefinesFunction(
"ExactSolution"))
906 Linferror = errNorms[1];
933 if (exactsoln.size())
937 else if (
m_session->DefinesFunction(
"ExactSolution"))
951 if (Normalised ==
true)
956 error =
sqrt(error * error / Vol);
982 LibUtilities::eGaussRadauMAlpha1Beta0);
1005 Tkeys.push_back(BkeyT1);
1006 Tkeys.push_back(BkeyT2);
1009 Qkeys.push_back(BkeyQ1);
1010 Qkeys.push_back(BkeyQ2);
1018 int ErrorCoordim = ErrorExplist->GetCoordim(0);
1019 int ErrorNq = ErrorExplist->GetTotPoints();
1025 switch (ErrorCoordim)
1028 ErrorExplist->GetCoords(ErrorXc0);
1031 ErrorExplist->GetCoords(ErrorXc0, ErrorXc1);
1034 ErrorExplist->GetCoords(ErrorXc0, ErrorXc1, ErrorXc2);
1043 exSol->Evaluate(ErrorXc0, ErrorXc1, ErrorXc2,
m_time, ErrorSol);
1048 ErrorExplist->UpdatePhys());
1050 errNorms[0] = ErrorExplist->L2(ErrorExplist->GetPhys(), ErrorSol);
1051 errNorms[1] = ErrorExplist->Linf(ErrorExplist->GetPhys(), ErrorSol);
1052 errNorms[2] = ErrorExplist->H1(ErrorExplist->GetPhys(), ErrorSol);
1064 [[maybe_unused]]
NekDouble initialtime,
bool dumpInitialConditions,
1067 if (
m_session->GetComm()->GetRank() == 0)
1069 cout <<
"Initial Conditions:" << endl;
1072 if (
m_session->DefinesFunction(
"InitialConditions"))
1080 for (
int i = 0; i <
m_fields.size(); ++i)
1089 if (
m_session->GetComm()->GetRank() == 0)
1091 for (
int i = 0; i <
m_fields.size(); ++i)
1093 std::string varName =
m_session->GetVariable(i);
1094 cout <<
" - Field " << varName <<
": "
1096 ->Describe(varName, domain)
1103 int nq =
m_fields[0]->GetNpoints();
1104 for (
int i = 0; i <
m_fields.size(); i++)
1110 if (
m_session->GetComm()->GetRank() == 0)
1112 cout <<
" - Field " <<
m_session->GetVariable(i)
1113 <<
": 0 (default)" << endl;
1119 !
m_comm->IsParallelInTime())
1123 else if (dumpInitialConditions &&
m_nchk == 0 &&
m_comm->IsParallelInTime())
1126 if (!fs::is_directory(newdir))
1128 fs::create_directory(newdir);
1130 if (
m_comm->GetTimeComm()->GetRank() == 0)
1146 "ExactSolution array size mismatch.");
1148 if (
m_session->DefinesFunction(
"ExactSolution"))
1205 if (!
m_comm->IsParallelInTime())
1214 if (!fs::is_directory(newdir))
1216 fs::create_directory(newdir);
1220 m_comm->GetTimeComm()->GetRank() + 1) +
1230 for (
int i = 0; i <
m_fields.size(); i++)
1241 for (
int i = 0; i <
m_fields.size(); i++)
1255 if (!
m_comm->IsParallelInTime())
1258 std::string outname =
m_sessionName +
"_" + std::to_string(n);
1266 std::string paradir =
1267 sessionName +
"_" + std::to_string(
m_iterPIT) +
".pit";
1268 if (!fs::is_directory(paradir))
1270 fs::create_directory(paradir);
1272 std::string outname = paradir +
"/" + sessionName +
"_timeLevel" +
1273 std::to_string(
m_session->GetTimeLevel()) +
"_" +
1286 std::vector<std::string> &variables)
1288 if (!
m_comm->IsParallelInTime())
1291 std::string outname =
m_sessionName +
"_" + std::to_string(n);
1296 ASSERTL0(
false,
"Not Implemented for Parallel-in-Time");
1306 std::string outname =
m_sessionName +
"_BaseFlow_" + std::to_string(n);
1317 std::vector<Array<OneD, NekDouble>> fieldcoeffs(
m_fields.size());
1318 std::vector<std::string> variables(
m_fields.size());
1320 for (
int i = 0; i <
m_fields.size(); ++i)
1324 fieldcoeffs[i] =
m_fields[i]->UpdateCoeffs();
1329 m_fields[0]->ExtractCoeffsToCoeffs(
1350 std::vector<std::string> &variables)
1352 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef =
1353 field->GetFieldDefinitions();
1354 std::vector<std::vector<NekDouble>> FieldData(FieldDef.size());
1357 for (
int j = 0; j < fieldcoeffs.size(); ++j)
1359 for (
int i = 0; i < FieldDef.size(); ++i)
1362 FieldDef[i]->m_fields.push_back(variables[j]);
1363 field->AppendFieldData(FieldDef[i], FieldData[i], fieldcoeffs[j]);
1386 mapping->Output(fieldMetaDataMap, outname);
1403 m_fld->Write(outname, FieldDef, FieldData, fieldMetaDataMap,
1414 const std::string &infile,
1417 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1418 std::vector<std::vector<NekDouble>> FieldData;
1421 field_fld->Import(infile, FieldDef, FieldData);
1424 for (
int j = 0; j < pFields.size(); ++j)
1428 for (
int i = 0; i < FieldDef.size(); ++i)
1431 std::string(
"Order of ") + infile +
1432 std::string(
" data and that defined in "
1433 "m_boundaryconditions differs"));
1435 pFields[j]->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
1437 pFields[j]->UpdateCoeffs());
1439 pFields[j]->BwdTrans(pFields[j]->GetCoeffs(), pFields[j]->UpdatePhys());
1452 const std::string &infile,
1455 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1456 std::vector<std::vector<NekDouble>> FieldData;
1463 ndomains * nvariables == pFields.size(),
1464 "Number of fields does not match the number of variables and domains");
1467 for (
int j = 0; j < ndomains; ++j)
1469 for (
int i = 0; i < nvariables; ++i)
1472 pFields[j * nvariables + i]->UpdateCoeffs(), 1);
1474 for (
int n = 0; n < FieldDef.size(); ++n)
1477 std::string(
"Order of ") + infile +
1478 std::string(
" data and that defined in "
1479 "m_boundaryconditions differs"));
1481 pFields[j * nvariables + i]->ExtractDataToCoeffs(
1482 FieldDef[n], FieldData[n], FieldDef[n]->
m_fields[i],
1483 pFields[j * nvariables + i]->UpdateCoeffs());
1485 pFields[j * nvariables + i]->BwdTrans(
1486 pFields[j * nvariables + i]->GetCoeffs(),
1487 pFields[j * nvariables + i]->UpdatePhys());
1499 std::string &pFieldName)
1501 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1502 std::vector<std::vector<NekDouble>> FieldData;
1506 field_fld->Import(infile, FieldDef, FieldData);
1509 Vmath::Zero(pField->GetNcoeffs(), pField->UpdateCoeffs(), 1);
1511 for (
int i = 0; i < FieldDef.size(); ++i)
1514 for (
int j = 0; j < FieldData.size(); ++j)
1516 if (FieldDef[i]->
m_fields[j] == pFieldName)
1521 ASSERTL1(idx >= 0,
"Field " + pFieldName +
" not found.");
1523 pField->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
1525 pField->UpdateCoeffs());
1527 pField->BwdTrans(pField->GetCoeffs(), pField->UpdatePhys());
1538 std::vector<std::string> &fieldStr,
1542 ASSERTL0(fieldStr.size() <= coeffs.size(),
1543 "length of fieldstr should be the same as coeffs");
1545 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
1546 std::vector<std::vector<NekDouble>> FieldData;
1550 field_fld->Import(infile, FieldDef, FieldData);
1553 for (
int j = 0; j < fieldStr.size(); ++j)
1556 for (
int i = 0; i < FieldDef.size(); ++i)
1558 m_fields[0]->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
1559 fieldStr[j], coeffs[j]);
1570 if (
m_session->DefinesSolverInfo(
"EQTYPE"))
1577 m_fields[0]->EvalBasisNumModesMax());
1579 if (
m_session->GetComm()->GetSize() > 1)
1619 if (
m_session->DefinesSolverInfo(
"UpwindType"))
1622 m_session->GetSolverInfo(
"UpwindType"));
1625 if (
m_session->DefinesSolverInfo(
"AdvectionType"))
1627 std::string AdvectionType;
1628 AdvectionType =
m_session->GetSolverInfo(
"AdvectionType");
1630 s,
"Advection Type",
1634 if (
m_session->DefinesSolverInfo(
"DiffusionType"))
1636 std::string DiffusionType;
1637 DiffusionType =
m_session->GetSolverInfo(
"DiffusionType");
1639 s,
"Diffusion Type",
1654 "Mixed Continuous Galerkin and Discontinuous");
1671 ASSERTL0(
false,
"This function is not valid for the Base class");
1681 [[maybe_unused]] std::vector<std::string> &variables)
#define ASSERTL0(condition, msg)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
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.
Describes the specification for a Basis.
static std::shared_ptr< FieldIO > CreateForFile(const LibUtilities::SessionReaderSharedPtr session, const std::string &filename)
Construct a FieldIO object for a given input filename.
static std::shared_ptr< FieldIO > CreateDefault(const LibUtilities::SessionReaderSharedPtr session)
Returns an object for the default FieldIO method.
Provides a generic Factory class.
Defines a specification for a set of points.
static std::string RegisterEnumValue(std::string pEnum, std::string pString, int pEnumValue)
Registers an enumeration value.
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
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.
LibUtilities::FieldIOSharedPtr m_fld
Field input/output.
SOLVER_UTILS_EXPORT void SessionSummary(SummaryList &vSummary)
Write out a session summary.
virtual SOLVER_UTILS_EXPORT void v_SetInitialConditions(NekDouble initialtime=0.0, bool dumpInitialConditions=true, const int domain=0)
virtual SOLVER_UTILS_EXPORT ~EquationSystem()
Destructor.
SpatialDomains::MeshGraphSharedPtr m_graph
Pointer to graph defining mesh.
LibUtilities::CommSharedPtr m_comm
Communicator.
NekDouble m_timestep
Time step size.
SOLVER_UTILS_EXPORT void ImportFld(const std::string &infile, Array< OneD, MultiRegions::ExpListSharedPtr > &pFields)
Input field data from the given file.
NekDouble m_time
Current time of simulation.
int m_iterPIT
Number of parallel-in-time time iteration.
bool m_multipleModes
Flag to determine if use multiple homogenenous modes are used.
SOLVER_UTILS_EXPORT int GetTraceNpoints()
Array< OneD, MultiRegions::ExpListSharedPtr > m_fields
Array holding all dependent variables.
int m_windowPIT
Index of windows for parallel-in-time time iteration.
virtual SOLVER_UTILS_EXPORT void v_TransPhysToCoeff()
Virtual function for transformation to coefficient space.
SOLVER_UTILS_EXPORT int GetNpoints()
std::vector< std::string > m_strFrameData
variable name in m_movingFrameData
virtual SOLVER_UTILS_EXPORT bool v_NegatedOp(void)
Virtual function to identify if operator is negated in DoSolve.
NekDouble m_fintime
Finish time of the simulation.
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.
virtual SOLVER_UTILS_EXPORT MultiRegions::ExpListSharedPtr v_GetPressure(void)
static std::string projectionTypeLookupIds[]
SOLVER_UTILS_EXPORT int GetNcoeffs()
int m_npointsZ
number of points in Z direction (if homogeneous)
SOLVER_UTILS_EXPORT void Checkpoint_Output(const int n)
Write checkpoint file of m_fields.
virtual SOLVER_UTILS_EXPORT void v_ExtraFldOutput(std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)
std::map< std::string, SolverUtils::SessionFunctionSharedPtr > m_sessionFunctions
Map of known SessionFunctions.
NekDouble m_checktime
Time between checkpoints.
virtual SOLVER_UTILS_EXPORT void v_InitObject(bool DeclareFeld=true)
Initialisation object for EquationSystem.
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.
static std::string equationSystemTypeLookupIds[]
SOLVER_UTILS_EXPORT int GetNumExpModes()
virtual SOLVER_UTILS_EXPORT void v_EvaluateExactSolution(unsigned int field, Array< OneD, NekDouble > &outfield, const NekDouble time)
virtual SOLVER_UTILS_EXPORT void v_DoInitialise(bool dumpInitialConditions=true)
Virtual function for initialisation implementation.
SOLVER_UTILS_EXPORT void WriteFld(const std::string &outname)
Write field data to the given filename.
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.
NekDouble m_LhomY
physical length in Y direction (if homogeneous)
int m_npointsY
number of points in Y direction (if homogeneous)
std::string m_sessionName
Name of the session.
SOLVER_UTILS_EXPORT void Checkpoint_BaseFlow(const int n)
Write base flow file of m_fields.
bool m_specHP_dealiasing
Flag to determine if dealisising is usde for the Spectral/hp element discretisation.
LibUtilities::SessionReaderSharedPtr m_session
The session reader.
bool m_singleMode
Flag to determine if single homogeneous mode is used.
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.
enum HomogeneousType m_HomogeneousType
SOLVER_UTILS_EXPORT void ExtraFldOutput(std::vector< Array< OneD, NekDouble > > &fieldcoeffs, std::vector< std::string > &variables)
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].
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.
SOLVER_UTILS_EXPORT int GetTotPoints()
int m_nchk
Number of checkpoints written so far.
enum MultiRegions::ProjectionType m_projectionType
Type of projection; e.g continuous or discontinuous.
NekDouble m_TimeIncrementFactor
virtual SOLVER_UTILS_EXPORT void v_DoSolve()
Virtual function for solve implementation.
virtual SOLVER_UTILS_EXPORT Array< OneD, bool > v_GetSystemSingularChecks()
int m_steps
Number of steps to take.
int m_NumQuadPointsError
Number of Quadrature points used to work out the error.
SOLVER_UTILS_EXPORT EquationSystem(const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph)
Initialises EquationSystem class members.
LibUtilities::FieldMetaDataMap m_fieldMetaDataMap
Map to identify relevant solver info to dump in output fields.
SpatialDomains::BoundaryConditionsSharedPtr m_boundaryConditions
Pointer to boundary conditions object.
Array< OneD, NekDouble > m_movingFrameData
Moving reference frame status in the inertial frame X, Y, Z, Theta_x, Theta_y, Theta_z,...
SOLVER_UTILS_EXPORT void SetBoundaryConditions(NekDouble time)
Evaluates the boundary conditions at the given time.
NekDouble m_LhomZ
physical length in Z direction (if homogeneous)
virtual SOLVER_UTILS_EXPORT void v_GenerateSummary(SummaryList &l)
Virtual function for generating summary information.
bool m_halfMode
Flag to determine if half homogeneous mode is used.
SOLVER_UTILS_EXPORT void FwdTransFields()
virtual SOLVER_UTILS_EXPORT NekDouble v_H1Error(unsigned int field, const Array< OneD, NekDouble > &exactsoln=NullNekDouble1DArray, bool Normalised=false)
Virtual function for the H_1 error computation between fields and a given exact solution.
int m_checksteps
Number of steps between checkpoints.
SOLVER_UTILS_EXPORT SessionFunctionSharedPtr GetFunction(std::string name, const MultiRegions::ExpListSharedPtr &field=MultiRegions::NullExpListSharedPtr, bool cache=false)
Get a SessionFunction by name.
virtual SOLVER_UTILS_EXPORT void v_Output(void)
SOLVER_UTILS_EXPORT int GetNvariables()
virtual SOLVER_UTILS_EXPORT void v_TransCoeffToPhys()
Virtual function for transformation to physical space.
GLOBAL_MAPPING_EXPORT typedef std::shared_ptr< Mapping > MappingSharedPtr
A shared pointer to a Mapping object.
std::vector< BasisKey > BasisKeyVector
Name for a vector of BasisKeys.
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...
std::shared_ptr< FieldIO > FieldIOSharedPtr
std::map< std::string, std::string > FieldMetaDataMap
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Equation > EquationSharedPtr
static FieldMetaDataMap NullFieldMetaDataMap
@ eFourierEvenlySpaced
1D Evenly-spaced points using Fourier Fit
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ eFourierSingleModeSpaced
1D Non Evenly-spaced points for Single Mode analysis
@ eModified_B
Principle Modified Functions .
@ eFourierSingleMode
Fourier ModifiedExpansion with just the first mode .
@ eModified_A
Principle Modified Functions .
@ eFourierHalfModeIm
Fourier Modified expansions with just the imaginary part of the first mode .
@ eFourierHalfModeRe
Fourier Modified expansions with just the real part of the first mode .
@ eFourier
Fourier Expansion .
@ eMixed_CG_Discontinuous
std::shared_ptr< DisContField > DisContFieldSharedPtr
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::shared_ptr< ContField > ContFieldSharedPtr
AdvectionFactory & GetAdvectionFactory()
Gets the factory for initialising advection objects.
std::vector< std::pair< std::string, std::string > > SummaryList
DiffusionFactory & GetDiffusionFactory()
EquationSystemFactory & GetEquationSystemFactory()
void AddSummaryItem(SummaryList &l, const std::string &name, const std::string &value)
Adds a summary item to the summary info list.
std::shared_ptr< SessionFunction > SessionFunctionSharedPtr
std::shared_ptr< ExpansionInfoMap > ExpansionInfoMapShPtr
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
std::map< int, ExpansionInfoShPtr > ExpansionInfoMap
NekMatrix< NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > DNekScalBlkMat
NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > DNekScalMat
void Zero(int n, T *x, const int incx)
Zero vector.
scalarT< T > sqrt(scalarT< T > in)
Used to lookup the create function in NekManager.