Loading...
Searching...
No Matches
HyperReduction_function Class Reference
Inheritance diagram for HyperReduction_function:
HyperReduction< PtrList< volScalarField > & >

Public Member Functions

Eigen::VectorXd onlineCoeffs (volScalarField &S, Eigen::MatrixXd mu)
 HyperReduction (label n_modes, label n_nodes, Eigen::VectorXi initialSeeds, word problemName, SnapshotsLists &&...snapshotsLists)
 Construct HyperReduction class, interpolation-based.
 HyperReduction (label n_modes, label n_nodes, unsigned int vectorial_dim, label n_cells, Eigen::VectorXi initialSeeds, word problemName, Eigen::VectorXd volumes=Eigen::VectorXd::Constant(1, 0.0))
 Construct HyperReduction class.
Public Member Functions inherited from HyperReduction< PtrList< volScalarField > & >
 HyperReduction (label n_modes, label n_nodes, Eigen::VectorXi initialSeeds, word problemName, SnapshotsLists &&...snapshotsLists)
 Construct HyperReduction class, interpolation-based.
void offlineGappyDEIM (Eigen::MatrixXd &snapshotsModes, Eigen::VectorXd &normalizingWeights)
 Methods implemented: 'GappyDEIM' from "DEIM, Chaturantabut, Saifon, and Danny C. Sorensen. "Nonlinear model reduction via discrete empirical interpolation.
void offlineECP (Eigen::MatrixXd &snapshotsModes, Eigen::VectorXd &normalizingWeights)
 Methods implemented: 'ECP' from "ECP, Hernandez, Joaquin Alberto, Manuel Alejandro Caicedo, and Alex Ferrer. "Dimensional hyper-reduction of nonlinear finite element models via empirical cubature.
void initSeeds (Eigen::VectorXd mp_not_mask, std::set< label > nodePointsSet)
 TODO.
void computeLS (Eigen::MatrixXd &J, Eigen::MatrixXd &JWhole, Eigen::VectorXd &b, Eigen::VectorXd &q, bool NNLS)
 TODO.
void getModesSVD (SnapshotsListTuple &SnapshotsListTuple, Eigen::MatrixXd &modesSVD, Eigen::VectorXd &fieldWeights, bool saveModesFlag=false)
 TODO.
void updateNodes (Eigen::SparseMatrix< double > &P, label &ind_max, Eigen::VectorXd &mp_not_mask)
 TODO.
void updateNodesRemove (Eigen::SparseMatrix< double > &P, Eigen::VectorXd weights)
 Remove from the nodes the weights equal to 0 (used with NNLS).
void stackSnapshots (SnapshotsList sList, Eigen::MatrixXd &snapshotsMatrix, Eigen::VectorXd &fieldWeights)
 TODO.
void stackSnapshotsBoundary (SnapshotsList sList, List< Eigen::MatrixXd > &snapshotsMatrixBoundary, List< Eigen::VectorXd > &fieldWeightsBoundary)
 TODO.
void saveModes (SnapshotsList sList, Eigen::MatrixXd &snapshotsMatrix, unsigned int &rowIndex, unsigned int &modeIndex, word folder)
 TODO.
void stackNames (SnapshotsList sList)
 TODO.
void stackDimensions (SnapshotsList sList)
 TODO.
void sumDimensions (double sum, SnapshotsList sList)
 TODO.
void evaluatePinv (Eigen::SparseMatrix< double > &Projector, Eigen::MatrixXd &Modes, Eigen::VectorXd &fieldWeights)
 Compute the pseudo-inverse of the matrix M restricted with the projector P.
void evaluateWPU (Eigen::SparseMatrix< double > &Projector, Eigen::MatrixXd &Modes, Eigen::VectorXd &fieldWeights, Eigen::VectorXd &quadratureWeights)
 Compute the pseudo-inverse of the matrix M restricted with the projector P.
void generateSubmesh (label layers, const fvMesh &mesh)
 Compute the submesh common to all fields in SnapshotsLists.
List< label > global2local (List< label > &points, fvMeshSubset &submesh)
 Get local indices in the submesh from indices in the global ones.
autoPtr< FieldType > interpolateField (const FieldType &field)
 TODO.
constexpr unsigned int get_field_dim ()
 TODO.
constexpr unsigned int compute_vectorial_dim (LastList x)
 TODO.
void eigen2fields (Eigen::VectorXd &eFields, FieldsArgs &&... oFields)
 TODO.
void initReshapeMat (Eigen::SparseMatrix< double > &reshapeMat)
 TODO.
void createMasks (bool offlineStage=true)
 TODO.
void getSnapMatrix (Eigen::MatrixXd &snapMatrix, Eigen::VectorXd &fieldWeights)
 TODO.
Eigen::SparseMatrix< double > maskToOtherDim (int newDim)
 Compute the sparse mask matrix P with a vectorial dimension different from the snapshots (enlarged or reduced).

Static Public Member Functions

static volScalarField evaluate_expression (volScalarField &S, Eigen::MatrixXd mu)
static Eigen::VectorXd evaluate_expression (volScalarField &S, Eigen::MatrixXd mu, List< label > nodesList)
Static Public Member Functions inherited from HyperReduction< PtrList< volScalarField > & >
static double s_optimality (Eigen::MatrixXd &A)
 TODO.

Additional Inherited Members

