186#ifndef Foam_DMDModels_STDMD_H
187#define Foam_DMDModels_STDMD_H
208 typedef SquareMatrix<scalar> SMatrix;
209 typedef RectangularMatrix<scalar> RMatrix;
210 typedef RectangularMatrix<complex> RCMatrix;
216 enum modeSorterType :
char
224 static const Enum<modeSorterType> modeSorterTypeNames;
230 enum modeSorterType modeSorter_;
253 List<complex> evals_;
263 DynamicList<label> freqsi_;
275 const wordRes patches_;
278 const word fieldName_;
323 label nAgglomerationProcs_;
334 scalar L2norm(
const RMatrix& z)
const;
338 RMatrix orthonormalise(RMatrix ez)
const;
343 void expand(
const RMatrix& ez,
const scalar ezNorm);
346 void updateG(
const RMatrix& z);
355 SMatrix reducedKoopmanOperator();
360 bool eigendecomposition(SMatrix& Atilde);
382 const scalar modeNorm
389 virtual bool modes();
396 template<
class GeoFieldType>
400 template<
class GeoFieldType>
403 GeoFieldType& modeRe,
404 GeoFieldType& modeIm,
405 const RMatrix& primitiveMode,
434 template<
class MatrixType>
466 virtual ~STDMD() =
default;
477 virtual bool update(
const RMatrix& z);
virtual bool modes()=0
Compute and write modes.
DMDModel(const fvMesh &mesh, const word &name, const dictionary &dict)
Construct from components.
virtual bool dynamics()=0
Compute and write mode dynamics.
Streaming Total Dynamic Mode Decomposition (i.e. STDMD) is a variant of dynamic mode decomposition.
STDMD(const fvMesh &mesh, const word &name, const dictionary &dict)
Construct from components.
virtual bool read(const dictionary &dict)
Read the function-object dictionary.
virtual bool initialise(const RMatrix &z)
Initialise 'Q' and 'G' (both require the first two snapshots).
TypeName("STDMD")
Runtime type information.
void operator=(const STDMD &)=delete
No copy assignment.
virtual bool fit()
Compute and write modes and mode dynamics of model data members.
STDMD(const STDMD &)=delete
No copy construct.
virtual ~STDMD()=default
Destructor.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Enum is a wrapper around a list of names/values that represent particular enumeration (or int) values...
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
A templated (M x N) rectangular matrix of objects of <Type>, containing M*N elements,...
A templated (N x N) square matrix of objects of <Type>, containing N*N elements, derived from Matrix.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
A complex number, similar to the C++ complex type.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
A class for handling file names.
virtual bool writeToFile() const
Flag to allow writing to file.
Mesh data needed to do the Finite Volume discretisation.
A List of wordRe with additional matching capabilities.
A class for handling words, derived from Foam::string.
OBJstream os(runTime.globalPath()/outputName)
A namespace for various dynamic mode decomposition (DMD) model implementations.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.