190#ifndef DMDModels_STDMD_H
191#define DMDModels_STDMD_H
212 typedef SquareMatrix<scalar> SMatrix;
213 typedef RectangularMatrix<scalar> RMatrix;
214 typedef RectangularMatrix<complex> RCMatrix;
220 enum modeSorterType :
char
228 static const Enum<modeSorterType> modeSorterTypeNames;
234 enum modeSorterType modeSorter_;
257 List<complex> evals_;
267 DynamicList<label> freqsi_;
279 const wordRes patches_;
282 const word fieldName_;
327 label nAgglomerationProcs_;
338 scalar L2norm(
const RMatrix& z)
const;
347 void expand(
const RMatrix& ez,
const scalar ezNorm);
350 void updateG(
const RMatrix& z);
359 SMatrix reducedKoopmanOperator();
364 bool eigendecomposition(
SMatrix& Atilde);
386 const scalar modeNorm
390 virtual bool dynamics();
393 virtual bool modes();
400 template<
class GeoFieldType>
404 template<
class GeoFieldType>
405 typename std::enable_if
407 std::is_same<scalar, typename GeoFieldType::value_type>::value,
411 GeoFieldType& modeRe,
412 GeoFieldType& modeIm,
419 template<
class GeoFieldType>
420 typename std::enable_if
422 !std::is_same<scalar, typename GeoFieldType::value_type>::value,
426 GeoFieldType& modeRe,
427 GeoFieldType& modeIm,
457 template<
class MatrixType>
489 virtual ~STDMD() =
default;
Abstract base class for DMD models to handle DMD characteristics for the DMD function object.
Streaming Total Dynamic Mode Decomposition (i.e. STDMD) is a variant of dynamic mode decomposition.
virtual bool read(const dictionary &dict)
Read STDMD settings.
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.
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)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.