libROM  v1.0
Data-driven physical simulation library
Public Member Functions | List of all members
CAROM::MatrixInterpolator Class Reference

#include <MatrixInterpolator.h>

Inheritance diagram for CAROM::MatrixInterpolator:
CAROM::Interpolator

Public Member Functions

 MatrixInterpolator (std::vector< Vector * > parameter_points, std::vector< Matrix * > rotation_matrices, std::vector< Matrix * > reduced_matrices, int ref_point, std::string matrix_type, std::string rbf="G", std::string interp_method="LS", double closest_rbf_val=0.9)
 Constructor. More...
 
Matrixinterpolate (Vector *point, bool orthogonalize=false)
 Obtain the interpolated reduced matrix of the unsampled parameter point. More...
 

Additional Inherited Members

- Protected Member Functions inherited from CAROM::Interpolator
 Interpolator (std::vector< Vector * > parameter_points, std::vector< Matrix * > rotation_matrices, int ref_point, std::string rbf, std::string interp_method, double closest_rbf_val=0.9)
 Constructor. More...
 
- Protected Attributes inherited from CAROM::Interpolator
int d_rank
 The rank of the process this object belongs to.
 
int d_num_procs
 The number of processors being run on.
 
int d_ref_point
 The index within the vector of parameter points to the reference point.
 
std::string d_rbf
 The RBF type (gaussian, multiquadric, inverse quadratic, inverse multiquadric)
 
std::string d_interp_method
 The interpolation method (linear solve, inverse distance weighting, lagrangian polynomials)
 
double d_epsilon
 The RBF parameter that determines the width of influence. a small epsilon: larger influential width a large epsilon: smaller influential width.
 
std::vector< Vector * > d_parameter_points
 The sampled parameter points.
 
std::vector< Matrix * > d_rotation_matrices
 The reduced bases with compatible coordinates.
 
Matrixd_lambda_T
 The RHS of the linear solve in tangential space.
 

Detailed Description

MatrixInterpolator interpolates reduced matrices of a set of parameter points and returns an interpolated reduced matrix for an unseen parameter point. The performance of this algorithm depends on the matrix sizes being small because of its computational complexity due to direct matrix inversion. The interpolation algorithm was adapted from "Gradient-based Constrained Optimization Using a Database of Linear Reduced-Order Models" by Y. Choi et al.

Definition at line 34 of file MatrixInterpolator.h.

Constructor & Destructor Documentation

◆ MatrixInterpolator()

CAROM::MatrixInterpolator::MatrixInterpolator ( std::vector< Vector * >  parameter_points,
std::vector< Matrix * >  rotation_matrices,
std::vector< Matrix * >  reduced_matrices,
int  ref_point,
std::string  matrix_type,
std::string  rbf = "G",
std::string  interp_method = "LS",
double  closest_rbf_val = 0.9 
)

Constructor.

Parameters
[in]parameter_pointsThe parameter points.
[in]rotation_matricesThe rotation matrices associated with each parameter point.
[in]reduced_matricesThe reduced matrices associated with each parameter point.
[in]ref_pointThe index within the vector of parameter points to the reference point
[in]matrix_typeThe type of matrix (R = real, B = basis [also real, but Steifel in specific] NS = nonsingular, SPD = symmetric positive-definite)
[in]rbfThe RBF type ("G" == gaussian, "IQ" == inverse quadratic, "IMQ" == inverse multiquadric)
[in]interp_methodThe interpolation method type ("LS" == linear solve, "IDW" == inverse distance weighting, "LP" == lagrangian polynomials)
[in]closest_rbf_valThe RBF parameter determines the width of influence. Set the RBF value of the nearest two parameter points to a value between 0.0 to 1.0

Definition at line 40 of file MatrixInterpolator.cpp.

Member Function Documentation

◆ interpolate()

Matrix * CAROM::MatrixInterpolator::interpolate ( Vector point,
bool  orthogonalize = false 
)

Obtain the interpolated reduced matrix of the unsampled parameter point.

Parameters
[in]pointThe unsampled parameter point.
[in]orthogonalizeWhether to orthogonalize the resulting interpolated matrix.

Definition at line 119 of file MatrixInterpolator.cpp.


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