libROM
v1.0
Data-driven physical simulation library
|
#include <MatrixInterpolator.h>
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... | |
Matrix * | interpolate (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. | |
Matrix * | d_lambda_T |
The RHS of the linear solve in tangential space. | |
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.
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.
[in] | parameter_points | The parameter points. |
[in] | rotation_matrices | The rotation matrices associated with each parameter point. |
[in] | reduced_matrices | The reduced matrices associated with each parameter point. |
[in] | ref_point | The index within the vector of parameter points to the reference point |
[in] | matrix_type | The type of matrix (R = real, B = basis [also real, but Steifel in specific] NS = nonsingular, SPD = symmetric positive-definite) |
[in] | rbf | The RBF type ("G" == gaussian, "IQ" == inverse quadratic, "IMQ" == inverse multiquadric) |
[in] | interp_method | The interpolation method type ("LS" == linear solve, "IDW" == inverse distance weighting, "LP" == lagrangian polynomials) |
[in] | closest_rbf_val | The 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.
Obtain the interpolated reduced matrix of the unsampled parameter point.
[in] | point | The unsampled parameter point. |
[in] | orthogonalize | Whether to orthogonalize the resulting interpolated matrix. |
Definition at line 119 of file MatrixInterpolator.cpp.