35 #include <boost/core/ignore_unused.hpp>
47 const std::weak_ptr<EquationSystem> &pEquation,
49 :
Filter(pSession, pEquation)
54 auto it = pParams.find(
"OutputFile");
55 if (it == pParams.end())
61 ASSERTL0(it->second.length() > 0,
"Empty parameter 'OutputFile'.");
67 auto equationSys =
m_equ.lock();
68 ASSERTL0(equationSys,
"Weak pointer expired");
72 m_comm = pSession->GetComm();
73 if (
m_comm->GetRank() == 0)
77 m_outFile.setf(std::ios::scientific, std::ios::floatfield);
82 std::string varName = equationSys->GetVariable(i);
84 <<
" " + varName +
"_Linf";
91 it = pParams.find(
"OutputFrequency");
92 if (it == pParams.end())
98 ASSERTL0(it->second.length() > 0,
"Empty parameter 'OutputFrequency'.");
115 boost::ignore_unused(pFields);
123 if (
m_comm->GetRank() == 0)
129 auto equationSys =
m_equ.lock();
130 ASSERTL0(equationSys,
"Weak pointer expired");
137 equationSys->EvaluateExactSolution(i, exactsoln, time);
139 NekDouble vL2Error = equationSys->L2Error(i, exactsoln);
140 NekDouble vLinfError = equationSys->LinfError(i, exactsoln);
142 if (
m_comm->GetRank() == 0)
144 m_outFile <<
" " << vL2Error <<
" " << vLinfError;
148 if (
m_comm->GetRank() == 0)
158 boost::ignore_unused(pFields, time);
160 if (
m_comm->GetRank() == 0)
#define ASSERTL0(condition, msg)
NekDouble Evaluate() const
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
virtual void v_Finalise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) final
SOLVER_UTILS_EXPORT FilterError(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation, const ParamMap &pParams)
LibUtilities::CommSharedPtr m_comm
virtual bool v_IsTimeDependent() final
static FilterSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation, const std::map< std::string, std::string > &pParams)
Creates an instance of this class.
static std::string className
Name of the class.
virtual void v_Update(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) final
virtual void v_Initialise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) final
LibUtilities::SessionReaderSharedPtr m_session
const std::weak_ptr< EquationSystem > m_equ
std::map< std::string, std::string > ParamMap
std::shared_ptr< SessionReader > SessionReaderSharedPtr
FilterFactory & GetFilterFactory()
The above copyright notice and this permission notice shall be included.