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  void
81  buildInitialSVD(
82  double* u) override;
83 
87  void
88  computeBasis() override;
89 
97  void
98  addLinearlyDependentSample(
99  const Matrix & A,
100  const Matrix & W,
101  const Matrix & sigma);
102 
111  void
112  addNewSample(
113  const Vector & j,
114  const Matrix & A,
115  const Matrix & W,
116  const Matrix & sigma);
117 
122  std::unique_ptr<Matrix> d_Up;
123 
127  double d_singular_value_tol;
128 
129 };
130 
131 }
132 
133 #endif