29#include "readFields.H"
52Foam::wordList Foam::ROMmodels::DMD::modeNames(
const word& modeType)
const
55 for (
const label modei : modes_)
60 "mode"+modeType+
"_"+
name(modei)+
"_"+fieldName_+
"_"+objectName_
96 dict.readEntry(
"field", fieldName_);
97 dict.readEntry(
"object", objectName_);
98 dict.readEntry(
"deltaT", deltaT_);
99 dict.readEntry(
"time", time_);
100 dict.readIfPresent(
"startTime", startTime_);
102 if (deltaT_ < SMALL || time_ < SMALL || startTime_ < 0)
105 <<
"Out-of-range values for " <<
nl
106 <<
tab <<
"deltaT: " << deltaT_
107 <<
tab <<
"time: " << time_ <<
nl
108 <<
tab <<
"startTime: " << startTime_ <<
nl
112 dict.readEntry(
"modes", modes_);
117 <<
"Empty list for the mode indices " <<
nl
118 <<
tab <<
"modes: " << modes_ <<
nl
122 dims_.reset(
dict.get<dimensionSet>(
"dimensions"));
125 dict.readEntry(
"amplitudes", amps_);
126 dict.readEntry(
"eigenvalues", evals_);
128 if ((amps_.size() != modes_.size()) || (evals_.size() != modes_.size()))
131 <<
"Inconsistent input sizes for "
132 <<
tab <<
"modes: " << modes_.size() <<
nl
133 <<
tab <<
"amplitudes: " << amps_.size() <<
nl
134 <<
tab <<
"eigenvalues: " << evals_.size() <<
nl
139 const wordList modeReNames(modeNames(word(
"Re")));
140 const wordList modeImNames(modeNames(word(
"Im")));
145 readFieldsHandler(
mesh_).execute(modeReNames);
146 readFieldsHandler(
mesh_).execute(modeImNames);
157 #define doLocalCode(InputType) \
159 createAndWriteImpl<VolumeField<InputType>>(); \
160 createAndWriteImpl<SurfaceField<InputType>>(); \
169 #undef doInnerLocalCode
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Time & runTime_
Reference to the Time.
fvMesh & mesh_
Reference to the fvMesh.
Field creation model using the streaming total dynamic mode decomposition method (STDMD).
virtual bool read(const dictionary &dict)
Read model settings.
virtual bool createAndWrite()
Create and write fields.
DMD(Time &runTime, fvMesh &mesh, const dictionary &dict, const instantList ×)
Construct from components.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
#define doLocalCode(FieldType, Variable)
A namespace for various implementations of reduced-order (ROM) field creation models.
List< word > wordList
List of word.
List< instant > instantList
List of instants.
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...
errorManipArg< error, int > exit(error &err, const int errNo=1)
SphericalTensor< scalar > sphericalTensor
SphericalTensor of scalars, i.e. SphericalTensor<scalar>.
SymmTensor< scalar > symmTensor
SymmTensor of scalars, i.e. SymmTensor<scalar>.
constexpr char nl
The newline '\n' character (0x0a).
constexpr char tab
The tab '\t' character(0x09).