83 int physTot =
m_fields[0]->GetTotPoints();
84 int nvel =
m_fields.num_elements() - 1;
88 for (cnt = n = 0; n <
m_PBndConds.num_elements(); ++n)
112 for (
int i = 0; i < nvel; i++)
120 for (
int i = 0; i < nvel; ++i)
126 m_fields[0]->HomogeneousBwdTrans(gradP[i], wk[i]);
138 for (
int i = 0; i < nvel; ++i)
141 physTot, correction[i], 1, Jac, 1, correction[i], 1);
144 for (
int i = 0; i < nvel; ++i)
156 for (
int i = 0; i < nvel; ++i)
158 m_pressure->HomogeneousFwdTrans(correction[i], correction[i]);
162 for (
int i = 0; i < nvel; ++i)
165 physTot, gradP[i], 1, correction[i], 1, correction[i], 1);
172 for (n = cnt = 0; n <
m_PBndConds.num_elements(); ++n)
175 if (boost::iequals(
m_PBndConds[n]->GetUserDefined(),
"H"))
177 m_fields[0]->GetBndElmtExpansion(n, BndElmtExp);
183 n, correction[i], correctionElmt[i]);
191 n, correctionElmt[i], BndValues[i]);
193 m_PBndExp[n]->NormVectorIProductWRTBase(BndValues, Vals);
201 for (cnt = n = 0; n <
m_PBndConds.num_elements(); ++n)
230 int physTot =
m_fields[0]->GetTotPoints();
231 int nvel =
m_fields.num_elements() - 1;
255 for (
int i = 0; i < nvel; i++)
266 m_fields[0]->HomogeneousBwdTrans(N[i], N_new[i]);
272 Vmath::Vmul(physTot, Jac, 1, N_new[i], 1, N_new[i], 1);
275 m_fields[0]->HomogeneousFwdTrans(N_new[i], N_new[i]);
280 for (i = 0; i < nvel; i++)
284 m_fields[0]->HomogeneousBwdTrans(fields[i], fields_new[i]);
299 m_mapping->DotGradJacobian(fields_new, tmp);
302 bool wavespace =
m_fields[0]->GetWaveSpace();
308 Vmath::Vadd(physTot, Q_field[i], 1, tmp2, 1, Q_field[i], 1);
310 m_fields[0]->SetWaveSpace(wavespace);
316 Vmath::Vmul(physTot, Jac, 1, fields_new[i], 1, fields_new[i], 1);
317 Vmath::Vmul(physTot, Jac, 1, Q_field[i], 1, Q_field[i], 1);
320 m_fields[0]->HomogeneousFwdTrans(fields_new[i], fields_new[i]);
321 m_fields[0]->HomogeneousFwdTrans(Q_field[i], Q_field[i]);
326 for (n = cnt = 0; n <
m_PBndConds.num_elements(); ++n)
329 if (boost::iequals(
m_PBndConds[n]->GetUserDefined(),
"H"))
331 m_fields[0]->GetBndElmtExpansion(n, BndElmtExp);
332 int nq = BndElmtExp->GetTotPoints();
338 n, fields_new[i], Velocity[i]);
340 n, N_new[i], Advection[i]);
341 m_fields[0]->ExtractPhysToBndElmt(n, Q_field[i], Q[i]);
358 m_fields[0]->ExtractElmtToBndPhys(n, Q[i], BndValues[i]);
360 m_PBndExp[n]->NormVectorIProductWRTBase(BndValues, Pvals);
365 n, Velocity[i], BndValues[i]);
367 m_PBndExp[n]->NormVectorIProductWRTBase(BndValues, Uvals);
ExtrapolateFactory & GetExtrapolateFactory()
boost::shared_ptr< Advection > AdvectionSharedPtr
A shared pointer to an Advection object.
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.
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
boost::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
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 Vcopy(int n, const T *x, const int incx, T *y, const int incy)
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.
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.
Defines a callback function which evaluates the flux vector.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, tDescription pDesc="")
Register a class with the factory.