43 const std::shared_ptr<EquationSystem> &pEquation,
45 :
Filter(pSession, pEquation)
48 std::string ext =
".err";
52 auto equationSys =
m_equ.lock();
53 ASSERTL0(equationSys,
"Weak pointer expired");
62 m_comm = pSession->GetComm();
63 if (
m_comm->GetRank() == 0)
67 m_outFile.setf(std::ios::scientific, std::ios::floatfield);
72 std::string varName = equationSys->GetVariable(i);
74 <<
" " + varName +
"_Linf";
86 auto it = pParams.find(
"OutputFrequency");
87 if (it == pParams.end())
93 ASSERTL0(it->second.length() > 0,
"Empty parameter 'OutputFrequency'.");
99 it = pParams.find(
"ConsoleOutput");
100 if (it == pParams.end())
106 ASSERTL0(it->second.length() > 0,
"Empty parameter 'ConsoleOutput'.");
107 ASSERTL0(it->second ==
"0" || it->second ==
"1",
108 "Parameter 'ConsoleOutput' can only be '0' or '1'.");
131 if (
m_comm->GetRank() == 0)
137 auto equationSys =
m_equ.lock();
138 ASSERTL0(equationSys,
"Weak pointer expired");
144 equationSys->EvaluateExactSolution(i, exactsoln, time);
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 std::cout <<
"L 2 error (variable "
156 << equationSys->GetVariable(i) <<
") : " << vL2Error
158 std::cout <<
"L inf error (variable "
159 << equationSys->GetVariable(i) <<
") : " << vLinfError
167 NekDouble vH1Error = equationSys->H1Error(i, exactsoln);
168 if (
m_comm->GetRank() == 0)
174 std::cout <<
"H 1 error (variable "
175 << equationSys->GetVariable(i)
176 <<
") : " << vH1Error << std::endl;
182 if (
m_comm->GetRank() == 0)
193 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::shared_ptr< EquationSystem > &pEquation, const ParamMap &pParams)
LibUtilities::CommSharedPtr m_comm
bool v_IsTimeDependent() final
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
static FilterSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const std::shared_ptr< EquationSystem > &pEquation, const std::map< std::string, std::string > &pParams)
Creates an instance of this class.
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
std::shared_ptr< SessionReader > SessionReaderSharedPtr
FilterFactory & GetFilterFactory()