Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Attributes | Friends | List of all members
Nektar::SolverUtils::FilterCheckpoint Class Reference

#include <FilterCheckpoint.h>

Inheritance diagram for Nektar::SolverUtils::FilterCheckpoint:
[legend]

Public Member Functions

SOLVER_UTILS_EXPORT FilterCheckpoint (const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation, const ParamMap &pParams)
 
SOLVER_UTILS_EXPORT ~FilterCheckpoint () override
 
- Public Member Functions inherited from Nektar::SolverUtils::Filter
SOLVER_UTILS_EXPORT Filter (const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation)
 
virtual SOLVER_UTILS_EXPORT ~Filter ()
 
SOLVER_UTILS_EXPORT void Initialise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
SOLVER_UTILS_EXPORT void Update (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
SOLVER_UTILS_EXPORT void Finalise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)
 
SOLVER_UTILS_EXPORT bool IsTimeDependent ()
 

Static Public Member Functions

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. More...
 

Static Public Attributes

static std::string className
 Name of the class. More...
 

Protected Member Functions

void v_Initialise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) override
 
void v_Update (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) override
 
void v_Finalise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) override
 
bool v_IsTimeDependent () override
 
virtual void v_Initialise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)=0
 
virtual void v_Update (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)=0
 
virtual void v_Finalise (const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time)=0
 
virtual bool v_IsTimeDependent ()=0
 

Private Attributes

unsigned int m_index
 
unsigned int m_outputIndex
 
unsigned int m_outputFrequency
 
std::string m_outputFile
 
NekDouble m_outputStartTime
 
LibUtilities::FieldIOSharedPtr m_fld
 

Friends

class MemoryManager< FilterCheckpoint >
 

Additional Inherited Members

- Public Types inherited from Nektar::SolverUtils::Filter
typedef std::map< std::string, std::string > ParamMap
 
- Protected Attributes inherited from Nektar::SolverUtils::Filter
LibUtilities::SessionReaderSharedPtr m_session
 
const std::weak_ptr< EquationSystemm_equ
 

Detailed Description

Definition at line 42 of file FilterCheckpoint.h.

Constructor & Destructor Documentation

◆ FilterCheckpoint()

Nektar::SolverUtils::FilterCheckpoint::FilterCheckpoint ( const LibUtilities::SessionReaderSharedPtr pSession,
const std::weak_ptr< EquationSystem > &  pEquation,
const ParamMap pParams 
)

Definition at line 43 of file FilterCheckpoint.cpp.

46 : Filter(pSession, pEquation)
47{
48 // OutputFile
49 auto it = pParams.find("OutputFile");
50 if (it == pParams.end())
51 {
52 m_outputFile = m_session->GetSessionName();
53 }
54 else
55 {
56 ASSERTL0(it->second.length() > 0, "Empty parameter 'OutputFile'.");
57 m_outputFile = it->second;
58 }
59
60 // OutputFrequency
61 it = pParams.find("OutputFrequency");
62 ASSERTL0(it != pParams.end(), "Missing parameter 'OutputFrequency'.");
63 LibUtilities::Equation equ(m_session->GetInterpreter(), it->second);
64 m_outputFrequency = round(equ.Evaluate());
65
66 // Time after which we need to write checkfiles
67 it = pParams.find("OutputStartTime");
68 if (it == pParams.end())
69 {
71 }
72 else
73 {
74 LibUtilities::Equation equ(m_session->GetInterpreter(), it->second);
75 m_outputStartTime = equ.Evaluate();
76 }
77
79}
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
static std::shared_ptr< FieldIO > CreateDefault(const LibUtilities::SessionReaderSharedPtr session)
Returns an object for the default FieldIO method.
Definition: FieldIO.cpp:195
LibUtilities::FieldIOSharedPtr m_fld
LibUtilities::SessionReaderSharedPtr m_session
Definition: Filter.h:83
SOLVER_UTILS_EXPORT Filter(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation)
Definition: Filter.cpp:45

References ASSERTL0, Nektar::LibUtilities::FieldIO::CreateDefault(), Nektar::LibUtilities::Equation::Evaluate(), m_fld, m_outputFile, m_outputFrequency, m_outputStartTime, and Nektar::SolverUtils::Filter::m_session.

◆ ~FilterCheckpoint()

Nektar::SolverUtils::FilterCheckpoint::~FilterCheckpoint ( )
override

Definition at line 81 of file FilterCheckpoint.cpp.

82{
83}

Member Function Documentation

◆ create()

static FilterSharedPtr Nektar::SolverUtils::FilterCheckpoint::create ( const LibUtilities::SessionReaderSharedPtr pSession,
const std::weak_ptr< EquationSystem > &  pEquation,
const std::map< std::string, std::string > &  pParams 
)
inlinestatic

