38#include <boost/algorithm/string/predicate.hpp>
57 : m_session(pSession), m_fields(pFields)
82 ASSERTL0(0,
"Dimension not supported");
99 const TiXmlElement *pMapping)
101 int phystot =
m_fields[0]->GetTotPoints();
107 for (
int i = 0; i < 3; i++)
115 const TiXmlElement *timeDep = pMapping->FirstChildElement(
"TIMEDEPENDENT");
118 string sTimeDep = timeDep->GetText();
120 (boost::iequals(sTimeDep,
"yes"));
128 string fieldNames[3] = {
"x",
"y",
"z"};
129 const TiXmlElement *funcNameElmt = pMapping->FirstChildElement(
"COORDS");
134 "Function '" +
m_funcName +
"' not defined.");
137 m_fields[0]->GetCoords(coords[0], coords[1], coords[2]);
139 std::string s_FieldStr;
142 for (
int i = 0; i < 3; i++)
144 s_FieldStr = fieldNames[i];
153 "3DH1D does not support mapping in the z-direction.");
165 m_fields[0]->GetCoords(coords[0], coords[1], coords[2]);
166 for (
int i = 0; i < 3; i++)
177 string velFieldNames[3] = {
"vx",
"vy",
"vz"};
178 const TiXmlElement *velFuncNameElmt = pMapping->FirstChildElement(
"VEL");
185 std::string s_FieldStr;
188 for (
int i = 0; i < 3; i++)
190 s_FieldStr = velFieldNames[i];
199 "3DH1D does not support mapping in the z-direction.");
211 for (
int i = 0; i < 3; i++)
222 for (
int i = 0; i < nvel; i++)
225 for (
int j = 0; j < nvel; j++)
246 TiXmlElement *vMapping =
nullptr;
248 if (
m_session->DefinesElement(
"Nektar/Mapping"))
250 vMapping =
m_session->GetElement(
"Nektar/Mapping");
272 TiXmlElement *vMapping =
nullptr;
274 if (pSession->DefinesElement(
"Nektar/Mapping"))
276 vMapping = pSession->GetElement(
"Nektar/Mapping");
277 vType = vMapping->Attribute(
"TYPE");
280 vMapping, pSession->GetTimeLevel());
284 vType =
"Translation";
305 const std::string &outname)
310 fieldMetaDataMap[
"MappingCartesianVel"] = std::string(
"False");
314 fieldMetaDataMap[
"MappingType"] = std::string(
"Expression");
315 fieldMetaDataMap[
"MappingExpression"] =
m_funcName;
323 int expdim =
m_fields[0]->GetGraph()->GetMeshDimension();
324 string fieldNames[3] = {
"x",
"y",
"z"};
325 string velFieldNames[3] = {
"vx",
"vy",
"vz"};
327 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef =
329 std::vector<std::vector<NekDouble>> FieldData(FieldDef.size());
331 int ncoeffs =
m_fields[0]->GetNcoeffs();
334 bool wavespace =
m_fields[0]->GetWaveSpace();
337 for (
int j = 0; j < expdim; ++j)
341 for (
int i = 0; i < FieldDef.size(); ++i)
344 FieldDef[i]->m_fields.push_back(fieldNames[j]);
345 m_fields[0]->AppendFieldData(FieldDef[i], FieldData[i],
353 for (
int j = 0; j < expdim; ++j)
357 for (
int i = 0; i < FieldDef.size(); ++i)
360 FieldDef[i]->m_fields.push_back(velFieldNames[j]);
361 m_fields[0]->AppendFieldData(FieldDef[i], FieldData[i],
367 std::string outfile = outname;
368 outfile.erase(outfile.end() - 4, outfile.end());
371 m_fld->Write(outfile, FieldDef, FieldData, fieldMetaDataMap);
374 fieldMetaDataMap[
"MappingType"] = std::string(
"File");
375 fieldMetaDataMap[
"FileName"] = outfile;
377 m_fields[0]->SetWaveSpace(wavespace);
387 ASSERTL0(pSession->DefinesFunction(pFunctionName),
388 "Function '" + pFunctionName +
"' does not exist.");
391 pSession->GetFunction(pFunctionName, pFieldName);
397 ffunc->Evaluate(x0, x1, x2, pTime, pArray);
406 ASSERTL0(pSession->DefinesFunction(pFunctionName),
407 "Function '" + pFunctionName +
"' does not exist.");
409 unsigned int nq = pFields[0]->GetNpoints();
410 if (pArray.size() != nq)
416 vType = pSession->GetFunctionType(pFunctionName, pFieldName);
423 pFields[0]->GetCoords(x0, x1, x2);
425 pSession->GetFunction(pFunctionName, pFieldName);
427 ffunc->Evaluate(x0, x1, x2, pTime, pArray);
431 std::string filename =
432 pSession->GetFunctionFilename(pFunctionName, pFieldName);
434 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
435 std::vector<std::vector<NekDouble>> FieldData;
441 fld->Import(filename, FieldDef, FieldData);
444 for (
int i = 0; i < FieldDef.size(); ++i)
446 for (
int j = 0; j < FieldDef[i]->m_fields.size(); ++j)
448 if (FieldDef[i]->
m_fields[j] == pFieldName)
456 pFields[0]->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
462 cout <<
"Field " + pFieldName +
" not found." << endl;
465 pFields[0]->BwdTrans(vCoeffs, pArray);
483 if (inarray == outarray)
485 int physTot =
m_fields[0]->GetTotPoints();
488 for (
int i = 0; i < nvel; i++)
514 if (inarray == outarray)
516 int physTot =
m_fields[0]->GetTotPoints();
519 for (
int i = 0; i < nvel; i++)
545 if (inarray == outarray)
547 int physTot =
m_fields[0]->GetTotPoints();
550 for (
int i = 0; i < nvel; i++)
576 if (inarray == outarray)
578 int physTot =
m_fields[0]->GetTotPoints();
581 for (
int i = 0; i < nvel; i++)
606 if (inarray == outarray)
608 int physTot =
m_fields[0]->GetTotPoints();
611 for (
int i = 0; i < nvel; i++)
636 if (inarray == outarray)
638 int physTot =
m_fields[0]->GetTotPoints();
641 for (
int i = 0; i < nvel; i++)
657 int physTot =
m_fields[0]->GetTotPoints();
670 int physTot =
m_fields[0]->GetTotPoints();
683 int physTot =
m_fields[0]->GetTotPoints();
689 bool wavespace =
m_fields[0]->GetWaveSpace();
701 Vmath::Vvtvp(physTot, inarray[i], 1, wk, 1, outarray, 1, outarray,
704 m_fields[0]->SetWaveSpace(wavespace);
711 int physTot =
m_fields[0]->GetTotPoints();
718 for (
int i = 0; i < nvel; i++)
721 for (
int j = 0; j < nvel; j++)
723 Vmath::Vvtvp(physTot, g[i * nvel + j], 1, inarray[j], 1,
724 outarray[i], 1, outarray[i], 1);
732 int physTot =
m_fields[0]->GetTotPoints();
739 for (
int i = 0; i < nvel; i++)
742 for (
int j = 0; j < nvel; j++)
744 Vmath::Vvtvp(physTot, g[i * nvel + j], 1, inarray[j], 1,
745 outarray[i], 1, outarray[i], 1);
753 int physTot =
m_fields[0]->GetTotPoints();
759 bool wavespace =
m_fields[0]->GetWaveSpace();
768 Vmath::Vmul(physTot, Jac, 1, inarray[i], 1, wk, 1);
771 Vmath::Vadd(physTot, wk, 1, outarray, 1, outarray, 1);
773 Vmath::Vdiv(physTot, outarray, 1, Jac, 1, outarray, 1);
775 m_fields[0]->SetWaveSpace(wavespace);
782 int physTot =
m_fields[0]->GetTotPoints();
788 bool wavespace =
m_fields[0]->GetWaveSpace();
793 for (
int i = 0; i < nvel; i++)
798 m_wk2[i * nvel + 1]);
805 for (
int k = 0; k < nvel; k++)
808 m_wk1[i * nvel + k], 1);
812 for (
int i = 0; i < nvel; i++)
814 for (
int k = 0; k < nvel; k++)
816 tmp[k] =
m_wk1[i * nvel + k];
819 for (
int j = 0; j < nvel; j++)
830 for (
int i = 0; i < nvel; i++)
833 for (
int j = 0; j < nvel; j++)
846 for (
int i = 0; i < nvel; i++)
848 for (
int p = 0;
p < nvel;
p++)
853 for (
int j = 0; j < nvel; j++)
861 for (
int j = 0; j < nvel; j++)
863 for (
int p = 0;
p < nvel;
p++)
868 for (
int i = 0; i < nvel; i++)
876 m_fields[0]->SetWaveSpace(wavespace);
882 int physTot =
m_fields[0]->GetTotPoints();
888 for (
int i = 0; i < nvel * nvel * nvel; i++)
894 bool wavespace =
m_fields[0]->GetWaveSpace();
899 for (
int i = 0; i < nvel; i++)
904 m_wk2[i * nvel + 1]);
911 for (
int j = 0; j < nvel; j++)
914 m_wk1[i * nvel + j], 1);
923 for (
int i = 0; i < nvel; i++)
925 for (
int j = 0; j < nvel; j++)
931 outarray[i * nvel * nvel + j * nvel + 0],
932 outarray[i * nvel * nvel + j * nvel + 1]);
938 outarray[i * nvel * nvel + j * nvel + 0],
939 outarray[i * nvel * nvel + j * nvel + 1],
940 outarray[i * nvel * nvel + j * nvel + 2]);
946 for (
int i = 0; i < nvel; i++)
948 for (
int p = 0;
p < nvel;
p++)
953 for (
int j = 0; j < nvel; j++)
955 for (
int k = 0; k < nvel; k++)
957 Vmath::Vsub(physTot, outarray[i * nvel * nvel + j * nvel + k],
958 1,
m_wk2[j * nvel + k], 1,
959 outarray[i * nvel * nvel + j * nvel + k], 1);
965 for (
int j = 0; j < nvel; j++)
967 for (
int p = 0;
p < nvel;
p++)
972 for (
int i = 0; i < nvel; i++)
974 for (
int k = 0; k < nvel; k++)
976 Vmath::Vadd(physTot, outarray[i * nvel * nvel + j * nvel + k],
977 1,
m_wk2[i * nvel + k], 1,
978 outarray[i * nvel * nvel + j * nvel + k], 1);
984 m_fields[0]->SetWaveSpace(wavespace);
989 const bool generalized)
991 int physTot =
m_fields[0]->GetTotPoints();
995 bool wavespace =
m_fields[0]->GetWaveSpace();
1008 for (
int i = 0; i < nvel; ++i)
1010 for (
int k = 0; k < nvel; ++k)
1013 for (
int j = 0; j < nvel; ++j)
1015 tmp[j] = ddU[i * nvel * nvel + j * nvel + k];
1018 for (
int p = 0;
p < nvel; ++
p)
1021 ddU[i * nvel * nvel +
p * nvel + k], 1);
1026 for (
int i = 0; i < nvel; ++i)
1029 for (
int k = 0; k < nvel; ++k)
1032 ddU[k * nvel * nvel + i * nvel + k], 1, outarray[i],
1035 ddU[i * nvel * nvel + k * nvel + k], 1, outarray[i],
1042 m_fields[0]->CurlCurl(inarray, outarray);
1046 m_fields[0]->SetWaveSpace(wavespace);
1051 int physTot =
m_fields[0]->GetTotPoints();
1054 int nbnds =
m_fields[0]->GetBndConditions().size();
1063 for (
int i = 0; i < nfields; i++)
1071 for (
int i = 0; i < nvel; i++)
1084 for (
int dir = 0; dir < 3; dir++)
1091 for (
int n = 0; n < nbnds; ++n)
1094 for (
int i = 0; i < nfields; ++i)
1096 BndConds =
m_fields[i]->GetBndConditions();
1097 BndExp =
m_fields[i]->GetBndCondExpansions();
1098 if (BndConds[n]->GetBoundaryConditionType() ==
1101 isDirichlet[i] =
true;
1106 for (
int j = 0; j < nvel; ++j)
1109 ->GetBndConditions()[n]
1110 ->GetBoundaryConditionType() ==
1112 "Mapping only supported when all velocity "
1113 "components have the same type of boundary "
1119 "Time-dependent Dirichlet boundary conditions not "
1120 "supported with mapping yet.");
1124 std::static_pointer_cast<
1126 ->m_dirichletCondition;
1128 condition.
Evaluate(coords[0], coords[1], coords[2], time,
1133 isDirichlet[i] =
false;
1139 for (
int i = 0; i < nvel; ++i)
1144 for (
int i = 0; i < nvel; ++i)
1151 for (
int i = 0; i < nfields; ++i)
1153 BndConds =
m_fields[i]->GetBndConditions();
1154 BndExp =
m_fields[i]->GetBndCondExpansions();
1156 if (BndConds[n]->GetUserDefined() ==
"" ||
1157 BndConds[n]->GetUserDefined() ==
"MovingBody")
1159 m_fields[i]->ExtractPhysToBnd(n, values[i],
1160 BndExp[n]->UpdatePhys());
1163 if ((i < nvel) && BndConds[n]->GetUserDefined() ==
"MovingBody")
1167 BndExp[n]->GetTotPoints());
1168 m_fields[i]->ExtractPhysToBnd(n, coordVel[i], coordVelBnd);
1171 Vmath::Vadd(BndExp[n]->GetTotPoints(), coordVelBnd, 1,
1172 BndExp[n]->UpdatePhys(), 1,
1173 BndExp[n]->UpdatePhys(), 1);
1180 for (
int i = 0; i <
m_fields.size(); ++i)
1183 BndConds =
m_fields[i]->GetBndConditions();
1184 BndExp =
m_fields[i]->GetBndCondExpansions();
1186 for (
int n = 0; n < BndConds.size(); ++n)
1188 if (BndConds[n]->GetBoundaryConditionType() ==
1191 if (BndConds[n]->GetUserDefined() ==
"" ||
1192 BndConds[n]->GetUserDefined() ==
"MovingBody")
1196 BndExp[n]->SetWaveSpace(
false);
1199 BndExp[n]->FwdTransBndConstrained(
1200 BndExp[n]->GetPhys(), BndExp[n]->UpdateCoeffs());
1213 std::string s_FieldStr;
1214 string fieldNames[3] = {
"x",
"y",
"z"};
1215 string velFieldNames[3] = {
"vx",
"vy",
"vz"};
1219 for (
int i = 0; i < 3; i++)
1221 s_FieldStr = fieldNames[i];
1230 "3DH1D does not support mapping in the z-direction.");
1233 s_FieldStr = velFieldNames[i];
1242 "3DH1D does not support mapping in the z-direction.");
1249 int physTot =
m_fields[0]->GetTotPoints();
1252 for (
int i = 0; i < 3; i++)
1257 for (
int i = 0; i < nvel; i++)
#define ASSERTL0(condition, msg)
bool m_fromFunction
Flag defining if the Mapping is defined by a function.
int m_nConvectiveFields
Number of velocity components.
static MappingSharedPtr m_mappingPtr
virtual GLOBAL_MAPPING_EXPORT void v_GetCartesianCoordinates(Array< OneD, NekDouble > &out0, Array< OneD, NekDouble > &out1, Array< OneD, NekDouble > &out2)
GLOBAL_MAPPING_EXPORT void LowerIndex(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Lower index of vector: .
GLOBAL_MAPPING_EXPORT void EvaluateTimeFunction(LibUtilities::SessionReaderSharedPtr pSession, std::string pFieldName, Array< OneD, NekDouble > &pArray, const std::string &pFunctionName, NekDouble pTime=NekDouble(0))
LibUtilities::SessionReaderSharedPtr m_session
Session reader.
GLOBAL_MAPPING_EXPORT void ContravarToCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Convert a contravariant vector to the Cartesian system.
GLOBAL_MAPPING_EXPORT void GetInvMetricTensor(Array< OneD, Array< OneD, NekDouble > > &outarray)
Get the inverse of metric tensor .
virtual GLOBAL_MAPPING_EXPORT void v_UpdateBCs(const NekDouble time)
GLOBAL_MAPPING_EXPORT void GetCartesianCoordinates(Array< OneD, NekDouble > &out0, Array< OneD, NekDouble > &out1, Array< OneD, NekDouble > &out2)
Get the Cartesian coordinates in the field.
GLOBAL_MAPPING_EXPORT void gradgradU(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Second order covariant derivatives of a contravariant vector.
GLOBAL_MAPPING_EXPORT bool IsTimeDependent()
Get flag defining if mapping is time-dependent.
Array< OneD, Array< OneD, NekDouble > > m_wk2
virtual GLOBAL_MAPPING_EXPORT void v_CurlCurlField(Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const bool generalized)
GLOBAL_MAPPING_EXPORT void UpdateGeomInfo()
Recompute the metric terms of the Mapping.
Array< OneD, Array< OneD, NekDouble > > m_coords
Array with the Cartesian coordinates.
Array< OneD, Array< OneD, NekDouble > > m_coordsVel
Array with the velocity of the coordinates.
virtual GLOBAL_MAPPING_EXPORT void v_RaiseIndex(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Array< OneD, MultiRegions::ExpListSharedPtr > m_fields
std::string m_velFuncName
Name of the function containing the velocity of the coordinates.
GLOBAL_MAPPING_EXPORT void InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pMapping)
Initialise the mapping object.
virtual GLOBAL_MAPPING_EXPORT void v_LowerIndex(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
GLOBAL_MAPPING_EXPORT void Output(LibUtilities::FieldMetaDataMap &fieldMetaDataMap, const std::string &outname)
Output function called when a chk or fld file is written.
GLOBAL_MAPPING_EXPORT void GetMetricTensor(Array< OneD, Array< OneD, NekDouble > > &outarray)
Get the metric tensor .
Array< OneD, Array< OneD, NekDouble > > m_wk1
GLOBAL_MAPPING_EXPORT void ContravarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Convert a contravariant vector to the transformed system.
virtual GLOBAL_MAPPING_EXPORT void v_GetCoordVelocity(Array< OneD, Array< OneD, NekDouble > > &outarray)
GLOBAL_MAPPING_EXPORT void EvaluateFunction(Array< OneD, MultiRegions::ExpListSharedPtr > pFields, LibUtilities::SessionReaderSharedPtr pSession, std::string pFieldName, Array< OneD, NekDouble > &pArray, const std::string &pFunctionName, NekDouble pTime=NekDouble(0))
virtual GLOBAL_MAPPING_EXPORT void v_gradgradU(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
virtual GLOBAL_MAPPING_EXPORT void v_ContravarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)=0
LibUtilities::FieldIOSharedPtr m_fld
virtual GLOBAL_MAPPING_EXPORT void v_Divergence(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, NekDouble > &outarray)
virtual GLOBAL_MAPPING_EXPORT void v_CovarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)=0
GLOBAL_MAPPING_EXPORT bool HasConstantJacobian()
Get flag defining if mapping has constant Jacobian.
GLOBAL_MAPPING_EXPORT void CovarToCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Convert a covariant vector to the Cartesian system.
GLOBAL_MAPPING_EXPORT void ReplaceField(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields)
Replace the Expansion List used by the mapping.
virtual GLOBAL_MAPPING_EXPORT void v_CovarToCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)=0
GLOBAL_MAPPING_EXPORT void RaiseIndex(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Raise index of vector: .
GLOBAL_MAPPING_EXPORT void ApplyChristoffelContravar(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Apply the Christoffel symbols to a contravariant vector.
virtual GLOBAL_MAPPING_EXPORT void v_DotGradJacobian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, NekDouble > &outarray)
GLOBAL_MAPPING_EXPORT void GetCoordVelocity(Array< OneD, Array< OneD, NekDouble > > &outarray)
Obtain the velocity of the coordinates.
std::string m_funcName
Name of the function containing the coordinates.
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.
GLOBAL_MAPPING_EXPORT void CovarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Convert a covariant vector to the transformed system.
GLOBAL_MAPPING_EXPORT void GetJacobian(Array< OneD, NekDouble > &outarray)
Get the Jacobian of the transformation.
GLOBAL_MAPPING_EXPORT Mapping(const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields)
Constructor.
virtual GLOBAL_MAPPING_EXPORT void v_VelocityLaplacian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble alpha)
virtual GLOBAL_MAPPING_EXPORT void v_ContravarToCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)=0
virtual GLOBAL_MAPPING_EXPORT void v_InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pMapping)
GLOBAL_MAPPING_EXPORT void ApplyChristoffelCovar(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Apply the Christoffel symbols to a covariant vector.
virtual GLOBAL_MAPPING_EXPORT void v_UpdateMapping(const NekDouble time, const Array< OneD, Array< OneD, NekDouble > > &coords=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &coordsVel=NullNekDoubleArrayOfArray)
Array< OneD, Array< OneD, NekDouble > > m_tmp
bool m_timeDependent
Flag defining if the Mapping is time-dependent.
NekDouble Evaluate() const
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.
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
static void GetXMLElementTimeLevel(TiXmlElement *&element, const size_t timeLevel, const bool enableCheck=true)
Get XML elment time level (Parallel-in-Time)
GLOBAL_MAPPING_EXPORT typedef std::shared_ptr< Mapping > MappingSharedPtr
A shared pointer to a Mapping object.
MappingFactory & GetMappingFactory()
Declaration of the mapping factory singleton.
std::shared_ptr< FieldIO > FieldIOSharedPtr
std::map< std::string, std::string > FieldMetaDataMap
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Equation > EquationSharedPtr
@ eFunctionTypeExpression
MultiRegions::Direction const DirCartesianMap[]
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
void Vvtvp(int n, const T *w, const int incw, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
vvtvp (vector times vector plus vector): z = w*x + y
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.
void Vdiv(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x/y.
void Zero(int n, T *x, const int incx)
Zero vector.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
void Vsub(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Subtract vector z = x-y.