41 string NavierStokesCFEAxisym::className =
43 "NavierStokesCFEAxisym", NavierStokesCFEAxisym::create,
44 "Axisymmetric NavierStokes equations in conservative variables.");
46 NavierStokesCFEAxisym::NavierStokesCFEAxisym(
63 int nVariables =
m_fields.num_elements();
66 for (
int i = 0; i < nVariables; ++i)
79 int nvariables = inarray.num_elements();
83 for (
int i = 0; i < nvariables; ++i)
102 int nVariables =
m_fields.num_elements();
103 int nPts = physfield[0].num_elements();
108 for (
int i = 0; i < 3; i++)
112 m_fields[0]->GetCoords(coords[0], coords[1], coords[2]);
113 for (
int i = 0; i < nPts; ++i)
121 invR[i] = 1.0/coords[0][i];
137 Vmath::Vadd(nPts, derivativesO1[0][0], 1, derivativesO1[1][1], 1,
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)
158 derivativesO1[j][i], 1,
159 viscousTensor[i][j+1], 1);
162 viscousTensor[i][j+1], 1,
163 viscousTensor[i][j+1], 1);
170 viscousTensor[i][j+1], 1);
176 viscousTensor[j][i+1], 1);
185 viscousTensor[2][3], 1);
187 viscousTensor[2][3], 1);
189 viscousTensor[2][3], 1);
192 viscousTensor[2][3], 1);
196 viscousTensor[2][1], 1);
198 viscousTensor[2][1], 1);
199 Vmath::Vadd(nPts, derivativesO1[0][2], 1 , viscousTensor[2][1], 1,
200 viscousTensor[2][1], 1);
202 viscousTensor[2][1], 1);
204 viscousTensor[0][3], 1);
208 viscousTensor[2][2], 1);
210 viscousTensor[1][3], 1);
216 Vmath::Zero(nPts, viscousTensor[i][m_spacedim+1], 1);
221 viscousTensor[i][j+1], 1,
222 viscousTensor[i][m_spacedim+1], 1,
223 viscousTensor[i][m_spacedim+1], 1);
229 derivativesO1[i][m_spacedim], 1,
230 viscousTensor[i][m_spacedim+1], 1,
231 viscousTensor[i][m_spacedim+1], 1);
235 Vmath::Vmul(nPts, derivativesO1[i][m_spacedim], 1 ,
239 viscousTensor[i][m_spacedim+1], 1,
240 viscousTensor[i][m_spacedim+1], 1);
248 Vmath::Vsub(nPts, viscousTensor[0][1], 1, viscousTensor[2][3], 1,
273 Vmath::Vmul(nPts, viscousTensor[0][m_spacedim+1], 1 ,
virtual void v_InitObject()
Initialization object for CompressibleFlowSystem class.
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
Array< OneD, NekDouble > m_thermalConductivity
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
virtual void v_DoDiffusion(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd)
virtual void v_InitObject()
Initialization object for CompressibleFlowSystem class.
virtual void v_GetViscousFluxVector(const Array< OneD, Array< OneD, NekDouble > > &physfield, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &derivatives, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &viscousTensor)
Return the flux vector for the LDG diffusion problem.
static const NekDouble kNekZeroTol
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
virtual ~NavierStokesCFEAxisym()
Base class for unsteady solvers.
int m_spacedim
Spatial dimension (>= expansion dim).
EquationSystemFactory & GetEquationSystemFactory()
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.
Array< OneD, Array< OneD, NekDouble > > m_viscousForcing
void GetViscosityAndThermalCondFromTemp(const Array< OneD, NekDouble > &temperature, Array< OneD, NekDouble > &mu, Array< OneD, NekDouble > &thermalCond)
Update viscosity todo: add artificial viscosity here.
SOLVER_UTILS_EXPORT int GetNpoints()
Array< OneD, MultiRegions::ExpListSharedPtr > m_fields
Array holding all dependent variables.
Array< OneD, NekDouble > m_mu
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
virtual void v_DoDiffusion(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd)
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)
std::shared_ptr< SessionReader > SessionReaderSharedPtr
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.