73 string advName = advType.substr(0, advType.length() - 15);
88 int nConvectiveFields = pFields.size();
94 for (
int i = 0; i < nConvectiveFields; ++i)
96 pFields_plane0[i] = pFields[i]->GetPlane(0);
98 m_planeAdv->InitObject(pSession, pFields_plane0);
112 map<string, RSScalarFuncType> scalars =
m_riemann->GetScalars();
113 map<string, RSVecFuncType> vectors =
m_riemann->GetVectors();
115 for (
auto &it1 : scalars)
117 std::shared_ptr<HomoRSScalar> tmp =
123 for (
auto &it2 : vectors)
125 std::shared_ptr<HomoRSVector> tmp =
135 for (
int i = 0; i < nConvectiveFields; ++i)
138 for (
int j = 0; j < 3; ++j)
161 for (
int j = 0; j < nConvectiveFields; ++j)
164 for (
int k = 0; k < 3; ++k)
184 const int nConvectiveFields,
193 int nVel = advVel.size();
204 for (
int j = 0; j < nConvectiveFields; ++j)
213 for (
int j = 0; j < nVel; ++j)
215 if (advVel[j].size() != 0)
228 for (
int i = 0; i < nConvectiveFields; ++i)
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
static std::string type[]
Array< OneD, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > > m_fluxVecPlane
void ModifiedFluxVector(const Array< OneD, Array< OneD, NekDouble > > &physfield, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &flux)
Array< OneD, Array< OneD, NekDouble > > m_outarrayPlane
void v_Advect(const int nConvField, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &advVel, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble &time, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayOfArray) override
Compute the advection operator for a given input inarray and put the result in outarray.
Array< OneD, unsigned int > m_planePos
Array< OneD, Array< OneD, NekDouble > > m_advVelPlane
Array< OneD, unsigned int > m_planes
Advection3DHomogeneous1D(std::string advType)
AdvectionFR uses the Flux Reconstruction (FR) approach to compute the advection term....
Array< OneD, Array< OneD, NekDouble > > m_inarrayPlane
static AdvectionSharedPtr create(std::string advType)
Array< OneD, MultiRegions::ExpListSharedPtr > m_fieldsPlane
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_fluxVecStore
void v_InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields) override
Initiliase Advection3DHomogeneous1D objects and store them before starting the time-stepping.
SolverUtils::AdvectionSharedPtr m_planeAdv
AdvectionFluxVecCB m_fluxVector
Callback function to the flux vector (set when advection is in conservative form).
RiemannSolverSharedPtr m_riemann
Riemann solver for DG-type schemes.
const Array< OneD, const NekDouble > & Exec()
const Array< OneD, const Array< OneD, NekDouble > > & Exec()
std::shared_ptr< SessionReader > SessionReaderSharedPtr
AdvectionFactory & GetAdvectionFactory()
Gets the factory for initialising advection objects.
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.