[P]arallel [Hi]gh-order [Li]brary for [P]DEs  Latest
Parallel High-Order Library for PDEs through hp-adaptive Discontinuous Galerkin methods
pod_basis_online.h
1 #ifndef __POD_BASIS_ONLINE__
2 #define __POD_BASIS_ONLINE__
3 
4 #include <deal.II/base/conditional_ostream.h>
5 #include <deal.II/lac/full_matrix.h>
6 #include <deal.II/lac/la_parallel_vector.h>
7 #include <deal.II/lac/trilinos_sparse_matrix.h>
8 #include <deal.II/lac/vector_operation.h>
9 #include <deal.II/numerics/vector_tools.h>
10 
11 #include <eigen/Eigen/Dense>
12 
13 #include "dg/dg_base.hpp"
14 #include "parameters/all_parameters.h"
15 #include "pod_basis_base.h"
16 
17 namespace PHiLiP {
18 namespace ProperOrthogonalDecomposition {
19 using Eigen::MatrixXd;
20 using Eigen::VectorXd;
21 
23 template <int dim>
24 class OnlinePOD: public PODBase<dim>
25 {
26 public:
28  explicit OnlinePOD(std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix> _system_matrix);
29 
31  std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix> getPODBasis() override;
32 
34  dealii::LinearAlgebra::ReadWriteVector<double> getReferenceState() override;
35 
37  MatrixXd getSnapshotMatrix() override;
38 
40  void addSnapshot(dealii::LinearAlgebra::distributed::Vector<double> snapshot);
41 
43  void computeBasis();
44 
46  std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix> basis;
47 
49  dealii::LinearAlgebra::ReadWriteVector<double> referenceState;
50 
52  std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix> system_matrix;
53 
55  dealii::LAPACKFullMatrix<double> dealiiSnapshotMatrix;
56 
58  MatrixXd snapshotMatrix;
59 
60  const MPI_Comm mpi_communicator;
61  const int mpi_rank;
62 
64 
66  dealii::ConditionalOStream pcout;
67 
68 
69 };
70 
71 }
72 }
73 
74 #endif
Class for Online Proper Orthogonal Decomposition basis. This class takes snapshots on the fly and com...
dealii::LinearAlgebra::ReadWriteVector< double > getReferenceState() override
Function to get POD reference state.
std::shared_ptr< dealii::TrilinosWrappers::SparseMatrix > getPODBasis() override
Function to get POD basis for all derived classes.
dealii::LinearAlgebra::ReadWriteVector< double > referenceState
Reference state.
void addSnapshot(dealii::LinearAlgebra::distributed::Vector< double > snapshot)
Add snapshot.
Files for the baseline physics.
Definition: ADTypes.hpp:10
const MPI_Comm mpi_communicator
MPI communicator.
MatrixXd getSnapshotMatrix() override
Function to get snapshot matrix used to build POD basis.
OnlinePOD(std::shared_ptr< dealii::TrilinosWrappers::SparseMatrix > _system_matrix)
Constructor.
std::shared_ptr< dealii::TrilinosWrappers::SparseMatrix > system_matrix
For sparsity pattern of system matrix.
std::shared_ptr< dealii::TrilinosWrappers::SparseMatrix > basis
POD basis.
dealii::LAPACKFullMatrix< double > dealiiSnapshotMatrix
LAPACK matrix of snapshots for nice printing.
MatrixXd snapshotMatrix
Matrix containing snapshots.
dealii::ConditionalOStream pcout
ConditionalOStream.
void computeBasis()
Compute new POD basis from snapshots.