37#include <boost/core/ignore_unused.hpp>
53 const std::weak_ptr<EquationSystem> &pEquation,
55 :
Filter(pSession, pEquation), m_index(-1), m_homogeneous(false), m_planes()
58 auto it = pParams.find(
"OutputFile");
59 if (it == pParams.end())
65 ASSERTL0(it->second.length() > 0,
"Missing parameter 'OutputFile'.");
71 it = pParams.find(
"OutputFrequency");
72 ASSERTL0(it != pParams.end(),
"Missing parameter 'OutputFrequency'.");
91 "1D expansion not supported for mean filter");
94 "Homogeneous 2D expansion not supported for mean filter");
97 auto equ =
m_equ.lock();
98 ASSERTL0(equ,
"Weak pointer expired");
100 auto fluidEqu = std::dynamic_pointer_cast<FluidInterface>(equ);
101 ASSERTL0(fluidEqu,
"Mean filter is incompatible with this solver.");
113 areaField = pFields[0]->GetPlane(0);
117 areaField = pFields[0];
121 m_area = areaField->Integral(inarray);
129 std::string volname[3] = {
"length",
"area",
"volume"};
131 if (vComm->GetRank() == 0)
138 for (
int i = 0; i < pFields.size(); ++i)
164 for (i = 0; i < pFields.size(); ++i)
171 for (i = 0; i < pFields.size(); ++i)
172 avg[i] = pFields[0]->GetPlane(0)->Integral(pFields[i]->GetPhys()) *
177 for (i = 0; i < pFields.size(); ++i)
178 avg[i] = pFields[0]->Integral(pFields[i]->GetPhys());
181 for (i = 0; i < pFields.size(); ++i)
184 if (vComm->GetRank() == 0)
187 for (
int i = 0; i < pFields.size(); ++i)
197 boost::ignore_unused(pFields, time);
199 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.
LibUtilities::SessionReaderSharedPtr m_session
const std::weak_ptr< EquationSystem > m_equ
std::map< std::string, std::string > ParamMap
virtual SOLVER_UTILS_EXPORT void v_Update(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time) override
virtual SOLVER_UTILS_EXPORT void v_Finalise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time) override
virtual SOLVER_UTILS_EXPORT bool v_IsTimeDependent() override
virtual SOLVER_UTILS_EXPORT void v_Initialise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time) override
Array< OneD, unsigned int > m_planes
static SolverUtils::FilterSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< SolverUtils::EquationSystem > &pEquation, const ParamMap &pParams)
Creates an instance of this class.
unsigned int m_outputFrequency
NekDouble m_homogeneousLength
SOLVER_UTILS_EXPORT ~FilterMean()
std::ofstream m_outputStream
SOLVER_UTILS_EXPORT FilterMean(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_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()
The above copyright notice and this permission notice shall be included.