42 {1.0, 0.0, 0.0}, {2.0, -1.0, 0.0}, {3.0, -3.0, 1.0}};
44 {1.0, 0.0, 0.0}, {2.0, -0.5, 0.0}, {3.0, -1.5, 1.0 / 3.0}};
59 [[maybe_unused]]
int nbnd, [[maybe_unused]]
int spacedim,
60 [[maybe_unused]]
int bnddim)
61 : m_spacedim(spacedim), m_bnddim(bnddim), m_nbnd(nbnd), m_field(pFields[0])
70 if (pSession->DefinesParameter(
"ExtrapolateOrder"))
72 m_intSteps = std::round(pSession->GetParameter(
"ExtrapolateOrder"));
75 else if (pSession->DefinesSolverInfo(
"TimeIntegrationMethod") ||
76 pSession->DefinesTimeIntScheme())
79 if (pSession->DefinesTimeIntScheme())
81 auto timeInt = pSession->GetTimeIntScheme();
82 method = timeInt.method +
"Order" + std::to_string(timeInt.order);
86 method = pSession->GetSolverInfo(
"TimeIntegrationMethod");
89 if (method ==
"IMEXOrder1")
93 else if (method ==
"IMEXOrder2")
112 if (
m_field->GetZIDs()[0] == 0)
114 npointsPlane0 =
m_BndExp.begin()->second->GetPlane(0)->GetNpoints();
123 npointsPlane0 =
m_BndExp.begin()->second->GetNpoints();
128 std::map<std::string, NekDouble> ¶ms)
147 std::vector<std::string> xyz = {
"X0",
"Y0",
"Z0"};
150 if (params.find(xyz[i]) != params.end())
167 int nlevels = array.size();
168 int dim = array[0].size();
169 int nPts = array[0][0].size();
173 ASSERTL0(nint > 0,
"nint must be > 0 when calling ExtrapolateArray.");
177 for (
int i = 0; i < dim; ++i)
180 array[nint - 1][i], 1, array[nlevels - 1][i], 1);
182 for (
int n = 0; n < nint - 1; ++n)
184 for (
int i = 0; i < dim; ++i)
187 array[n][i], 1, array[nlevels - 1][i], 1,
188 array[nlevels - 1][i], 1);
194 std::map<std::string, NekDouble> ¶ms,
208 if (params.find(
"Omega_z") != params.end())
210 NekDouble Wz2 = params[
"Omega_z"] * params[
"Omega_z"];
212 if (params.find(
"DOmega_z") != params.end())
214 dWz = params[
"DOmega_z"];
221 std::vector<std::string> vars = {
"A_x",
"A_y",
"A_z"};
224 if (params.find(vars[k]) != params.end())
226 Vmath::Sadd(npts0, -params[vars[k]], N[k], 1, N[k], 1);
234 std::map<std::string, NekDouble> ¶ms)
236 if (
m_intSteps == 0 || params.find(
"Kinvis") == params.end() ||
237 params[
"Kinvis"] <= 0. || fields.size() == 0)
254 m_field->ExtractPhysToBndElmt(
m_nbnd, fields[i], Velocity[i]);
277 int nlevels = input.size();
279 tmp = input[nlevels - 1];
280 for (
int n = nlevels - 1; n > 0; --n)
282 input[n] = input[n - 1];
289 std::map<std::string, NekDouble> ¶ms,
int npts0)
303 if (params.find(
"Omega_z") != params.end())
317 if (params.find(
"Omega_x") != params.end())
330 if (params.find(
"Omega_y") != params.end())
347 std::vector<std::string> vars = {
"U",
"V",
"W"};
350 if (params.find(vars[k]) != params.end() &&
353 Vmath::Sadd(npts0, params[vars[k]], velocities[k], 1, velocities[k],
#define ASSERTL0(condition, msg)
std::map< int, MultiRegions::ExpListSharedPtr > m_BndExp
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_viscous
MultiRegions::ExpListSharedPtr m_field
static NekDouble StifflyStable_Alpha_Coeffs[3][3]
int m_bnddim
bounday dimensionality
void InitialiseCoords(std::map< std::string, NekDouble > ¶ms)
IncBaseCondition(const LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields, Array< OneD, SpatialDomains::BoundaryConditionShPtr > cond, Array< OneD, MultiRegions::ExpListSharedPtr > exp, int nbnd, int spacedim, int bnddim)
void ExtrapolateArray(const int numCalls, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &array)
void RigidBodyVelocity(Array< OneD, Array< OneD, NekDouble > > &velocities, std::map< std::string, NekDouble > ¶ms, int npts0)
MultiRegions::ExpListSharedPtr m_bndElmtExps
void RollOver(Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &input)
void AddRigidBodyAcc(Array< OneD, Array< OneD, NekDouble > > &N, std::map< std::string, NekDouble > ¶ms, int npts0)
virtual void v_Initialise(const LibUtilities::SessionReaderSharedPtr &pSession)
static NekDouble StifflyStable_Betaq_Coeffs[3][3]
static NekDouble StifflyStable_Gamma0_Coeffs[3]
void SetNumPointsOnPlane0(int &npointsPlane0)
void AddVisPressureBCs(const Array< OneD, const Array< OneD, NekDouble > > &fields, Array< OneD, Array< OneD, NekDouble > > &N, std::map< std::string, NekDouble > ¶ms)
Array< OneD, Array< OneD, NekDouble > > m_coords
Provides a generic Factory class.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
IncBCFactory & GetIncBCFactory()
void Svtsvtp(int n, const T alpha, const T *x, int incx, const T beta, const T *y, int incy, T *z, int incz)
Svtsvtp (scalar times vector plus scalar times vector):
void Svtvp(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Svtvp (scalar times vector plus vector): z = alpha*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 Sadd(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Add vector y = alpha + x.