libMesh
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
SimpleRBEvaluation Class Reference

#include <rb_classes.h>

Inheritance diagram for SimpleRBEvaluation:
[legend]

Public Member Functions

 SimpleRBEvaluation (const libMesh::Parallel::Communicator &comm)
 Constructor. More...
 
virtual Real get_stability_lower_bound ()
 The coercivity constant is bounded below by 0.05. More...
 
 SimpleRBEvaluation (const libMesh::Parallel::Communicator &comm)
 Constructor. More...
 
virtual Real get_stability_lower_bound ()
 We override get_stability_lower_bound so that it calls rb_scm_eval to return a parameter-dependent lower bound for the coercivity constant. More...
 
 SimpleRBEvaluation (const libMesh::Parallel::Communicator &comm)
 Constructor. More...
 
virtual Real get_stability_lower_bound ()
 The coercivity constant is bounded below by 0.05. More...
 
 SimpleRBEvaluation (const libMesh::Parallel::Communicator &comm)
 Constructor. More...
 
 SimpleRBEvaluation (const libMesh::Parallel::Communicator &comm)
 Constructor. More...
 
virtual Real get_stability_lower_bound ()
 Return a "dummy" lower bound for the coercivity constant. More...
 
 SimpleRBEvaluation (const libMesh::Parallel::Communicator &comm_in)
 Constructor. More...
 
virtual Real get_stability_lower_bound ()
 Return a "dummy" stability lower bound factor (for a rigorous error bound this should be a lower bound for the frequency dependent inf-sup constant) More...
 
virtual void clear () override
 Clear this RBEvaluation object. More...
 
void set_rb_theta_expansion (RBThetaExpansion &rb_theta_expansion_in)
 Set the RBThetaExpansion object. More...
 
RBThetaExpansion & get_rb_theta_expansion ()
 Get a reference to the rb_theta_expansion. More...
 
const RBThetaExpansion & get_rb_theta_expansion () const
 
bool is_rb_theta_expansion_initialized () const
 
virtual void resize_data_structures (const unsigned int Nmax, bool resize_error_bound_data=true)
 Resize and clear the data vectors corresponding to the value of Nmax. More...
 
NumericVector< Number > & get_basis_function (unsigned int i)
 Get a reference to the i^th basis function. More...
 
const NumericVector< Number > & get_basis_function (unsigned int i) const
 
virtual Real rb_solve (unsigned int N)
 Perform online solve with the N RB basis functions, for the set of parameters in current_params, where 0 <= N <= RB_size. More...
 
virtual Real rb_solve (unsigned int N, const std::vector< Number > *evaluated_thetas)
 The same as above, except that we pass in evaluated_thetas instead of recomputing the theta values. More...
 
virtual Real get_error_bound_normalization ()
 
virtual Real compute_residual_dual_norm (const unsigned int N)
 Compute the dual norm of the residual for the solution saved in RB_solution_vector. More...
 
virtual Real compute_residual_dual_norm (const unsigned int N, const std::vector< Number > *evaluated_thetas)
 The same as above, except that we pass in evaluated thetas instead of recomputing the theta values. More...
 
virtual Real residual_scaling_denom (Real alpha_LB)
 Specifies the residual scaling on the denominator to be used in the a posteriori error bound. More...
 
Real eval_output_dual_norm (unsigned int n, const RBParameters &mu)
 Evaluate the dual norm of output n for the current parameters. More...
 
Real eval_output_dual_norm (unsigned int n, const std::vector< Number > *evaluated_thetas)
 Evaluate the dual norm of output n for the current parameters, or using the pre-evaluted theta values provided in the "evaluated_thetas" array. More...
 
virtual unsigned int get_n_basis_functions () const
 Get the current number of basis functions. More...
 
virtual void set_n_basis_functions (unsigned int n_bfs)
 Set the number of basis functions. More...
 
virtual void clear_riesz_representors ()
 Clear all the Riesz representors that are used to compute the RB residual (and hence error bound). More...
 
virtual void legacy_write_offline_data_to_files (const std::string &directory_name="offline_data", const bool write_binary_data=true)
 Write out all the data to text files in order to segregate the Offline stage from the Online stage. More...
 
virtual void legacy_read_offline_data_from_files (const std::string &directory_name="offline_data", bool read_error_bound_data=true, const bool read_binary_data=true)
 Read in the saved Offline reduced basis data to initialize the system for Online solves. More...
 
virtual void write_out_basis_functions (System &sys, const std::string &directory_name="offline_data", const bool write_binary_basis_functions=true)
 Write out all the basis functions to file. More...
 
virtual void read_in_basis_functions (System &sys, const std::string &directory_name="offline_data", const bool read_binary_basis_functions=true)
 Read in all the basis functions from file. More...
 
void initialize_parameters (const RBParameters &mu_min_in, const RBParameters &mu_max_in, const std::map< std::string, std::vector< Real >> &discrete_parameter_values)
 Initialize the parameter ranges and set current_parameters. More...
 
void initialize_parameters (const RBParametrized &rb_parametrized)
 Initialize the parameter ranges and set current_parameters. More...
 
unsigned int get_n_params () const
 Get the number of parameters. More...
 
unsigned int get_n_continuous_params () const
 Get the number of continuous parameters. More...
 
unsigned int get_n_discrete_params () const
 Get the number of discrete parameters. More...
 
std::set< std::string > get_parameter_names () const
 Get a set that stores the parameter names. More...
 
const RBParameters & get_parameters () const
 Get the current parameters. More...
 
bool set_parameters (const RBParameters &params)
 Set the current parameters to params The parameters are checked for validity; an error is thrown if the number of parameters or samples is different than expected. More...
 
const RBParameters & get_parameters_min () const
 Get an RBParameters object that specifies the minimum allowable value for each parameter. More...
 
const RBParameters & get_parameters_max () const
 Get an RBParameters object that specifies the maximum allowable value for each parameter. More...
 
Real get_parameter_min (const std::string &param_name) const
 Get minimum allowable value of parameter param_name. More...
 
Real get_parameter_max (const std::string &param_name) const
 Get maximum allowable value of parameter param_name. More...
 
void print_parameters () const
 Print the current parameters. More...
 
void write_parameter_data_to_files (const std::string &continuous_param_file_name, const std::string &discrete_param_file_name, const bool write_binary_data)
 Write out the parameter ranges to files. More...
 
void read_parameter_data_from_files (const std::string &continuous_param_file_name, const std::string &discrete_param_file_name, const bool read_binary_data)
 Read in the parameter ranges from files. More...
 
bool is_discrete_parameter (const std::string &mu_name) const
 Is parameter mu_name discrete? More...
 
const std::map< std::string, std::vector< Real > > & get_discrete_parameter_values () const
 Get a const reference to the discrete parameter values. More...
 
void print_discrete_parameter_values () const
 Print out all the discrete parameter values. More...
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static void write_out_vectors (System &sys, std::vector< NumericVector< Number > *> &vectors, const std::string &directory_name="offline_data", const std::string &data_name="bf", const bool write_binary_basis_functions=true)
 Same as write_out_basis_functions, except in this case we pass in the vectors to be written. More...
 
static void read_in_vectors (System &sys, std::vector< std::unique_ptr< NumericVector< Number >>> &vectors, const std::string &directory_name, const std::string &data_name, const bool read_binary_vectors)
 Same as read_in_basis_functions, except in this case we pass in the vectors to be written. More...
 
static void read_in_vectors_from_multiple_files (System &sys, std::vector< std::vector< std::unique_ptr< NumericVector< Number >>> *> multiple_vectors, const std::vector< std::string > &multiple_directory_names, const std::vector< std::string > &multiple_data_names, const bool read_binary_vectors)
 Performs read_in_vectors for a list of directory names and data names. More...
 
static Real get_closest_value (Real value, const std::vector< Real > &list_of_values)
 
static std::string get_info ()
 Gets a string containing the reference information. More...
 
static void print_info (std::ostream &out_stream=libMesh::out)
 Prints the reference information, by default to libMesh::out. More...
 
static unsigned int n_objects ()
 Prints the number of outstanding (created, but not yet destroyed) objects. More...
 
static void enable_print_counter_info ()
 Methods to enable/disable the reference counter output from print_info() More...
 
static void disable_print_counter_info ()
 

Public Attributes

CDRBThetaExpansion cd_rb_theta_expansion
 The object that stores the "theta" expansion of the parameter dependent PDE, i.e. More...
 
RBSCMEvaluationrb_scm_eval
 Pointer to the SCM object that will provide our coercivity constant lower bound. More...
 
Ex02RBThetaExpansion ex02_rb_theta_expansion
 The object that stores the "theta" expansion of the parameter dependent PDE, i.e. More...
 
EimTestRBThetaExpansion eim_test_rb_theta_expansion
 The object that stores the "theta" expansion of the parameter dependent PDE, i.e. More...
 
Ex6ThetaExpansion ex6_theta_expansion
 The object that stores the "theta" expansion of the parameter dependent PDE, i.e. More...
 
AcousticsRBThetaExpansion acoustics_rb_theta_expansion
 The object that stores the "theta" expansion of the parameter dependent PDE, i.e. More...
 
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
 The libMesh vectors storing the finite element coefficients of the RB basis functions. More...
 
std::vector< RBParameters > greedy_param_list
 The list of parameters selected by the Greedy algorithm in generating the Reduced Basis associated with this RBEvaluation object. More...
 
DenseMatrix< Number > RB_inner_product_matrix
 The inner product matrix. More...
 
std::vector< DenseMatrix< Number > > RB_Aq_vector
 Dense matrices for the RB computations. More...
 
std::vector< DenseVector< Number > > RB_Fq_vector
 Dense vector for the RHS. More...
 
DenseVector< Number > RB_solution
 The RB solution vector. More...
 
std::vector< std::vector< DenseVector< Number > > > RB_output_vectors
 The vectors storing the RB output vectors. More...
 
std::vector< Number > RB_outputs
 The vectors storing the RB output values and corresponding error bounds. More...
 
std::vector< Real > RB_output_error_bounds
 
std::vector< Number > Fq_representor_innerprods
 Vectors storing the residual representor inner products to be used in computing the residuals online. More...
 
std::vector< std::vector< std::vector< Number > > > Fq_Aq_representor_innerprods
 Vectors storing the residual representor inner products to be used in computing the residuals online. More...
 
std::vector< std::vector< std::vector< Number > > > Aq_Aq_representor_innerprods
 
std::vector< std::vector< Number > > output_dual_innerprods
 The vector storing the dual norm inner product terms for each output. More...
 
std::vector< std::vector< std::unique_ptr< NumericVector< Number > > > > Aq_representor
 Vector storing the residual representors associated with the left-hand side. More...
 
bool evaluate_RB_error_bound
 Boolean to indicate whether we evaluate a posteriori error bounds when rb_solve is called. More...
 
bool compute_RB_inner_product
 Boolean flag to indicate whether we compute the RB_inner_product_matrix. More...
 
bool verbose_mode
 Public boolean to toggle verbose mode. More...
 

Protected Types

typedef std::map< std::string, std::pair< unsigned int, unsigned int > > Counts
 Data structure to log the information. More...
 

Protected Member Functions

void increment_constructor_count (const std::string &name) noexcept
 Increments the construction counter. More...
 
void increment_destructor_count (const std::string &name) noexcept
 Increments the destruction counter. More...
 

Static Protected Member Functions

static void assert_file_exists (const std::string &file_name)
 Helper function that checks if file_name exists. More...
 

Protected Attributes

const Parallel::Communicator & _communicator
 

Static Protected Attributes

static Counts _counts
 Actually holds the data. More...
 
static Threads::atomic< unsigned int_n_objects
 The number of objects. More...
 
static Threads::spin_mutex _mutex
 Mutual exclusion object to enable thread-safe reference counting. More...
 
static bool _enable_print_counter = true
 Flag to control whether reference count information is printed when print_info is called. More...
 

Detailed Description

Definition at line 45 of file rb_classes.h.

Member Typedef Documentation

◆ Counts

typedef std::map<std::string, std::pair<unsigned int, unsigned int> > libMesh::ReferenceCounter::Counts
protectedinherited

Data structure to log the information.

The log is identified by the class name.

Definition at line 119 of file reference_counter.h.

Constructor & Destructor Documentation

◆ SimpleRBEvaluation() [1/6]

SimpleRBEvaluation::SimpleRBEvaluation ( const libMesh::Parallel::Communicator comm)
inline

Constructor.

Just set the theta expansion.

Definition at line 52 of file rb_classes.h.

References cd_rb_theta_expansion, and libMesh::RBEvaluation::set_rb_theta_expansion().

52  :
54  {
56  }
CDRBThetaExpansion cd_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e. ...
Definition: rb_classes.h:67
const Parallel::Communicator & comm() const
RBEvaluation(const Parallel::Communicator &comm)
Constructor.
Definition: rb_evaluation.C:48
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object.
Definition: rb_evaluation.C:80

◆ SimpleRBEvaluation() [2/6]

SimpleRBEvaluation::SimpleRBEvaluation ( const libMesh::Parallel::Communicator comm)
inline

Constructor.

Just set the theta expansion.

Definition at line 60 of file rb_classes.h.

References ex02_rb_theta_expansion, and libMesh::RBEvaluation::set_rb_theta_expansion().

62  {
64  }
const Parallel::Communicator & comm() const
RBEvaluation(const Parallel::Communicator &comm)
Constructor.
Definition: rb_evaluation.C:48
Ex02RBThetaExpansion ex02_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e. ...
Definition: rb_classes.h:85
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object.
Definition: rb_evaluation.C:80

◆ SimpleRBEvaluation() [3/6]

SimpleRBEvaluation::SimpleRBEvaluation ( const libMesh::Parallel::Communicator comm)
inline

Constructor.

Just set the theta expansion.

Definition at line 52 of file rb_classes.h.

References cd_rb_theta_expansion, and libMesh::RBEvaluation::set_rb_theta_expansion().

54  {
56  }
CDRBThetaExpansion cd_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e. ...
Definition: rb_classes.h:67
const Parallel::Communicator & comm() const
This class is part of the rbOOmit framework.
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object.
Definition: rb_evaluation.C:80

◆ SimpleRBEvaluation() [4/6]

SimpleRBEvaluation::SimpleRBEvaluation ( const libMesh::Parallel::Communicator comm)
inline

Constructor.

Just set the theta expansion.

Definition at line 43 of file rb_classes.h.

References eim_test_rb_theta_expansion, and libMesh::RBEvaluation::set_rb_theta_expansion().

43  :
45  {
47  }
const Parallel::Communicator & comm() const
RBEvaluation(const Parallel::Communicator &comm)
Constructor.
Definition: rb_evaluation.C:48
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object.
Definition: rb_evaluation.C:80
EimTestRBThetaExpansion eim_test_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e. ...
Definition: rb_classes.h:53

◆ SimpleRBEvaluation() [5/6]

SimpleRBEvaluation::SimpleRBEvaluation ( const libMesh::Parallel::Communicator comm)
inline

Constructor.

Just set the theta expansion.

Definition at line 52 of file rb_classes.h.

References ex6_theta_expansion, and libMesh::RBEvaluation::set_rb_theta_expansion().

54  {
56  }
const Parallel::Communicator & comm() const
RBEvaluation(const Parallel::Communicator &comm)
Constructor.
Definition: rb_evaluation.C:48
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object.
Definition: rb_evaluation.C:80
Ex6ThetaExpansion ex6_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e. ...
Definition: rb_classes.h:68

◆ SimpleRBEvaluation() [6/6]

SimpleRBEvaluation::SimpleRBEvaluation ( const libMesh::Parallel::Communicator comm_in)
inline

Constructor.

Just set the theta expansion.

Definition at line 58 of file rb_classes.h.

References acoustics_rb_theta_expansion, and libMesh::RBEvaluation::set_rb_theta_expansion().

59  : RBEvaluation(comm_in)
60  {
62  }
RBEvaluation(const Parallel::Communicator &comm)
Constructor.
Definition: rb_evaluation.C:48
AcousticsRBThetaExpansion acoustics_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e. ...
Definition: rb_classes.h:74
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object.
Definition: rb_evaluation.C:80

Member Function Documentation

◆ assert_file_exists()

void libMesh::RBEvaluation::assert_file_exists ( const std::string &  file_name)
staticprotectedinherited

Helper function that checks if file_name exists.

Definition at line 987 of file rb_evaluation.C.

Referenced by libMesh::TransientRBEvaluation::legacy_read_offline_data_from_files(), libMesh::RBEvaluation::legacy_read_offline_data_from_files(), and libMesh::RBEvaluation::read_in_vectors_from_multiple_files().

988 {
989  libmesh_error_msg_if(!std::ifstream(file_name.c_str()), "File missing: " << file_name);
990 }

◆ clear()

void libMesh::RBEvaluation::clear ( )
overridevirtualinherited

Clear this RBEvaluation object.

Delete the basis functions and clear and extra data in subclasses.

Reimplemented from libMesh::RBParametrized.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 59 of file rb_evaluation.C.

References libMesh::RBEvaluation::basis_functions, libMesh::RBEvaluation::clear_riesz_representors(), libMesh::RBEvaluation::greedy_param_list, and libMesh::RBEvaluation::set_n_basis_functions().

Referenced by libMesh::TransientRBEvaluation::clear().

