49 const std::shared_ptr<EquationSystem> &pEquation,
51 :
Filter(pSession, pEquation), m_index(-1), m_homogeneous(false), m_planes()
54 std::string ext =
".avg";
58 auto it = pParams.find(
"OutputFrequency");
59 ASSERTL0(it != pParams.end(),
"Missing parameter 'OutputFrequency'.");
74 "1D expansion not supported for mean filter");
77 "Homogeneous 2D expansion not supported for mean filter");
80 auto equ =
m_equ.lock();
81 ASSERTL0(equ,
"Weak pointer expired");
83 auto fluidEqu = std::dynamic_pointer_cast<FluidInterface>(equ);
84 ASSERTL0(fluidEqu,
"Mean filter is incompatible with this solver.");
96 areaField = pFields[0]->GetPlane(0);
100 areaField = pFields[0];
104 m_area = areaField->Integral(inarray);
112 std::string volname[3] = {
"length",
"area",
"volume"};
114 if (vComm->GetRank() == 0)
121 for (
int i = 0; i < pFields.size(); ++i)
152 for (i = 0; i < pFields.size(); ++i)
159 for (i = 0; i < pFields.size(); ++i)
161 avg[i] = pFields[0]->GetPlane(0)->Integral(pFields[i]->GetPhys()) *
167 for (i = 0; i < pFields.size(); ++i)
169 avg[i] = pFields[0]->Integral(pFields[i]->GetPhys());
173 for (i = 0; i < pFields.size(); ++i)
178 if (vComm->GetRank() == 0)
181 for (
int i = 0; i < pFields.size(); ++i)
194 if (pFields[0]->GetComm()->GetRank() == 0)
#define ASSERTL0(condition, msg)
NekDouble Evaluate() const
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
SOLVER_UTILS_EXPORT std::string SetupOutput(const std::string ext, const ParamMap &pParams)
LibUtilities::SessionReaderSharedPtr m_session
const std::weak_ptr< EquationSystem > m_equ
std::map< std::string, std::string > ParamMap
bool m_updateOnInitialise
SOLVER_UTILS_EXPORT void v_Update(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time) override
SOLVER_UTILS_EXPORT void v_Finalise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time) override
SOLVER_UTILS_EXPORT bool v_IsTimeDependent() override
SOLVER_UTILS_EXPORT void v_Initialise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time) override
Array< OneD, unsigned int > m_planes
unsigned int m_outputFrequency
NekDouble m_homogeneousLength
static SolverUtils::FilterSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const std::shared_ptr< SolverUtils::EquationSystem > &pEquation, const ParamMap &pParams)
Creates an instance of this class.
std::ofstream m_outputStream
SOLVER_UTILS_EXPORT FilterMean(const LibUtilities::SessionReaderSharedPtr &pSession, const std::shared_ptr< EquationSystem > &pEquation, const ParamMap &pParams)
static std::string className
Name of the class.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
FilterFactory & GetFilterFactory()