Creates an instance of this class.

Definition at line 48 of file FilterCheckpoint.h.

52 {
54 pSession, pEquation, pParams);
55 return p;
56 }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< Filter > FilterSharedPtr
A shared pointer to a Driver object.
Definition: Filter.h:51

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.

◆ v_Finalise()

void Nektar::SolverUtils::FilterCheckpoint::v_Finalise ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
overrideprotectedvirtual

Implements Nektar::SolverUtils::Filter.

Definition at line 126 of file FilterCheckpoint.cpp.

130{
131}

◆ v_Initialise()

void Nektar::SolverUtils::FilterCheckpoint::v_Initialise ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
overrideprotectedvirtual

Implements Nektar::SolverUtils::Filter.

Definition at line 85 of file FilterCheckpoint.cpp.

88{
89 m_index = 0;
90 m_outputIndex = 0;
91 v_Update(pFields, time);
92}
void v_Update(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) override

References m_index, m_outputIndex, and v_Update().

◆ v_IsTimeDependent()

bool Nektar::SolverUtils::FilterCheckpoint::v_IsTimeDependent ( )
overrideprotectedvirtual

Implements Nektar::SolverUtils::Filter.

Definition at line 133 of file FilterCheckpoint.cpp.

134{
135 return true;
136}

◆ v_Update()

void Nektar::SolverUtils::FilterCheckpoint::v_Update ( const Array< OneD, const MultiRegions::ExpListSharedPtr > &  pFields,
const NekDouble time 
)
overrideprotectedvirtual

Implements Nektar::SolverUtils::Filter.

Definition at line 94 of file FilterCheckpoint.cpp.

97{
98
99 if (m_index++ % m_outputFrequency > 0 || time < m_outputStartTime)
100 {
101 return;
102 }
103
104 std::stringstream vOutputFilename;
105 vOutputFilename << m_outputFile << "_" << m_outputIndex << ".chk";
106
107 std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef =
108 pFields[0]->GetFieldDefinitions();
109 std::vector<std::vector<NekDouble>> FieldData(FieldDef.size());
110
111 // copy Data into FieldData and set variable
112 for (int j = 0; j < pFields.size(); ++j)
113 {
114 for (int i = 0; i < FieldDef.size(); ++i)
115 {
116 // Could do a search here to find correct variable
117 FieldDef[i]->m_fields.push_back(m_session->GetVariable(j));
118 pFields[0]->AppendFieldData(FieldDef[i], FieldData[i],
119 pFields[j]->UpdateCoeffs());
120 }
121 }
122 m_fld->Write(vOutputFilename.str(), FieldDef, FieldData);
124}

References m_fld, m_index, m_outputFile, m_outputFrequency, m_outputIndex, m_outputStartTime, and Nektar::SolverUtils::Filter::m_session.

Referenced by v_Initialise().

Friends And Related Function Documentation

◆ MemoryManager< FilterCheckpoint >

friend class MemoryManager< FilterCheckpoint >
friend

Definition at line 1 of file FilterCheckpoint.h.

Member Data Documentation

◆ className

std::string Nektar::SolverUtils::FilterCheckpoint::className
static
Initial value:
=
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
Definition: NekFactory.hpp:197
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.
FilterFactory & GetFilterFactory()
Definition: Filter.cpp:39

Name of the class.

Definition at line 59 of file FilterCheckpoint.h.

◆ m_fld

LibUtilities::FieldIOSharedPtr Nektar::SolverUtils::FilterCheckpoint::m_fld
private

Definition at line 86 of file FilterCheckpoint.h.

Referenced by FilterCheckpoint(), and v_Update().

◆ m_index

unsigned int Nektar::SolverUtils::FilterCheckpoint::m_index
private

Definition at line 80 of file FilterCheckpoint.h.

Referenced by v_Initialise(), and v_Update().

◆ m_outputFile

std::string Nektar::SolverUtils::FilterCheckpoint::m_outputFile
private

Definition at line 83 of file FilterCheckpoint.h.

Referenced by FilterCheckpoint(), and v_Update().

◆ m_outputFrequency

unsigned int Nektar::SolverUtils::FilterCheckpoint::m_outputFrequency
private

Definition at line 82 of file FilterCheckpoint.h.

Referenced by FilterCheckpoint(), and v_Update().

◆ m_outputIndex

unsigned int Nektar::SolverUtils::FilterCheckpoint::m_outputIndex
private

Definition at line 81 of file FilterCheckpoint.h.

Referenced by v_Initialise(), and v_Update().

◆ m_outputStartTime

NekDouble Nektar::SolverUtils::FilterCheckpoint::m_outputStartTime
private

Definition at line 85 of file FilterCheckpoint.h.

Referenced by FilterCheckpoint(), and v_Update().