60 {
61  LOG_SCOPE("clear()", "RBEvaluation");
62 
63  // Clear the basis functions
64  basis_functions.clear();
66 
68 
69  // Clear the Greedy param list
70  for (auto & plist : greedy_param_list)
71  plist.clear();
72  greedy_param_list.clear();
73 }
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.
std::vector< RBParameters > greedy_param_list
The list of parameters selected by the Greedy algorithm in generating the Reduced Basis associated wi...
virtual void set_n_basis_functions(unsigned int n_bfs)
Set the number of basis functions.
Definition: rb_evaluation.C:75
virtual void clear_riesz_representors()
Clear all the Riesz representors that are used to compute the RB residual (and hence error bound)...

◆ clear_riesz_representors()

void libMesh::RBEvaluation::clear_riesz_representors ( )
virtualinherited

Clear all the Riesz representors that are used to compute the RB residual (and hence error bound).

This is useful since once we complete the Greedy we may not need the representors any more.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 521 of file rb_evaluation.C.

References libMesh::RBEvaluation::Aq_representor.

Referenced by libMesh::RBEvaluation::clear(), libMesh::TransientRBEvaluation::clear_riesz_representors(), and libMesh::RBEvaluation::resize_data_structures().

522 {
523  Aq_representor.clear();
524 }
std::vector< std::vector< std::unique_ptr< NumericVector< Number > > > > Aq_representor
Vector storing the residual representors associated with the left-hand side.

◆ comm()

const Parallel::Communicator& libMesh::ParallelObject::comm ( ) const
inlineinherited
Returns
A reference to the Parallel::Communicator object used by this mesh.

Definition at line 97 of file parallel_object.h.

