#include <DEIM.H>
Public Member Functions | |
DEIM (PtrList< T > &SnapShotsMatrix, label MaxModes, word FunctionName, word FieldName) | |
Construct DEIM for non-linear function. | |
DEIM (PtrList< T > &SnapShotsMatrix, label MaxModesA, label MaxModesB, word MatrixName) | |
Construct DEIM for matrix with non-linear dependency. | |
template<class S > | |
S | generateSubmesh (label layers, const fvMesh &mesh, S field, label secondTime=0) |
Function to generate the submesh for the nonlinear function case. | |
template<class S > | |
S | generateSubmeshMatrix (label layers, const fvMesh &mesh, S field, label secondTime=0) |
Function to generate the submesh for the nonlinear matrix function case (RHS) | |
template<class S > | |
S | generateSubmeshVector (label layers, const fvMesh &mesh, S field, label secondTime=0) |
Function to generate the submesh for the nonlinear matrix function case (LHS) | |
template<class F > | |
F | generateSubField (F &field) |
Function to generate a a subfield in the location of the magic points. | |
template<class F > | |
F | generateSubFieldMatrix (F &field) |
Function to generate a a subfield in the location of the magic points computed for the Matrix (LHS) | |
template<class F > | |
F | generateSubFieldVector (F &field) |
Function to generate a a subfield in the location of the magic points computed for the Matrix (RHS) | |
void | onlineCoeffs () |
Function to get the onlineCoeffs of the DEIM approx. | |
List< label > | global2local (List< label > &points, fvMeshSubset &submesh) |
Get local indices in the submeshe from indices in the global ones. | |
void | check3DIndices (label &ind_rowA, label &ind_colA, label &xyz_rowA, label &xyz_colA) |
check3DIndices in case of three dimensional fields | |
void | check3DIndices (label &ind_rowA, label &xyz_rowA) |
check3DIndices in case of three dimensional fields | |
label | getNcells (label sizeM) |
get the number of cells from the dimension of a LHS matrix | |
void | setMagicPoints (labelList &newMagicPoints, labelList &newxyz) |
Function to set the magic points externally. | |
label | getNcells (label sizeM) |
label | getNcells (label sizeM) |
Public Attributes | |
PtrList< T > | SnapShotsMatrix |
The snapshots matrix containing the nonlinear function or operator. | |
PtrList< T > | modes |
The POD modes of the DEIM procedure that can be. | |
std::tuple< List< Eigen::SparseMatrix< double > >, List< Eigen::VectorXd > > | Matrix_Modes |
Matrix Modes. | |
label | MaxModes |
The maximum number of modes to be considered. | |
label | MaxModesA |
label | MaxModesB |
word | FunctionName |
The name of the non-linear function. | |
double | tolerance |
A given tolerance. | |
label | Ncells |
Int Number of Cells;. | |
bool | source |
source | |
word | MatrixName |
The name of the matrix. | |
Eigen::MatrixXd | MatrixModes |
The matrix containing the modes. | |
autoPtr< IOList< label > > | magicPoints |
Magic points in the case of the a nonlinear function. | |
autoPtr< IOList< label > > | magicPointsArow |
Magic points in the case of the a matrix function (rows indices) | |
autoPtr< IOList< label > > | magicPointsAcol |
Magic points in the case of the a matrix function (cols indices) | |
autoPtr< IOList< label > > | magicPointsB |
Magic points in the case of the a matrix function, right hand side. | |
word | Folder |
Folder for nonlinear functions. | |
word | FolderM |
Folder in the matrix case. | |
Eigen::VectorXd | theta |
Online vector. | |
Eigen::VectorXd | thetaA |
Online vector. | |
Eigen::VectorXd | thetaB |
Online vector. | |
Eigen::MatrixXd | MatrixOnline |
Online Matrices. | |
List< Eigen::SparseMatrix< double > > | MatrixOnlineA |
Online Matrices. | |
Eigen::MatrixXd | MatrixOnlineB |
Online Matrices. | |
Eigen::MatrixXd | U |
The U matrix of the DEIM method. | |
List< Eigen::SparseMatrix< double > > | UA |
The U matrix of the DEIM method. | |
Eigen::MatrixXd | UB |
The U matrix of the DEIM method. | |
autoPtr< IOList< labelList > > | totalMagicPoints |
Magic points and indices of the surrounding layers. | |
autoPtr< IOList< labelList > > | totalMagicPointsA |
Magic points and indices of the surrounding layers. | |
autoPtr< IOList< labelList > > | totalMagicPointsB |
Magic points and indices of the surrounding layers. | |
autoPtr< IOList< label > > | uniqueMagicPoints |
List of unique indices that define the submesh. | |
autoPtr< IOList< label > > | uniqueMagicPointsA |
List of unique indices that define the submesh. | |
autoPtr< IOList< label > > | uniqueMagicPointsB |
List of unique indices that define the submesh. | |
autoPtr< IOList< label > > | xyz |
Definition of the x, y, z coordinate of the identified element in the matrix or source term 0 for x, 1 for y, 2 for z. | |
autoPtr< IOList< label > > | xyz_Arow |
Definition of the x, y, z coordinate of the identified element in the matrix or source term 0 for x, 1 for y, 2 for z. | |
autoPtr< IOList< label > > | xyz_Acol |
Definition of the x, y, z coordinate of the identified element in the matrix or source term 0 for x, 1 for y, 2 for z. | |
autoPtr< IOList< label > > | xyz_B |
Definition of the x, y, z coordinate of the identified element in the matrix or source term 0 for x, 1 for y, 2 for z. | |
List< label > | localMagicPoints |
Indices of the local magic points in the subMesh. | |
List< label > | localMagicPointsArow |
Indices of the local magic points in the subMesh. | |
List< label > | localMagicPointsAcol |
Indices of the local magic points in the subMesh. | |
List< label > | localMagicPointsB |
Indices of the local magic points in the subMesh. | |
Eigen::SparseMatrix< double > | P |
The P matrix of the DEIM method. | |
List< Eigen::SparseMatrix< double > > | PA |
The P matrix of the DEIM method. | |
Eigen::SparseMatrix< double > | PB |
The P matrix of the DEIM method. | |
autoPtr< fvMeshSubset > | submesh |
Submesh of the DEIM method. | |
autoPtr< fvMeshSubset > | submeshA |
Submesh of the DEIM method. | |
autoPtr< fvMeshSubset > | submeshB |
Submesh of the DEIM method. | |
bool | runSubMesh |
Bool variable to check if the SubMesh is available. | |
bool | runSubMeshA |
Bool variable to check if the SubMesh is available. | |
bool | runSubMeshB |
Bool variable to check if the SubMesh is available. | |
DEIM< T >::DEIM | ( | PtrList< T > & | SnapShotsMatrix, |
label | MaxModes, | ||
word | FunctionName, | ||
word | FieldName ) |
Construct DEIM for non-linear function.
[in] | SnapShotsMatrix | The snapshots matrix |
[in] | MaxModes | The maximum number of modes |
[in] | FunctionName | The function name, used to save the results |
[in] | FieldName | The field name |
DEIM< T >::DEIM | ( | PtrList< T > & | SnapShotsMatrix, |
label | MaxModesA, | ||
label | MaxModesB, | ||
word | MatrixName ) |
Construct DEIM for matrix with non-linear dependency.
SnapShotsMatrix | The snapshots matrix | |
[in] | MaxModesA | The maximum number of modes for the Matrix A |
[in] | MaxModesB | The maximum number of modes for the source term b |
[in] | MatrixName | The matrix name, used to save the results |
template const volTensorField DEIM< T >::generateSubField | ( | F & | field | ) |
Function to generate a a subfield in the location of the magic points.
field | For which you want the create the submeshes |
F | type of field (can be volVectorField, volScalarField, surfaceScalar and surfaceVector) |
template surfaceVectorField DEIM< T >::generateSubFieldMatrix | ( | F & | field | ) |
Function to generate a a subfield in the location of the magic points computed for the Matrix (LHS)
field | For which you want the create the submeshes |
F | type of field (can be volVectorField, volScalarField, and const versions) |
template surfaceVectorField DEIM< T >::generateSubFieldVector | ( | F & | field | ) |
Function to generate a a subfield in the location of the magic points computed for the Matrix (RHS)
field | For which you want the create the submeshes |
F | type of field (can be volVectorField, volScalarField, surfaceScalar and surfaceVector) |
template volVectorField DEIM< T >::generateSubmesh | ( | label | layers, |
const fvMesh & | mesh, | ||
S | field, | ||
label | secondTime = 0 ) |
Function to generate the submesh for the nonlinear function case.
[in] | layers | Number of layers used to generate each submesh |
mesh | The mesh of the problem | |
[in] | field | The field used for the submesh |
[in] | secondTime | If the function is called for the second one must be set to 1 |
S | Type of object can be volscalarfield, volvectorfield etc... |
template surfaceVectorField DEIM< T >::generateSubmeshMatrix | ( | label | layers, |
const fvMesh & | mesh, | ||
S | field, | ||
label | secondTime = 0 ) |
Function to generate the submesh for the nonlinear matrix function case (RHS)
[in] | layers | Number of layers used to generate each submesh |
mesh | The mesh of the problem | |
[in] | field | The field used for the submesh |
[in] | secondTime | If the function is called for the second one must be set to 1 |
S | Type of object can be volscalarfield, volvectorfield etc... |
template surfaceVectorField DEIM< T >::generateSubmeshVector | ( | label | layers, |
const fvMesh & | mesh, | ||
S | field, | ||
label | secondTime = 0 ) |
Function to generate the submesh for the nonlinear matrix function case (LHS)
[in] | layers | Number of layers used to generate each submesh |
mesh | The mesh of the problem | |
[in] | field | The field used for the submesh |
[in] | secondTime | If the function is called for the second one must be set to 1 |
S | Type of object can be volscalarfield, volvectorfield etc... |
get the number of cells from the dimension of a LHS matrix
sizeM | The number of rows of the original Matrix |
Function to get the onlineCoeffs of the DEIM approx.
It is problem dependent so it must be overridden.