OMDc  2.0.0
created from 2320578 on deploy-documentation
OMD Namespace Reference

Optimal Mode Decomposition. More...

Classes

class  DataStore
 interface to internal representation of OMD data More...
 
class  LineSearchFunctor
 Functor for linesearch along geodesic. More...
 

Enumerations

enum  ImplementationType { kDirect, kPrecondQR }
 defines how the method is implemented More...
 

Functions

template<ImplementationType T>
int compute (std::ostream &out, Eigen::Ref< Eigen::MatrixXd > L, Eigen::Ref< Eigen::MatrixXd > M, const Eigen::Ref< const Eigen::MatrixXd > S, const Eigen::Index r, const GrManifold::CGOptions< double > *opt)
 compute OMD matrices L and M The Optimal Mode Decomposition computes iteratively the solution to More...
 
template<>
int compute< kPrecondQR > (std::ostream &out, Eigen::Ref< Eigen::MatrixXd > L, Eigen::Ref< Eigen::MatrixXd > M, const Eigen::Ref< const Eigen::MatrixXd > S, const Eigen::Index r, const GrManifold::CGOptions< double > *opt)
 computes OMD for given data set More...
 
template<>
int compute< kDirect > (std::ostream &out, Eigen::Ref< Eigen::MatrixXd > L, Eigen::Ref< Eigen::MatrixXd > M, const Eigen::Ref< const Eigen::MatrixXd > S, const Eigen::Index r, const GrManifold::CGOptions< double > *opt)
 directly computes OMD for given data set More...
 

Detailed Description

Optimal Mode Decomposition.

Enumeration Type Documentation

◆ ImplementationType

defines how the method is implemented

Enumerator
kDirect 

direct computation, no pre-conditioning

kPrecondQR 

pre-condition with QR decomposition

Function Documentation

◆ compute()

template<ImplementationType T>
int OMD::compute ( std::ostream &  out,
Eigen::Ref< Eigen::MatrixXd >  L,
Eigen::Ref< Eigen::MatrixXd >  M,
const Eigen::Ref< const Eigen::MatrixXd >  S,
const Eigen::Index  r,
const GrManifold::CGOptions< double > *  opt 
)

compute OMD matrices L and M The Optimal Mode Decomposition computes iteratively the solution to

\[ \begin{aligned} \min_{L,M} & \Vert Y - L M L^\top X \Vert_F \\ \mathrm{s.t.}\,L^\top L = I, \,&\, X = [s_0 \cdots s_{m-2}], Y = [s_1 \cdots s_{m-1}] \end{aligned} \]

on the Grassmann manifold

Template Parameters
Tdeclares implementation type
Warning
Find the explicit specializations for the implementation types below. This template does not have a generic implementation.
Parameters
outreference to output stream
Lresulting orthonormal bases [n x r]
Mresulting system matrix [r x r]
Ssnapshot matrix [n x m]
rreduced system dimension
optoptional set of options
Returns
o on success

◆ compute< kDirect >()

template<>
int OMD::compute< kDirect > ( std::ostream &  out,
Eigen::Ref< Eigen::MatrixXd >  L,
Eigen::Ref< Eigen::MatrixXd >  M,
const Eigen::Ref< const Eigen::MatrixXd >  S,
const Eigen::Index  r,
const GrManifold::CGOptions< double > *  opt 
)

directly computes OMD for given data set

Warning
aborts if no initial subspace is supplied in opt
Parameters
outreference to output stream
Lresulting orthonormal bases
Mresulting system matrix
Ssnapshot data
rsystem dimension
optnecessary set of options (uses intial subspace)
Returns
0 on success

◆ compute< kPrecondQR >()

template<>
int OMD::compute< kPrecondQR > ( std::ostream &  out,
Eigen::Ref< Eigen::MatrixXd >  L,
Eigen::Ref< Eigen::MatrixXd >  M,
const Eigen::Ref< const Eigen::MatrixXd >  S,
const Eigen::Index  r,
const GrManifold::CGOptions< double > *  opt 
)

computes OMD for given data set

Note
decomposes data set by QR (usually more efficient), then calls OMD::compute<kDirect>()
Parameters
outreference to output stream
Lresulting orthonormal bases
Mresulting system matrix
Ssnapshot data
rsystem dimension
opt(optional) set of options
Returns
0 on success
{}