20#ifndef LIBMESH_RB_SCM_CONSTRUCTION_H
21#define LIBMESH_RB_SCM_CONSTRUCTION_H
24#include "libmesh/libmesh_config.h"
28#if defined(LIBMESH_HAVE_SLEPC) && (LIBMESH_HAVE_GLPK)
31#include "libmesh/rb_construction_base.h"
34#include "libmesh/condensed_eigen_system.h"
62 const std::string & name_in,
63 const unsigned int number_in);
90 virtual void clear ()
override;
195 virtual void enrich_C_J(
unsigned int new_C_J_index);
This is the EquationSystems class.
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
This class is part of the rbOOmit framework.
This class is part of the rbOOmit framework.
void set_rb_scm_evaluation(RBSCMEvaluation &rb_scm_eval_in)
Set the RBSCMEvaluation object.
virtual ~RBSCMConstruction()
virtual void print_info()
Print out info that describes the current setup of this RBSCMConstruction.
virtual void compute_SCM_bounding_box()
Compute the SCM bounding box.
RBConstructionBase< CondensedEigenSystem > Parent
The type of the parent.
virtual void load_matrix_B()
Copy over the matrix to store in matrix_B, usually this is the mass or inner-product matrix,...
RBSCMEvaluation * rb_scm_eval
The current RBSCMEvaluation object we are using to perform the Evaluation stage of the SCM.
Real SCM_training_tolerance
Tolerance which controls when to terminate the SCM Greedy.
virtual Real SCM_greedy_error_indicator(Real LB, Real UB)
Helper function which provides an error indicator to be used in the SCM greedy.
virtual void attach_deflation_space()
Attach the deflation space defined by the specified vector, can be useful in solving constrained eige...
virtual void set_eigensolver_properties(int)
This function is called before truth eigensolves in compute_SCM_bounding_box and evaluate_stability_c...
std::string RB_system_name
The name of the associated RB system.
RBSCMConstruction(RBSCMConstruction &&)=default
Special functions.
Real get_SCM_training_tolerance() const
Get/set SCM_training_tolerance: tolerance for SCM greedy.
RBSCMConstruction & operator=(const RBSCMConstruction &)=delete
RBSCMEvaluation & get_rb_scm_evaluation()
Get a reference to the RBSCMEvaluation object.
virtual void process_parameters_file(const std::string ¶meters_filename)
Read in the parameters from file specified by parameters_filename and set the this system's member va...
virtual void add_scaled_symm_Aq(unsigned int q_a, Number scalar)
Add the scaled symmetrized affine matrix from the associated RBSystem to matrix_A.
Number Aq_inner_product(unsigned int q, const NumericVector< Number > &v, const NumericVector< Number > &w)
Compute the inner product between two vectors using matrix Aq.
RBSCMConstruction sys_type
The type of system.
void set_SCM_training_tolerance(Real SCM_training_tolerance_in)
virtual void enrich_C_J(unsigned int new_C_J_index)
Enrich C_J by adding the element of SCM_training_samples that has the largest gap between alpha_LB an...
RBSCMConstruction(const RBSCMConstruction &)=delete
virtual void perform_SCM_greedy()
Perform the SCM greedy algorithm to develop a lower bound over the training set.
Number B_inner_product(const NumericVector< Number > &v, const NumericVector< Number > &w) const
Compute the inner product between two vectors using the system's matrix_B.
virtual std::pair< unsigned int, Real > compute_SCM_bounds_on_training_set()
Compute upper and lower bounds for each SCM training point.
virtual void evaluate_stability_constant()
Compute the stability constant for current_parameters by solving a generalized eigenvalue problem ove...
RBThetaExpansion & get_rb_theta_expansion()
Get a reference to the RBThetaExpansion object.
virtual void clear() override
Clear all the data structures associated with the system.
virtual void resize_SCM_vectors()
Clear and resize the SCM data vectors.
void set_RB_system_name(const std::string &new_name)
Set the name of the associated RB system — we need this to load the (symmetrized) affine operators.
This class is part of the rbOOmit framework.
This class stores the set of RBTheta functor objects that define the "parameter-dependent expansion" ...
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real