42 namespace GlobalMapping
 
   72         const TiXmlElement                                *pMapping)
 
   79             "General Mapping needs at least 2 velocity components.");   
 
   86     int physTot = 
m_fields[0]->GetTotPoints();
 
   89     for (
int i=0; i<nvel; i++)
 
   92         for (
int j=0; j<nvel; j++)
 
  107     int physTot = 
m_fields[0]->GetTotPoints();
 
  110     for (
int i=0; i<nvel; i++)
 
  113         for (
int j=0; j<nvel; j++)
 
  128     int physTot = 
m_fields[0]->GetTotPoints();
 
  131     for (
int i=0; i<nvel; i++)
 
  134         for (
int j=0; j<nvel; j++)
 
  149     int physTot = 
m_fields[0]->GetTotPoints();
 
  152     for (
int i=0; i<nvel; i++)
 
  155         for (
int j=0; j<nvel; j++)
 
  169     int physTot = 
m_fields[0]->GetTotPoints();
 
  176     int physTot = 
m_fields[0]->GetTotPoints();
 
  179     for (
int i=0; i<nvel; i++)
 
  181         for (
int j=0; j<nvel; j++)
 
  185                                     outarray[i*nvel+j], 1);
 
  194     int physTot = 
m_fields[0]->GetTotPoints();
 
  197     for (
int i=0; i<nvel; i++)
 
  199         for (
int j=0; j<nvel; j++)
 
  203                                     outarray[i*nvel+j], 1);
 
  213     int physTot = 
m_fields[0]->GetTotPoints();
 
  217     for (
int i = 0; i <nvel; i++)
 
  219         for (
int k = 0; k < nvel; k++)            
 
  222             for (
int j = 0; j < nvel; j++)
 
  226                                     outarray[i*nvel+k], 1,
 
  227                                     outarray[i*nvel+k], 1);
 
  238     int physTot = 
m_fields[0]->GetTotPoints();
 
  242     for (
int j = 0; j < nvel; j++)
 
  244         for (
int k = 0; k < nvel; k++)
 
  247             for (
int i = 0; i <nvel; i++)
 
  251                                     outarray[j*nvel+k], 1,
 
  252                                     outarray[j*nvel+k], 1);
 
  266     int physTot = 
m_fields[0]->GetTotPoints();
 
  270     bool wavespace = 
m_fields[0]->GetWaveSpace();
 
  288     for( 
int i = 0; i<nvel; i++)
 
  290         for( 
int j = 0; j<nvel; j++)
 
  305     for( 
int i = 0; i<nvel; i++)
 
  307         for( 
int j = 0; j<nvel; j++)
 
  309             for( 
int k = 0; k<nvel; k++)
 
  312                                         m_deriv[k*nvel+j], 1,
 
  323             Vmath::Fill (physTot,  1.0, m_invMetricTensor[0], 1);
 
  327                                         m_invMetricTensor[0*nvel+0], 1);
 
  329                                         m_invMetricTensor[1*nvel+0], 1);
 
  331                                         m_invMetricTensor[0*nvel+1], 1);
 
  333                                         m_invMetricTensor[1*nvel+1], 1);
 
  337             int a, b, c, d, e, i, j;
 
  340             for (i = 0; i < nvel; ++i)
 
  342                 for (j = 0; j < nvel; ++j)
 
  344                     a = ((i+1)%nvel) * nvel + ((j+1)%nvel);
 
  345                     b = ((i+1)%nvel) * nvel + ((j+2)%nvel);
 
  346                     c = ((i+2)%nvel) * nvel + ((j+1)%nvel);
 
  347                     d = ((i+2)%nvel) * nvel + ((j+2)%nvel);
 
  352                                             m_invMetricTensor[e], 1);
 
  355                                             m_invMetricTensor[e], 1,
 
  356                                             m_invMetricTensor[e], 1);
 
  365     for (
int i = 0; i < nvel; ++i)
 
  368                              m_invMetricTensor[i*nvel], 1,
 
  373     for (
int i = 0; i < nvel*nvel; ++i)
 
  376                                 m_invMetricTensor[i], 1);
 
  384     for (
int i = 0; i < nvel; ++i)
 
  386         for (
int j = 0; j < nvel; ++j)
 
  388             for (
int k = 0; k < nvel; ++k)
 
  391                                       m_invMetricTensor[j*nvel+k], 1,
 
  392                                       m_invDeriv[i*nvel+j],        1,
 
  393                                       m_invDeriv[i*nvel+j],        1);
 
  399     m_fields[0]->SetWaveSpace(wavespace);
 
  404     int physTot = 
