14 #ifndef included_StaticSVD_h
15 #define included_StaticSVD_h
18 #include "linalg/Options.h"
19 #include "linalg/scalapack_wrapper.h"
54 bool add_without_increase =
false);
246 bool d_preserve_snapshot;
double d_singular_value_tol
The tolerance for singular values below which to drop vectors.
virtual bool takeSample(double *u_in, bool add_without_increase=false)
Collect the new sample, u_in at the supplied time.
int d_rank
The rank of the process this object belongs to.
int d_nprow
The number of processor rows in the grid.
virtual void computeSVD()
Gathers samples from all other processors to form complete sample of system and computes the SVD.
int d_npcol
The number of processor columns in the grid.
void delete_factorizer()
Delete the factorizer from ScaLAPACK.
void get_global_info()
Get the system's total row dimension and where my rows sit in the matrix.
void delete_samples()
Delete the samples from ScaLAPACK.
void broadcast_sample(const double *u_in)
Broadcast the sample to all processors.
bool d_basis_is_current
Flag to indicate if the basis vectors for the current time interval are up to date.
virtual const Vector * getSingularValues()
Returns the singular values for the current time interval.
std::vector< int > d_istarts
The starting row (0-based) of the matrix that each process owns. Stored to avoid an MPI operation to ...
int d_total_dim
The total dimension of the system (row dimension)
int d_max_basis_dimension
The max number of basis vectors to return.
std::unique_ptr< SLPK_Matrix > d_samples
Current samples of the system.
std::unique_ptr< SVDManager > d_factorizer
Factorization manager object used to compute the SVD.
int d_blocksize
The block size used internally for computing the SVD.
virtual const Matrix * getSpatialBasis()
Returns the basis vectors for the current time interval as a Matrix.
virtual const Matrix * getSnapshotMatrix()
Returns the snapshot matrix for the current time interval.
bool isBasisCurrent()
Checks if the basis vectors are computed from the current snapshot.
virtual const Matrix * getTemporalBasis()
Returns the temporal basis vectors for the current time interval as a Matrix.
int d_num_procs
The number of processors being run on.
std::vector< int > d_dims
The number of rows that each process owns. Stored to avoid an MPI operation to get this operation eve...