41 namespace GlobalMapping
71 const TiXmlElement *pMapping)
78 "Mapping X = X(x,y), Y = Y(x,y) needs 2 velocity components.");
85 int physTot =
m_fields[0]->GetTotPoints();
91 outarray[0], 1, outarray[0],1);
97 outarray[1], 1, outarray[1],1);
110 int physTot =
m_fields[0]->GetTotPoints();
142 int physTot =
m_fields[0]->GetTotPoints();
174 int physTot =
m_fields[0]->GetTotPoints();
180 outarray[0], 1, outarray[0],1);
186 outarray[1], 1, outarray[1],1);
198 int physTot =
m_fields[0]->GetTotPoints();
205 int physTot =
m_fields[0]->GetTotPoints();
208 for (
int i=0; i<nvel*nvel; i++)
227 outarray[2*nvel+2], 1);
234 int physTot =
m_fields[0]->GetTotPoints();
237 for (
int i=0; i<nvel*nvel; i++)
252 outarray[0*nvel+0], 1);
257 outarray[1*nvel+1], 1);
263 outarray[0*nvel+1], 1);
264 Vmath::Vcopy(physTot, outarray[0*nvel+1], 1, outarray[1*nvel+0], 1);
270 outarray[2*nvel+2], 1);
278 int physTot =
m_fields[0]->GetTotPoints();
281 for (
int i = 0; i< nvel; i++)
283 for (
int j = 0; j< nvel; j++)
293 outarray[0*nvel+0],1);
295 outarray[0*nvel+0],1,outarray[0*nvel+0],1);
299 outarray[0*nvel+1],1);
301 outarray[0*nvel+1],1,outarray[0*nvel+1],1);
305 outarray[1*nvel+0],1);
307 outarray[1*nvel+0],1,outarray[1*nvel+0],1);
311 outarray[1*nvel+1],1);
313 outarray[1*nvel+1],1,outarray[1*nvel+1],1);
321 int physTot =
m_fields[0]->GetTotPoints();
324 for (
int i = 0; i< nvel; i++)
326 for (
int j = 0; j< nvel; j++)
336 outarray[0*nvel+0],1);
338 outarray[0*nvel+0],1,outarray[0*nvel+0],1);
342 outarray[0*nvel+1],1);
344 outarray[0*nvel+1],1,outarray[0*nvel+1],1);
348 outarray[1*nvel+0],1);
350 outarray[1*nvel+0],1,outarray[1*nvel+0],1);
354 outarray[1*nvel+1],1);
356 outarray[1*nvel+1],1,outarray[1*nvel+1],1);
361 int phystot =
m_fields[0]->GetTotPoints();
369 bool waveSpace =
m_fields[0]->GetWaveSpace();
389 m_fields[0]->SetWaveSpace(waveSpace);
394 int physTot =
m_fields[0]->GetTotPoints();
423 int physTot =
m_fields[0]->GetTotPoints();
432 for (
int i = 0; i < gradG.num_elements(); i++)
437 for (
int i = 0; i < G.num_elements(); i++)
447 bool waveSpace =
m_fields[0]->GetWaveSpace();
451 for (
int i = 0; i <2; i++)
453 for(
int j=0; j<2; j++)
455 for(
int k=0; k<2; k++)
458 G[i*nvel+j],gradG[i*2*2 + j*2 + k]);
464 for (
int p = 0;
p <2;
p++)
466 for (
int j = 0; j < 2; j++)
468 for (
int k = 0; k < 2; k++)
471 gradG[
p*2*2 + k*2 + j], 1,
472 tmp[
p*2*2 + j*2 + k], 1);
474 gradG[j*2*2 + k*2 +
p], 1,
475 tmp[
p*2*2 + j*2 + k], 1);
477 tmp[
p*2*2 + j*2 + k], 1);
484 for (
int i = 0; i <2; i++)
486 for (
int j = 0; j < 2; j++)
488 for (
int k = 0; k <= j; k++)
491 for (
int p = 0;
p < 2;
p++)
494 tmp[
p*2*2 + j*2 + k], 1,
503 m_fields[0]->SetWaveSpace(waveSpace);
Array< OneD, Array< OneD, NekDouble > > m_GeometricInfo
Array with metric terms of the mapping.
virtual GLOBAL_MAPPING_EXPORT void v_ContravarToCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Array< OneD, Array< OneD, NekDouble > > m_coords
Array with the Cartesian coordinates.
#define ASSERTL0(condition, msg)
MappingFactory & GetMappingFactory()
Declaration of the mapping factory singleton.
virtual GLOBAL_MAPPING_EXPORT void v_GetJacobian(Array< OneD, NekDouble > &outarray)
virtual GLOBAL_MAPPING_EXPORT void v_GetMetricTensor(Array< OneD, Array< OneD, NekDouble > > &outarray)
GLOBAL_MAPPING_EXPORT void GetMetricTensor(Array< OneD, Array< OneD, NekDouble > > &outarray)
Get the metric tensor .
Array< OneD, Array< OneD, NekDouble > > m_metricTensor
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
static GLOBAL_MAPPING_EXPORT MappingSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pMapping)
Creates an instance of this class.
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.
virtual GLOBAL_MAPPING_EXPORT void v_ContravarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
GLOBAL_MAPPING_EXPORT void GetJacobian(Array< OneD, NekDouble > &outarray)
Get the Jacobian of the transformation.
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
int m_nConvectiveFields
Number of velocity components.
void Vabs(int n, const T *x, const int incx, T *y, const int incy)
vabs: y = |x|
MappingXYofXY(const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields)
virtual GLOBAL_MAPPING_EXPORT void v_CovarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Array< OneD, MultiRegions::ExpListSharedPtr > m_fields
virtual GLOBAL_MAPPING_EXPORT void v_GetInvMetricTensor(Array< OneD, Array< OneD, NekDouble > > &outarray)
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
void CalculateMetricTensor()
virtual GLOBAL_MAPPING_EXPORT void v_InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pMapping)
static std::string className
Name of the class.
bool m_constantJacobian
Flag defining if the Jacobian is constant.
void Neg(int n, T *x, const int incx)
Negate x = -x.
virtual GLOBAL_MAPPING_EXPORT void v_ApplyChristoffelCovar(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
virtual GLOBAL_MAPPING_EXPORT void v_CovarToCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
void Sadd(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Add vector y = alpha + x.
virtual GLOBAL_MAPPING_EXPORT void v_ApplyChristoffelContravar(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
Base class for mapping to be applied to the coordinate system.
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.
MultiRegions::Direction const DirCartesianMap[]
void CalculateChristoffel()
void Vvtvm(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)
vvtvm (vector times vector plus vector): z = w*x - y
virtual GLOBAL_MAPPING_EXPORT void v_InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pMapping)
Array< OneD, Array< OneD, NekDouble > > m_Christoffel
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
virtual GLOBAL_MAPPING_EXPORT void v_UpdateGeomInfo()
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 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.
GLOBAL_MAPPING_EXPORT void GetInvMetricTensor(Array< OneD, Array< OneD, NekDouble > > &outarray)
Get the inverse of metric tensor .
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, tDescription pDesc="")
Register a class with the factory.