43 const std::weak_ptr<EquationSystem> &pEquation,
45 :
Filter(pSession, pEquation)
50 auto it = pParams.find(
"OutputFile");
51 if (it == pParams.end())
57 ASSERTL0(it->second.length() > 0,
"Empty parameter 'OutputFile'.");
63 auto equationSys =
m_equ.lock();
64 ASSERTL0(equationSys,
"Weak pointer expired");
68 m_comm = pSession->GetComm();
69 if (
m_comm->GetRank() == 0)
73 m_outFile.setf(std::ios::scientific, std::ios::floatfield);
78 std::string varName = equationSys->GetVariable(i);
80 <<
" " + varName +
"_Linf";
87 it = pParams.find(
"OutputFrequency");
88 if (it == pParams.end())
94 ASSERTL0(it->second.length() > 0,
"Empty parameter 'OutputFrequency'.");
123 if (
m_comm->GetRank() == 0)
129 auto equationSys =
m_equ.lock();
130 ASSERTL0(equationSys,
"Weak pointer expired");
136 equationSys->EvaluateExactSolution(i, exactsoln, time);
142 pFields[i]->HomogeneousFwdTrans(pFields[i]->GetTotPoints(),
143 exactsoln, exactsoln);
146 NekDouble vL2Error = equationSys->L2Error(i, exactsoln);
147 NekDouble vLinfError = equationSys->LinfError(i, exactsoln);
149 if (
m_comm->GetRank() == 0)
151 m_outFile <<
" " << vL2Error <<
" " << vLinfError;
155 if (
m_comm->GetRank() == 0)
166 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.
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
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.
void v_Update(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) final
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()