41 string NavierStokesCFEAxisym::className =
 
   43         "NavierStokesCFEAxisym", NavierStokesCFEAxisym::create,
 
   44         "Axisymmetric NavierStokes equations in conservative variables.");
 
   46 NavierStokesCFEAxisym::NavierStokesCFEAxisym(
 
   66     for (
int i = 0; i < nVariables; ++i)
 
   79     int nvariables = inarray.size();
 
   83     for (
int i = 0; i < nvariables; ++i)
 
  101     int nPts       = physfield[0].size();
 
  106     for (
int i = 0; i < 3; i++)
 
  110     m_fields[0]->GetCoords(coords[0], coords[1], coords[2]);
 
  111     for (
int i = 0; i < nPts; ++i)
 
  119             invR[i] = 1.0 / coords[0][i];
 
  134                                        thermalConductivity);
 
  137     Vmath::Vadd(nPts, derivativesO1[0][0], 1, derivativesO1[1][1], 1, divVel,
 
  139     Vmath::Vvtvp(nPts, physfield[0], 1, invR, 1, divVel, 1, divVel, 1);
 
  153     for (i = 0; i < 2; ++i)
 
  155         for (j = i; j < 2; ++j)
 
  157             Vmath::Vadd(nPts, derivativesO1[i][j], 1, derivativesO1[j][i], 1,
 
  158                         viscousTensor[i][j + 1], 1);
 
  160             Vmath::Vmul(nPts, mu, 1, viscousTensor[i][j + 1], 1,
 
  161                         viscousTensor[i][j + 1], 1);
 
  166                 Vmath::Vadd(nPts, viscousTensor[i][j + 1], 1, divVel, 1,
 
  167                             viscousTensor[i][j + 1], 1);
 
  173                              viscousTensor[j][i + 1], 1);
 
  181         Vmath::Vmul(nPts, physfield[0], 1, invR, 1, viscousTensor[2][3], 1);
 
  182         Vmath::Smul(nPts, 2.0, viscousTensor[2][3], 1, viscousTensor[2][3], 1);
 
  183         Vmath::Vmul(nPts, mu, 1, viscousTensor[2][3], 1, viscousTensor[2][3],
 
  185         Vmath::Vadd(nPts, viscousTensor[2][3], 1, divVel, 1,
 
  186                     viscousTensor[2][3], 1);
 
  189         Vmath::Vmul(nPts, physfield[2], 1, invR, 1, viscousTensor[2][1], 1);
 
  190         Vmath::Smul(nPts, -1.0, viscousTensor[2][1], 1, viscousTensor[2][1], 1);
 
  191         Vmath::Vadd(nPts, derivativesO1[0][2], 1, viscousTensor[2][1], 1,
 
  192                     viscousTensor[2][1], 1);
 
  193         Vmath::Vmul(nPts, mu, 1, viscousTensor[2][1], 1, viscousTensor[2][1],
 
  195         Vmath::Vcopy(nPts, viscousTensor[2][1], 1, viscousTensor[0][3], 1);
 
  198         Vmath::Vmul(nPts, mu, 1, derivativesO1[1][2], 1, viscousTensor[2][2],
 
  200         Vmath::Vcopy(nPts, viscousTensor[2][2], 1, viscousTensor[1][3], 1);
 
  210             Vmath::Vvtvp(nPts, physfield[j], 1, viscousTensor[i][j + 1], 1,
 
  235         Vmath::Vsub(nPts, viscousTensor[0][1], 1, viscousTensor[2][3], 1,
 
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
 
virtual void v_InitObject(bool DeclareFields=true) override
Initialization object for CompressibleFlowSystem class.
 
virtual void v_DoDiffusion(const Array< OneD, Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const Array< OneD, Array< OneD, NekDouble >> &pFwd, const Array< OneD, Array< OneD, NekDouble >> &pBwd) override
 
Array< OneD, Array< OneD, NekDouble > > m_viscousForcing
 
virtual ~NavierStokesCFEAxisym()
 
virtual void v_GetViscousFluxVector(const Array< OneD, const Array< OneD, NekDouble >> &physfield, TensorOfArray3D< NekDouble > &derivatives, TensorOfArray3D< NekDouble > &viscousTensor) override
Return the flux vector for the LDG diffusion problem.
 
virtual void v_InitObject(bool DeclareField=true) override
Initialization object for CompressibleFlowSystem class.
 
virtual void v_DoDiffusion(const Array< OneD, Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const Array< OneD, Array< OneD, NekDouble >> &pFwd, const Array< OneD, Array< OneD, NekDouble >> &pBwd) override
 
void GetViscosityAndThermalCondFromTemp(const Array< OneD, NekDouble > &temperature, Array< OneD, NekDouble > &mu, Array< OneD, NekDouble > &thermalCond)
Update viscosity todo: add artificial viscosity here.
 
int m_spacedim
Spatial dimension (>= expansion dim).
 
Array< OneD, MultiRegions::ExpListSharedPtr > m_fields
Array holding all dependent variables.
 
SOLVER_UTILS_EXPORT int GetNpoints()
 
Base class for unsteady solvers.
 
std::shared_ptr< SessionReader > SessionReaderSharedPtr
 
static const NekDouble kNekZeroTol
 
EquationSystemFactory & GetEquationSystemFactory()
 
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
 
The above copyright notice and this permission notice shall be included.
 
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 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.