https://mooseframework.inl.gov
Loading...
Searching...
No Matches
PODMapping.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12#include "VariableMappingBase.h"
14#include "UserObjectInterface.h"
15
16#include <slepcsvd.h>
17#include "POD.h"
18
24{
25public:
28
29 virtual void buildMapping(const VariableName & vname) override;
30
38 void map(const VariableName & vname,
39 const DenseVector<Real> & full_order_vector,
40 std::vector<Real> & reduced_order_vector) const override;
41
50 void map(const VariableName & vname,
51 const unsigned int global_sample_i,
52 std::vector<Real> & reduced_order_vector) const override;
53
61 void inverse_map(const VariableName & vname,
62 const std::vector<Real> & reduced_order_vector,
63 DenseVector<Real> & full_order_vector) const override;
64
69 const std::vector<DenseVector<Real>> & leftBasis(const VariableName & vname);
70
75 const std::vector<DenseVector<Real>> & rightBasis(const VariableName & vname);
76
81 const std::vector<Real> & singularValues(const VariableName & vname);
82
88 const DenseVector<Real> & leftBasisFunction(const VariableName & vname,
89 const unsigned int base_i);
90
96 const DenseVector<Real> & rightBasisFunction(const VariableName & vname,
97 const unsigned int base_i);
98
99protected:
101 const std::vector<dof_id_type> _num_modes;
102
104 const std::vector<Real> & _energy_threshold;
105
107 std::map<VariableName, std::vector<DenseVector<Real>>> & _left_basis_functions;
108
110 std::map<VariableName, std::vector<DenseVector<Real>>> & _right_basis_functions;
111
113 std::map<VariableName, std::vector<Real>> & _singular_values;
114
116 const std::string & _extra_slepc_options;
117
118private:
121
124};
const InputParameters & parameters() const
Class which provides a Proper Orthogonal Decomposition (POD)-based mapping between full-order and red...
Definition PODMapping.h:24
const std::vector< Real > & singularValues(const VariableName &vname)
Return all of the singular values for a given variable.
Definition PODMapping.C:263
std::map< VariableName, std::vector< DenseVector< Real > > > & _left_basis_functions
Restartable container holding the basis functions for each variable.
Definition PODMapping.h:107
const DenseVector< Real > & leftBasisFunction(const VariableName &vname, const unsigned int base_i)
Get the base_i-th left basis function for a given variable.
Definition PODMapping.C:209
const std::string & _extra_slepc_options
Variable holding additional petsc options for the singular value solve.
Definition PODMapping.h:116
const std::vector< dof_id_type > _num_modes
The number of modes which need to be computed.
Definition PODMapping.h:101
const std::vector< DenseVector< Real > > & rightBasis(const VariableName &vname)
Return all of the right basis functions for a given variable.
Definition PODMapping.C:252
void inverse_map(const VariableName &vname, const std::vector< Real > &reduced_order_vector, DenseVector< Real > &full_order_vector) const override
Method used for mapping reduced-order solutions for a given variable onto the full-order space.
Definition PODMapping.C:181
const StochasticTools::POD _pod
The POD object which can be used to compute the basis functions/vectors.
Definition PODMapping.h:123
void map(const VariableName &vname, const DenseVector< Real > &full_order_vector, std::vector< Real > &reduced_order_vector) const override
Method used for mapping full-order solutions for a given variable onto a latent space.
Definition PODMapping.C:163
std::map< VariableName, std::vector< Real > > & _singular_values
Restartable container holding the singular values.
Definition PODMapping.h:113
virtual void buildMapping(const VariableName &vname) override
Abstract function for building mapping for a given variable.
Definition PODMapping.C:100
const std::vector< Real > & _energy_threshold
The energy thresholds for truncation of the number of modes, defined by the user.
Definition PODMapping.h:104
const ParallelSolutionStorage *const _parallel_storage
Link to the parallel storage which holds the solution fields that are used for the SVD.
Definition PODMapping.h:120
const std::vector< DenseVector< Real > > & leftBasis(const VariableName &vname)
Return all of the left basis functions for a given variable.
Definition PODMapping.C:241
const DenseVector< Real > & rightBasisFunction(const VariableName &vname, const unsigned int base_i)
Get the base_i-th right basis function for a given variable.
Definition PODMapping.C:225
static InputParameters validParams()
Definition PODMapping.C:18
std::map< VariableName, std::vector< DenseVector< Real > > > & _right_basis_functions
Restartable container holding the basis functions for each variable.
Definition PODMapping.h:110
A Reporter which stores serialized solution fields for given variables in a distributed fashion.
Class which computes a Proper Orthogonal Decomposition (POD) for snapshots stored in ParallelSolution...
Definition POD.h:26
This is an abstract base class for objects that provide mapping between a full-order and a latent spa...