References libMesh::ParallelObject::_communicator.

Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_equality_constraints_jacobian(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_hessian(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::__libmesh_tao_inequality_constraints_jacobian(), libMesh::__libmesh_tao_objective(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::Partitioner::_find_global_index_by_pid_map(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< libMesh::Number >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_mult(), libMesh::SlepcEigenSolver< libMesh::Number >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_mult_add(), libMesh::MeshRefinement::_refine_elements(), libMesh::MeshRefinement::_smooth_flags(), libMesh::DofMap::add_constraints_to_send_list(), add_cube_convex_hull_to_mesh(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::TransientRBConstruction::add_IC_to_RB_space(), libMesh::RBEIMEvaluation::add_interpolation_data(), libMesh::CondensedEigenSystem::add_matrices(), libMesh::EigenSystem::add_matrices(), libMesh::System::add_matrix(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), libMesh::System::add_variable(), libMesh::System::add_variables(), libMesh::System::add_vector(), libMesh::MeshTools::Modification::all_tri(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::TransientRBConstruction::allocate_data_structures(), libMesh::RBConstruction::allocate_data_structures(), libMesh::TransientRBConstruction::assemble_affine_expansion(), libMesh::AdvectionSystem::assemble_claw_rhs(), libMesh::FEMSystem::assemble_qoi(), libMesh::Nemesis_IO::assert_symmetric_cmaps(), libMesh::MeshCommunication::assign_global_indices(), libMesh::Partitioner::assign_partitioning(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::Partitioner::build_graph(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::PetscDMWrapper::build_sf(), libMesh::MeshBase::cache_elem_data(), libMesh::System::calculate_norm(), libMesh::DofMap::check_dirichlet_bcid_consistency(), libMesh::RBConstruction::compute_Fq_representor_innerprods(), libMesh::RBConstruction::compute_max_error_bound(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::RBConstruction::compute_output_dual_innerprods(), libMesh::RBConstruction::compute_residual_dual_norm_slow(), libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), libMesh::DofMap::computed_sparsity_already(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::ContinuationSystem::ContinuationSystem(), libMesh::MeshBase::copy_constraint_rows(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::CondensedEigenSystem::copy_super_to_sub(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::DofMap::create_dof_constraints(), libMesh::MeshTools::create_nodal_bounding_box(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::MeshTools::create_subdomain_bounding_box(), libMesh::PetscMatrix< T >::create_submatrix_nosort(), create_wrapped_function(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::RBEIMEvaluation::distribute_bfs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::DTKSolutionTransfer::DTKSolutionTransfer(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_interiors(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_nodes(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_sides(), libMesh::TransientRBConstruction::enrich_RB_space(), libMesh::EpetraVector< T >::EpetraVector(), AssembleOptimization::equality_constraints(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_error_tolerance(), libMesh::MeshRefinement::flag_elements_by_mean_stddev(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::RBEIMEvaluation::gather_bfs(), libMesh::DofMap::gather_constraints(), libMesh::MeshfreeInterpolation::gather_remote_data(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::RBEIMEvaluation::get_eim_basis_function_node_value(), libMesh::RBEIMEvaluation::get_eim_basis_function_side_value(), libMesh::RBEIMEvaluation::get_eim_basis_function_value(), libMesh::MeshBase::get_info(), libMesh::System::get_info(), libMesh::DofMap::get_info(), libMesh::RBEIMEvaluation::get_interior_basis_functions_as_vecs(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::RBEIMConstruction::get_max_abs_value(), libMesh::RBEIMConstruction::get_node_max_abs_value(), libMesh::RBEIMEvaluation::get_parametrized_function_node_value(), libMesh::RBEIMEvaluation::get_parametrized_function_side_value(), libMesh::RBEIMEvaluation::get_parametrized_function_value(), libMesh::RBEIMConstruction::get_random_point(), AssembleOptimization::inequality_constraints(), AssembleOptimization::inequality_constraints_jacobian(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::StaticCondensation::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::AdvectionSystem::init_data(), libMesh::ClawSystem::init_data(), libMesh::PetscDMWrapper::init_petscdm(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::RBEIMConstruction::initialize_parametrized_functions_in_training_set(), libMesh::RBEIMConstruction::inner_product(), integrate_function(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_equal_connectivity(), libMesh::MeshTools::libmesh_assert_equal_points(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_constraint_rows(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_flags(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_p_levels(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_unique_ids(), libMesh::libmesh_petsc_linesearch_shellfunc(), libMesh::libmesh_petsc_preconditioner_apply(), libMesh::libmesh_petsc_recalculate_monitor(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_interface(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_precheck(), libMesh::libmesh_petsc_snes_residual(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), libMesh::LinearImplicitSystem::LinearImplicitSystem(), main(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_new_nodes_parallel_consistent(), libMesh::MeshCommunication::make_node_bcids_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::TransientRBConstruction::mass_matrix_scaled_matvec(), libMesh::FEMSystem::mesh_position_set(), libMesh::TriangulatorInterface::MeshedHole::MeshedHole(), LinearElasticityWithContact::move_mesh(), libMesh::DistributedMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::MeshTools::n_connected_components(), libMesh::DofMap::n_constrained_dofs(), libMesh::MeshBase::n_constraint_rows(), libMesh::DofMap::n_dofs(), libMesh::DofMap::n_dofs_per_processor(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), MixedOrderTest::n_neighbor_links(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::SparsityPattern::Build::n_nonzeros(), libMesh::MeshTools::n_p_levels(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::RBEIMEvaluation::node_distribute_bfs(), libMesh::RBEIMEvaluation::node_gather_bfs(), libMesh::RBEIMConstruction::node_inner_product(), libMesh::MeshBase::operator==(), libMesh::DistributedMesh::parallel_max_elem_id(), libMesh::DistributedMesh::parallel_max_node_id(), libMesh::ReplicatedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_n_elem(), libMesh::DistributedMesh::parallel_n_nodes(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::BoundaryInfo::parallel_sync_node_ids(), libMesh::BoundaryInfo::parallel_sync_side_ids(), libMesh::MeshTools::paranoid_n_levels(), libMesh::Partitioner::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::prepare_for_use(), libMesh::MeshBase::print_constraint_rows(), libMesh::DofMap::print_dof_constraints(), libMesh::DofMap::process_mesh_constraint_rows(), libMesh::Partitioner::processor_pairs_to_interface_nodes(), libMesh::InterMeshProjection::project_system_vectors(), FEMParameters::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::EquationSystems::read(), libMesh::ExodusII_IO::read_header(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::RBEIMEvaluation::read_in_interior_basis_functions(), libMesh::RBEIMEvaluation::read_in_node_basis_functions(), libMesh::RBEIMEvaluation::read_in_side_basis_functions(), libMesh::RBEvaluation::read_in_vectors_from_multiple_files(), libMesh::System::read_legacy_data(), libMesh::TransientRBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::read_riesz_representors_from_files(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::Nemesis_IO_Helper::read_var_names_impl(), libMesh::MeshBase::recalculate_n_partitions(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::StaticCondensationDofMap::reinit(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DistributedMesh::renumber_nodes_and_elements(), LinearElasticityWithContact::residual_and_jacobian(), OverlappingAlgebraicGhostingTest::run_ghosting_test(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), scale_mesh_and_plot(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::send_and_insert_dof_values(), libMesh::TransientRBConstruction::set_error_temporal_data(), libMesh::Partitioner::set_interface_node_processor_ids_BFS(), libMesh::Partitioner::set_interface_node_processor_ids_linear(), libMesh::Partitioner::set_interface_node_processor_ids_petscpartitioner(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::Partitioner::set_parent_processor_ids(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::RBEIMEvaluation::side_distribute_bfs(), libMesh::RBEIMEvaluation::side_gather_bfs(), libMesh::RBEIMConstruction::side_inner_product(), libMesh::Partitioner::single_partition(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::VariationalMeshSmoother::smooth(), libMesh::ClawSystem::solve_conservation_law(), libMesh::split_mesh(), libMesh::RBEIMConstruction::store_eim_solutions_for_training_set(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), ConstraintOperatorTest::test1DCoarseningNewNodes(), ConstraintOperatorTest::test1DCoarseningOperator(), libMesh::MeshRefinement::test_level_one(), MeshfunctionDFEM::test_mesh_function_dfem(), MeshfunctionDFEM::test_mesh_function_dfem_grad(), MeshFunctionTest::test_p_level(), libMesh::MeshRefinement::test_unflagged(), DofMapTest::testBadElemFECombo(), SystemsTest::testBlockRestrictedVarNDofs(), BoundaryInfoTest::testBoundaryOnChildrenErrors(), VolumeTest::testC0PolygonMethods(), VolumeTest::testC0PolyhedronMethods(), ConstraintOperatorTest::testCoreform(), ConnectedComponentsTest::testEdge(), MeshInputTest::testExodusIGASidesets(), MeshTriangulationTest::testFoundCenters(), PointLocatorTest::testLocator(), BoundaryInfoTest::testMesh(), PointLocatorTest::testPlanar(), MeshTriangulationTest::testPoly2TriRefinementBase(), SystemsTest::testProjectCubeWithMeshFunction(), BoundaryInfoTest::testRenumber(), CheckpointIOTest::testSplitter(), MeshInputTest::testTetgenIO(), MeshTriangulationTest::testTriangulatorInterp(), MeshTriangulationTest::testTriangulatorMeshedHoles(), MeshTriangulationTest::testTriangulatorRoundHole(), libMesh::MeshTools::total_weight(), libMesh::RBConstruction::train_reduced_basis_with_POD(), libMesh::MeshFunctionSolutionTransfer::transfer(), libMesh::MeshfreeSolutionTransfer::transfer(), libMesh::Poly2TriTriangulator::triangulate(), libMesh::TransientRBConstruction::truth_assembly(), libMesh::RBConstruction::truth_assembly(), libMesh::MeshRefinement::uniformly_coarsen(), update_current_local_solution(), libMesh::TransientRBConstruction::update_RB_initial_condition_all_N(), libMesh::TransientRBConstruction::update_RB_system_matrices(), libMesh::RBConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_residual_terms(), libMesh::RBConstruction::update_residual_terms(), libMesh::MeshTools::volume(), libMesh::STLIO::write(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::VTKIO::write_nodal_data(), libMesh::RBEIMEvaluation::write_out_interior_basis_functions(), libMesh::RBEIMEvaluation::write_out_node_basis_functions(), libMesh::RBEIMEvaluation::write_out_side_basis_functions(), libMesh::RBEvaluation::write_out_vectors(), libMesh::TransientRBConstruction::write_riesz_representors_to_files(), libMesh::RBConstruction::write_riesz_representors_to_files(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::RBDataSerialization::RBEvaluationSerialization::write_to_file(), libMesh::RBDataSerialization::TransientRBEvaluationSerialization::write_to_file(), libMesh::RBDataSerialization::RBEIMEvaluationSerialization::write_to_file(), and libMesh::RBDataSerialization::RBSCMEvaluationSerialization::write_to_file().

98  { return _communicator; }
const Parallel::Communicator & _communicator

◆ compute_residual_dual_norm() [1/2]

Real libMesh::RBEvaluation::compute_residual_dual_norm ( const unsigned int  N)
virtualinherited

Compute the dual norm of the residual for the solution saved in RB_solution_vector.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 351 of file rb_evaluation.C.

Referenced by libMesh::RBEvaluation::rb_solve().

352 {
353  return compute_residual_dual_norm(N, nullptr);
354 }
virtual Real compute_residual_dual_norm(const unsigned int N)
Compute the dual norm of the residual for the solution saved in RB_solution_vector.

◆ compute_residual_dual_norm() [2/2]

Real libMesh::RBEvaluation::compute_residual_dual_norm ( const unsigned int  N,
const std::vector< Number > *  evaluated_thetas 
)
virtualinherited

The same as above, except that we pass in evaluated thetas instead of recomputing the theta values.

Definition at line 356 of file rb_evaluation.C.

References libMesh::RBEvaluation::Aq_Aq_representor_innerprods, libMesh::RBEvaluation::check_evaluated_thetas_size(), libMesh::RBThetaExpansion::eval_A_theta(), libMesh::RBThetaExpansion::eval_F_theta(), libMesh::RBEvaluation::Fq_Aq_representor_innerprods, libMesh::RBEvaluation::Fq_representor_innerprods, libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBThetaExpansion::get_n_F_terms(), libMesh::RBParametrized::get_parameters(), libMesh::libmesh_conj(), libMesh::libmesh_real(), libMesh::RBEvaluation::RB_solution, libMesh::RBEvaluation::rb_theta_expansion, and libMesh::Real.

358 {
359  LOG_SCOPE("compute_residual_dual_norm()", "RBEvaluation");
360 
361  // In case the theta functions have been pre-evaluated, first check the size for consistency
362  this->check_evaluated_thetas_size(evaluated_thetas);
363 
364  // If evaluated_thetas is provided, then mu is not actually used for anything
365  const RBParameters & mu = get_parameters();
366 
367  const unsigned int n_A_terms = rb_theta_expansion->get_n_A_terms();
368  const unsigned int n_F_terms = rb_theta_expansion->get_n_F_terms();
369 
370  // Use the stored representor inner product values
371  // to evaluate the residual norm
372  Number residual_norm_sq = 0.;
373 
374  // Lambdas to help with evaluating F_theta and A_theta functions
375  // using either the pre-evaluated thetas (if provided) or by calling
376  // eval_{F,A}_theta()
377  auto eval_F = [&](unsigned int index)
378  {
379  return (evaluated_thetas) ? (*evaluated_thetas)[index + n_A_terms] : rb_theta_expansion->eval_F_theta(index, mu);
380  };
381  auto eval_A = [&](unsigned int index)
382  {
383  return (evaluated_thetas) ? (*evaluated_thetas)[index] : rb_theta_expansion->eval_A_theta(index, mu);
384  };
385 
386  unsigned int q=0;
387  for (unsigned int q_f1=0; q_f1<n_F_terms; q_f1++)
388  {
389  const Number val_q_f1 = eval_F(q_f1);
390 
391  for (unsigned int q_f2=q_f1; q_f2<n_F_terms; q_f2++)
392  {
393  const Number val_q_f2 = eval_F(q_f2);
394 
395  Real delta = (q_f1==q_f2) ? 1. : 2.;
396  residual_norm_sq += delta * libmesh_real(val_q_f1 * libmesh_conj(val_q_f2) * Fq_representor_innerprods[q] );
397 
398  q++;
399  }
400  }
401 
402  for (unsigned int q_f=0; q_f<n_F_terms; q_f++)
403  {
404  const Number val_q_f = eval_F(q_f);
405 
406  for (unsigned int q_a=0; q_a<n_A_terms; q_a++)
407  {
408  const Number val_q_a = eval_A(q_a);
409 
410  for (unsigned int i=0; i<N; i++)
411  {
412  Real delta = 2.;
413  residual_norm_sq +=
414  delta * libmesh_real( val_q_f * libmesh_conj(val_q_a) *
416  }
417  }
418  }
419 
420  q=0;
421  for (unsigned int q_a1=0; q_a1<n_A_terms; q_a1++)
422  {
423  const Number val_q_a1 = eval_A(q_a1);
424 
425  for (unsigned int q_a2=q_a1; q_a2<n_A_terms; q_a2++)
426  {
427  const Number val_q_a2 = eval_A(q_a2);
428 
429  Real delta = (q_a1==q_a2) ? 1. : 2.;
430 
431  for (unsigned int i=0; i<N; i++)
432  {
433  for (unsigned int j=0; j<N; j++)
434  {
435  residual_norm_sq +=
436  delta * libmesh_real( libmesh_conj(val_q_a1) * val_q_a2 *
438  }
439  }
440 
441  q++;
442  }
443  }
444 
445  if (libmesh_real(residual_norm_sq) < 0.)
446  {
447  // libMesh::out << "Warning: Square of residual norm is negative "
448  // << "in RBSystem::compute_residual_dual_norm()" << std::endl;
449 
450  // Sometimes this is negative due to rounding error,
451  // but when this occurs the error is on the order of 1.e-10,
452  // so shouldn't affect error bound much...
453  residual_norm_sq = std::abs(residual_norm_sq);
454  }
455 
456  return std::sqrt( libmesh_real(residual_norm_sq) );
457 }
T libmesh_real(T a)
virtual Number eval_A_theta(unsigned int q, const RBParameters &mu) const
Evaluate theta_q_a at the current parameter.
std::vector< Number > Fq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
T libmesh_conj(T a)
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
DenseVector< Number > RB_solution
The RB solution vector.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
virtual Number eval_F_theta(unsigned int q, const RBParameters &mu) const
Evaluate theta_q_f at the current parameter.
const RBParameters & get_parameters() const
Get the current parameters.
std::vector< std::vector< std::vector< Number > > > Fq_Aq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void check_evaluated_thetas_size(const std::vector< Number > *evaluated_thetas) const
For interfaces like rb_solve() and compute_residual_dual_norm() that optinally take a vector of "pre-...
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
std::vector< std::vector< std::vector< Number > > > Aq_Aq_representor_innerprods

◆ disable_print_counter_info()

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 100 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

101 {
102  _enable_print_counter = false;
103  return;
104 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ enable_print_counter_info()

void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

Methods to enable/disable the reference counter output from print_info()

Definition at line 94 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

95 {
96  _enable_print_counter = true;
97  return;
98 }
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ eval_output_dual_norm() [1/2]

Real libMesh::RBEvaluation::eval_output_dual_norm ( unsigned int  n,
const RBParameters mu 
)
inherited

Evaluate the dual norm of output n for the current parameters.

This function is

Deprecated:
, since you should either evaluate the output dual norm using a vector of pre-evaluated thetas, or by using the RBParameters object returned by calling get_parameters() on this class. Instead call the version of this function that takes an option pointer to a vector of evalauted theta values.

Definition at line 475 of file rb_evaluation.C.

Referenced by libMesh::TransientRBEvaluation::rb_solve(), and libMesh::RBEvaluation::rb_solve().

476 {
477  libmesh_deprecated();
478 
479  // Call non-deprecated version of this function, ignoring input mu
480  return this->eval_output_dual_norm(n, nullptr);
481 }
Real eval_output_dual_norm(unsigned int n, const RBParameters &mu)
Evaluate the dual norm of output n for the current parameters.

◆ eval_output_dual_norm() [2/2]

Real libMesh::RBEvaluation::eval_output_dual_norm ( unsigned int  n,
const std::vector< Number > *  evaluated_thetas 
)
inherited

Evaluate the dual norm of output n for the current parameters, or using the pre-evaluted theta values provided in the "evaluated_thetas" array.

Definition at line 484 of file rb_evaluation.C.

References libMesh::RBThetaExpansion::eval_output_theta(), libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBThetaExpansion::get_n_F_terms(), libMesh::RBThetaExpansion::get_n_output_terms(), libMesh::RBParametrized::get_parameters(), libMesh::libmesh_conj(), libMesh::libmesh_real(), libMesh::RBEvaluation::output_dual_innerprods, libMesh::RBThetaExpansion::output_index_1D(), libMesh::RBEvaluation::rb_theta_expansion, and libMesh::Real.

486 {
487  // Return value
488  Number output_bound_sq = 0.;
489 
490  // mu is only used if evaluated_thetas == nullptr
491  const RBParameters & mu = this->get_parameters();
492 
493  // Index into output_dual_innerprods
494  unsigned int q=0;
495  for (unsigned int q_l1=0; q_l1<rb_theta_expansion->get_n_output_terms(n); q_l1++)
496  {
497  for (unsigned int q_l2=q_l1; q_l2<rb_theta_expansion->get_n_output_terms(n); q_l2++)
498  {
499  Real delta = (q_l1==q_l2) ? 1. : 2.;
500 
501  Number val_l1 =
502  evaluated_thetas ?
505 
506  Number val_l2 =
507  evaluated_thetas ?
510 
511  output_bound_sq += delta * libmesh_real(
512  libmesh_conj(val_l1) * val_l2 * output_dual_innerprods[n][q]);
513 
514  q++;
515  }
516  }
517 
518  return libmesh_real(std::sqrt( output_bound_sq ));
519 }
T libmesh_real(T a)
virtual Number eval_output_theta(unsigned int output_index, unsigned int q_l, const RBParameters &mu) const
Evaluate theta_q_l at the current parameter.
T libmesh_conj(T a)
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
std::vector< std::vector< Number > > output_dual_innerprods
The vector storing the dual norm inner product terms for each output.
unsigned int output_index_1D(unsigned int n, unsigned int q_l) const
Computes the one-dimensional index for output n, term q_l implied by a "row-major" ordering of the ou...
const RBParameters & get_parameters() const
Get the current parameters.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.

◆ get_basis_function() [1/2]

NumericVector< Number > & libMesh::RBEvaluation::get_basis_function ( unsigned int  i)
inherited

Get a reference to the i^th basis function.

Definition at line 207 of file rb_evaluation.C.

References libMesh::RBEvaluation::basis_functions.

Referenced by libMesh::TransientRBConstruction::add_IC_to_RB_space(), libMesh::TransientRBConstruction::enrich_RB_space(), libMesh::RBConstruction::load_basis_function(), and libMesh::TransientRBConstruction::update_RB_system_matrices().

208 {
209  libmesh_assert_less (i, basis_functions.size());
210 
211  return *(basis_functions[i]);
212 }
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.

◆ get_basis_function() [2/2]

const NumericVector< Number > & libMesh::RBEvaluation::get_basis_function ( unsigned int  i) const
inherited

Definition at line 214 of file rb_evaluation.C.

References libMesh::RBEvaluation::basis_functions.

215 {
216  libmesh_assert_less (i, basis_functions.size());
217 
218  return *(basis_functions[i]);
219 }
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.

◆ get_closest_value()

Real libMesh::RBParametrized::get_closest_value ( Real  value,
const std::vector< Real > &  list_of_values 
)
staticinherited
Returns
The closest entry to value from list_of_values.

Definition at line 446 of file rb_parametrized.C.

References distance(), libMesh::Real, and value.

Referenced by libMesh::RBParametrized::is_value_in_list().

447 {
448  libmesh_error_msg_if(list_of_values.empty(), "Error: list_of_values is empty.");
449 
450  Real min_distance = std::numeric_limits<Real>::max();
451  Real closest_val = 0.;
452  for (const auto & current_value : list_of_values)
453  {
454  Real distance = std::abs(value - current_value);
455  if (distance < min_distance)
456  {
457  min_distance = distance;
458  closest_val = current_value;
459  }
460  }
461 
462  return closest_val;
463 }
Real distance(const Point &p)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const bool value
Definition: xdr_io.C:54

◆ get_discrete_parameter_values()

const std::map< std::string, std::vector< Real > > & libMesh::RBParametrized::get_discrete_parameter_values ( ) const
inherited

Get a const reference to the discrete parameter values.

Definition at line 373 of file rb_parametrized.C.

References libMesh::RBParametrized::_discrete_parameter_values, and libMesh::RBParametrized::parameters_initialized.

Referenced by libMesh::RBDataSerialization::add_parameter_ranges_to_builder(), libMesh::RBParametrized::check_if_valid_params(), libMesh::RBParametrized::get_n_discrete_params(), libMesh::RBParametrized::initialize_parameters(), libMesh::RBParametrized::print_discrete_parameter_values(), and libMesh::RBParametrized::write_discrete_parameter_values_to_file().

374 {
375  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_discrete_parameter_values");
376 
378 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
std::map< std::string, std::vector< Real > > _discrete_parameter_values
Map that defines the allowable values of any discrete parameters.

◆ get_error_bound_normalization()

Real libMesh::RBEvaluation::get_error_bound_normalization ( )
virtualinherited
Returns
A scaling factor that we can use to provide a consistent scaling of the RB error bound across different parameter values.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 340 of file rb_evaluation.C.

References libMesh::RBEvaluation::rb_solve(), and libMesh::Real.

Referenced by libMesh::RBConstruction::get_RB_error_bound().

341 {
342  // Normalize the error based on the error bound in the
343  // case of an empty reduced basis. The error bound is based
344  // on the residual F - AU, so with an empty basis this gives
345  // a value based on the norm of F at the current parameters.
346 
347  Real normalization = rb_solve(0);
348  return normalization;
349 }
virtual Real rb_solve(unsigned int N)
Perform online solve with the N RB basis functions, for the set of parameters in current_params, where 0 <= N <= RB_size.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ get_info()

std::string libMesh::ReferenceCounter::get_info ( )
staticinherited

Gets a string containing the reference information.

Definition at line 47 of file reference_counter.C.

References libMesh::ReferenceCounter::_counts, and libMesh::Quality::name().

Referenced by libMesh::ReferenceCounter::print_info().

48 {
49 #if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
50 
51  std::ostringstream oss;
52 
53  oss << '\n'
54  << " ---------------------------------------------------------------------------- \n"
55  << "| Reference count information |\n"
56  << " ---------------------------------------------------------------------------- \n";
57 
58  for (const auto & [name, cd] : _counts)
59  oss << "| " << name << " reference count information:\n"
60  << "| Creations: " << cd.first << '\n'
61  << "| Destructions: " << cd.second << '\n';
62 
63  oss << " ---------------------------------------------------------------------------- \n";
64 
65  return oss.str();
66 
67 #else
68 
69  return "";
70 
71 #endif
72 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
static Counts _counts
Actually holds the data.

◆ get_n_basis_functions()

virtual unsigned int libMesh::RBEvaluation::get_n_basis_functions ( ) const
inlinevirtualinherited

Get the current number of basis functions.

Definition at line 183 of file rb_evaluation.h.

References libMesh::RBEvaluation::basis_functions.

Referenced by libMesh::RBDataSerialization::add_rb_evaluation_data_to_builder(), libMesh::RBDataSerialization::add_transient_rb_evaluation_data_to_builder(), libMesh::TransientRBConstruction::assemble_affine_expansion(), libMesh::RBConstruction::compute_residual_dual_norm_slow(), libMesh::RBConstruction::enrich_RB_space(), libMesh::RBConstruction::greedy_termination_test(), libMesh::TransientRBEvaluation::legacy_read_offline_data_from_files(), libMesh::TransientRBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEvaluation::legacy_write_offline_data_to_files(), libMesh::TransientRBConstruction::load_rb_solution(), libMesh::RBConstruction::load_rb_solution(), libMesh::RBConstruction::print_basis_function_orthogonality(), libMesh::TransientRBEvaluation::rb_solve(), libMesh::RBEvaluation::rb_solve(), libMesh::RBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::recompute_all_residual_terms(), libMesh::RBEvaluation::resize_data_structures(), libMesh::TransientRBConstruction::set_error_temporal_data(), libMesh::RBConstruction::train_reduced_basis_with_greedy(), libMesh::RBConstruction::train_reduced_basis_with_POD(), libMesh::TransientRBConstruction::update_RB_initial_condition_all_N(), libMesh::TransientRBConstruction::update_RB_system_matrices(), libMesh::RBConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_residual_terms(), libMesh::RBConstruction::update_residual_terms(), libMesh::TransientRBConstruction::write_riesz_representors_to_files(), and libMesh::RBConstruction::write_riesz_representors_to_files().

184  { return cast_int<unsigned int>(basis_functions.size()); }
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.

◆ get_n_continuous_params()

unsigned int libMesh::RBParametrized::get_n_continuous_params ( ) const
inherited

Get the number of continuous parameters.

Definition at line 112 of file rb_parametrized.C.

References libMesh::RBParametrized::get_n_discrete_params(), libMesh::RBParametrized::get_n_params(), libMesh::libmesh_assert(), and libMesh::RBParametrized::parameters_initialized.

Referenced by libMesh::RBDataSerialization::add_parameter_ranges_to_builder(), and libMesh::RBParametrized::write_parameter_ranges_to_file().

113 {
114  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_n_continuous_params");
115 
117 
118  return static_cast<unsigned int>(get_n_params() - get_n_discrete_params());
119 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
unsigned int get_n_discrete_params() const
Get the number of discrete parameters.
libmesh_assert(ctx)
unsigned int get_n_params() const
Get the number of parameters.

◆ get_n_discrete_params()

unsigned int libMesh::RBParametrized::get_n_discrete_params ( ) const
inherited

Get the number of discrete parameters.

Definition at line 121 of file rb_parametrized.C.

References libMesh::RBParametrized::get_discrete_parameter_values(), and libMesh::RBParametrized::parameters_initialized.

Referenced by libMesh::RBDataSerialization::add_parameter_ranges_to_builder(), libMesh::RBParametrized::get_n_continuous_params(), and libMesh::RBParametrized::write_discrete_parameter_values_to_file().

122 {
123  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_n_discrete_params");
124 
125  return cast_int<unsigned int>
127 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
const std::map< std::string, std::vector< Real > > & get_discrete_parameter_values() const
Get a const reference to the discrete parameter values.

◆ get_n_params()

unsigned int libMesh::RBParametrized::get_n_params ( ) const
inherited

Get the number of parameters.

Definition at line 103 of file rb_parametrized.C.

References libMesh::RBParameters::n_parameters(), libMesh::RBParametrized::parameters_initialized, libMesh::RBParametrized::parameters_max, and libMesh::RBParametrized::parameters_min.

Referenced by libMesh::RBParametrized::check_if_valid_params(), libMesh::RBEIMConstruction::compute_max_eim_error(), libMesh::RBConstruction::compute_max_error_bound(), libMesh::RBParametrized::get_n_continuous_params(), libMesh::RBSCMConstruction::print_info(), libMesh::RBEIMConstruction::print_info(), libMesh::RBConstruction::print_info(), libMesh::RBEIMEvaluation::set_eim_error_indicator_active(), and libMesh::RBConstruction::train_reduced_basis_with_POD().

104 {
105  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_n_params");
106 
107  libmesh_assert_equal_to ( parameters_min.n_parameters(), parameters_max.n_parameters() );
108 
109  return parameters_min.n_parameters();
110 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.
unsigned int n_parameters() const
Get the number of parameters that have been added.

◆ get_parameter_max()

Real libMesh::RBParametrized::get_parameter_max ( const std::string &  param_name) const
inherited

Get maximum allowable value of parameter param_name.

Definition at line 185 of file rb_parametrized.C.

References libMesh::RBParameters::get_value(), libMesh::RBParametrized::parameters_initialized, and libMesh::RBParametrized::parameters_max.

Referenced by libMesh::RBParametrized::check_if_valid_params(), libMesh::RBSCMConstruction::print_info(), libMesh::RBEIMConstruction::print_info(), and libMesh::RBConstruction::print_info().

186 {
187  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_parameter_max");
188 
189  return parameters_max.get_value(param_name);
190 }
Real get_value(const std::string &param_name) const
Get the value of the specified parameter, throw an error if it does not exist.
Definition: rb_parameters.C:65
bool parameters_initialized
Flag indicating whether the parameters have been initialized.

◆ get_parameter_min()

Real libMesh::RBParametrized::get_parameter_min ( const std::string &  param_name) const
inherited

Get minimum allowable value of parameter param_name.

Definition at line 178 of file rb_parametrized.C.

References libMesh::RBParameters::get_value(), libMesh::RBParametrized::parameters_initialized, and libMesh::RBParametrized::parameters_min.

Referenced by libMesh::RBParametrized::check_if_valid_params(), libMesh::RBSCMConstruction::print_info(), libMesh::RBEIMConstruction::print_info(), and libMesh::RBConstruction::print_info().

179 {
180  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_parameter_min");
181 
182  return parameters_min.get_value(param_name);
183 }
Real get_value(const std::string &param_name) const
Get the value of the specified parameter, throw an error if it does not exist.
Definition: rb_parameters.C:65
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.

◆ get_parameter_names()

std::set< std::string > libMesh::RBParametrized::get_parameter_names ( ) const
inherited

Get a set that stores the parameter names.

Deprecated:
to avoid making it too easy to create copies that in most circumstances aren't needed. If this functionality really is required, call get_parameters_min().get_parameters_map() and loop over the keys directly.

Definition at line 130 of file rb_parametrized.C.

References libMesh::RBParametrized::parameters_initialized, and libMesh::RBParametrized::parameters_min.

131 {
132  libmesh_deprecated();
133  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_parameter_names");
134 
135  std::set<std::string> parameter_names;
136  for (const auto & pr : parameters_min)
137  parameter_names.insert(pr.first);
138 
139  return parameter_names;
140 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.

◆ get_parameters()

const RBParameters & libMesh::RBParametrized::get_parameters ( ) const
inherited

Get the current parameters.

Definition at line 157 of file rb_parametrized.C.

References libMesh::RBParametrized::parameters, and libMesh::RBParametrized::parameters_initialized.

Referenced by libMesh::TransientRBConstruction::add_scaled_mass_matrix(), libMesh::TransientRBEvaluation::cache_online_residual_terms(), libMesh::RBEvaluation::compute_residual_dual_norm(), libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), libMesh::RBSCMConstruction::enrich_C_J(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_interiors(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_nodes(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_sides(), libMesh::RBEvaluation::eval_output_dual_norm(), libMesh::RBSCMConstruction::evaluate_stability_constant(), libMesh::RBConstruction::get_RB_error_bound(), libMesh::RBSCMEvaluation::get_SCM_LB(), libMesh::RBSCMEvaluation::get_SCM_UB(), get_stability_lower_bound(), libMesh::RBConstruction::greedy_termination_test(), libMesh::RBEIMConstruction::initialize_parametrized_functions_in_training_set(), libMesh::RBSCMEvaluation::legacy_read_offline_data_from_files(), libMesh::TransientRBConstruction::mass_matrix_scaled_matvec(), libMesh::RBConstruction::preevaluate_thetas(), libMesh::RBSCMConstruction::print_info(), libMesh::RBEIMConstruction::print_info(), libMesh::RBConstruction::print_info(), libMesh::RBParametrized::print_parameters(), libMesh::RBSCMConstruction::process_parameters_file(), libMesh::TransientRBEvaluation::rb_solve(), libMesh::RBEvaluation::rb_solve(), libMesh::RBSCMEvaluation::save_current_parameters(), libMesh::RBEIMConstruction::train_eim_approximation_with_greedy(), libMesh::RBEIMConstruction::train_eim_approximation_with_POD(), libMesh::TransientRBConstruction::truth_assembly(), libMesh::RBConstruction::truth_assembly(), libMesh::TransientRBConstruction::truth_solve(), libMesh::RBConstruction::truth_solve(), libMesh::TransientRBEvaluation::uncached_compute_residual_dual_norm(), and libMesh::RBConstruction::update_greedy_param_list().

158 {
159  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_parameters");
160 
161  return parameters;
162 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
RBParameters parameters
Vector storing the current parameters.

◆ get_parameters_max()

const RBParameters & libMesh::RBParametrized::get_parameters_max ( ) const
inherited

Get an RBParameters object that specifies the maximum allowable value for each parameter.

Definition at line 171 of file rb_parametrized.C.

References libMesh::RBParametrized::parameters_initialized, and libMesh::RBParametrized::parameters_max.

Referenced by libMesh::RBDataSerialization::add_parameter_ranges_to_builder(), libMesh::RBParametrized::initialize_parameters(), libMesh::RBSCMConstruction::process_parameters_file(), libMesh::RBEIMConstruction::set_rb_construction_parameters(), libMesh::RBConstruction::set_rb_construction_parameters(), and libMesh::RBParametrized::write_parameter_ranges_to_file().

172 {
173  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_parameters_max");
174 
175  return parameters_max;
176 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.

◆ get_parameters_min()

const RBParameters & libMesh::RBParametrized::get_parameters_min ( ) const
inherited

Get an RBParameters object that specifies the minimum allowable value for each parameter.

Definition at line 164 of file rb_parametrized.C.

References libMesh::RBParametrized::parameters_initialized, and libMesh::RBParametrized::parameters_min.

Referenced by libMesh::RBDataSerialization::add_parameter_ranges_to_builder(), libMesh::RBParametrized::initialize_parameters(), libMesh::RBSCMConstruction::process_parameters_file(), libMesh::RBEIMConstruction::set_rb_construction_parameters(), libMesh::RBConstruction::set_rb_construction_parameters(), and libMesh::RBParametrized::write_parameter_ranges_to_file().

165 {
166  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::get_parameters_min");
167 
168  return parameters_min;
169 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.

◆ get_rb_theta_expansion() [1/2]

RBThetaExpansion & libMesh::RBEvaluation::get_rb_theta_expansion ( )
inherited

◆ get_rb_theta_expansion() [2/2]

const RBThetaExpansion & libMesh::RBEvaluation::get_rb_theta_expansion ( ) const
inherited

Definition at line 93 of file rb_evaluation.C.

References libMesh::RBEvaluation::is_rb_theta_expansion_initialized(), and libMesh::RBEvaluation::rb_theta_expansion.

94 {
95  libmesh_error_msg_if(!is_rb_theta_expansion_initialized(),
96  "Error: rb_theta_expansion hasn't been initialized yet");
97 
98  return *rb_theta_expansion;
99 }
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
bool is_rb_theta_expansion_initialized() const

◆ get_stability_lower_bound() [1/5]

virtual Real SimpleRBEvaluation::get_stability_lower_bound ( )
inlinevirtual

The coercivity constant is bounded below by 0.05.

Reimplemented from libMesh::RBEvaluation.

Definition at line 61 of file rb_classes.h.

61 { return 0.05; }

◆ get_stability_lower_bound() [2/5]

virtual Real SimpleRBEvaluation::get_stability_lower_bound ( )
inlinevirtual

The coercivity constant is bounded below by 0.05.

Reimplemented from libMesh::RBEvaluation.

Definition at line 61 of file rb_classes.h.

61 { return 0.05; }

◆ get_stability_lower_bound() [3/5]

virtual Real SimpleRBEvaluation::get_stability_lower_bound ( )
inlinevirtual

Return a "dummy" lower bound for the coercivity constant.

To do this rigorously we should use the SCM classes.

Reimplemented from libMesh::RBEvaluation.

Definition at line 62 of file rb_classes.h.

62 { return 1.; }

◆ get_stability_lower_bound() [4/5]

virtual Real SimpleRBEvaluation::get_stability_lower_bound ( )
inlinevirtual

Return a "dummy" stability lower bound factor (for a rigorous error bound this should be a lower bound for the frequency dependent inf-sup constant)

Reimplemented from libMesh::RBEvaluation.

Definition at line 68 of file rb_classes.h.

68 { return 1.; }

◆ get_stability_lower_bound() [5/5]

virtual Real SimpleRBEvaluation::get_stability_lower_bound ( )
inlinevirtual

We override get_stability_lower_bound so that it calls rb_scm_eval to return a parameter-dependent lower bound for the coercivity constant.

Reimplemented from libMesh::RBEvaluation.

Definition at line 70 of file rb_classes.h.

References libMesh::RBParametrized::get_parameters(), libMesh::RBSCMEvaluation::get_SCM_LB(), rb_scm_eval, and libMesh::RBParametrized::set_parameters().

71  {
73  return rb_scm_eval->get_SCM_LB();
74  }
virtual Real get_SCM_LB()
Evaluate single SCM lower bound.
RBSCMEvaluation * rb_scm_eval
Pointer to the SCM object that will provide our coercivity constant lower bound.
Definition: rb_classes.h:79
const RBParameters & get_parameters() const
Get the current parameters.
bool set_parameters(const RBParameters &params)
Set the current parameters to params The parameters are checked for validity; an error is thrown if t...

◆ increment_constructor_count()

void libMesh::ReferenceCounter::increment_constructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the construction counter.

Should be called in the constructor of any derived class that will be reference counted.

Definition at line 183 of file reference_counter.h.

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().

184 {
185  libmesh_try
186  {
187  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
188  std::pair<unsigned int, unsigned int> & p = _counts[name];
189  p.first++;
190  }
191  libmesh_catch (...)
192  {
193  auto stream = libMesh::err.get();
194  stream->exceptions(stream->goodbit); // stream must not throw
195  libMesh::err << "Encountered unrecoverable error while calling "
196  << "ReferenceCounter::increment_constructor_count() "
197  << "for a(n) " << name << " object." << std::endl;
198  std::terminate();
199  }
200 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
OStreamProxy err
static Counts _counts
Actually holds the data.
streamT * get()
Rather than implement every ostream/ios/ios_base function, we&#39;ll be lazy and make esoteric uses go th...
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition: threads.C:30

◆ increment_destructor_count()

void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name)
inlineprotectednoexceptinherited

Increments the destruction counter.

Should be called in the destructor of any derived class that will be reference counted.

Definition at line 207 of file reference_counter.h.

References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.

Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().

208 {
209  libmesh_try
210  {
211  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
212  std::pair<unsigned int, unsigned int> & p = _counts[name];
213  p.second++;
214  }
215  libmesh_catch (...)
216  {
217  auto stream = libMesh::err.get();
218  stream->exceptions(stream->goodbit); // stream must not throw
219  libMesh::err << "Encountered unrecoverable error while calling "
220  << "ReferenceCounter::increment_destructor_count() "
221  << "for a(n) " << name << " object." << std::endl;
222  std::terminate();
223  }
224 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
OStreamProxy err
static Counts _counts
Actually holds the data.
streamT * get()
Rather than implement every ostream/ios/ios_base function, we&#39;ll be lazy and make esoteric uses go th...
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition: threads.C:30

◆ initialize_parameters() [1/2]

void libMesh::RBParametrized::initialize_parameters ( const RBParameters mu_min_in,
const RBParameters mu_max_in,
const std::map< std::string, std::vector< Real >> &  discrete_parameter_values 
)
inherited

Initialize the parameter ranges and set current_parameters.

Parameter ranges are inclusive. The input min/max RBParameters should have exactly 1 sample each. Vector-valued samples are not currently supported for the min/max parameters or for discrete parameters.

Definition at line 53 of file rb_parametrized.C.

References libMesh::RBParametrized::_discrete_parameter_values, libMesh::RBParameters::begin_serialized(), libMesh::RBParameters::end_serialized(), libMesh::RBParameters::n_parameters(), libMesh::RBParameters::n_samples(), libMesh::Quality::name(), libMesh::RBParametrized::parameters_initialized, libMesh::RBParametrized::parameters_max, libMesh::RBParametrized::parameters_min, libMesh::Real, libMesh::RBParametrized::set_parameters(), and libMesh::RBParameters::set_value().

Referenced by libMesh::RBConstruction::enrich_basis_from_rhs_terms(), libMesh::RBParametrized::initialize_parameters(), libMesh::RBDataDeserialization::load_parameter_ranges(), libMesh::RBSCMConstruction::perform_SCM_greedy(), libMesh::RBSCMConstruction::process_parameters_file(), libMesh::RBParametrized::read_parameter_data_from_files(), libMesh::RBEIMConstruction::set_rb_construction_parameters(), libMesh::RBConstruction::set_rb_construction_parameters(), RBParametersTest::testRBParametrized(), libMesh::RBEIMConstruction::train_eim_approximation_with_greedy(), libMesh::RBEIMConstruction::train_eim_approximation_with_POD(), libMesh::RBConstruction::train_reduced_basis_with_greedy(), and libMesh::RBConstruction::train_reduced_basis_with_POD().

56 {
57  // Check that the min/max vectors have the same size.
58  libmesh_error_msg_if(mu_min_in.n_parameters() != mu_max_in.n_parameters(),
59  "Error: Invalid mu_min/mu_max in initialize_parameters(), different number of parameters.");
60  libmesh_error_msg_if(mu_min_in.n_samples() != 1 ||
61  mu_max_in.n_samples() != 1,
62  "Error: Invalid mu_min/mu_max in initialize_parameters(), only 1 sample supported.");
63 
64  // Ensure all the values are valid for min and max.
65  auto pr_min = mu_min_in.begin_serialized();
66  auto pr_max = mu_max_in.begin_serialized();
67  for (; pr_min != mu_min_in.end_serialized(); ++pr_min, ++pr_max)
68  libmesh_error_msg_if((*pr_min).second > (*pr_max).second,
69  "Error: Invalid mu_min/mu_max in RBParameters constructor.");
70 
71  parameters_min = mu_min_in;
72  parameters_max = mu_max_in;
73 
74  // Add in min/max values due to the discrete parameters
75  for (const auto & [name, vals] : discrete_parameter_values)
76  {
77  libmesh_error_msg_if(vals.empty(), "Error: List of discrete parameters for " << name << " is empty.");
78 
79  Real min_val = *std::min_element(vals.begin(), vals.end());
80  Real max_val = *std::max_element(vals.begin(), vals.end());
81 
82  libmesh_assert_less_equal(min_val, max_val);
83 
84  parameters_min.set_value(name, min_val);
85  parameters_max.set_value(name, max_val);
86  }
87 
88  _discrete_parameter_values = discrete_parameter_values;
89 
91 
92  // Initialize the current parameters to parameters_min
94 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.
std::map< std::string, std::vector< Real > > _discrete_parameter_values
Map that defines the allowable values of any discrete parameters.
bool set_parameters(const RBParameters &params)
Set the current parameters to params The parameters are checked for validity; an error is thrown if t...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void set_value(const std::string &param_name, Real value)
Set the value of the specified parameter.

◆ initialize_parameters() [2/2]

void libMesh::RBParametrized::initialize_parameters ( const RBParametrized rb_parametrized)
inherited

Initialize the parameter ranges and set current_parameters.

Definition at line 96 of file rb_parametrized.C.

References libMesh::RBParametrized::get_discrete_parameter_values(), libMesh::RBParametrized::get_parameters_max(), libMesh::RBParametrized::get_parameters_min(), and libMesh::RBParametrized::initialize_parameters().

97 {
98  initialize_parameters(rb_parametrized.get_parameters_min(),
99  rb_parametrized.get_parameters_max(),
100  rb_parametrized.get_discrete_parameter_values());
101 }
void initialize_parameters(const RBParameters &mu_min_in, const RBParameters &mu_max_in, const std::map< std::string, std::vector< Real >> &discrete_parameter_values)
Initialize the parameter ranges and set current_parameters.

◆ is_discrete_parameter()

bool libMesh::RBParametrized::is_discrete_parameter ( const std::string &  mu_name) const
inherited

Is parameter mu_name discrete?

Definition at line 365 of file rb_parametrized.C.

References libMesh::RBParametrized::_discrete_parameter_values, and libMesh::RBParametrized::parameters_initialized.

Referenced by libMesh::RBDataSerialization::add_parameter_ranges_to_builder(), libMesh::RBEIMConstruction::print_info(), libMesh::RBConstruction::print_info(), and libMesh::RBParametrized::write_parameter_ranges_to_file().

366 {
367  libmesh_error_msg_if(!parameters_initialized,
368  "Error: parameters not initialized in RBParametrized::is_discrete_parameter");
369 
370  return _discrete_parameter_values.count(mu_name);
371 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
std::map< std::string, std::vector< Real > > _discrete_parameter_values
Map that defines the allowable values of any discrete parameters.

◆ is_rb_theta_expansion_initialized()

bool libMesh::RBEvaluation::is_rb_theta_expansion_initialized ( ) const
inherited
Returns
true if the theta expansion has been initialized.

Definition at line 101 of file rb_evaluation.C.

References libMesh::RBEvaluation::rb_theta_expansion.

Referenced by libMesh::RBEvaluation::get_rb_theta_expansion().

102 {
103  if (rb_theta_expansion)
104  {
105  return true;
106  }
107  else
108  {
109  return false;
110  }
111 }
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.

◆ legacy_read_offline_data_from_files()

void libMesh::RBEvaluation::legacy_read_offline_data_from_files ( const std::string &  directory_name = "offline_data",
bool  read_error_bound_data = true,
const bool  read_binary_data = true 
)
virtualinherited

Read in the saved Offline reduced basis data to initialize the system for Online solves.

Note
This is a legacy method, use RBDataSerialization instead.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 754 of file rb_evaluation.C.

References libMesh::RBEvaluation::Aq_Aq_representor_innerprods, libMesh::RBEvaluation::assert_file_exists(), libMesh::RBEvaluation::basis_functions, libMesh::Xdr::close(), libMesh::RBEvaluation::compute_RB_inner_product, libMesh::DECODE, libMesh::RBEvaluation::Fq_Aq_representor_innerprods, libMesh::RBEvaluation::Fq_representor_innerprods, libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBThetaExpansion::get_n_F_terms(), libMesh::RBThetaExpansion::get_n_output_terms(), libMesh::RBThetaExpansion::get_n_outputs(), libMesh::RBEvaluation::output_dual_innerprods, libMesh::RBEvaluation::RB_Aq_vector, libMesh::RBEvaluation::RB_Fq_vector, libMesh::RBEvaluation::RB_inner_product_matrix, libMesh::RBEvaluation::RB_output_vectors, libMesh::RBEvaluation::rb_theta_expansion, libMesh::READ, libMesh::RBParametrized::read_parameter_data_from_files(), libMesh::RBEvaluation::resize_data_structures(), libMesh::RBEvaluation::set_n_basis_functions(), and value.

Referenced by libMesh::TransientRBEvaluation::legacy_read_offline_data_from_files().

757 {
758  LOG_SCOPE("legacy_read_offline_data_from_files()", "RBEvaluation");
759 
760  // The reading mode: DECODE for binary, READ for ASCII
761  XdrMODE mode = read_binary_data ? DECODE : READ;
762 
763  // The suffix to use for all the files that are written out
764  const std::string suffix = read_binary_data ? ".xdr" : ".dat";
765 
766  // The string stream we'll use to make the file names
767  std::ostringstream file_name;
768 
769  // First, find out how many basis functions we had when Greedy terminated
770  unsigned int n_bfs;
771  {
772  file_name << directory_name << "/n_bfs" << suffix;
773  assert_file_exists(file_name.str());
774 
775  Xdr n_bfs_in(file_name.str(), mode);
776  n_bfs_in >> n_bfs;
777  n_bfs_in.close();
778  }
779  resize_data_structures(n_bfs, read_error_bound_data);
780 
781  // Read in the parameter ranges
782  file_name.str("");
783  file_name << directory_name << "/parameter_ranges" << suffix;
784  std::string continuous_param_file_name = file_name.str();
785 
786  // Read in the discrete parameter values
787  file_name.str("");
788  file_name << directory_name << "/discrete_parameter_values" << suffix;
789  std::string discrete_param_file_name = file_name.str();
790  read_parameter_data_from_files(continuous_param_file_name,
791  discrete_param_file_name,
792  read_binary_data);
793 
794  // Read in output data in multiple files
795  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
796  {
797  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
798  {
799  file_name.str("");
800  file_name << directory_name << "/output_";
801  file_name << std::setw(3)
802  << std::setprecision(0)
803  << std::setfill('0')
804  << std::right
805  << n;
806  file_name << "_";
807  file_name << std::setw(3)
808  << std::setprecision(0)
809  << std::setfill('0')
810  << std::right
811  << q_l;
812  file_name << suffix;
813  assert_file_exists(file_name.str());
814 
815  Xdr output_n_in(file_name.str(), mode);
816 
817  for (unsigned int j=0; j<n_bfs; j++)
818  {
819  Number value;
820  output_n_in >> value;
821  RB_output_vectors[n][q_l](j) = value;
822  }
823  output_n_in.close();
824  }
825  }
826 
828  {
829  // Next read in the inner product matrix
830  file_name.str("");
831  file_name << directory_name << "/RB_inner_product_matrix" << suffix;
832  assert_file_exists(file_name.str());
833 
834  Xdr RB_inner_product_matrix_in(file_name.str(), mode);
835 
836  for (unsigned int i=0; i<n_bfs; i++)
837  {
838  for (unsigned int j=0; j<n_bfs; j++)
839  {
840  Number value;
841  RB_inner_product_matrix_in >> value;
843  }
844  }
845  RB_inner_product_matrix_in.close();
846  }
847 
848  // Next read in the Fq vectors
849  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
850  {
851  file_name.str("");
852  file_name << directory_name << "/RB_F_";
853  file_name << std::setw(3)
854  << std::setprecision(0)
855  << std::setfill('0')
856  << std::right
857  << q_f;
858  file_name << suffix;
859  assert_file_exists(file_name.str());
860 
861  Xdr RB_Fq_f_in(file_name.str(), mode);
862 
863  for (unsigned int i=0; i<n_bfs; i++)
864  {
865  Number value;
866  RB_Fq_f_in >> value;
867  RB_Fq_vector[q_f](i) = value;
868  }
869  RB_Fq_f_in.close();
870  }
871 
872  // Next read in the Aq matrices
873  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
874  {
875  file_name.str("");
876  file_name << directory_name << "/RB_A_";
877  file_name << std::setw(3)
878  << std::setprecision(0)
879  << std::setfill('0')
880  << std::right
881  << q_a;
882  file_name << suffix;
883  assert_file_exists(file_name.str());
884 
885  Xdr RB_Aq_a_in(file_name.str(), mode);
886 
887  for (unsigned int i=0; i<n_bfs; i++)
888  {
889  for (unsigned int j=0; j<n_bfs; j++)
890  {
891  Number value;
892  RB_Aq_a_in >> value;
893  RB_Aq_vector[q_a](i,j) = value;
894  }
895  }
896  RB_Aq_a_in.close();
897  }
898 
899 
900  if (read_error_bound_data)
901  {
902  // Next read in Fq representor norm data
903  file_name.str("");
904  file_name << directory_name << "/Fq_innerprods" << suffix;
905  assert_file_exists(file_name.str());
906 
907  Xdr RB_Fq_innerprods_in(file_name.str(), mode);
908 
909  unsigned int Q_f_hat = rb_theta_expansion->get_n_F_terms()*(rb_theta_expansion->get_n_F_terms()+1)/2;
910  for (unsigned int i=0; i<Q_f_hat; i++)
911  {
912  RB_Fq_innerprods_in >> Fq_representor_innerprods[i];
913  }
914  RB_Fq_innerprods_in.close();
915 
916  // Read in output data
917  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
918  {
919  file_name.str("");
920  file_name << directory_name << "/output_";
921  file_name << std::setw(3)
922  << std::setprecision(0)
923  << std::setfill('0')
924  << std::right
925  << n;
926  file_name << "_dual_innerprods" << suffix;
927  assert_file_exists(file_name.str());
928 
929  Xdr output_dual_innerprods_in(file_name.str(), mode);
930 
931  unsigned int Q_l_hat = rb_theta_expansion->get_n_output_terms(n)*(rb_theta_expansion->get_n_output_terms(n)+1)/2;
932  for (unsigned int q=0; q<Q_l_hat; q++)
933  {
934  output_dual_innerprods_in >> output_dual_innerprods[n][q];
935  }
936  output_dual_innerprods_in.close();
937  }
938 
939 
940  // Next read in Fq_Aq representor norm data
941  file_name.str("");
942  file_name << directory_name << "/Fq_Aq_innerprods" << suffix;
943  assert_file_exists(file_name.str());
944 
945  Xdr RB_Fq_Aq_innerprods_in(file_name.str(), mode);
946 
947  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
948  {
949  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
950  {
951  for (unsigned int i=0; i<n_bfs; i++)
952  {
953  RB_Fq_Aq_innerprods_in >> Fq_Aq_representor_innerprods[q_f][q_a][i];
954  }
955  }
956  }
957  RB_Fq_Aq_innerprods_in.close();
958 
959  // Next read in Aq_Aq representor norm data
960  file_name.str("");
961  file_name << directory_name << "/Aq_Aq_innerprods" << suffix;
962  assert_file_exists(file_name.str());
963 
964  Xdr RB_Aq_Aq_innerprods_in(file_name.str(), mode);
965 
966  unsigned int Q_a_hat = rb_theta_expansion->get_n_A_terms()*(rb_theta_expansion->get_n_A_terms()+1)/2;
967  for (unsigned int i=0; i<Q_a_hat; i++)
968  {
969  for (unsigned int j=0; j<n_bfs; j++)
970  {
971  for (unsigned int l=0; l<n_bfs; l++)
972  {
973  RB_Aq_Aq_innerprods_in >> Aq_Aq_representor_innerprods[i][j][l];
974  }
975  }
976  }
977  RB_Aq_Aq_innerprods_in.close();
978  }
979 
980  // Resize basis_functions even if we don't read them in so that
981  // get_n_bfs() returns the correct value. Initialize the pointers
982  // to nullptr.
983  basis_functions.clear();
984  set_n_basis_functions(n_bfs);
985 }
bool compute_RB_inner_product
Boolean flag to indicate whether we compute the RB_inner_product_matrix.
std::vector< Number > Fq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
virtual void resize_data_structures(const unsigned int Nmax, bool resize_error_bound_data=true)
Resize and clear the data vectors corresponding to the value of Nmax.
DenseMatrix< Number > RB_inner_product_matrix
The inner product matrix.
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
std::vector< std::vector< Number > > output_dual_innerprods
The vector storing the dual norm inner product terms for each output.
void read_parameter_data_from_files(const std::string &continuous_param_file_name, const std::string &discrete_param_file_name, const bool read_binary_data)
Read in the parameter ranges from files.
unsigned int get_n_outputs() const
Get n_outputs, the number output functionals.
XdrMODE
Defines an enum for read/write mode in Xdr format.
Definition: enum_xdr_mode.h:35
std::vector< DenseVector< Number > > RB_Fq_vector
Dense vector for the RHS.
virtual void set_n_basis_functions(unsigned int n_bfs)
Set the number of basis functions.
Definition: rb_evaluation.C:75
std::vector< std::vector< std::vector< Number > > > Fq_Aq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
std::vector< DenseMatrix< Number > > RB_Aq_vector
Dense matrices for the RB computations.
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
static void assert_file_exists(const std::string &file_name)
Helper function that checks if file_name exists.
static const bool value
Definition: xdr_io.C:54
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
std::vector< std::vector< std::vector< Number > > > Aq_Aq_representor_innerprods
std::vector< std::vector< DenseVector< Number > > > RB_output_vectors
The vectors storing the RB output vectors.

◆ legacy_write_offline_data_to_files()

void libMesh::RBEvaluation::legacy_write_offline_data_to_files ( const std::string &  directory_name = "offline_data",
const bool  write_binary_data = true 
)
virtualinherited

Write out all the data to text files in order to segregate the Offline stage from the Online stage.

Note
This is a legacy method, use RBDataSerialization instead.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 526 of file rb_evaluation.C.

References libMesh::RBEvaluation::Aq_Aq_representor_innerprods, libMesh::Xdr::close(), libMesh::RBEvaluation::compute_RB_inner_product, libMesh::ENCODE, libMesh::RBEvaluation::Fq_Aq_representor_innerprods, libMesh::RBEvaluation::Fq_representor_innerprods, libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBEvaluation::get_n_basis_functions(), libMesh::RBThetaExpansion::get_n_F_terms(), libMesh::RBThetaExpansion::get_n_output_terms(), libMesh::RBThetaExpansion::get_n_outputs(), libMesh::RBEvaluation::greedy_param_list, libMesh::Utility::mkdir(), libMesh::RBEvaluation::output_dual_innerprods, libMesh::ParallelObject::processor_id(), libMesh::RBEvaluation::RB_Aq_vector, libMesh::RBEvaluation::RB_Fq_vector, libMesh::RBEvaluation::RB_inner_product_matrix, libMesh::RBEvaluation::RB_output_vectors, libMesh::RBEvaluation::rb_theta_expansion, libMesh::Real, libMesh::WRITE, and libMesh::RBParametrized::write_parameter_data_to_files().

Referenced by libMesh::TransientRBEvaluation::legacy_write_offline_data_to_files(), and main().

528 {
529  LOG_SCOPE("legacy_write_offline_data_to_files()", "RBEvaluation");
530 
531  // Get the number of basis functions
532  unsigned int n_bfs = get_n_basis_functions();
533 
534  // The writing mode: ENCODE for binary, WRITE for ASCII
535  XdrMODE mode = write_binary_data ? ENCODE : WRITE;
536 
537  // The suffix to use for all the files that are written out
538  const std::string suffix = write_binary_data ? ".xdr" : ".dat";
539 
540  if (this->processor_id() == 0)
541  {
542 
543  // Make a directory to store all the data files
544  Utility::mkdir(directory_name.c_str());
545  // if (mkdir(directory_name.c_str(), 0777) == -1)
546  // {
547  // libMesh::out << "In RBEvaluation::write_offline_data_to_files, directory "
548  // << directory_name << " already exists, overwriting contents." << std::endl;
549  // }
550 
551  // First, write out how many basis functions we have generated
552  std::ostringstream file_name;
553  {
554  file_name << directory_name << "/n_bfs" << suffix;
555  Xdr n_bfs_out(file_name.str(), mode);
556  n_bfs_out << n_bfs;
557  n_bfs_out.close();
558  }
559 
560  // Write out the parameter ranges
561  file_name.str("");
562  file_name << directory_name << "/parameter_ranges" << suffix;
563  std::string continuous_param_file_name = file_name.str();
564 
565  // Write out the discrete parameter values
566  file_name.str("");
567  file_name << directory_name << "/discrete_parameter_values" << suffix;
568  std::string discrete_param_file_name = file_name.str();
569 
570  write_parameter_data_to_files(continuous_param_file_name,
571  discrete_param_file_name,
572  write_binary_data);
573 
574  // Write out Fq representor norm data
575  file_name.str("");
576  file_name << directory_name << "/Fq_innerprods" << suffix;
577  Xdr RB_Fq_innerprods_out(file_name.str(), mode);
578  unsigned int Q_f_hat = rb_theta_expansion->get_n_F_terms()*(rb_theta_expansion->get_n_F_terms()+1)/2;
579  for (unsigned int i=0; i<Q_f_hat; i++)
580  {
581  RB_Fq_innerprods_out << Fq_representor_innerprods[i];
582  }
583  RB_Fq_innerprods_out.close();
584 
585  // Write out output data
586  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
587  {
588  file_name.str("");
589  file_name << directory_name << "/output_";
590  file_name << std::setw(3)
591  << std::setprecision(0)
592  << std::setfill('0')
593  << std::right
594  << n;
595 
596  file_name << "_dual_innerprods" << suffix;
597  Xdr output_dual_innerprods_out(file_name.str(), mode);
598 
599  unsigned int Q_l_hat = rb_theta_expansion->get_n_output_terms(n)*(rb_theta_expansion->get_n_output_terms(n)+1)/2;
600  for (unsigned int q=0; q<Q_l_hat; q++)
601  {
602  output_dual_innerprods_out << output_dual_innerprods[n][q];
603  }
604  output_dual_innerprods_out.close();
605  }
606 
607 
608  // Write out output data to multiple files
609  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
610  {
611  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
612  {
613  file_name.str("");
614  file_name << directory_name << "/output_";
615  file_name << std::setw(3)
616  << std::setprecision(0)
617  << std::setfill('0')
618  << std::right
619  << n;
620  file_name << "_";
621  file_name << std::setw(3)
622  << std::setprecision(0)
623  << std::setfill('0')
624  << std::right
625  << q_l;
626  file_name << suffix;
627  Xdr output_n_out(file_name.str(), mode);
628 
629  for (unsigned int j=0; j<n_bfs; j++)
630  {
631  output_n_out << RB_output_vectors[n][q_l](j);
632  }
633  output_n_out.close();
634  }
635  }
636 
638  {
639  // Next write out the inner product matrix
640  file_name.str("");
641  file_name << directory_name << "/RB_inner_product_matrix" << suffix;
642  Xdr RB_inner_product_matrix_out(file_name.str(), mode);
643  for (unsigned int i=0; i<n_bfs; i++)
644  {
645  for (unsigned int j=0; j<n_bfs; j++)
646  {
647  RB_inner_product_matrix_out << RB_inner_product_matrix(i,j);
648  }
649  }
650  RB_inner_product_matrix_out.close();
651  }
652 
653  // Next write out the Fq vectors
654  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
655  {
656  file_name.str("");
657  file_name << directory_name << "/RB_F_";
658  file_name << std::setw(3)
659  << std::setprecision(0)
660  << std::setfill('0')
661  << std::right
662  << q_f;
663  file_name << suffix;
664  Xdr RB_Fq_f_out(file_name.str(), mode);
665 
666  for (unsigned int i=0; i<n_bfs; i++)
667  {
668  RB_Fq_f_out << RB_Fq_vector[q_f](i);
669  }
670  RB_Fq_f_out.close();
671  }
672 
673  // Next write out the Aq matrices
674  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
675  {
676  file_name.str("");
677  file_name << directory_name << "/RB_A_";
678  file_name << std::setw(3)
679  << std::setprecision(0)
680  << std::setfill('0')
681  << std::right
682  << q_a;
683  file_name << suffix;
684  Xdr RB_Aq_a_out(file_name.str(), mode);
685 
686  for (unsigned int i=0; i<n_bfs; i++)
687  {
688  for (unsigned int j=0; j<n_bfs; j++)
689  {
690  RB_Aq_a_out << RB_Aq_vector[q_a](i,j);
691  }
692  }
693  RB_Aq_a_out.close();
694  }
695 
696  // Next write out Fq_Aq representor norm data
697  file_name.str("");
698  file_name << directory_name << "/Fq_Aq_innerprods" << suffix;
699  Xdr RB_Fq_Aq_innerprods_out(file_name.str(), mode);
700 
701  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
702  {
703  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
704  {
705  for (unsigned int i=0; i<n_bfs; i++)
706  {
707  RB_Fq_Aq_innerprods_out << Fq_Aq_representor_innerprods[q_f][q_a][i];
708  }
709  }
710  }
711  RB_Fq_Aq_innerprods_out.close();
712 
713  // Next write out Aq_Aq representor norm data
714  file_name.str("");
715  file_name << directory_name << "/Aq_Aq_innerprods" << suffix;
716  Xdr RB_Aq_Aq_innerprods_out(file_name.str(), mode);
717 
718  unsigned int Q_a_hat = rb_theta_expansion->get_n_A_terms()*(rb_theta_expansion->get_n_A_terms()+1)/2;
719  for (unsigned int i=0; i<Q_a_hat; i++)
720  {
721  for (unsigned int j=0; j<n_bfs; j++)
722  {
723  for (unsigned int l=0; l<n_bfs; l++)
724  {
725  RB_Aq_Aq_innerprods_out << Aq_Aq_representor_innerprods[i][j][l];
726  }
727  }
728  }
729  RB_Aq_Aq_innerprods_out.close();
730 
731  // Also, write out the greedily selected parameters
732  {
733  file_name.str("");
734  file_name << directory_name << "/greedy_params" << suffix;
735  Xdr greedy_params_out(file_name.str(), mode);
736 
737  for (const auto & param : greedy_param_list)
738  for (const auto & pr : param)
739  for (const auto & value_vector : pr.second)
740  {
741  // Need to make a copy of the value so that it's not const
742  // Xdr is not templated on const's
743  libmesh_error_msg_if(value_vector.size() != 1,
744  "Error: multi-value RB parameters are not yet supported here.");
745  Real param_value = value_vector[0];
746  greedy_params_out << param_value;
747  }
748  greedy_params_out.close();
749  }
750 
751  }
752 }
bool compute_RB_inner_product
Boolean flag to indicate whether we compute the RB_inner_product_matrix.
std::vector< Number > Fq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
void write_parameter_data_to_files(const std::string &continuous_param_file_name, const std::string &discrete_param_file_name, const bool write_binary_data)
Write out the parameter ranges to files.
DenseMatrix< Number > RB_inner_product_matrix
The inner product matrix.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
int mkdir(const char *pathname)
Create a directory.
Definition: utility.C:152
std::vector< std::vector< Number > > output_dual_innerprods
The vector storing the dual norm inner product terms for each output.
std::vector< RBParameters > greedy_param_list
The list of parameters selected by the Greedy algorithm in generating the Reduced Basis associated wi...
unsigned int get_n_outputs() const
Get n_outputs, the number output functionals.
XdrMODE
Defines an enum for read/write mode in Xdr format.
Definition: enum_xdr_mode.h:35
std::vector< DenseVector< Number > > RB_Fq_vector
Dense vector for the RHS.
std::vector< std::vector< std::vector< Number > > > Fq_Aq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
std::vector< DenseMatrix< Number > > RB_Aq_vector
Dense matrices for the RB computations.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
virtual unsigned int get_n_basis_functions() const
Get the current number of basis functions.
processor_id_type processor_id() const
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
std::vector< std::vector< std::vector< Number > > > Aq_Aq_representor_innerprods
std::vector< std::vector< DenseVector< Number > > > RB_output_vectors
The vectors storing the RB output vectors.

◆ n_objects()

static unsigned int libMesh::ReferenceCounter::n_objects ( )
inlinestaticinherited

Prints the number of outstanding (created, but not yet destroyed) objects.

Definition at line 85 of file reference_counter.h.

References libMesh::ReferenceCounter::_n_objects.

Referenced by libMesh::LibMeshInit::~LibMeshInit().

86  { return _n_objects; }
static Threads::atomic< unsigned int > _n_objects
The number of objects.

◆ n_processors()

processor_id_type libMesh::ParallelObject::n_processors ( ) const
inlineinherited
Returns
The number of processors in the group.

Definition at line 103 of file parallel_object.h.

References libMesh::ParallelObject::_communicator, libMesh::libmesh_assert(), and TIMPI::Communicator::size().

Referenced by libMesh::Partitioner::_find_global_index_by_pid_map(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::DofMap::add_constraints_to_send_list(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::System::add_vector(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO::assert_symmetric_cmaps(), libMesh::Partitioner::assign_partitioning(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::Partitioner::build_graph(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::DistributedMesh::clear_elems(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::Nemesis_IO::copy_scalar_solution(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_scalar_dofs(), libMesh::DistributedMesh::DistributedMesh(), libMesh::EnsightIO::EnsightIO(), libMesh::RBEIMEvaluation::gather_bfs(), libMesh::MeshBase::get_info(), libMesh::StaticCondensation::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_petscdm(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::DistributedMesh::insert_elem(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::n_active_elem_on_proc(), libMesh::DofMap::n_dofs_per_processor(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::RBEIMEvaluation::node_gather_bfs(), libMesh::Partitioner::partition(), libMesh::MeshBase::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::prepare_send_list(), libMesh::MeshBase::print_constraint_rows(), libMesh::DofMap::print_dof_constraints(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::XdrIO::read_header(), libMesh::CheckpointIO::read_nodes(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::Partitioner::repartition(), OverlappingFunctorTest::run_partitioner_test(), libMesh::DofMap::scatter_constraints(), libMesh::DistributedMesh::set_next_unique_id(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), WriteVecAndScalar::setupTests(), libMesh::RBEIMEvaluation::side_gather_bfs(), DistributedMeshTest::testRemoteElemError(), CheckpointIOTest::testSplitter(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::VTKIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().

104  {
105  processor_id_type returnval =
106  cast_int<processor_id_type>(_communicator.size());
107  libmesh_assert(returnval); // We never have an empty comm
108  return returnval;
109  }
const Parallel::Communicator & _communicator
processor_id_type size() const
uint8_t processor_id_type
libmesh_assert(ctx)

◆ print_discrete_parameter_values()

void libMesh::RBParametrized::print_discrete_parameter_values ( ) const
inherited

Print out all the discrete parameter values.

Definition at line 380 of file rb_parametrized.C.

References libMesh::RBParametrized::get_discrete_parameter_values(), libMesh::Quality::name(), libMesh::out, and value.

Referenced by libMesh::RBSCMConstruction::print_info(), libMesh::RBEIMConstruction::print_info(), and libMesh::RBConstruction::print_info().

381 {
382  for (const auto & [name, values] : get_discrete_parameter_values())
383  {
384  libMesh::out << "Discrete parameter " << name << ", values: ";
385 
386  for (const auto & value : values)
387  libMesh::out << value << " ";
388  libMesh::out << std::endl;
389  }
390 }
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
const std::map< std::string, std::vector< Real > > & get_discrete_parameter_values() const
Get a const reference to the discrete parameter values.
OStreamProxy out
static const bool value
Definition: xdr_io.C:54

◆ print_info()

void libMesh::ReferenceCounter::print_info ( std::ostream &  out_stream = libMesh::out)
staticinherited

Prints the reference information, by default to libMesh::out.

Definition at line 81 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().

Referenced by libMesh::LibMeshInit::~LibMeshInit().

82 {
84  out_stream << ReferenceCounter::get_info();
85 }
static std::string get_info()
Gets a string containing the reference information.
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called...

◆ print_parameters()

void libMesh::RBParametrized::print_parameters ( ) const
inherited

Print the current parameters.

Definition at line 192 of file rb_parametrized.C.

References libMesh::RBParametrized::get_parameters(), libMesh::RBParametrized::parameters_initialized, and libMesh::RBParameters::print().

Referenced by libMesh::RBEIMConstruction::train_eim_approximation_with_greedy(), and libMesh::RBConstruction::train_reduced_basis_with_greedy().

193 {
194  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::print_current_parameters");
195 
196  get_parameters().print();
197 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
void print(unsigned precision=6, int max_values=5) const
Print the parameters.
const RBParameters & get_parameters() const
Get the current parameters.

◆ processor_id()

processor_id_type libMesh::ParallelObject::processor_id ( ) const
inlineinherited
Returns
The rank of this processor in the group.

Definition at line 114 of file parallel_object.h.

References libMesh::ParallelObject::_communicator, and TIMPI::Communicator::rank().

Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO::assert_symmetric_cmaps(), libMesh::Partitioner::assign_partitioning(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::Partitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::MeshFunction::check_found_elem(), libMesh::DistributedMesh::clear(), libMesh::DistributedMesh::clear_elems(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::RBConstruction::compute_max_error_bound(), libMesh::Nemesis_IO_Helper::compute_node_communication_maps(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::Nemesis_IO::copy_scalar_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_scalar_dofs(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMapBase::end_dof(), libMesh::DofMapBase::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::find_dofs_to_send(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMapBase::first_dof(), libMesh::DofMapBase::first_old_dof(), libMesh::RBEIMEvaluation::gather_bfs(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), libMesh::MeshBase::get_info(), libMesh::DofMap::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::RBEIMEvaluation::get_interior_basis_functions_as_vecs(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::DofMap::get_local_constraints(), libMesh::MeshBase::get_local_constraints(), libMesh::Nemesis_IO_Helper::get_node_cmap(), libMesh::Nemesis_IO_Helper::get_node_map(), libMesh::Nemesis_IO_Helper::get_ns_param_global(), libMesh::Nemesis_IO_Helper::get_ss_param_global(), libMesh::SparsityPattern::Build::handle_vi_vj(), libMesh::LaplaceMeshSmoother::init(), libMesh::SystemSubsetBySubdomain::init(), HeatSystem::init_data(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::DistributedMesh::insert_elem(), libMesh::DofMap::is_evaluable(), libMesh::SparsityPattern::Build::join(), libMesh::TransientRBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBSCMEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEvaluation::legacy_write_offline_data_to_files(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DofMap::local_variable_indices(), main(), libMesh::MeshRefinement::make_coarsening_compatible(), AugmentSparsityOnInterface::mesh_reinit(), libMesh::TriangulatorInterface::MeshedHole::MeshedHole(), libMesh::MeshBase::n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::MeshTools::n_connected_components(), libMesh::MeshBase::n_constraint_rows(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::DofMapBase::n_local_dofs(), libMesh::MeshBase::n_local_elem(), libMesh::MeshBase::n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::RBEIMEvaluation::node_gather_bfs(), libMesh::DistributedMesh::own_node(), libMesh::BoundaryInfo::parallel_sync_node_ids(), libMesh::BoundaryInfo::parallel_sync_side_ids(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::print_constraint_rows(), libMesh::DofMap::print_dof_constraints(), libMesh::DofMap::process_mesh_constraint_rows(), libMesh::Nemesis_IO_Helper::put_cmap_params(), libMesh::Nemesis_IO_Helper::put_elem_cmap(), libMesh::Nemesis_IO_Helper::put_elem_map(), libMesh::Nemesis_IO_Helper::put_loadbal_param(), libMesh::Nemesis_IO_Helper::put_node_cmap(), libMesh::Nemesis_IO_Helper::put_node_map(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read(), libMesh::EquationSystems::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::ExodusII_IO::read_header(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::DynaIO::read_mesh(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::TransientRBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::read_riesz_representors_from_files(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::System::read_serialized_data(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::Nemesis_IO_Helper::read_var_names_impl(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::StaticCondensationDofMap::reinit(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DistributedMesh::renumber_nodes_and_elements(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::DistributedMesh::set_next_unique_id(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::RBEIMEvaluation::side_gather_bfs(), ExodusTest< elem_type >::test_read_gold(), ExodusTest< elem_type >::test_write(), MeshInputTest::testAbaqusRead(), MeshInputTest::testBadGmsh(), MeshInputTest::testCopyElementSolutionImpl(), MeshInputTest::testCopyElementVectorImpl(), MeshInputTest::testCopyNodalSolutionImpl(), DefaultCouplingTest::testCoupling(), PointNeighborCouplingTest::testCoupling(), MeshInputTest::testDynaFileMappings(), MeshInputTest::testDynaNoSplines(), MeshInputTest::testDynaReadElem(), MeshInputTest::testDynaReadPatch(), MeshInputTest::testExodusFileMappings(), MeshInputTest::testExodusIGASidesets(), MeshInputTest::testExodusWriteElementDataFromDiscontinuousNodalData(), MeshInputTest::testGmshBCIDOverlap(), MeshInputTest::testGoodGmsh(), MeshInputTest::testGoodSTL(), MeshInputTest::testGoodSTLBinary(), MeshInputTest::testLowOrderEdgeBlocks(), SystemsTest::testProjectMatrix3D(), BoundaryInfoTest::testShellFaceConstraints(), MeshInputTest::testSingleElementImpl(), WriteVecAndScalar::testSolution(), CheckpointIOTest::testSplitter(), MeshInputTest::testTetgenIO(), libMesh::MeshTools::total_weight(), libMesh::NetGenMeshInterface::triangulate(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::DTKAdapter::update_variable_values(), libMesh::MeshTools::volume(), libMesh::STLIO::write(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::CheckpointIO::write(), libMesh::EquationSystems::write(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO::write_element_data(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_element_values_element_major(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_elemset_data(), libMesh::ExodusII_IO_Helper::write_elemsets(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodal_data(), libMesh::VTKIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_common(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::ExodusII_IO_Helper::write_nodeset_data(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::RBEIMEvaluation::write_out_interior_basis_functions(), libMesh::RBEIMEvaluation::write_out_node_basis_functions(), libMesh::RBEIMEvaluation::write_out_side_basis_functions(), write_output_solvedata(), libMesh::System::write_parallel_data(), libMesh::RBConstruction::write_riesz_representors_to_files(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_data(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), libMesh::ExodusII_IO_Helper::write_sideset_data(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), libMesh::ExodusII_IO_Helper::write_timestep(), and libMesh::ExodusII_IO::write_timestep_discontinuous().

115  { return cast_int<processor_id_type>(_communicator.rank()); }
processor_id_type rank() const
const Parallel::Communicator & _communicator

◆ rb_solve() [1/2]

Real libMesh::RBEvaluation::rb_solve ( unsigned int  N)
virtualinherited

Perform online solve with the N RB basis functions, for the set of parameters in current_params, where 0 <= N <= RB_size.

Returns
The (absolute) error bound associated with the RB approximation. With an empty RB space (N=0), our RB solution is zero, but we still obtain a meaningful error bound associated with the forcing terms.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 221 of file rb_evaluation.C.

Referenced by libMesh::TransientRBConstruction::enrich_RB_space(), libMesh::RBEvaluation::get_error_bound_normalization(), and libMesh::RBConstruction::get_RB_error_bound().

222 {
223  return rb_solve(N, nullptr);
224 }
virtual Real rb_solve(unsigned int N)
Perform online solve with the N RB basis functions, for the set of parameters in current_params, where 0 <= N <= RB_size.

◆ rb_solve() [2/2]

Real libMesh::RBEvaluation::rb_solve ( unsigned int  N,
const std::vector< Number > *  evaluated_thetas 
)
virtualinherited

The same as above, except that we pass in evaluated_thetas instead of recomputing the theta values.

Definition at line 226 of file rb_evaluation.C.

References libMesh::DenseVector< T >::add(), libMesh::DenseMatrix< T >::add(), libMesh::RBEvaluation::check_evaluated_thetas_size(), libMesh::RBEvaluation::compute_residual_dual_norm(), libMesh::DenseVector< T >::dot(), libMesh::RBThetaExpansion::eval_A_theta(), libMesh::RBThetaExpansion::eval_F_theta(), libMesh::RBEvaluation::eval_output_dual_norm(), libMesh::RBThetaExpansion::eval_output_theta(), libMesh::RBEvaluation::evaluate_RB_error_bound, libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBEvaluation::get_n_basis_functions(), libMesh::RBThetaExpansion::get_n_F_terms(), libMesh::RBThetaExpansion::get_n_output_terms(), libMesh::RBThetaExpansion::get_n_outputs(), libMesh::RBParametrized::get_parameters(), libMesh::RBEvaluation::get_stability_lower_bound(), libMesh::DenseMatrix< T >::lu_solve(), libMesh::RBEvaluation::RB_Aq_vector, libMesh::RBEvaluation::RB_Fq_vector, libMesh::RBEvaluation::RB_output_error_bounds, libMesh::RBEvaluation::RB_output_vectors, libMesh::RBEvaluation::RB_outputs, libMesh::RBEvaluation::RB_solution, libMesh::RBEvaluation::rb_theta_expansion, libMesh::Real, libMesh::RBEvaluation::residual_scaling_denom(), libMesh::DenseVector< T >::resize(), libMesh::DenseMatrix< T >::zero(), and libMesh::DenseVector< T >::zero().

228 {
229  LOG_SCOPE("rb_solve()", "RBEvaluation");
230 
231  libmesh_error_msg_if(N > get_n_basis_functions(),
232  "ERROR: N cannot be larger than the number of basis functions in rb_solve");
233 
234  // In case the theta functions have been pre-evaluated, first check the size for consistency. The
235  // size of the input "evaluated_thetas" vector must match the sum of the "A", "F", and "output" terms
236  // in the expansion.
237  this->check_evaluated_thetas_size(evaluated_thetas);
238 
239  const RBParameters & mu = get_parameters();
240 
241  // Resize (and clear) the solution vector
242  RB_solution.resize(N);
243 
244  // Assemble the RB system
245  DenseMatrix<Number> RB_system_matrix(N,N);
246  RB_system_matrix.zero();
247 
248  DenseMatrix<Number> RB_Aq_a;
249  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
250  {
251  RB_Aq_vector[q_a].get_principal_submatrix(N, RB_Aq_a);
252 
253  if (evaluated_thetas)
254  RB_system_matrix.add((*evaluated_thetas)[q_a], RB_Aq_a);
255  else
256  RB_system_matrix.add(rb_theta_expansion->eval_A_theta(q_a, mu), RB_Aq_a);
257  }
258 
259  // Assemble the RB rhs
260  DenseVector<Number> RB_rhs(N);
261  RB_rhs.zero();
262 
263  DenseVector<Number> RB_Fq_f;
264  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
265  {
266  RB_Fq_vector[q_f].get_principal_subvector(N, RB_Fq_f);
267 
268  if (evaluated_thetas)
269  RB_rhs.add((*evaluated_thetas)[q_f+rb_theta_expansion->get_n_A_terms()], RB_Fq_f);
270  else
271  RB_rhs.add(rb_theta_expansion->eval_F_theta(q_f, mu), RB_Fq_f);
272  }
273 
274  // Solve the linear system
275  if (N > 0)
276  {
277  RB_system_matrix.lu_solve(RB_rhs, RB_solution);
278  }
279 
280  // Place to store the output of get_principal_subvector() calls
281  DenseVector<Number> RB_output_vector_N;
282 
283  // Evaluate RB outputs
284  unsigned int output_counter = 0;
285  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
286  {
287  RB_outputs[n] = 0.;
288  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
289  {
290  RB_output_vectors[n][q_l].get_principal_subvector(N, RB_output_vector_N);
291 
292  // Compute dot product with current output vector and RB_solution
293  auto dot_prod = RB_output_vector_N.dot(RB_solution);
294 
295  // Determine the coefficient depending on whether or not
296  // pre-evaluated thetas were provided. Note that if
297  // pre-evaluated thetas were provided, they must come after
298  // the "A" and "F" thetas and be in "row-major" order. In
299  // other words, there is a possibly "ragged" 2D array of
300  // output thetas ordered by output index "n" and term index
301  // "q_l" which is accessed in row-major order.
302  auto coeff = evaluated_thetas ?
303  (*evaluated_thetas)[output_counter + rb_theta_expansion->get_n_A_terms() + rb_theta_expansion->get_n_F_terms()] :
305 
306  // Finally, accumulate the result in RB_outputs[n]
307  RB_outputs[n] += coeff * dot_prod;
308 
309  // Go to next output
310  output_counter++;
311  }
312  }
313 
314  if (evaluate_RB_error_bound) // Calculate the error bounds
315  {
316  // Evaluate the dual norm of the residual for RB_solution_vector
317  Real epsilon_N = compute_residual_dual_norm(N, evaluated_thetas);
318 
319  // Get lower bound for coercivity constant
320  const Real alpha_LB = get_stability_lower_bound();
321  // alpha_LB needs to be positive to get a valid error bound
322  libmesh_assert_greater ( alpha_LB, 0. );
323 
324  // Evaluate the (absolute) error bound
325  Real abs_error_bound = epsilon_N / residual_scaling_denom(alpha_LB);
326 
327  // Now compute the output error bounds
328  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
329  RB_output_error_bounds[n] = abs_error_bound * this->eval_output_dual_norm(n, evaluated_thetas);
330 
331  return abs_error_bound;
332  }
333  else // Don't calculate the error bounds
334  {
335  // Just return -1. if we did not compute the error bound
336  return -1.;
337  }
338 }
virtual Number eval_output_theta(unsigned int output_index, unsigned int q_l, const RBParameters &mu) const
Evaluate theta_q_l at the current parameter.
virtual Number eval_A_theta(unsigned int q, const RBParameters &mu) const
Evaluate theta_q_a at the current parameter.
bool evaluate_RB_error_bound
Boolean to indicate whether we evaluate a posteriori error bounds when rb_solve is called...
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
DenseVector< Number > RB_solution
The RB solution vector.
void resize(const unsigned int n)
Resize the vector.
Definition: dense_vector.h:396
virtual Real compute_residual_dual_norm(const unsigned int N)
Compute the dual norm of the residual for the solution saved in RB_solution_vector.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
unsigned int get_n_outputs() const
Get n_outputs, the number output functionals.
std::vector< DenseVector< Number > > RB_Fq_vector
Dense vector for the RHS.
virtual Real get_stability_lower_bound()
Get a lower bound for the stability constant (e.g.
virtual Number eval_F_theta(unsigned int q, const RBParameters &mu) const
Evaluate theta_q_f at the current parameter.
std::vector< Real > RB_output_error_bounds
const RBParameters & get_parameters() const
Get the current parameters.
virtual Real residual_scaling_denom(Real alpha_LB)
Specifies the residual scaling on the denominator to be used in the a posteriori error bound...
std::vector< DenseMatrix< Number > > RB_Aq_vector
Dense matrices for the RB computations.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
Real eval_output_dual_norm(unsigned int n, const RBParameters &mu)
Evaluate the dual norm of output n for the current parameters.
virtual unsigned int get_n_basis_functions() const
Get the current number of basis functions.
void check_evaluated_thetas_size(const std::vector< Number > *evaluated_thetas) const
For interfaces like rb_solve() and compute_residual_dual_norm() that optinally take a vector of "pre-...
std::vector< Number > RB_outputs
The vectors storing the RB output values and corresponding error bounds.
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
std::vector< std::vector< DenseVector< Number > > > RB_output_vectors
The vectors storing the RB output vectors.

◆ read_in_basis_functions()

void libMesh::RBEvaluation::read_in_basis_functions ( System sys,
const std::string &  directory_name = "offline_data",
const bool  read_binary_basis_functions = true 
)
virtualinherited

Read in all the basis functions from file.

Parameters
sysUsed for file IO.
directory_nameSpecifies which directory to write files to.
read_binary_basis_functionsIndicates whether to expect binary or ASCII data.

Definition at line 1075 of file rb_evaluation.C.

References libMesh::RBEvaluation::basis_functions, and libMesh::RBEvaluation::read_in_vectors().

1078 {
1079  LOG_SCOPE("read_in_basis_functions()", "RBEvaluation");
1080 
1081  read_in_vectors(sys,
1083  directory_name,
1084  "bf",
1085  read_binary_basis_functions);
1086 }
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.
static void read_in_vectors(System &sys, std::vector< std::unique_ptr< NumericVector< Number >>> &vectors, const std::string &directory_name, const std::string &data_name, const bool read_binary_vectors)
Same as read_in_basis_functions, except in this case we pass in the vectors to be written...

◆ read_in_vectors()

void libMesh::RBEvaluation::read_in_vectors ( System sys,
std::vector< std::unique_ptr< NumericVector< Number >>> &  vectors,
const std::string &  directory_name,
const std::string &  data_name,
const bool  read_binary_vectors 
)
staticinherited

Same as read_in_basis_functions, except in this case we pass in the vectors to be written.

We assume that the size of vectors indicates the number of vectors that need to be read in.

Definition at line 1088 of file rb_evaluation.C.

References libMesh::RBEvaluation::read_in_vectors_from_multiple_files().

Referenced by libMesh::RBEvaluation::read_in_basis_functions().

1093 {
1094  std::vector<std::vector<std::unique_ptr<NumericVector<Number>>> *> vectors_vec;
1095  vectors_vec.push_back(&vectors);
1096 
1097  std::vector<std::string> directory_name_vec;
1098  directory_name_vec.push_back(directory_name);
1099 
1100  std::vector<std::string> data_name_vec;
1101  data_name_vec.push_back(data_name);
1102 
1104  vectors_vec,
1105  directory_name_vec,
1106  data_name_vec,
1107  read_binary_vectors);
1108 }
static void read_in_vectors_from_multiple_files(System &sys, std::vector< std::vector< std::unique_ptr< NumericVector< Number >>> *> multiple_vectors, const std::vector< std::string > &multiple_directory_names, const std::vector< std::string > &multiple_data_names, const bool read_binary_vectors)
Performs read_in_vectors for a list of directory names and data names.

◆ read_in_vectors_from_multiple_files()

void libMesh::RBEvaluation::read_in_vectors_from_multiple_files ( System sys,
std::vector< std::vector< std::unique_ptr< NumericVector< Number >>> *>  multiple_vectors,
const std::vector< std::string > &  multiple_directory_names,
const std::vector< std::string > &  multiple_data_names,
const bool  read_binary_vectors 
)
staticinherited

Performs read_in_vectors for a list of directory names and data names.

Reading in vectors requires us to renumber the dofs in a partition-independent way. This function only renumbers the dofs once at the start (and reverts it at the end), which can save a lot of work compared to renumbering on every read.

Definition at line 1110 of file rb_evaluation.C.

References libMesh::RBEvaluation::assert_file_exists(), TIMPI::Communicator::barrier(), libMesh::NumericVector< T >::build(), libMesh::ParallelObject::comm(), libMesh::Xdr::data(), libMesh::DECODE, libMesh::MeshBase::fix_broken_node_and_element_numbering(), libMesh::System::get_mesh(), libMesh::MeshTools::Private::globally_renumber_nodes_and_elements(), libMesh::libmesh_assert(), libMesh::System::n_dofs(), libMesh::System::n_local_dofs(), libMesh::PARALLEL, TIMPI::Communicator::rank(), libMesh::READ, libMesh::System::read_header(), and libMesh::System::read_serialized_vectors().

Referenced by libMesh::RBEvaluation::read_in_vectors().

1115 {
1116  LOG_SCOPE("read_in_vectors_from_multiple_files()", "RBEvaluation");
1117 
1118  std::size_t n_files = multiple_vectors.size();
1119  std::size_t n_directories = multiple_directory_names.size();
1120  libmesh_assert((n_files == n_directories) && (n_files == multiple_data_names.size()));
1121 
1122  if (n_files == 0)
1123  return;
1124 
1125  // Make sure processors are synced up before we begin
1126  sys.comm().barrier();
1127 
1128  std::ostringstream file_name;
1129  const std::string basis_function_suffix = (read_binary_vectors ? ".xdr" : ".dat");
1130 
1131  // Following EquationSystemsIO::read, we use a temporary numbering (node major)
1132  // before writing out the data. For the sake of efficiency, we do this once for
1133  // all the vectors that we read in.
1135 
1136  for (std::size_t data_index=0; data_index<n_directories; data_index++)
1137  {
1138  std::vector<std::unique_ptr<NumericVector<Number>>> & vectors = *multiple_vectors[data_index];
1139 
1140  // Allocate storage for each vector
1141  for (auto & vec : vectors)
1142  {
1143  // vectors should all be nullptr, otherwise we get a memory leak when
1144  // we create the new vectors in RBEvaluation::read_in_vectors.
1145  libmesh_error_msg_if(vec, "Non-nullptr vector passed to read_in_vectors_from_multiple_files");
1146 
1147  vec = NumericVector<Number>::build(sys.comm());
1148 
1149  vec->init (sys.n_dofs(),
1150  sys.n_local_dofs(),
1151  false,
1152  PARALLEL);
1153  }
1154 
1155  file_name.str("");
1156  file_name << multiple_directory_names[data_index]
1157  << "/" << multiple_data_names[data_index]
1158  << "_data" << basis_function_suffix;
1159 
1160  // On processor zero check to be sure the file exists
1161  if (sys.comm().rank() == 0)
1162  {
1163  struct stat stat_info;
1164  int stat_result = stat(file_name.str().c_str(), &stat_info);
1165 
1166  libmesh_error_msg_if(stat_result != 0, "File does not exist: " << file_name.str());
1167  }
1168 
1169  assert_file_exists(file_name.str());
1170  Xdr vector_data(file_name.str(),
1171  read_binary_vectors ? DECODE : READ);
1172 
1173  // Read the header data. This block of code is based on EquationSystems::_read_impl.
1174  {
1175  std::string version;
1176  vector_data.data(version);
1177 
1178  const std::string libMesh_label = "libMesh-";
1179  std::string::size_type lm_pos = version.find(libMesh_label);
1180  libmesh_error_msg_if(lm_pos == std::string::npos, "version info missing in Xdr header");
1181 
1182  std::istringstream iss(version.substr(lm_pos + libMesh_label.size()));
1183  int ver_major = 0, ver_minor = 0, ver_patch = 0;
1184  char dot;
1185  iss >> ver_major >> dot >> ver_minor >> dot >> ver_patch;
1186  vector_data.set_version(LIBMESH_VERSION_ID(ver_major, ver_minor, ver_patch));
1187 
1188  // Actually read the header data. When we do this, set read_header=false
1189  // so that we do not reinit sys, since we assume that it has already been
1190  // set up properly (e.g. the appropriate variables have already been added).
1191  sys.read_header(vector_data, version, /*read_header=*/false, /*read_additional_data=*/false);
1192  }
1193 
1194  // Comply with the System::read_serialized_vectors() interface which uses dumb pointers.
1195  std::vector<NumericVector<Number> *> vec_in;
1196  for (auto & vec : vectors)
1197  vec_in.push_back(vec.get());
1198 
1199  sys.read_serialized_vectors (vector_data, vec_in);
1200  }
1201 
1202  // Undo the temporary renumbering
1203  sys.get_mesh().fix_broken_node_and_element_numbering();
1204 }
libmesh_assert(ctx)
void globally_renumber_nodes_and_elements(MeshBase &)
There is no reason for a user to ever call this function.
Definition: mesh_tools.C:2542
static void assert_file_exists(const std::string &file_name)
Helper function that checks if file_name exists.
static std::unique_ptr< NumericVector< T > > build(const Parallel::Communicator &comm, SolverPackage solver_package=libMesh::default_solver_package(), ParallelType parallel_type=AUTOMATIC)
Builds a NumericVector on the processors in communicator comm using the linear solver package specifi...

◆ read_parameter_data_from_files()

void libMesh::RBParametrized::read_parameter_data_from_files ( const std::string &  continuous_param_file_name,
const std::string &  discrete_param_file_name,
const bool  read_binary_data 
)
inherited

Read in the parameter ranges from files.

Definition at line 276 of file rb_parametrized.C.

References libMesh::RBParametrized::initialize_parameters(), libMesh::RBParametrized::read_discrete_parameter_values_from_file(), and libMesh::RBParametrized::read_parameter_ranges_from_file().

Referenced by libMesh::RBSCMEvaluation::legacy_read_offline_data_from_files(), and libMesh::RBEvaluation::legacy_read_offline_data_from_files().

279 {
280  RBParameters param_min;
281  RBParameters param_max;
282  read_parameter_ranges_from_file(continuous_param_file_name,
283  read_binary_data,
284  param_min,
285  param_max);
286 
287  std::map<std::string, std::vector<Real>> discrete_parameter_values_in;
288  read_discrete_parameter_values_from_file(discrete_param_file_name,
289  read_binary_data,
290  discrete_parameter_values_in);
291 
292  initialize_parameters(param_min, param_max, discrete_parameter_values_in);
293 }
void read_parameter_ranges_from_file(const std::string &file_name, const bool read_binary, RBParameters &param_min, RBParameters &param_max)
Read in the parameter ranges from file.
void read_discrete_parameter_values_from_file(const std::string &file_name, const bool read_binary_data, std::map< std::string, std::vector< Real >> &discrete_parameter_values_in)
Read in the discrete parameter values from file, if we have any.
void initialize_parameters(const RBParameters &mu_min_in, const RBParameters &mu_max_in, const std::map< std::string, std::vector< Real >> &discrete_parameter_values)
Initialize the parameter ranges and set current_parameters.

◆ residual_scaling_denom()

Real libMesh::RBEvaluation::residual_scaling_denom ( Real  alpha_LB)
virtualinherited

Specifies the residual scaling on the denominator to be used in the a posteriori error bound.

Override in subclass in order to obtain the desired error bound.

Definition at line 467 of file rb_evaluation.C.

Referenced by libMesh::TransientRBEvaluation::rb_solve(), and libMesh::RBEvaluation::rb_solve().

468 {
469  // Here we implement the residual scaling for a coercive
470  // problem.
471  return alpha_LB;
472 }

◆ resize_data_structures()

void libMesh::RBEvaluation::resize_data_structures ( const unsigned int  Nmax,
bool  resize_error_bound_data = true 
)
virtualinherited

Resize and clear the data vectors corresponding to the value of Nmax.

Optionally resize the data structures required for the error bound. Override to also clear and resize any extra data in subclasses.

Reimplemented in libMesh::TransientRBEvaluation.

Definition at line 113 of file rb_evaluation.C.

References libMesh::RBEvaluation::Aq_Aq_representor_innerprods, libMesh::RBEvaluation::Aq_representor, libMesh::RBEvaluation::clear_riesz_representors(), libMesh::RBEvaluation::compute_RB_inner_product, libMesh::RBEvaluation::Fq_Aq_representor_innerprods, libMesh::RBEvaluation::Fq_representor_innerprods, libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBEvaluation::get_n_basis_functions(), libMesh::RBThetaExpansion::get_n_F_terms(), libMesh::RBThetaExpansion::get_n_output_terms(), libMesh::RBThetaExpansion::get_n_outputs(), libMesh::RBEvaluation::output_dual_innerprods, libMesh::RBEvaluation::RB_Aq_vector, libMesh::RBEvaluation::RB_Fq_vector, libMesh::RBEvaluation::RB_inner_product_matrix, libMesh::RBEvaluation::RB_output_error_bounds, libMesh::RBEvaluation::RB_output_vectors, libMesh::RBEvaluation::RB_outputs, libMesh::RBEvaluation::rb_theta_expansion, and libMesh::DenseMatrix< T >::resize().

Referenced by libMesh::RBConstruction::enrich_basis_from_rhs_terms(), libMesh::RBEvaluation::legacy_read_offline_data_from_files(), libMesh::RBDataDeserialization::load_rb_evaluation_data(), libMesh::TransientRBEvaluation::resize_data_structures(), libMesh::RBConstruction::train_reduced_basis_with_greedy(), and libMesh::RBConstruction::train_reduced_basis_with_POD().

115 {
116  LOG_SCOPE("resize_data_structures()", "RBEvaluation");
117 
118  libmesh_error_msg_if(Nmax < this->get_n_basis_functions(),
119  "Error: Cannot set Nmax to be less than the current number of basis functions.");
120 
121  // Resize/clear inner product matrix
123  RB_inner_product_matrix.resize(Nmax,Nmax);
124 
125  // Allocate dense matrices for RB solves
127 
128  for (unsigned int q=0; q<rb_theta_expansion->get_n_A_terms(); q++)
129  {
130  // Initialize the memory for the RB matrices
131  RB_Aq_vector[q].resize(Nmax,Nmax);
132  }
133 
135 
136  for (unsigned int q=0; q<rb_theta_expansion->get_n_F_terms(); q++)
137  {
138  // Initialize the memory for the RB vectors
139  RB_Fq_vector[q].resize(Nmax);
140  }
141 
142 
143  // Initialize the RB output vectors
145  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
146  {
148  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
149  {
150  RB_output_vectors[n][q_l].resize(Nmax);
151  }
152  }
153 
154  // Initialize vectors storing output data
156 
157 
158  if (resize_error_bound_data)
159  {
160  // Initialize vectors for the norms of the Fq representors
161  unsigned int Q_f_hat = rb_theta_expansion->get_n_F_terms()*(rb_theta_expansion->get_n_F_terms()+1)/2;
162  Fq_representor_innerprods.resize(Q_f_hat);
163 
164  // Initialize vectors for the norms of the representors
166  for (unsigned int i=0; i<rb_theta_expansion->get_n_F_terms(); i++)
167  {
169  for (unsigned int j=0; j<rb_theta_expansion->get_n_A_terms(); j++)
170  {
171  Fq_Aq_representor_innerprods[i][j].resize(Nmax, 0.);
172  }
173  }
174 
175  unsigned int Q_a_hat = rb_theta_expansion->get_n_A_terms()*(rb_theta_expansion->get_n_A_terms()+1)/2;
176  Aq_Aq_representor_innerprods.resize(Q_a_hat);
177  for (unsigned int i=0; i<Q_a_hat; i++)
178  {
179  Aq_Aq_representor_innerprods[i].resize(Nmax);
180  for (unsigned int j=0; j<Nmax; j++)
181  {
182  Aq_Aq_representor_innerprods[i][j].resize(Nmax, 0.);
183  }
184  }
185 
187 
188  // Resize the output dual norm vectors
190  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
191  {
192  unsigned int Q_l_hat = rb_theta_expansion->get_n_output_terms(n)*(rb_theta_expansion->get_n_output_terms(n)+1)/2;
193  output_dual_innerprods[n].resize(Q_l_hat);
194  }
195 
196  // Clear and resize the vector of Aq_representors
198 
200  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
201  {
202  Aq_representor[q_a].resize(Nmax);
203  }
204  }
205 }
std::vector< std::vector< std::unique_ptr< NumericVector< Number > > > > Aq_representor
Vector storing the residual representors associated with the left-hand side.
bool compute_RB_inner_product
Boolean flag to indicate whether we compute the RB_inner_product_matrix.
std::vector< Number > Fq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
DenseMatrix< Number > RB_inner_product_matrix
The inner product matrix.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
std::vector< std::vector< Number > > output_dual_innerprods
The vector storing the dual norm inner product terms for each output.
unsigned int get_n_outputs() const
Get n_outputs, the number output functionals.
std::vector< DenseVector< Number > > RB_Fq_vector
Dense vector for the RHS.
std::vector< Real > RB_output_error_bounds
std::vector< std::vector< std::vector< Number > > > Fq_Aq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online...
virtual void clear_riesz_representors()
Clear all the Riesz representors that are used to compute the RB residual (and hence error bound)...
std::vector< DenseMatrix< Number > > RB_Aq_vector
Dense matrices for the RB computations.
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
virtual unsigned int get_n_basis_functions() const
Get the current number of basis functions.
void resize(const unsigned int new_m, const unsigned int new_n)
Resizes the matrix to the specified size and calls zero().
Definition: dense_matrix.h:895
std::vector< Number > RB_outputs
The vectors storing the RB output values and corresponding error bounds.
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
std::vector< std::vector< std::vector< Number > > > Aq_Aq_representor_innerprods
std::vector< std::vector< DenseVector< Number > > > RB_output_vectors
The vectors storing the RB output vectors.

◆ set_n_basis_functions()

void libMesh::RBEvaluation::set_n_basis_functions ( unsigned int  n_bfs)
virtualinherited

Set the number of basis functions.

Useful when reading in stored data.

Definition at line 75 of file rb_evaluation.C.

References libMesh::RBEvaluation::basis_functions.

Referenced by libMesh::RBEvaluation::clear(), libMesh::RBEvaluation::legacy_read_offline_data_from_files(), and libMesh::RBDataDeserialization::load_rb_evaluation_data().

76 {
77  basis_functions.resize(n_bfs);
78 }
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.

◆ set_parameters()

bool libMesh::RBParametrized::set_parameters ( const RBParameters params)
inherited

Set the current parameters to params The parameters are checked for validity; an error is thrown if the number of parameters or samples is different than expected.

We

Returns
a boolean true if the new parameters are within the min/max range, and false otherwise (but the parameters are set regardless). Enabling the "verbose_mode" flag will also print more details.

Definition at line 143 of file rb_parametrized.C.

References libMesh::RBParametrized::check_if_valid_params(), libMesh::RBParametrized::parameters, and libMesh::RBParametrized::parameters_initialized.

Referenced by libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_interiors(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_nodes(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_sides(), libMesh::RBConstruction::get_RB_error_bound(), get_stability_lower_bound(), libMesh::RBParametrized::initialize_parameters(), libMesh::RBSCMEvaluation::reload_current_parameters(), libMesh::RBSCMEvaluation::set_current_parameters_from_C_J(), and RBParametersTest::testRBParametrized().

144 {
145  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::set_parameters");
146 
147  // Terminate if params has the wrong number of parameters or samples.
148  // If the parameters are outside the min/max range, return false.
149  const bool valid_params = check_if_valid_params(params);
150 
151  // Make a copy of params (default assignment operator just does memberwise copy, which is sufficient here)
152  this->parameters = params;
153 
154  return valid_params;
155 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
bool check_if_valid_params(const RBParameters &params) const
Helper function to check that params is valid:
RBParameters parameters
Vector storing the current parameters.

◆ set_rb_theta_expansion()

void libMesh::RBEvaluation::set_rb_theta_expansion ( RBThetaExpansion rb_theta_expansion_in)
inherited

Set the RBThetaExpansion object.

Definition at line 80 of file rb_evaluation.C.

References libMesh::RBEvaluation::rb_theta_expansion.

Referenced by SimpleRBEvaluation().

81 {
82  rb_theta_expansion = &rb_theta_expansion_in;
83 }
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.

◆ write_out_basis_functions()

void libMesh::RBEvaluation::write_out_basis_functions ( System sys,
const std::string &  directory_name = "offline_data",
const bool  write_binary_basis_functions = true 
)
virtualinherited

Write out all the basis functions to file.

sys is used for file IO directory_name specifies which directory to write files to read_binary_basis_functions indicates whether to expect binary or ASCII data

Definition at line 992 of file rb_evaluation.C.

References libMesh::RBEvaluation::basis_functions, and libMesh::RBEvaluation::write_out_vectors().

Referenced by main().

995 {
996  LOG_SCOPE("write_out_basis_functions()", "RBEvaluation");
997 
998  std::vector<NumericVector<Number>*> basis_functions_ptrs;
999  for (std::size_t i=0; i<basis_functions.size(); i++)
1000  {
1001  basis_functions_ptrs.push_back(basis_functions[i].get());
1002  }
1003 
1004  write_out_vectors(sys,
1005  basis_functions_ptrs,
1006  directory_name,
1007  "bf",
1008  write_binary_basis_functions);
1009 }
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.
static void write_out_vectors(System &sys, std::vector< NumericVector< Number > *> &vectors, const std::string &directory_name="offline_data", const std::string &data_name="bf", const bool write_binary_basis_functions=true)
Same as write_out_basis_functions, except in this case we pass in the vectors to be written...

◆ write_out_vectors()

void libMesh::RBEvaluation::write_out_vectors ( System sys,
std::vector< NumericVector< Number > *> &  vectors,
const std::string &  directory_name = "offline_data",
const std::string &  data_name = "bf",
const bool  write_binary_basis_functions = true 
)
staticinherited

Same as write_out_basis_functions, except in this case we pass in the vectors to be written.

Definition at line 1011 of file rb_evaluation.C.

References TIMPI::Communicator::barrier(), libMesh::ParallelObject::comm(), libMesh::ENCODE, libMesh::MeshBase::fix_broken_node_and_element_numbering(), libMesh::get_io_compatibility_version(), libMesh::System::get_mesh(), libMesh::MeshTools::Private::globally_renumber_nodes_and_elements(), libMesh::Utility::mkdir(), TIMPI::Communicator::rank(), libMesh::WRITE, libMesh::System::write_header(), and libMesh::System::write_serialized_vectors().

Referenced by libMesh::RBEvaluation::write_out_basis_functions().

1016 {
1017  LOG_SCOPE("write_out_vectors()", "RBEvaluation");
1018 
1019  if (sys.comm().rank() == 0)
1020  {
1021  // Make a directory to store all the data files
1022  Utility::mkdir(directory_name.c_str());
1023  }
1024 
1025  // Make sure processors are synced up before we begin
1026  sys.comm().barrier();
1027 
1028  std::ostringstream file_name;
1029  const std::string basis_function_suffix = (write_binary_vectors ? ".xdr" : ".dat");
1030 
1031  file_name << directory_name << "/" << data_name << "_data" << basis_function_suffix;
1032  Xdr bf_data(file_name.str(),
1033  write_binary_vectors ? ENCODE : WRITE);
1034 
1035  // Following EquationSystems::write(), we should only write the header information
1036  // if we're proc 0
1037  if (sys.comm().rank() == 0)
1038  {
1039  std::string version("libMesh-" + libMesh::get_io_compatibility_version());
1040 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
1041  version += " with infinite elements";
1042 #endif
1043  bf_data.data(version ,"# File Format Identifier");
1044 
1045  sys.write_header(bf_data, /*(unused arg)*/ version, /*write_additional_data=*/false);
1046  }
1047 
1048  // Following EquationSystemsIO::write, we use a temporary numbering (node major)
1049  // before writing out the data
1051 
1052  // Write all vectors at once.
1053  {
1054  // Note the API wants pointers to constant vectors, hence this...
1055  std::vector<const NumericVector<Number> *> bf_out;
1056  for (const auto & vec : vectors)
1057  bf_out.push_back(vec);
1058 
1059  // for (auto & val : vectors)
1060  // bf_out.push_back(val);
1061  sys.write_serialized_vectors (bf_data, bf_out);
1062  }
1063 
1064 
1065  // set the current version
1066  bf_data.set_version(LIBMESH_VERSION_ID(LIBMESH_MAJOR_VERSION,
1067  LIBMESH_MINOR_VERSION,
1068  LIBMESH_MICRO_VERSION));
1069 
1070 
1071  // Undo the temporary renumbering
1072  sys.get_mesh().fix_broken_node_and_element_numbering();
1073 }
int mkdir(const char *pathname)
Create a directory.
Definition: utility.C:152
std::string get_io_compatibility_version()
Specifier for I/O file compatibility features.
void globally_renumber_nodes_and_elements(MeshBase &)
There is no reason for a user to ever call this function.
Definition: mesh_tools.C:2542

◆ write_parameter_data_to_files()

void libMesh::RBParametrized::write_parameter_data_to_files ( const std::string &  continuous_param_file_name,
const std::string &  discrete_param_file_name,
const bool  write_binary_data 
)
inherited

Write out the parameter ranges to files.

Definition at line 199 of file rb_parametrized.C.

References libMesh::RBParametrized::write_discrete_parameter_values_to_file(), and libMesh::RBParametrized::write_parameter_ranges_to_file().

Referenced by libMesh::RBSCMEvaluation::legacy_write_offline_data_to_files(), and libMesh::RBEvaluation::legacy_write_offline_data_to_files().

202 {
203  write_parameter_ranges_to_file(continuous_param_file_name, write_binary_data);
204  write_discrete_parameter_values_to_file(discrete_param_file_name, write_binary_data);
205 }
void write_discrete_parameter_values_to_file(const std::string &file_name, const bool write_binary_data)
Write out the discrete parameter values to file.
void write_parameter_ranges_to_file(const std::string &file_name, const bool write_binary)
Write out the parameter ranges to file.

Member Data Documentation

◆ _communicator

const Parallel::Communicator& libMesh::ParallelObject::_communicator
protectedinherited

◆ _counts

ReferenceCounter::Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited

Actually holds the data.

Definition at line 124 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::get_info().

◆ _enable_print_counter

bool libMesh::ReferenceCounter::_enable_print_counter = true
staticprotectedinherited

Flag to control whether reference count information is printed when print_info is called.

Definition at line 143 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().

◆ _mutex

Threads::spin_mutex libMesh::ReferenceCounter::_mutex
staticprotectedinherited

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 137 of file reference_counter.h.

◆ _n_objects

Threads::atomic< unsigned int > libMesh::ReferenceCounter::_n_objects
staticprotectedinherited

The number of objects.

Print the reference count information when the number returns to 0.

Definition at line 132 of file reference_counter.h.

Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().

◆ acoustics_rb_theta_expansion

AcousticsRBThetaExpansion SimpleRBEvaluation::acoustics_rb_theta_expansion

The object that stores the "theta" expansion of the parameter dependent PDE, i.e.

the set of parameter-dependent functions in the affine expansion of the PDE.

Definition at line 74 of file rb_classes.h.

Referenced by SimpleRBEvaluation().

◆ Aq_Aq_representor_innerprods

std::vector<std::vector<std::vector<Number> > > libMesh::RBEvaluation::Aq_Aq_representor_innerprods
inherited

◆ Aq_representor

std::vector<std::vector<std::unique_ptr<NumericVector<Number> > > > libMesh::RBEvaluation::Aq_representor
inherited

Vector storing the residual representors associated with the left-hand side.

These are basis dependent and hence stored here, whereas the Fq_representors are stored in RBSystem.

Definition at line 354 of file rb_evaluation.h.

Referenced by libMesh::RBEvaluation::clear_riesz_representors(), libMesh::RBConstruction::read_riesz_representors_from_files(), libMesh::RBEvaluation::resize_data_structures(), libMesh::TransientRBConstruction::update_residual_terms(), libMesh::RBConstruction::update_residual_terms(), and libMesh::RBConstruction::write_riesz_representors_to_files().

◆ basis_functions

std::vector<std::unique_ptr<NumericVector<Number> > > libMesh::RBEvaluation::basis_functions
inherited

◆ cd_rb_theta_expansion

CDRBThetaExpansion SimpleRBEvaluation::cd_rb_theta_expansion

The object that stores the "theta" expansion of the parameter dependent PDE, i.e.

the set of parameter-dependent functions in the affine expansion of the PDE.

Definition at line 67 of file rb_classes.h.

Referenced by SimpleRBEvaluation().

◆ compute_RB_inner_product

bool libMesh::RBEvaluation::compute_RB_inner_product
inherited

◆ eim_test_rb_theta_expansion

EimTestRBThetaExpansion SimpleRBEvaluation::eim_test_rb_theta_expansion

The object that stores the "theta" expansion of the parameter dependent PDE, i.e.

the set of parameter-dependent functions in the affine expansion of the PDE.

Definition at line 53 of file rb_classes.h.

Referenced by SimpleRBEvaluation().

◆ evaluate_RB_error_bound

bool libMesh::RBEvaluation::evaluate_RB_error_bound
inherited

Boolean to indicate whether we evaluate a posteriori error bounds when rb_solve is called.

Definition at line 360 of file rb_evaluation.h.

Referenced by libMesh::TransientRBEvaluation::rb_solve(), and libMesh::RBEvaluation::rb_solve().

◆ ex02_rb_theta_expansion

Ex02RBThetaExpansion SimpleRBEvaluation::ex02_rb_theta_expansion

The object that stores the "theta" expansion of the parameter dependent PDE, i.e.

the set of parameter-dependent functions in the affine expansion of the PDE.

Definition at line 85 of file rb_classes.h.

Referenced by SimpleRBEvaluation().

◆ ex6_theta_expansion

Ex6ThetaExpansion SimpleRBEvaluation::ex6_theta_expansion

The object that stores the "theta" expansion of the parameter dependent PDE, i.e.

the set of parameter-dependent functions in the affine expansion of the PDE.

Definition at line 68 of file rb_classes.h.

Referenced by SimpleRBEvaluation().

◆ Fq_Aq_representor_innerprods

std::vector<std::vector<std::vector<Number> > > libMesh::RBEvaluation::Fq_Aq_representor_innerprods
inherited

◆ Fq_representor_innerprods

std::vector<Number> libMesh::RBEvaluation::Fq_representor_innerprods
inherited

◆ greedy_param_list

std::vector<RBParameters> libMesh::RBEvaluation::greedy_param_list
inherited

◆ output_dual_innerprods

std::vector<std::vector<Number > > libMesh::RBEvaluation::output_dual_innerprods
inherited

◆ RB_Aq_vector

std::vector<DenseMatrix<Number> > libMesh::RBEvaluation::RB_Aq_vector
inherited

◆ RB_Fq_vector

std::vector<DenseVector<Number> > libMesh::RBEvaluation::RB_Fq_vector
inherited

◆ RB_inner_product_matrix

DenseMatrix<Number> libMesh::RBEvaluation::RB_inner_product_matrix
inherited

◆ RB_output_error_bounds

std::vector<Real > libMesh::RBEvaluation::RB_output_error_bounds
inherited

◆ RB_output_vectors

std::vector<std::vector<DenseVector<Number> > > libMesh::RBEvaluation::RB_output_vectors
inherited

◆ RB_outputs

std::vector<Number > libMesh::RBEvaluation::RB_outputs
inherited

The vectors storing the RB output values and corresponding error bounds.

Definition at line 319 of file rb_evaluation.h.

Referenced by libMesh::RBEvaluation::rb_solve(), and libMesh::RBEvaluation::resize_data_structures().

◆ rb_scm_eval

RBSCMEvaluation* SimpleRBEvaluation::rb_scm_eval

Pointer to the SCM object that will provide our coercivity constant lower bound.

Definition at line 79 of file rb_classes.h.

Referenced by get_stability_lower_bound().

◆ RB_solution

DenseVector<Number> libMesh::RBEvaluation::RB_solution
inherited

◆ verbose_mode

bool libMesh::RBParametrized::verbose_mode
inherited

Public boolean to toggle verbose mode.

Definition at line 193 of file rb_parametrized.h.

Referenced by libMesh::RBParametrized::check_if_valid_params().


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