38#include <boost/algorithm/string/predicate.hpp>
55 : m_session(pSession), m_fields(pFields)
80 ASSERTL0(0,
"Dimension not supported");
97 const TiXmlElement *pMapping)
99 int phystot =
m_fields[0]->GetTotPoints();
105 for (
int i = 0; i < 3; i++)
113 const TiXmlElement *timeDep = pMapping->FirstChildElement(
"TIMEDEPENDENT");
116 std::string sTimeDep = timeDep->GetText();
118 (boost::iequals(sTimeDep,
"yes"));
126 std::string fieldNames[3] = {
"x",
"y",
"z"};
127 const TiXmlElement *funcNameElmt = pMapping->FirstChildElement(
"COORDS");
132 "Function '" +
m_funcName +
"' not defined.");
135 m_fields[0]->GetCoords(coords[0], coords[1], coords[2]);
137 std::string s_FieldStr;
140 for (
int i = 0; i < 3; i++)
142 s_FieldStr = fieldNames[i];
151 "3DH1D does not support mapping in the z-direction.");
163 m_fields[0]->GetCoords(coords[0], coords[1], coords[2]);
164 for (
int i = 0; i < 3; i++)
175 std::string velFieldNames[3] = {
"vx",
"vy",
"vz"};
176 const TiXmlElement *velFuncNameElmt = pMapping->FirstChildElement(
"VEL");
183 std::string s_FieldStr;
186 for (
int i = 0; i < 3; i++)
188 s_FieldStr = velFieldNames[i];
197 "3DH1D does not support mapping in the z-direction.");
209 for (
int i = 0; i < 3; i++)
220 for (
int i = 0; i < nvel; i++)
223 for (
int j = 0; j < nvel; j++)
244 TiXmlElement *vMapping =
nullptr;
246 if (
m_session->DefinesElement(
"Nektar/Mapping"))
248 vMapping =
m_session->GetElement(
"Nektar/Mapping");
270 TiXmlElement *vMapping =
nullptr;
272 if (pSession->DefinesElement(
"Nektar/Mapping"))
274 vMapping = pSession->GetElement(
"Nektar/Mapping");
275 vType = vMapping->Attribute(
"TYPE");
278 vMapping, pSession->GetTimeLevel());
282 vType =
"Translation";
303 const std::string &outname)
308 fieldMetaDataMap[
"MappingCartesianVel"] = std::string(
"False");
312 fieldMetaDataMap[
"MappingType"] = std::string(
"Expression");
313 fieldMetaDataMap[
"MappingExpression"] =
m_funcName;
321 int expdim =
m_fields[0]->GetGraph()->GetMeshDimension();
322 std::string fieldNames[3] = {
"x",
"y",
"z"};
323 std::string velFieldNames[3] = {
"vx",
"vy",
"vz"};
325 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef =
327 std::vector<std::vector<NekDouble>> FieldData(FieldDef.size());
329 int ncoeffs =
m_fields[0]->GetNcoeffs();
332 bool wavespace =
m_fields[0]->GetWaveSpace();
335 for (
int j = 0; j < expdim; ++j)
339 for (
int i = 0; i < FieldDef.size(); ++i)
342 FieldDef[i]->m_fields.push_back(fieldNames[j]);
343 m_fields[0]->AppendFieldData(FieldDef[i], FieldData[i],
351 for (
int j = 0; j < expdim; ++j)
355 for (
int i = 0; i < FieldDef.size(); ++i)
358 FieldDef[i]->m_fields.push_back(velFieldNames[j]);
359 m_fields[0]->AppendFieldData(FieldDef[i], FieldData[i],
365 std::string outfile = outname;
366 outfile.erase(outfile.end() - 4, outfile.end());
369 m_fld->Write(outfile, FieldDef, FieldData, fieldMetaDataMap);
372 fieldMetaDataMap[
"MappingType"] = std::string(
"File");
373 fieldMetaDataMap[
"FileName"] = outfile;
375 m_fields[0]->SetWaveSpace(wavespace);
385 ASSERTL0(pSession->DefinesFunction(pFunctionName),
386 "Function '" + pFunctionName +
"' does not exist.");
389 pSession->GetFunction(pFunctionName, pFieldName);
395 ffunc->Evaluate(x0, x1, x2, pTime, pArray);
404 ASSERTL0(pSession->DefinesFunction(pFunctionName),
405 "Function '" + pFunctionName +
"' does not exist.");
407 unsigned int nq = pFields[0]->GetNpoints();
408 if (pArray.size() != nq)
414 vType = pSession->GetFunctionType(pFunctionName, pFieldName);
421 pFields[0]->GetCoords(x0, x1, x2);
423 pSession->GetFunction(pFunctionName, pFieldName);
425 ffunc->Evaluate(x0, x1, x2, pTime, pArray);
429 std::string filename =
430 pSession->GetFunctionFilename(pFunctionName, pFieldName);
432 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
433 std::vector<std::vector<NekDouble>> FieldData;
439 fld->Import(filename, FieldDef, FieldData);
442 for (
int i = 0; i < FieldDef.size(); ++i)
444 for (
int j = 0; j < FieldDef[i]->m_fields.size(); ++j)
446 if (FieldDef[i]->
m_fields[j] == pFieldName)
454 pFields[0]->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
460 std::cout <<
"Field " + pFieldName +
" not found." << std::endl;
463 pFields[0]->BwdTrans(vCoeffs, pArray);
481 if (inarray == outarray)
483 int physTot =
m_fields[0]->GetTotPoints();
486 for (
int i = 0; i < nvel; i++)
512 if (inarray == outarray)
514 int physTot =
m_fields[0]->GetTotPoints();
517 for (
int i = 0; i < nvel; i++)
543 if (inarray == outarray)
545 int physTot =
m_fields[0]->GetTotPoints();
548 for (
int i = 0; i < nvel; i++)
574 if (inarray == outarray)
576 int physTot =
m_fields[0]->GetTotPoints();
579 for (
int i = 0; i < nvel; i++)
604 if (inarray == outarray)
606 int physTot =
m_fields[0]->GetTotPoints();
609 for (
int i = 0; i < nvel; i++)
634 if (inarray == outarray)
636 int physTot =
m_fields[0]->GetTotPoints();
639 for (
int i = 0; i < nvel; i++)
655 int physTot =
m_fields[0]->GetTotPoints();
668 int physTot =
m_fields[0]->GetTotPoints();
681 int physTot =
m_fields[0]->GetTotPoints();
687 bool wavespace =
m_fields[0]->GetWaveSpace();
699 Vmath::Vvtvp(physTot, inarray[i], 1, wk, 1, outarray, 1, outarray,
702 m_fields[0]->SetWaveSpace(wavespace);
709 int physTot =
m_fields[0]->GetTotPoints();
716 for (
int i = 0; i < nvel; i++)
719 for (
int j = 0; j < nvel; j++)
721 Vmath::Vvtvp(physTot, g[i * nvel + j], 1, inarray[j], 1,
722 outarray[i], 1, outarray[i], 1);
730 int physTot =
m_fields[0]->GetTotPoints();
737 for (
int i = 0; i < nvel; i++)
740 for (
int j = 0; j < nvel; j++)
742 Vmath::Vvtvp(physTot, g[i * nvel + j], 1, inarray[j], 1,
743 outarray[i], 1, outarray[i], 1);
751 int physTot =
m_fields[0]->GetTotPoints();
757 bool wavespace =
m_fields[0]->GetWaveSpace();
766 Vmath::Vmul(physTot, Jac, 1, inarray[i], 1, wk, 1);
769 Vmath::Vadd(physTot, wk, 1, outarray, 1, outarray, 1);
771 Vmath::Vdiv(physTot, outarray, 1, Jac, 1, outarray, 1);
773 m_fields[0]->SetWaveSpace(wavespace);
780 int physTot =
m_fields[0]->GetTotPoints();
786 bool wavespace =
m_fields[0]->GetWaveSpace();
791 for (
int i = 0; i < nvel; i++)
796 m_wk2[i * nvel + 1]);
803 for (
int k = 0; k < nvel; k++)
806 m_wk1[i * nvel + k], 1);
810 for (
int i = 0; i < nvel; i++)
812 for (
int k = 0; k < nvel; k++)
814 tmp[k] =
m_wk1[i * nvel + k];
817 for (
int j = 0; j < nvel; j++)
828 for (
int i = 0; i < nvel; i++)
831 for (
int j = 0; j < nvel; j++)
844 for (
int i = 0; i < nvel; i++)
846 for (
int p = 0;
p < nvel;
p++)
851 for (
int j = 0; j < nvel; j++)
859 for (
int j = 0; j < nvel; j++)
861 for (
int p = 0;
p < nvel;
p++)
866 for (
int i = 0; i < nvel; i++)
874 m_fields[0]->SetWaveSpace(wavespace);
880 int physTot =
m_fields[0]->GetTotPoints();
886 for (
int i = 0; i < nvel * nvel * nvel; i++)
892 bool wavespace =
m_fields[0]->GetWaveSpace();
897 for (
int i = 0; i < nvel; i++)
902 m_wk2[i * nvel + 1]);
909 for (
int j = 0; j < nvel; j++)
912 m_wk1[i * nvel + j], 1);
921 for (
int i = 0; i < nvel; i++)
923 for (
int j = 0; j < nvel; j++)
929 outarray[i * nvel * nvel + j * nvel + 0],
930 outarray[i * nvel * nvel + j * nvel + 1]);
936 outarray[i * nvel * nvel + j * nvel + 0],
937 outarray[i * nvel * nvel + j * nvel + 1],
938 outarray[i * nvel * nvel + j * nvel + 2]);
944 for (
int i = 0; i < nvel; i++)
946 for (
int p = 0;
p < nvel;
p++)
951 for (
int j = 0; j < nvel; j++)
953 for (
int k = 0; k < nvel; k++)
955 Vmath::Vsub(physTot, outarray[i * nvel * nvel + j * nvel + k],
956 1,
m_wk2[j * nvel + k], 1,
957 outarray[i * nvel * nvel + j * nvel + k], 1);
963 for (
int j = 0; j < nvel; j++)
965 for (
int p = 0;
p < nvel;
p++)
970 for (
int i = 0; i < nvel; i++)
972 for (
int k = 0; k < nvel; k++)
974 Vmath::Vadd(physTot, outarray[i * nvel * nvel + j * nvel + k],
975 1,
m_wk2[i * nvel + k], 1,
976 outarray[i * nvel * nvel + j * nvel + k], 1);
982 m_fields[0]->SetWaveSpace(wavespace);
987 const bool generalized)
989 int physTot =
m_fields[0]->GetTotPoints();
993 bool wavespace =
m_fields[0]->GetWaveSpace();
1006 for (
int i = 0; i < nvel; ++i)
1008 for (
int k = 0; k < nvel; ++k)
1011 for (
int j = 0; j < nvel; ++j)
1013 tmp[j] = ddU[i * nvel * nvel + j * nvel + k];
1016 for (
int p = 0;
p < nvel; ++
p)
1019 ddU[i * nvel * nvel +
p * nvel + k], 1);
1024 for (
int i = 0; i < nvel; ++i)
1027 for (
int k = 0; k < nvel; ++k)
1030 ddU[k * nvel * nvel + i * nvel + k], 1, outarray[i],
1033 ddU[i * nvel * nvel + k * nvel + k], 1, outarray[i],
1040 m_fields[0]->CurlCurl(inarray, outarray);
1044 m_fields[0]->SetWaveSpace(wavespace);
1049 int physTot =
m_fields[0]->GetTotPoints();
1052 int nbnds =
m_fields[0]->GetBndConditions().size();
1061 for (
int i = 0; i < nfields; i++)
1069 for (
int i = 0; i < nvel; i++)
1082 for (
int dir = 0; dir < 3; dir++)
1089 for (
int n = 0; n < nbnds; ++n)
1092 for (
int i = 0; i < nfields; ++i)
1094 BndConds =
m_fields[i]->GetBndConditions();
1095 BndExp =
m_fields[i]->GetBndCondExpansions();
1096 if (BndConds[n]->GetBoundaryConditionType() ==
1099 isDirichlet[i] =
true;
1104 for (
int j = 0; j < nvel; ++j)
1107 ->GetBndConditions()[n]
1108 ->GetBoundaryConditionType() ==
1110 "Mapping only supported when all velocity "
1111 "components have the same type of boundary "
1117 "Time-dependent Dirichlet boundary conditions not "
1118 "supported with mapping yet.");
1122 std::static_pointer_cast<
1124 ->m_dirichletCondition;
1126 condition.
Evaluate(coords[0], coords[1], coords[2], time,
1131 isDirichlet[i] =
false;
1137 for (
int i = 0; i < nvel; ++i)
1142 for (
int i = 0; i < nvel; ++i)
1149 for (
int i = 0; i < nfields; ++i)
1151 BndConds =
m_fields[i]->GetBndConditions();
1152 BndExp =
m_fields[i]->GetBndCondExpansions();
1154 if (BndConds[n]->GetUserDefined() ==
"" ||
1155 BndConds[n]->GetUserDefined() ==
"MovingBody")
1157 m_fields[i]->ExtractPhysToBnd(n, values[i],
1158 BndExp[n]->UpdatePhys());
1161 if ((i < nvel) && BndConds[n]->GetUserDefined() ==
"MovingBody")
1165 BndExp[n]->GetTotPoints());
1166 m_fields[i]->ExtractPhysToBnd(n, coordVel[i], coordVelBnd);
1169 Vmath::Vadd(BndExp[n]->GetTotPoints(), coordVelBnd, 1,
1170 BndExp[n]->UpdatePhys(), 1,
1171 BndExp[n]->UpdatePhys(), 1);
1178 for (
int i = 0; i <
m_fields.size(); ++i)
1181 BndConds =
m_fields[i]->GetBndConditions();
1182 BndExp =
m_fields[i]->GetBndCondExpansions();
1184 for (
int n = 0; n < BndConds.size(); ++n)
1186 if (BndConds[n]->GetBoundaryConditionType() ==
1189 if (BndConds[n]->GetUserDefined() ==
"" ||
1190 BndConds[n]->GetUserDefined() ==
"MovingBody")
1194 BndExp[n]->SetWaveSpace(
false);
1197 BndExp[n]->FwdTransBndConstrained(
1198 BndExp[n]->GetPhys(), BndExp[n]->UpdateCoeffs());
1211 std::string s_FieldStr;
1212 std::string fieldNames[3] = {
"x",
"y",
"z"};
1213 std::string velFieldNames[3] = {
"vx",
"vy",
"vz"};
1217 for (
int i = 0; i < 3; i++)
1219 s_FieldStr = fieldNames[i];
1228 "3DH1D does not support mapping in the z-direction.");
1231 s_FieldStr = velFieldNames[i];
1240 "3DH1D does not support mapping in the z-direction.");
1247 int physTot =
m_fields[0]->GetTotPoints();
1250 for (
int i = 0; i < 3; i++)
1255 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.