47 std::string Advection3DHomogeneous1D::type[] = {
49 "WeakDG3DHomogeneous1D", Advection3DHomogeneous1D::create),
51 "FRDG3DHomogeneous1D", Advection3DHomogeneous1D::create),
53 "FRDG3DHomogeneous1D", Advection3DHomogeneous1D::create),
55 "FRSD3DHomogeneous1D", Advection3DHomogeneous1D::create),
57 "FRHU3DHomogeneous1D", Advection3DHomogeneous1D::create),
59 "FRcmin3DHomogeneous1D", Advection3DHomogeneous1D::create),
61 "FRcinf3DHomogeneous1D", Advection3DHomogeneous1D::create)
72 Advection3DHomogeneous1D::Advection3DHomogeneous1D(std::string advType)
77 string advName = advType.substr(0, advType.length()-15);
92 int nConvectiveFields = pFields.num_elements();
98 for (
int i = 0; i < nConvectiveFields; ++i)
100 pFields_plane0[i] = pFields[i]->GetPlane(0);
102 m_planeAdv->InitObject(pSession, pFields_plane0);
118 map<string, RSScalarFuncType> scalars =
m_riemann->GetScalars();
119 map<string, RSVecFuncType> vectors =
m_riemann->GetVectors();
121 for (it1 = scalars.begin(); it1 != scalars.end(); ++it1)
128 for (it2 = vectors.begin(); it2 != vectors.end(); ++it2)
139 for (
int i = 0; i < nConvectiveFields; ++i)
142 for (
int j = 0; j < 3; ++j)
167 for (
int j = 0; j < nConvectiveFields; ++j)
171 for (
int k = 0; k < 3; ++k)
192 const int nConvectiveFields,
200 int nVel = advVel.num_elements();
211 for (
int j = 0; j < nConvectiveFields; ++j)
220 for (
int j = 0; j < nVel; ++j)
222 if (advVel[j].num_elements() != 0)
236 for (
int i = 0; i < nConvectiveFields; ++i)
tBaseSharedPtr CreateInstance(tKey idKey BOOST_PP_COMMA_IF(MAX_PARAM) BOOST_PP_ENUM_BINARY_PARAMS(MAX_PARAM, tParam, x))
Create an instance of the class referred to by idKey.
Array< OneD, Array< OneD, NekDouble > > m_advVelPlane
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_fluxVecStore
const Array< OneD, const NekDouble > & Exec()
Array< OneD, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > > m_fluxVecPlane
RiemannSolverSharedPtr m_riemann
Riemann solver for DG-type schemes.
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
virtual 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)
Compute the advection operator for a given input inarray and put the result in outarray.
SolverUtils::AdvectionSharedPtr m_planeAdv
void ModifiedFluxVector(const Array< OneD, Array< OneD, NekDouble > > &physfield, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &flux)
Array< OneD, unsigned int > m_planePos
AdvectionFactory & GetAdvectionFactory()
Gets the factory for initialising advection objects.
const Array< OneD, const Array< OneD, NekDouble > > & Exec()
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
Array< OneD, Array< OneD, NekDouble > > m_outarrayPlane
Array< OneD, Array< OneD, NekDouble > > m_inarrayPlane
AdvectionFluxVecCB m_fluxVector
Callback function to the flux vector (set when advection is in conservative form).
Array< OneD, MultiRegions::ExpListSharedPtr > m_fieldsPlane
Array< OneD, unsigned int > m_planes
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.
virtual void v_InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
Initiliase Advection3DHomogeneous1D objects and store them before starting the time-stepping.
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, tDescription pDesc="")
Register a class with the factory.