Public Types inherited from HyperReduction< PtrList< volScalarField > & >
using SnapshotsListTuple
using FieldsTuple
using NthFieldListType
using NthFieldType
Public Attributes inherited from HyperReduction< PtrList< volScalarField > & >
word methodName
unsigned int vectorial_dim
unsigned int sumFieldsDim
ITHACAparameterspara
label n_boundary_patches
List< label > n_boundary_cells_list
label n_boundary_cells
label n_modes
 The maximum number of modes to be considered.
label n_nodes
 The maximum number of modes to be considered.
label n_snapshots
 The length of the snapshots lists.
Eigen::VectorXi initialSeeds
Eigen::VectorXi nodes
word problemName
 The name of the non-linear function e.g. HR_method/residual.
SnapshotsListTuple snapshotsListTuple
 The snapshots matrix containing the nonlinear function or operator.
List< word > fieldNames
 Names of the fields.
List< unsigned int > fieldDims
 Dimensions of the fields.
label n_cells
 Int Number of Cells;.
Eigen::VectorXd volumes
 Volume of each cell.
label n_cellsSubfields
 Int Number of Cells in submeshes;.
autoPtr< IOList< label > > nodePoints
 Nodes in the case of the a nonlinear function.
autoPtr< IOList< labelList > > totalNodePoints
 List of label lists of the nodes and corresponding surrounding nodes.
autoPtr< IOList< label > > uniqueNodePoints
 List of the unique indices of the nodes that define the submesh.
word folderProblem
 Folder for the HR problem.
word folderMethod
 Folder for the selected HR method.
List< label > localNodePoints
 Indices of the local node points in the subMesh.
Eigen::MatrixXd basisMatrix
 Orthonormal basis of HR.
Eigen::VectorXd normalizingWeights
Eigen::MatrixXd renormalizedBasisMatrix
 Renormalized basis of HR.
Eigen::MatrixXd pinvPU
Eigen::MatrixXd wPU
Eigen::VectorXd eigenValueseig
Eigen::SparseMatrix< double > P
 The P matrix of the HyperReduction method. The nodes are ordered in the order of insertion during the greedy procedure. The components related to the same node follow immediately.
Eigen::SparseMatrix< double > field2submesh
Eigen::SparseMatrix< double > submesh2nodes
Eigen::VectorXi submesh2nodesMask
Eigen::VectorXd quadratureWeights
 Quadrature weights. Ordered in the same order of matrix P.
List< Eigen::VectorXd > quadratureWeightsSubspaces
autoPtr< fvMeshSubset > submesh
 Submesh of the HyperReduction method.
autoPtr< volVectorField > submesh_field
 Submeshes.
Eigen::MatrixXd MatrixOnline
 Online Matrix.
Static Public Attributes inherited from HyperReduction< PtrList< volScalarField > & >
static constexpr auto n_fields

Detailed Description

Definition at line 42 of file 24HyperReduction.C.

Member Function Documentation

◆ evaluate_expression() [1/2]

volScalarField HyperReduction_function::evaluate_expression ( volScalarField & S,
Eigen::MatrixXd mu )
inlinestatic

Definition at line 47 of file 24HyperReduction.C.

◆ evaluate_expression() [2/2]

Eigen::VectorXd HyperReduction_function::evaluate_expression ( volScalarField & S,
Eigen::MatrixXd mu,
List< label > nodesList )
inlinestatic

Definition at line 61 of file 24HyperReduction.C.

◆ HyperReduction() [1/2]

HyperReduction< SnapshotsLists >::HyperReduction ( label n_modes,
label n_nodes,
Eigen::VectorXi initialSeeds,
word problemName,
SnapshotsLists &&... snapshotsLists )

Construct HyperReduction class, interpolation-based.

SnapshotsLists is a variadic argument of PtrLists of fields e.g. for incompressible Navier-Stokes PtrList<volVectorField>, PtrList<volScalarField> for velocity and pressure.

Parameters
[in]hrMethodthe chosen HR method
[in]n_modesdimension of the HR basis
[in]n_nodesnumber of nodes
[in]initialSeedsinitial nodes
[in]problemNamename of the function to be hyper-reduced
[in]snapshotsListslists of fields

Definition at line 79 of file hyperReduction.templates.H.

◆ HyperReduction() [2/2]

HyperReduction< SnapshotsLists >::HyperReduction ( label n_modes,
label n_nodes,
unsigned int vectorial_dim,
label n_cells,
Eigen::VectorXi initialSeeds,
word problemName,
Eigen::VectorXd volumes = Eigen::VectorXd::Constant(1,0.0) )

Construct HyperReduction class.

Parameters
[in]n_modesDimension of the HR basis
[in]n_nodesNumber of nodes
[in]vectorial_dimField dimension (1 for volScalarField 3 for volVectorField)
[in]n_cellsNumber of cells
[in]initialSeedsInitial nodes
[in]problemNameName of the function to be hyper-reduced
[in]volumesVolume of each cell (optional, used in offlineECP)

Definition at line 96 of file hyperReduction.templates.H.

◆ onlineCoeffs()

Eigen::VectorXd HyperReduction_function::onlineCoeffs ( volScalarField & S,
Eigen::MatrixXd mu )
inline

Definition at line 77 of file 24HyperReduction.C.


The documentation for this class was generated from the following file: