1 #ifndef __POD_BASIS_ONLINE__ 2 #define __POD_BASIS_ONLINE__ 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> 11 #include <eigen/Eigen/Dense> 13 #include "dg/dg_base.hpp" 14 #include "parameters/all_parameters.h" 15 #include "pod_basis_base.h" 18 namespace ProperOrthogonalDecomposition {
19 using Eigen::MatrixXd;
20 using Eigen::VectorXd;
28 explicit OnlinePOD(std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix> _system_matrix);
31 std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix>
getPODBasis()
override;
40 void addSnapshot(dealii::LinearAlgebra::distributed::Vector<double> snapshot);
46 std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix>
basis;
66 dealii::ConditionalOStream
pcout;
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.
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.
const int mpi_rank
MPI rank.
dealii::ConditionalOStream pcout
ConditionalOStream.
void computeBasis()
Compute new POD basis from snapshots.