37 #include <boost/core/ignore_unused.hpp>
49 RegisterCreatorFunction(
"Mean", FilterMean::create);
51 FilterMean::FilterMean(
53 const std::weak_ptr<EquationSystem> &pEquation,
55 :
Filter (pSession, pEquation),
57 m_homogeneous (false),
61 auto it = pParams.find(
"OutputFile");
62 if (it == pParams.end())
68 ASSERTL0(it->second.length() > 0,
"Missing parameter 'OutputFile'.");
76 it = pParams.find(
"OutputFrequency");
77 ASSERTL0(it != pParams.end(),
"Missing parameter 'OutputFrequency'.");
97 "1D expansion not supported for mean filter");
100 "Homogeneous 2D expansion not supported for mean filter");
103 auto equ =
m_equ.lock();
104 ASSERTL0(equ,
"Weak pointer expired");
106 auto fluidEqu = std::dynamic_pointer_cast<FluidInterface>(equ);
107 ASSERTL0(fluidEqu,
"Mean filter is incompatible with this solver.");
119 areaField = pFields[0]->GetPlane(0);
123 areaField = pFields[0];
127 m_area = areaField->Integral(inarray);
135 std::string volname[3] = {
"length",
"area",
"volume"};
137 if (vComm->GetRank() == 0)
143 for(
int i=0; i<pFields.size(); ++i)
169 for (i = 0; i < pFields.size(); ++i)
176 for (i = 0; i < pFields.size(); ++i)
181 for (i = 0; i < pFields.size(); ++i)
182 avg[i] = pFields[0]->Integral(pFields[i]->GetPhys());
185 for (i = 0; i < pFields.size(); ++i)
188 if (vComm->GetRank() == 0)
191 for(
int i=0; i<pFields.size(); ++i)
201 boost::ignore_unused(pFields, time);
203 if (pFields[0]->GetComm()->GetRank() == 0)
#define ASSERTL0(condition, msg)
NekDouble Evaluate() const
LibUtilities::SessionReaderSharedPtr m_session
const std::weak_ptr< EquationSystem > m_equ
std::map< std::string, std::string > ParamMap
virtual SOLVER_UTILS_EXPORT void v_Finalise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time)
Array< OneD, unsigned int > m_planes
unsigned int m_outputFrequency
virtual SOLVER_UTILS_EXPORT bool v_IsTimeDependent()
NekDouble m_homogeneousLength
SOLVER_UTILS_EXPORT ~FilterMean()
virtual SOLVER_UTILS_EXPORT void v_Update(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time)
std::ofstream m_outputStream
virtual SOLVER_UTILS_EXPORT void v_Initialise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pField, const NekDouble &time)
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.