libROM  v1.0
Data-driven physical simulation library
IncrementalSVDFastUpdate.h
1 
11 // Description: The concrete implementation of the incremental SVD algorithm
12 // using Matthew Brand's "fast update" method.
13 
14 #ifndef included_IncrementalSVDFastUpdate_h
15 #define included_IncrementalSVDFastUpdate_h
16 
17 #include "IncrementalSVD.h"
18 #include "linalg/Options.h"
19 
20 namespace CAROM {
21 
28 {
29 public:
34 
35 private:
36  friend class BasisGenerator;
37 
50  Options options,
51  const std::string& basis_file_name);
52 
57 
62  const IncrementalSVDFastUpdate& other);
63 
68  operator = (
69  const IncrementalSVDFastUpdate& rhs);
70 
80  virtual
81  void
82  buildInitialSVD(
83  double* u);
84 
88  virtual
89  void
90  computeBasis();
91 
102  void
103  addLinearlyDependentSample(
104  const Matrix* A,
105  const Matrix* W,
106  const Matrix* sigma);
107 
121  void
122  addNewSample(
123  const Vector* j,
124  const Matrix* A,
125  const Matrix* W,
126  Matrix* sigma);
127 
132  Matrix* d_Up;
133 
137  double d_singular_value_tol;
138 
139 };
140 
141 }
142 
143 #endif