75 string advName = advType.substr(0, advType.length()-15);
90 int nConvectiveFields = pFields.num_elements();
96 for (
int i = 0; i < nConvectiveFields; ++i)
98 pFields_plane0[i] = pFields[i]->GetPlane(0);
100 m_planeAdv->InitObject(pSession, pFields_plane0);
116 map<string, RSScalarFuncType> scalars =
m_riemann->GetScalars();
117 map<string, RSVecFuncType> vectors =
m_riemann->GetVectors();
119 for (it1 = scalars.begin(); it1 != scalars.end(); ++it1)
126 for (it2 = vectors.begin(); it2 != vectors.end(); ++it2)
137 for (
int i = 0; i < nConvectiveFields; ++i)
140 for (
int j = 0; j < 3; ++j)
165 for (
int j = 0; j < nConvectiveFields; ++j)
169 for (
int k = 0; k < 3; ++k)
190 const int nConvectiveFields,
198 int nVel = advVel.num_elements();
209 for (
int j = 0; j < nConvectiveFields; ++j)
218 for (
int j = 0; j < nVel; ++j)
220 if (advVel[j].num_elements() != 0)
234 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
Advection3DHomogeneous1D(std::string advType)
AdvectionFR uses the Flux Reconstruction (FR) approach to compute the advection term. The implementation is only for segments, quadrilaterals and hexahedra at the moment.
AdvectionFactory & GetAdvectionFactory()
Gets the factory for initialising advection objects.
static AdvectionSharedPtr create(std::string advType)
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
static std::string type[]
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.