m_fields[0]->GetTotPoints();
 
  411     for (
int i = 0; i < gradG.num_elements(); i++)
 
  419     bool waveSpace = 
m_fields[0]->GetWaveSpace();
 
  423     for (
int i = 0; i <nvel; i++)
 
  425         for(
int j=0; j<nvel; j++)
 
  427             for(
int k=0; k<nvel; k++)
 
  431                                         gradG[i*nvel*nvel + j*nvel + k]);
 
  437     for (
int p = 0; p <nvel; p++)
 
  439         for (
int j = 0; j < nvel; j++)
 
  441             for (
int k = 0; k < nvel; k++)
 
  443                 Vmath::Vadd(physTot, gradG[p*nvel*nvel + j*nvel + k], 1,
 
  444                                      gradG[p*nvel*nvel + k*nvel + j], 1,
 
  445                                      tmp[p*nvel*nvel + j*nvel + k], 1);
 
  446                 Vmath::Vsub(physTot, tmp[p*nvel*nvel + j*nvel + k], 1,
 
  447                                      gradG[j*nvel*nvel + k*nvel + p], 1,
 
  448                                      tmp[p*nvel*nvel + j*nvel + k], 1);
 
  449                 Vmath::Smul(physTot, 0.5, tmp[p*nvel*nvel + j*nvel + k], 1,
 
  450                                            tmp[p*nvel*nvel + j*nvel + k], 1);
 
  456     for (
int i = 0; i <nvel; i++)
 
  458         for (
int j = 0; j < nvel; j++)
 
  460             for (
int k = 0; k < nvel; k++)
 
  462                 for (
int p = 0; p < nvel; p++)
 
  465                                     tmp[p*nvel*nvel + j*nvel + k], 1,
 
  473     m_fields[0]->SetWaveSpace(waveSpace);
 
Array< OneD, Array< OneD, NekDouble > > m_invMetricTensor
 
Array< OneD, Array< OneD, NekDouble > > m_coords
Array with the Cartesian coordinates. 
 
#define ASSERTL0(condition, msg)
 
virtual GLOBAL_MAPPING_EXPORT void v_CovarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
MappingFactory & GetMappingFactory()
Declaration of the mapping factory singleton. 
 
void Vsqrt(int n, const T *x, const int incx, T *y, const int incy)
sqrt y = sqrt(x) 
 
virtual GLOBAL_MAPPING_EXPORT void v_ContravarFromCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
Array< OneD, Array< OneD, NekDouble > > m_invDeriv
 
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value. 
 
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 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_ApplyChristoffelCovar(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
 
int m_nConvectiveFields
Number of velocity components. 
 
virtual GLOBAL_MAPPING_EXPORT void v_GetInvMetricTensor(Array< OneD, Array< OneD, NekDouble > > &outarray)
 
virtual GLOBAL_MAPPING_EXPORT void v_InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pMapping)
 
virtual GLOBAL_MAPPING_EXPORT void v_ContravarToCartesian(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
virtual GLOBAL_MAPPING_EXPORT void v_ApplyChristoffelContravar(const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
 
Array< OneD, MultiRegions::ExpListSharedPtr > m_fields
 
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y. 
 
Array< OneD, Array< OneD, NekDouble > > m_deriv
 
static std::string className
Name of the class. 
 
Array< OneD, NekDouble > m_jac
 
void CalculateChristoffel()
 
virtual GLOBAL_MAPPING_EXPORT void v_InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pMapping)
 
void CalculateMetricTerms()
 
bool m_constantJacobian
Flag defining if the Jacobian is constant. 
 
virtual GLOBAL_MAPPING_EXPORT void v_GetMetricTensor(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)
 
Array< OneD, Array< OneD, NekDouble > > m_Christoffel
 
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. 
 
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. 
 
MultiRegions::Direction const DirCartesianMap[]
 
MappingGeneral(const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields)
 
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_GetJacobian(Array< OneD, NekDouble > &outarray)
 
Array< OneD, Array< OneD, NekDouble > > m_metricTensor
 
virtual GLOBAL_MAPPING_EXPORT void v_UpdateGeomInfo()
 
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
 
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. 
 
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, tDescription pDesc="")
Register a class with the factory.