libMesh
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Static Private Member Functions | Private 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...
 
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...
 
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 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 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...
 
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 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...
 
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 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...
 
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...
 
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...
 
void set_parameters (const RBParameters &params)
 Set the current parameters to params. 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 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=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 assert_file_exists (const std::string &file_name)
 Helper function that checks if file_name exists. More...
 
void increment_constructor_count (const std::string &name)
 Increments the construction counter. More...
 
void increment_destructor_count (const std::string &name)
 Increments the destruction counter. 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...
 

Private Member Functions

void write_parameter_ranges_to_file (const std::string &file_name, const bool write_binary)
 Write out the parameter ranges to file. More...
 
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. More...
 
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. More...
 
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. More...
 
bool valid_params (const RBParameters &params)
 Helper function to check that params is valid. More...
 

Static Private Member Functions

static bool is_value_in_list (Real value, const std::vector< Real > &list_of_values, Real tol)
 Helper function to check if the specified value is in the list of values (within a tolerance given by tol). More...
 

Private Attributes

RBThetaExpansion * rb_theta_expansion
 A pointer to to the object that stores the theta expansion. More...
 
bool parameters_initialized
 Flag indicating whether the parameters have been initialized. More...
 
RBParameters parameters
 Vector storing the current parameters. More...
 
RBParameters parameters_min
 Vectors that define the ranges (min and max) for the parameters. More...
 
RBParameters parameters_max
 
std::map< std::string, std::vector< Real > > _discrete_parameter_values
 Map that defines the allowable values of any discrete parameters. 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 117 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().

◆ 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().

◆ 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().

◆ SimpleRBEvaluation() [4/6]

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

Constructor.

Just set the theta expansion.

Definition at line 42 of file rb_classes.h.

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

◆ 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().

◆ SimpleRBEvaluation() [6/6]

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

Constructor.

Just set the theta expansion.

Definition at line 56 of file rb_classes.h.

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

Member Function Documentation

◆ assert_file_exists()

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

Helper function that checks if file_name exists.

Definition at line 874 of file rb_evaluation.C.

875 {
876  if (!std::ifstream(file_name.c_str()))
877  libmesh_error_msg("File missing: " + file_name);
878 }

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

◆ 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::RBEIMEvaluation, and libMesh::TransientRBEvaluation.

Definition at line 62 of file rb_evaluation.C.

63 {
64  LOG_SCOPE("clear()", "RBEvaluation");
65 
66  // Clear the basis functions
67  basis_functions.clear();
69 
71 
72  // Clear the Greedy param list
73  for (auto & plist : greedy_param_list)
74  plist.clear();
75  greedy_param_list.clear();
76 }

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::RBEIMEvaluation::clear(), libMesh::TransientRBEvaluation::clear(), and libMesh::RBEvaluation::~RBEvaluation().

◆ 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 411 of file rb_evaluation.C.

412 {
413  Aq_representor.clear();
414 }

References libMesh::RBEvaluation::Aq_representor.

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

◆ comm()

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

Definition at line 94 of file parallel_object.h.

95  { return _communicator; }

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::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::EquationSystems::_read_impl(), 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::ImplicitSystem::add_matrix(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), libMesh::DynaIO::add_spline_constraints(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), 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::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::Generation::build_extrusion(), 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::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::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_scalar_solution(), 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::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::DTKSolutionTransfer::DTKSolutionTransfer(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::RBEIMConstruction::enrich_RB_space(), libMesh::TransientRBConstruction::enrich_RB_space(), libMesh::RBConstruction::enrich_RB_space(), libMesh::EpetraVector< T >::EpetraVector(), AssembleOptimization::equality_constraints(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::RBEIMConstruction::evaluate_mesh_function(), 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::DofMap::gather_constraints(), libMesh::MeshfreeInterpolation::gather_remote_data(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::DofMap::get_info(), libMesh::ImplicitSystem::get_linear_solver(), AssembleOptimization::inequality_constraints(), AssembleOptimization::inequality_constraints_jacobian(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::EigenSystem::init_matrices(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::RBEIMConstruction::initialize_rb_construction(), 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_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::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_preconditioner_apply(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_postcheck(), 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(), 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_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(), LinearElasticityWithContact::move_mesh(), libMesh::DistributedMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::DofMap::n_constrained_dofs(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::MeshTools::n_p_levels(), libMesh::BoundaryInfo::n_shellface_conds(), 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::MeshTools::paranoid_n_levels(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::print_dof_constraints(), FEMParameters::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), 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::MeshRefinement::refine_and_coarsen_elements(), libMesh::DistributedMesh::renumber_dof_objects(), LinearElasticityWithContact::residual_and_jacobian(), OverlappingAlgebraicGhostingTest::run_ghosting_test(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::TransientRBConstruction::set_error_temporal_data(), libMesh::RBEIMConstruction::set_explicit_sys_subvector(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::split_mesh(), libMesh::BoundaryInfo::sync(), libMesh::MeshRefinement::test_level_one(), MeshfunctionDFEM::test_mesh_function_dfem(), MeshfunctionDFEM::test_mesh_function_dfem_grad(), MeshFunctionTest::test_p_level(), libMesh::MeshRefinement::test_unflagged(), SystemsTest::testBlockRestrictedVarNDofs(), PointLocatorTest::testLocator(), BoundaryInfoTest::testMesh(), SystemsTest::testProjectCubeWithMeshFunction(), CheckpointIOTest::testSplitter(), libMesh::MeshTools::total_weight(), libMesh::MeshFunctionSolutionTransfer::transfer(), libMesh::MeshfreeSolutionTransfer::transfer(), libMesh::TransientRBConstruction::truth_assembly(), libMesh::RBConstruction::truth_assembly(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::TransientRBConstruction::update_RB_initial_condition_all_N(), libMesh::RBEIMConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_RB_system_matrices(), libMesh::RBConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_residual_terms(), libMesh::RBConstruction::update_residual_terms(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::VTKIO::write_nodal_data(), 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().

◆ compute_residual_dual_norm()

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 302 of file rb_evaluation.C.

303 {
304  LOG_SCOPE("compute_residual_dual_norm()", "RBEvaluation");
305 
306  const RBParameters & mu = get_parameters();
307 
308  // Use the stored representor inner product values
309  // to evaluate the residual norm
310  Number residual_norm_sq = 0.;
311 
312  unsigned int q=0;
313  for (unsigned int q_f1=0; q_f1<rb_theta_expansion->get_n_F_terms(); q_f1++)
314  {
315  for (unsigned int q_f2=q_f1; q_f2<rb_theta_expansion->get_n_F_terms(); q_f2++)
316  {
317  Real delta = (q_f1==q_f2) ? 1. : 2.;
318  residual_norm_sq += delta * libmesh_real(
321 
322  q++;
323  }
324  }
325 
326  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
327  {
328  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
329  {
330  for (unsigned int i=0; i<N; i++)
331  {
332  Real delta = 2.;
333  residual_norm_sq +=
334  delta * libmesh_real( rb_theta_expansion->eval_F_theta(q_f, mu) *
337  }
338  }
339  }
340 
341  q=0;
342  for (unsigned int q_a1=0; q_a1<rb_theta_expansion->get_n_A_terms(); q_a1++)
343  {
344  for (unsigned int q_a2=q_a1; q_a2<rb_theta_expansion->get_n_A_terms(); q_a2++)
345  {
346  Real delta = (q_a1==q_a2) ? 1. : 2.;
347 
348  for (unsigned int i=0; i<N; i++)
349  {
350  for (unsigned int j=0; j<N; j++)
351  {
352  residual_norm_sq +=
354  rb_theta_expansion->eval_A_theta(q_a2, mu) *
356  }
357  }
358 
359  q++;
360  }
361  }
362 
363  if (libmesh_real(residual_norm_sq) < 0.)
364  {
365  // libMesh::out << "Warning: Square of residual norm is negative "
366  // << "in RBSystem::compute_residual_dual_norm()" << std::endl;
367 
368  // Sometimes this is negative due to rounding error,
369  // but when this occurs the error is on the order of 1.e-10,
370  // so shouldn't affect error bound much...
371  residual_norm_sq = std::abs(residual_norm_sq);
372  }
373 
374  return std::sqrt( libmesh_real(residual_norm_sq) );
375 }

References std::abs(), libMesh::RBEvaluation::Aq_Aq_representor_innerprods, 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, libMesh::Real, and std::sqrt().

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

◆ disable_print_counter_info()

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 106 of file reference_counter.C.

107 {
108  _enable_print_counter = false;
109  return;
110 }

References libMesh::ReferenceCounter::_enable_print_counter.

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

◆ 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 100 of file reference_counter.C.

101 {
102  _enable_print_counter = true;
103  return;
104 }

References libMesh::ReferenceCounter::_enable_print_counter.

◆ eval_output_dual_norm()

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.

Definition at line 392 of file rb_evaluation.C.

393 {
394  Number output_bound_sq = 0.;
395  unsigned int q=0;
396  for (unsigned int q_l1=0; q_l1<rb_theta_expansion->get_n_output_terms(n); q_l1++)
397  {
398  for (unsigned int q_l2=q_l1; q_l2<rb_theta_expansion->get_n_output_terms(n); q_l2++)
399  {
400  Real delta = (q_l1==q_l2) ? 1. : 2.;
401  output_bound_sq += delta * libmesh_real(
404  q++;
405  }
406  }
407 
408  return libmesh_real(std::sqrt( output_bound_sq ));
409 }

References libMesh::RBThetaExpansion::eval_output_theta(), libMesh::RBThetaExpansion::get_n_output_terms(), libMesh::libmesh_conj(), libMesh::libmesh_real(), libMesh::RBEvaluation::output_dual_innerprods, libMesh::RBEvaluation::rb_theta_expansion, libMesh::Real, and std::sqrt().

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

◆ get_basis_function()

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

◆ 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 433 of file rb_parametrized.C.

434 {
435  if (list_of_values.empty())
436  libmesh_error_msg("Error: list_of_values is empty.");
437 
438  Real min_distance = std::numeric_limits<Real>::max();
439  Real closest_val = 0.;
440  for (const auto & current_value : list_of_values)
441  {
442  Real distance = std::abs(value - current_value);
443  if (distance < min_distance)
444  {
445  min_distance = distance;
446  closest_val = current_value;
447  }
448  }
449 
450  return closest_val;
451 }

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

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

◆ get_discrete_parameter_values()

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

◆ 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::RBEIMEvaluation, and libMesh::TransientRBEvaluation.

Definition at line 291 of file rb_evaluation.C.

292 {
293  // Normalize the error based on the error bound in the
294  // case of an empty reduced basis. The error bound is based
295  // on the residual F - AU, so with an empty basis this gives
296  // a value based on the norm of F at the current parameters.
297 
298  Real normalization = rb_solve(0);
299  return normalization;
300 }

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

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

◆ 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.

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 & pr : _counts)
59  {
60  const std::string name(pr.first);
61  const unsigned int creations = pr.second.first;
62  const unsigned int destructions = pr.second.second;
63 
64  oss << "| " << name << " reference count information:\n"
65  << "| Creations: " << creations << '\n'
66  << "| Destructions: " << destructions << '\n';
67  }
68 
69  oss << " ---------------------------------------------------------------------------- \n";
70 
71  return oss.str();
72 
73 #else
74 
75  return "";
76 
77 #endif
78 }

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

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

◆ 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 145 of file rb_evaluation.h.

146  { return cast_int<unsigned int>(basis_functions.size()); }

References libMesh::RBEvaluation::basis_functions.

Referenced by libMesh::RBDataSerialization::add_rb_eim_evaluation_data_to_builder(), libMesh::RBDataSerialization::add_rb_evaluation_data_to_builder(), libMesh::RBDataSerialization::add_transient_rb_evaluation_data_to_builder(), libMesh::TransientRBConstruction::assemble_affine_expansion(), libMesh::RBEIMConstruction::compute_best_fit_error(), libMesh::RBEIMConstruction::enrich_RB_space(), libMesh::RBConstruction::enrich_RB_space(), libMesh::RBEIMTheta::evaluate(), libMesh::RBConstruction::greedy_termination_test(), libMesh::RBEIMConstruction::initialize_eim_assembly_objects(), libMesh::RBEIMEvaluation::initialize_eim_theta_objects(), libMesh::RBEIMEvaluation::legacy_read_in_interpolation_points_elem(), libMesh::TransientRBEvaluation::legacy_read_offline_data_from_files(), libMesh::RBEIMEvaluation::legacy_read_offline_data_from_files(), libMesh::TransientRBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEIMEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBDataDeserialization::load_rb_eim_evaluation_data(), libMesh::RBEIMConstruction::load_rb_solution(), libMesh::RBConstruction::load_rb_solution(), libMesh::TransientRBConstruction::load_rb_solution(), libMesh::RBConstruction::print_basis_function_orthogonality(), libMesh::TransientRBEvaluation::rb_solve(), libMesh::RBEvaluation::rb_solve(), libMesh::RBEIMEvaluation::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(), libMesh::TransientRBConstruction::update_RB_initial_condition_all_N(), libMesh::RBEIMConstruction::update_RB_system_matrices(), 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().

◆ get_n_continuous_params()

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

Get the number of continuous parameters.

Definition at line 125 of file rb_parametrized.C.

126 {
128  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_n_continuous_params");
129 
131 
132  return static_cast<unsigned int>(get_n_params() - get_n_discrete_params());
133 }

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().

◆ get_n_discrete_params()

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

Get the number of discrete parameters.

Definition at line 135 of file rb_parametrized.C.

136 {
138  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_n_discrete_params");
139 
140  return cast_int<unsigned int>
142 }

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().

◆ get_n_params()

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

◆ 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 198 of file rb_parametrized.C.

199 {
201  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_parameter_max");
202 
203  return parameters_max.get_value(param_name);
204 }

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

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

◆ 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 190 of file rb_parametrized.C.

191 {
193  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_parameter_min");
194 
195  return parameters_min.get_value(param_name);
196 }

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

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

◆ get_parameter_names()

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

Get a set that stores the parameter names.

Definition at line 144 of file rb_parametrized.C.

145 {
147  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_parameter_names");
148 
149  std::set<std::string> parameter_names;
150  parameters_min.get_parameter_names(parameter_names);
151 
152  return parameter_names;
153 }

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

Referenced by libMesh::RBDataSerialization::add_parameter_ranges_to_builder().

◆ get_parameters()

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

Get the current parameters.

Definition at line 166 of file rb_parametrized.C.

167 {
169  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_current_parameters");
170 
171  return parameters;
172 }

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

Referenced by libMesh::TransientRBConstruction::add_scaled_mass_matrix(), libMesh::TransientRBEvaluation::cache_online_residual_terms(), libMesh::RBEIMConstruction::compute_best_fit_error(), libMesh::RBEvaluation::compute_residual_dual_norm(), libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), libMesh::RBSCMConstruction::enrich_C_J(), libMesh::RBEIMConstruction::enrich_RB_space(), libMesh::RBEIMTheta::evaluate(), libMesh::RBEIMEvaluation::evaluate_parametrized_function(), 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::RBSCMEvaluation::legacy_read_offline_data_from_files(), libMesh::TransientRBConstruction::mass_matrix_scaled_matvec(), libMesh::RBSCMConstruction::print_info(), libMesh::RBConstruction::print_info(), libMesh::RBParametrized::print_parameters(), libMesh::RBSCMConstruction::process_parameters_file(), libMesh::TransientRBEvaluation::rb_solve(), libMesh::RBEvaluation::rb_solve(), libMesh::RBEIMEvaluation::rb_solve(), libMesh::RBSCMEvaluation::save_current_parameters(), libMesh::TransientRBConstruction::truth_assembly(), libMesh::RBConstruction::truth_assembly(), libMesh::TransientRBConstruction::truth_solve(), libMesh::RBEIMConstruction::truth_solve(), libMesh::RBConstruction::truth_solve(), libMesh::TransientRBEvaluation::uncached_compute_residual_dual_norm(), and libMesh::RBConstruction::update_greedy_param_list().

◆ 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 182 of file rb_parametrized.C.

183 {
185  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_parameters_max");
186 
187  return parameters_max;
188 }

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::RBConstruction::set_rb_construction_parameters(), and libMesh::RBParametrized::write_parameter_ranges_to_file().

◆ 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 174 of file rb_parametrized.C.

175 {
177  libmesh_error_msg("Error: parameters not initialized in RBParametrized::get_parameters_min");
178 
179  return parameters_min;
180 }

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::RBConstruction::set_rb_construction_parameters(), and libMesh::RBParametrized::write_parameter_ranges_to_file().

◆ get_rb_theta_expansion()

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

◆ 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 66 of file rb_classes.h.

66 { 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.

71  {
73  return rb_scm_eval->get_SCM_LB();
74  }

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

◆ increment_constructor_count()

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

Increments the construction counter.

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

Definition at line 181 of file reference_counter.h.

182 {
183  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
184  std::pair<unsigned int, unsigned int> & p = _counts[name];
185 
186  p.first++;
187 }

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

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

◆ increment_destructor_count()

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

Increments the destruction counter.

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

Definition at line 194 of file reference_counter.h.

195 {
196  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
197  std::pair<unsigned int, unsigned int> & p = _counts[name];
198 
199  p.second++;
200 }

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

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

◆ 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.

Definition at line 60 of file rb_parametrized.C.

63 {
64  // Check that the min/max vectors are valid
65  {
66  const std::string err_string = "Error: Invalid mu_min/mu_max in RBParameters constructor.";
67  bool valid_min_max = (mu_min_in.n_parameters() == mu_max_in.n_parameters());
68  if (!valid_min_max)
69  libmesh_error_msg(err_string);
70 
71  else
72  {
73  for (const auto & pr : mu_min_in)
74  {
75  const std::string & param_name = pr.first;
76  if (mu_min_in.get_value(param_name) > mu_max_in.get_value(param_name))
77  libmesh_error_msg(err_string);
78  }
79  }
80  }
81 
82  parameters_min = mu_min_in;
83  parameters_max = mu_max_in;
84 
85  // Add in min/max values due to the discrete parameters
86  for (const auto & pr : discrete_parameter_values)
87  {
88  if (pr.second.empty())
89  libmesh_error_msg("Error: List of discrete parameters for " << pr.first << " is empty.");
90 
91  Real min_val = *std::min_element(pr.second.begin(), pr.second.end());
92  Real max_val = *std::max_element(pr.second.begin(), pr.second.end());
93 
94  libmesh_assert_less_equal(min_val,max_val);
95 
96  parameters_min.set_value(pr.first, min_val);
97  parameters_max.set_value(pr.first, max_val);
98  }
99 
100  _discrete_parameter_values = discrete_parameter_values;
101 
102  parameters_initialized = true;
103 
104  // Initialize the current parameters to parameters_min
106 }

References libMesh::RBParametrized::_discrete_parameter_values, libMesh::RBParameters::get_value(), libMesh::RBParameters::n_parameters(), 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::RBEIMConstruction::initialize_parametrized_functions_in_training_set(), libMesh::RBDataDeserialization::load_parameter_ranges(), libMesh::RBSCMConstruction::perform_SCM_greedy(), libMesh::RBSCMConstruction::process_parameters_file(), libMesh::RBParametrized::read_parameter_data_from_files(), libMesh::RBConstruction::set_rb_construction_parameters(), and libMesh::RBConstruction::train_reduced_basis().

◆ 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 108 of file rb_parametrized.C.

109 {
110  initialize_parameters(rb_parametrized.get_parameters_min(),
111  rb_parametrized.get_parameters_max(),
112  rb_parametrized.get_discrete_parameter_values());
113 }

References libMesh::RBParametrized::get_discrete_parameter_values(), libMesh::RBParametrized::get_parameters_max(), libMesh::RBParametrized::get_parameters_min(), and libMesh::RBParametrized::initialize_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 373 of file rb_parametrized.C.

374 {
376  libmesh_error_msg("Error: parameters not initialized in RBParametrized::is_discrete_parameter");
377 
378  return (_discrete_parameter_values.find(mu_name) != _discrete_parameter_values.end());
379 }

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

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

◆ 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 96 of file rb_evaluation.C.

97 {
99  {
100  return true;
101  }
102  else
103  {
104  return false;
105  }
106 }

References libMesh::RBEvaluation::rb_theta_expansion.

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

◆ is_value_in_list()

bool libMesh::RBParametrized::is_value_in_list ( Real  value,
const std::vector< Real > &  list_of_values,
Real  tol 
)
staticprivateinherited

Helper function to check if the specified value is in the list of values (within a tolerance given by tol).

Definition at line 453 of file rb_parametrized.C.

454 {
455  Real closest_value = get_closest_value(value, list_of_values);
456 
457  // Check if relative tolerance is satisfied
458  Real rel_error = std::abs(value - closest_value) / std::abs(value);
459  if (rel_error <= tol)
460  {
461  return true;
462  }
463 
464  // If relative tolerance isn't satisfied, we should still check an absolute
465  // error, since relative tolerance can be misleading if value is close to zero
466  Real abs_error = std::abs(value - closest_value);
467  return (abs_error <= tol);
468 }

References std::abs(), libMesh::RBParametrized::get_closest_value(), libMesh::Real, and value.

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

◆ 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::RBEIMEvaluation, and libMesh::TransientRBEvaluation.

Definition at line 641 of file rb_evaluation.C.

644 {
645  LOG_SCOPE("legacy_read_offline_data_from_files()", "RBEvaluation");
646 
647  // The reading mode: DECODE for binary, READ for ASCII
648  XdrMODE mode = read_binary_data ? DECODE : READ;
649 
650  // The suffix to use for all the files that are written out
651  const std::string suffix = read_binary_data ? ".xdr" : ".dat";
652 
653  // The string stream we'll use to make the file names
654  std::ostringstream file_name;
655 
656  // First, find out how many basis functions we had when Greedy terminated
657  unsigned int n_bfs;
658  {
659  file_name << directory_name << "/n_bfs" << suffix;
660  assert_file_exists(file_name.str());
661 
662  Xdr n_bfs_in(file_name.str(), mode);
663  n_bfs_in >> n_bfs;
664  n_bfs_in.close();
665  }
666  resize_data_structures(n_bfs, read_error_bound_data);
667 
668  // Read in the parameter ranges
669  file_name.str("");
670  file_name << directory_name << "/parameter_ranges" << suffix;
671  std::string continuous_param_file_name = file_name.str();
672 
673  // Read in the discrete parameter values
674  file_name.str("");
675  file_name << directory_name << "/discrete_parameter_values" << suffix;
676  std::string discrete_param_file_name = file_name.str();
677  read_parameter_data_from_files(continuous_param_file_name,
678  discrete_param_file_name,
679  read_binary_data);
680 
681  // Read in output data in multiple files
682  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
683  {
684  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
685  {
686  file_name.str("");
687  file_name << directory_name << "/output_";
688  file_name << std::setw(3)
689  << std::setprecision(0)
690  << std::setfill('0')
691  << std::right
692  << n;
693  file_name << "_";
694  file_name << std::setw(3)
695  << std::setprecision(0)
696  << std::setfill('0')
697  << std::right
698  << q_l;
699  file_name << suffix;
700  assert_file_exists(file_name.str());
701 
702  Xdr output_n_in(file_name.str(), mode);
703 
704  for (unsigned int j=0; j<n_bfs; j++)
705  {
706  Number value;
707  output_n_in >> value;
708  RB_output_vectors[n][q_l](j) = value;
709  }
710  output_n_in.close();
711  }
712  }
713 
715  {
716  // Next read in the inner product matrix
717  file_name.str("");
718  file_name << directory_name << "/RB_inner_product_matrix" << suffix;
719  assert_file_exists(file_name.str());
720 
721  Xdr RB_inner_product_matrix_in(file_name.str(), mode);
722 
723  for (unsigned int i=0; i<n_bfs; i++)
724  {
725  for (unsigned int j=0; j<n_bfs; j++)
726  {
727  Number value;
728  RB_inner_product_matrix_in >> value;
730  }
731  }
732  RB_inner_product_matrix_in.close();
733  }
734 
735  // Next read in the Fq vectors
736  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
737  {
738  file_name.str("");
739  file_name << directory_name << "/RB_F_";
740  file_name << std::setw(3)
741  << std::setprecision(0)
742  << std::setfill('0')
743  << std::right
744  << q_f;
745  file_name << suffix;
746  assert_file_exists(file_name.str());
747 
748  Xdr RB_Fq_f_in(file_name.str(), mode);
749 
750  for (unsigned int i=0; i<n_bfs; i++)
751  {
752  Number value;
753  RB_Fq_f_in >> value;
754  RB_Fq_vector[q_f](i) = value;
755  }
756  RB_Fq_f_in.close();
757  }
758 
759  // Next read in the Aq matrices
760  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
761  {
762  file_name.str("");
763  file_name << directory_name << "/RB_A_";
764  file_name << std::setw(3)
765  << std::setprecision(0)
766  << std::setfill('0')
767  << std::right
768  << q_a;
769  file_name << suffix;
770  assert_file_exists(file_name.str());
771 
772  Xdr RB_Aq_a_in(file_name.str(), mode);
773 
774  for (unsigned int i=0; i<n_bfs; i++)
775  {
776  for (unsigned int j=0; j<n_bfs; j++)
777  {
778  Number value;
779  RB_Aq_a_in >> value;
780  RB_Aq_vector[q_a](i,j) = value;
781  }
782  }
783  RB_Aq_a_in.close();
784  }
785 
786 
787  if (read_error_bound_data)
788  {
789  // Next read in Fq representor norm data
790  file_name.str("");
791  file_name << directory_name << "/Fq_innerprods" << suffix;
792  assert_file_exists(file_name.str());
793 
794  Xdr RB_Fq_innerprods_in(file_name.str(), mode);
795 
796  unsigned int Q_f_hat = rb_theta_expansion->get_n_F_terms()*(rb_theta_expansion->get_n_F_terms()+1)/2;
797  for (unsigned int i=0; i<Q_f_hat; i++)
798  {
799  RB_Fq_innerprods_in >> Fq_representor_innerprods[i];
800  }
801  RB_Fq_innerprods_in.close();
802 
803  // Read in output data
804  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
805  {
806  file_name.str("");
807  file_name << directory_name << "/output_";
808  file_name << std::setw(3)
809  << std::setprecision(0)
810  << std::setfill('0')
811  << std::right
812  << n;
813  file_name << "_dual_innerprods" << suffix;
814  assert_file_exists(file_name.str());
815 
816  Xdr output_dual_innerprods_in(file_name.str(), mode);
817 
818  unsigned int Q_l_hat = rb_theta_expansion->get_n_output_terms(n)*(rb_theta_expansion->get_n_output_terms(n)+1)/2;
819  for (unsigned int q=0; q<Q_l_hat; q++)
820  {
821  output_dual_innerprods_in >> output_dual_innerprods[n][q];
822  }
823  output_dual_innerprods_in.close();
824  }
825 
826 
827  // Next read in Fq_Aq representor norm data
828  file_name.str("");
829  file_name << directory_name << "/Fq_Aq_innerprods" << suffix;
830  assert_file_exists(file_name.str());
831 
832  Xdr RB_Fq_Aq_innerprods_in(file_name.str(), mode);
833 
834  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
835  {
836  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
837  {
838  for (unsigned int i=0; i<n_bfs; i++)
839  {
840  RB_Fq_Aq_innerprods_in >> Fq_Aq_representor_innerprods[q_f][q_a][i];
841  }
842  }
843  }
844  RB_Fq_Aq_innerprods_in.close();
845 
846  // Next read in Aq_Aq representor norm data
847  file_name.str("");
848  file_name << directory_name << "/Aq_Aq_innerprods" << suffix;
849  assert_file_exists(file_name.str());
850 
851  Xdr RB_Aq_Aq_innerprods_in(file_name.str(), mode);
852 
853  unsigned int Q_a_hat = rb_theta_expansion->get_n_A_terms()*(rb_theta_expansion->get_n_A_terms()+1)/2;
854  for (unsigned int i=0; i<Q_a_hat; i++)
855  {
856  for (unsigned int j=0; j<n_bfs; j++)
857  {
858  for (unsigned int l=0; l<n_bfs; l++)
859  {
860  RB_Aq_Aq_innerprods_in >> Aq_Aq_representor_innerprods[i][j][l];
861  }
862  }
863  }
864  RB_Aq_Aq_innerprods_in.close();
865  }
866 
867  // Resize basis_functions even if we don't read them in so that
868  // get_n_bfs() returns the correct value. Initialize the pointers
869  // to nullptr.
870  basis_functions.clear();
871  set_n_basis_functions(n_bfs);
872 }

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(), and libMesh::RBEIMEvaluation::legacy_read_offline_data_from_files().

◆ 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::RBEIMEvaluation, and libMesh::TransientRBEvaluation.

Definition at line 416 of file rb_evaluation.C.

418 {
419  LOG_SCOPE("legacy_write_offline_data_to_files()", "RBEvaluation");
420 
421  // Get the number of basis functions
422  unsigned int n_bfs = get_n_basis_functions();
423 
424  // The writing mode: ENCODE for binary, WRITE for ASCII
425  XdrMODE mode = write_binary_data ? ENCODE : WRITE;
426 
427  // The suffix to use for all the files that are written out
428  const std::string suffix = write_binary_data ? ".xdr" : ".dat";
429 
430  if (this->processor_id() == 0)
431  {
432 
433  // Make a directory to store all the data files
434  Utility::mkdir(directory_name.c_str());
435  // if (mkdir(directory_name.c_str(), 0777) == -1)
436  // {
437  // libMesh::out << "In RBEvaluation::write_offline_data_to_files, directory "
438  // << directory_name << " already exists, overwriting contents." << std::endl;
439  // }
440 
441  // First, write out how many basis functions we have generated
442  std::ostringstream file_name;
443  {
444  file_name << directory_name << "/n_bfs" << suffix;
445  Xdr n_bfs_out(file_name.str(), mode);
446  n_bfs_out << n_bfs;
447  n_bfs_out.close();
448  }
449 
450  // Write out the parameter ranges
451  file_name.str("");
452  file_name << directory_name << "/parameter_ranges" << suffix;
453  std::string continuous_param_file_name = file_name.str();
454 
455  // Write out the discrete parameter values
456  file_name.str("");
457  file_name << directory_name << "/discrete_parameter_values" << suffix;
458  std::string discrete_param_file_name = file_name.str();
459 
460  write_parameter_data_to_files(continuous_param_file_name,
461  discrete_param_file_name,
462  write_binary_data);
463 
464  // Write out Fq representor norm data
465  file_name.str("");
466  file_name << directory_name << "/Fq_innerprods" << suffix;
467  Xdr RB_Fq_innerprods_out(file_name.str(), mode);
468  unsigned int Q_f_hat = rb_theta_expansion->get_n_F_terms()*(rb_theta_expansion->get_n_F_terms()+1)/2;
469  for (unsigned int i=0; i<Q_f_hat; i++)
470  {
471  RB_Fq_innerprods_out << Fq_representor_innerprods[i];
472  }
473  RB_Fq_innerprods_out.close();
474 
475  // Write out output data
476  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
477  {
478  file_name.str("");
479  file_name << directory_name << "/output_";
480  file_name << std::setw(3)
481  << std::setprecision(0)
482  << std::setfill('0')
483  << std::right
484  << n;
485 
486  file_name << "_dual_innerprods" << suffix;
487  Xdr output_dual_innerprods_out(file_name.str(), mode);
488 
489  unsigned int Q_l_hat = rb_theta_expansion->get_n_output_terms(n)*(rb_theta_expansion->get_n_output_terms(n)+1)/2;
490  for (unsigned int q=0; q<Q_l_hat; q++)
491  {
492  output_dual_innerprods_out << output_dual_innerprods[n][q];
493  }
494  output_dual_innerprods_out.close();
495  }
496 
497 
498  // Write out output data to multiple files
499  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
500  {
501  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
502  {
503  file_name.str("");
504  file_name << directory_name << "/output_";
505  file_name << std::setw(3)
506  << std::setprecision(0)
507  << std::setfill('0')
508  << std::right
509  << n;
510  file_name << "_";
511  file_name << std::setw(3)
512  << std::setprecision(0)
513  << std::setfill('0')
514  << std::right
515  << q_l;
516  file_name << suffix;
517  Xdr output_n_out(file_name.str(), mode);
518 
519  for (unsigned int j=0; j<n_bfs; j++)
520  {
521  output_n_out << RB_output_vectors[n][q_l](j);
522  }
523  output_n_out.close();
524  }
525  }
526 
528  {
529  // Next write out the inner product matrix
530  file_name.str("");
531  file_name << directory_name << "/RB_inner_product_matrix" << suffix;
532  Xdr RB_inner_product_matrix_out(file_name.str(), mode);
533  for (unsigned int i=0; i<n_bfs; i++)
534  {
535  for (unsigned int j=0; j<n_bfs; j++)
536  {
537  RB_inner_product_matrix_out << RB_inner_product_matrix(i,j);
538  }
539  }
540  RB_inner_product_matrix_out.close();
541  }
542 
543  // Next write out the Fq vectors
544  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
545  {
546  file_name.str("");
547  file_name << directory_name << "/RB_F_";
548  file_name << std::setw(3)
549  << std::setprecision(0)
550  << std::setfill('0')
551  << std::right
552  << q_f;
553  file_name << suffix;
554  Xdr RB_Fq_f_out(file_name.str(), mode);
555 
556  for (unsigned int i=0; i<n_bfs; i++)
557  {
558  RB_Fq_f_out << RB_Fq_vector[q_f](i);
559  }
560  RB_Fq_f_out.close();
561  }
562 
563  // Next write out the Aq matrices
564  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
565  {
566  file_name.str("");
567  file_name << directory_name << "/RB_A_";
568  file_name << std::setw(3)
569  << std::setprecision(0)
570  << std::setfill('0')
571  << std::right
572  << q_a;
573  file_name << suffix;
574  Xdr RB_Aq_a_out(file_name.str(), mode);
575 
576  for (unsigned int i=0; i<n_bfs; i++)
577  {
578  for (unsigned int j=0; j<n_bfs; j++)
579  {
580  RB_Aq_a_out << RB_Aq_vector[q_a](i,j);
581  }
582  }
583  RB_Aq_a_out.close();
584  }
585 
586  // Next write out Fq_Aq representor norm data
587  file_name.str("");
588  file_name << directory_name << "/Fq_Aq_innerprods" << suffix;
589  Xdr RB_Fq_Aq_innerprods_out(file_name.str(), mode);
590 
591  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
592  {
593  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
594  {
595  for (unsigned int i=0; i<n_bfs; i++)
596  {
597  RB_Fq_Aq_innerprods_out << Fq_Aq_representor_innerprods[q_f][q_a][i];
598  }
599  }
600  }
601  RB_Fq_Aq_innerprods_out.close();
602 
603  // Next write out Aq_Aq representor norm data
604  file_name.str("");
605  file_name << directory_name << "/Aq_Aq_innerprods" << suffix;
606  Xdr RB_Aq_Aq_innerprods_out(file_name.str(), mode);
607 
608  unsigned int Q_a_hat = rb_theta_expansion->get_n_A_terms()*(rb_theta_expansion->get_n_A_terms()+1)/2;
609  for (unsigned int i=0; i<Q_a_hat; i++)
610  {
611  for (unsigned int j=0; j<n_bfs; j++)
612  {
613  for (unsigned int l=0; l<n_bfs; l++)
614  {
615  RB_Aq_Aq_innerprods_out << Aq_Aq_representor_innerprods[i][j][l];
616  }
617  }
618  }
619  RB_Aq_Aq_innerprods_out.close();
620 
621  // Also, write out the greedily selected parameters
622  {
623  file_name.str("");
624  file_name << directory_name << "/greedy_params" << suffix;
625  Xdr greedy_params_out(file_name.str(), mode);
626 
627  for (const auto & param : greedy_param_list)
628  for (const auto & pr : param)
629  {
630  // Need to make a copy of the value so that it's not const
631  // Xdr is not templated on const's
632  Real param_value = pr.second;
633  greedy_params_out << param_value;
634  }
635  greedy_params_out.close();
636  }
637 
638  }
639 }

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(), libMesh::RBEIMEvaluation::legacy_write_offline_data_to_files(), and main().

◆ n_objects()

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

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

Definition at line 83 of file reference_counter.h.

84  { return _n_objects; }

References libMesh::ReferenceCounter::_n_objects.

◆ n_processors()

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

Definition at line 100 of file parallel_object.h.

101  { return cast_int<processor_id_type>(_communicator.size()); }

References libMesh::ParallelObject::_communicator.

Referenced by 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::LaplaceMeshSmoother::allgather_graph(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::EnsightIO::EnsightIO(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::Nemesis_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::partition(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::prepare_send_list(), 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(), OverlappingFunctorTest::run_partitioner_test(), libMesh::DofMap::scatter_constraints(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), CheckpointIOTest::testSplitter(), WriteVecAndScalar::testWrite(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::VTKIO::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().

◆ print_discrete_parameter_values()

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

Print out all the discrete parameter values.

Definition at line 389 of file rb_parametrized.C.

390 {
391  for (const auto & pr : get_discrete_parameter_values())
392  {
393  libMesh::out << "Discrete parameter " << pr.first << ", values: ";
394 
395  const std::vector<Real> & values = pr.second;
396  for (const auto & value : values)
397  libMesh::out << value << " ";
398  libMesh::out << std::endl;
399  }
400 }

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

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

◆ print_info()

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

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

Definition at line 87 of file reference_counter.C.

88 {
90  out_stream << ReferenceCounter::get_info();
91 }

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

◆ print_parameters()

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

Print the current parameters.

Definition at line 206 of file rb_parametrized.C.

207 {
209  libmesh_error_msg("Error: parameters not initialized in RBParametrized::print_current_parameters");
210 
211  get_parameters().print();
212 }

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

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

◆ processor_id()

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

Definition at line 106 of file parallel_object.h.

107  { return cast_int<processor_id_type>(_communicator.rank()); }

References libMesh::ParallelObject::_communicator.

Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::EquationSystems::_read_impl(), 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::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), 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_scalar_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::DistributedMesh::delete_node(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::RBEIMConstruction::evaluate_mesh_function(), libMesh::MeshFunction::find_element(), libMesh::MeshFunction::find_elements(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), 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::DofMap::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::DofMap::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::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), 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::DofMap::last_dof(), libMesh::TransientRBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEIMEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBSCMEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEIMEvaluation::legacy_write_out_interpolation_points_elem(), 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::MeshBase::n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::DofMap::n_local_dofs(), libMesh::System::n_local_dofs(), libMesh::MeshBase::n_local_elem(), libMesh::MeshBase::n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::SparsityPattern::Build::operator()(), libMesh::DistributedMesh::own_node(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::print_dof_constraints(), 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::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::RBEvaluation::read_in_vectors_from_multiple_files(), libMesh::System::read_legacy_data(), 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::DistributedMesh::renumber_dof_objects(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::LaplaceMeshSmoother::smooth(), DefaultCouplingTest::testCoupling(), PointNeighborCouplingTest::testCoupling(), MeshInputTest::testDynaReadElem(), MeshInputTest::testDynaReadPatch(), MeshInputTest::testExodusCopyElementSolution(), MeshInputTest::testExodusWriteElementDataFromDiscontinuousNodalData(), SystemsTest::testProjectMatrix1D(), SystemsTest::testProjectMatrix2D(), SystemsTest::testProjectMatrix3D(), BoundaryInfoTest::testShellFaceConstraints(), CheckpointIOTest::testSplitter(), WriteVecAndScalar::testWrite(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::Parallel::Packing< Node * >::unpack(), libMesh::Parallel::Packing< Elem * >::unpack(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::DTKAdapter::update_variable_values(), 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::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::VTKIO::write_nodal_data(), libMesh::UCDIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::RBEvaluation::write_out_vectors(), 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().

◆ rb_solve()

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::RBEIMEvaluation, and libMesh::TransientRBEvaluation.

Definition at line 209 of file rb_evaluation.C.

210 {
211  LOG_SCOPE("rb_solve()", "RBEvaluation");
212 
213  if (N > get_n_basis_functions())
214  libmesh_error_msg("ERROR: N cannot be larger than the number of basis functions in rb_solve");
215 
216  const RBParameters & mu = get_parameters();
217 
218  // Resize (and clear) the solution vector
219  RB_solution.resize(N);
220 
221  // Assemble the RB system
222  DenseMatrix<Number> RB_system_matrix(N,N);
223  RB_system_matrix.zero();
224 
225  DenseMatrix<Number> RB_Aq_a;
226  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
227  {
228  RB_Aq_vector[q_a].get_principal_submatrix(N, RB_Aq_a);
229 
230  RB_system_matrix.add(rb_theta_expansion->eval_A_theta(q_a, mu), RB_Aq_a);
231  }
232 
233  // Assemble the RB rhs
234  DenseVector<Number> RB_rhs(N);
235  RB_rhs.zero();
236 
237  DenseVector<Number> RB_Fq_f;
238  for (unsigned int q_f=0; q_f<rb_theta_expansion->get_n_F_terms(); q_f++)
239  {
240  RB_Fq_vector[q_f].get_principal_subvector(N, RB_Fq_f);
241 
242  RB_rhs.add(rb_theta_expansion->eval_F_theta(q_f, mu), RB_Fq_f);
243  }
244 
245  // Solve the linear system
246  if (N > 0)
247  {
248  RB_system_matrix.lu_solve(RB_rhs, RB_solution);
249  }
250 
251  // Evaluate RB outputs
252  DenseVector<Number> RB_output_vector_N;
253  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
254  {
255  RB_outputs[n] = 0.;
256  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
257  {
258  RB_output_vectors[n][q_l].get_principal_subvector(N, RB_output_vector_N);
259  RB_outputs[n] += rb_theta_expansion->eval_output_theta(n,q_l,mu)*RB_output_vector_N.dot(RB_solution);
260  }
261  }
262 
263  if (evaluate_RB_error_bound) // Calculate the error bounds
264  {
265  // Evaluate the dual norm of the residual for RB_solution_vector
266  Real epsilon_N = compute_residual_dual_norm(N);
267 
268  // Get lower bound for coercivity constant
269  const Real alpha_LB = get_stability_lower_bound();
270  // alpha_LB needs to be positive to get a valid error bound
271  libmesh_assert_greater ( alpha_LB, 0. );
272 
273  // Evaluate the (absolute) error bound
274  Real abs_error_bound = epsilon_N / residual_scaling_denom(alpha_LB);
275 
276  // Now compute the output error bounds
277  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
278  {
279  RB_output_error_bounds[n] = abs_error_bound * eval_output_dual_norm(n, mu);
280  }
281 
282  return abs_error_bound;
283  }
284  else // Don't calculate the error bounds
285  {
286  // Just return -1. if we did not compute the error bound
287  return -1.;
288  }
289 }

References libMesh::DenseVector< T >::add(), libMesh::DenseMatrix< T >::add(), 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().

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

◆ read_discrete_parameter_values_from_file()

void libMesh::RBParametrized::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 
)
privateinherited

Read in the discrete parameter values from file, if we have any.

Definition at line 340 of file rb_parametrized.C.

343 {
344  // read in the discrete parameters, if we have any
345  std::ifstream check_if_file_exists(file_name.c_str());
346  if (check_if_file_exists.good())
347  {
348  // The reading mode: DECODE for binary, READ for ASCII
349  XdrMODE mode = read_binary_data ? DECODE : READ;
350 
351  // Read in the parameter ranges
352  Xdr discrete_parameter_values_in(file_name, mode);
353  unsigned int n_discrete_params;
354  discrete_parameter_values_in >> n_discrete_params;
355 
356  for (unsigned int i=0; i<n_discrete_params; i++)
357  {
358  std::string param_name;
359  discrete_parameter_values_in >> param_name;
360 
361  unsigned int n_discrete_values;
362  discrete_parameter_values_in >> n_discrete_values;
363 
364  std::vector<Real> discrete_values(n_discrete_values);
365  for (auto & val : discrete_values)
366  discrete_parameter_values_in >> val;
367 
368  discrete_parameter_values[param_name] = discrete_values;
369  }
370  }
371 }

References libMesh::DECODE, and libMesh::READ.

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

◆ 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 958 of file rb_evaluation.C.

961 {
962  LOG_SCOPE("read_in_basis_functions()", "RBEvaluation");
963 
964  read_in_vectors(sys,
966  directory_name,
967  "bf",
968  read_binary_basis_functions);
969 }

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

◆ 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 
)
inherited

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 971 of file rb_evaluation.C.

976 {
977  std::vector<std::vector<std::unique_ptr<NumericVector<Number>>> *> vectors_vec;
978  vectors_vec.push_back(&vectors);
979 
980  std::vector<std::string> directory_name_vec;
981  directory_name_vec.push_back(directory_name);
982 
983  std::vector<std::string> data_name_vec;
984  data_name_vec.push_back(data_name);
985 
987  vectors_vec,
988  directory_name_vec,
989  data_name_vec,
990  read_binary_vectors);
991 }

References libMesh::RBEvaluation::read_in_vectors_from_multiple_files().

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

◆ 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 
)
inherited

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 993 of file rb_evaluation.C.

998 {
999  LOG_SCOPE("read_in_vectors_from_multiple_files()", "RBEvaluation");
1000 
1001  std::size_t n_files = multiple_vectors.size();
1002  std::size_t n_directories = multiple_directory_names.size();
1003  libmesh_assert((n_files == n_directories) && (n_files == multiple_data_names.size()));
1004 
1005  if (n_files == 0)
1006  return;
1007 
1008  // Make sure processors are synced up before we begin
1009  this->comm().barrier();
1010 
1011  std::ostringstream file_name;
1012  const std::string basis_function_suffix = (read_binary_vectors ? ".xdr" : ".dat");
1013 
1014  // Following EquationSystemsIO::read, we use a temporary numbering (node major)
1015  // before writing out the data. For the sake of efficiency, we do this once for
1016  // all the vectors that we read in.
1018 
1019  for (std::size_t data_index=0; data_index<n_directories; data_index++)
1020  {
1021  std::vector<std::unique_ptr<NumericVector<Number>>> & vectors = *multiple_vectors[data_index];
1022 
1023  // Allocate storage for each vector
1024  for (auto & vec : vectors)
1025  {
1026  // vectors should all be nullptr, otherwise we get a memory leak when
1027  // we create the new vectors in RBEvaluation::read_in_vectors.
1028  if (vec)
1029  libmesh_error_msg("Non-nullptr vector passed to read_in_vectors_from_multiple_files");
1030 
1031  vec = NumericVector<Number>::build(sys.comm());
1032 
1033  vec->init (sys.n_dofs(),
1034  sys.n_local_dofs(),
1035  false,
1036  PARALLEL);
1037  }
1038 
1039  file_name.str("");
1040  file_name << multiple_directory_names[data_index]
1041  << "/" << multiple_data_names[data_index]
1042  << "_data" << basis_function_suffix;
1043 
1044  // On processor zero check to be sure the file exists
1045  if (this->processor_id() == 0)
1046  {
1047  struct stat stat_info;
1048  int stat_result = stat(file_name.str().c_str(), &stat_info);
1049 
1050  if (stat_result != 0)
1051  libmesh_error_msg("File does not exist: " << file_name.str());
1052  }
1053 
1054  assert_file_exists(file_name.str());
1055  Xdr vector_data(file_name.str(),
1056  read_binary_vectors ? DECODE : READ);
1057 
1058  // Read the header data. This block of code is based on EquationSystems::_read_impl.
1059  {
1060  std::string version;
1061  vector_data.data(version);
1062 
1063  const std::string libMesh_label = "libMesh-";
1064  std::string::size_type lm_pos = version.find(libMesh_label);
1065  if (lm_pos==std::string::npos)
1066  libmesh_error_msg("version info missing in Xdr header");
1067 
1068  std::istringstream iss(version.substr(lm_pos + libMesh_label.size()));
1069  int ver_major = 0, ver_minor = 0, ver_patch = 0;
1070  char dot;
1071  iss >> ver_major >> dot >> ver_minor >> dot >> ver_patch;
1072  vector_data.set_version(LIBMESH_VERSION_ID(ver_major, ver_minor, ver_patch));
1073 
1074  // Actually read the header data. When we do this, set read_header=false
1075  // so taht we do not reinit sys, since we assume that it has already been
1076  // set up properly (e.g. the appropriate variables have already been added).
1077  sys.read_header(vector_data, version, /*read_header=*/false, /*read_additional_data=*/false);
1078  }
1079 
1080  // Comply with the System::read_serialized_vectors() interface which uses dumb pointers.
1081  std::vector<NumericVector<Number> *> vec_in;
1082  for (auto & vec : vectors)
1083  vec_in.push_back(vec.get());
1084 
1085  sys.read_serialized_vectors (vector_data, vec_in);
1086  }
1087 
1088  // Undo the temporary renumbering
1089  sys.get_mesh().fix_broken_node_and_element_numbering();
1090 }

References libMesh::RBEvaluation::assert_file_exists(), 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, libMesh::ParallelObject::processor_id(), libMesh::READ, libMesh::System::read_header(), and libMesh::System::read_serialized_vectors().

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

◆ 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 284 of file rb_parametrized.C.

287 {
288  RBParameters param_min;
289  RBParameters param_max;
290  read_parameter_ranges_from_file(continuous_param_file_name,
291  read_binary_data,
292  param_min,
293  param_max);
294 
295  std::map<std::string, std::vector<Real>> discrete_parameter_values_in;
296  read_discrete_parameter_values_from_file(discrete_param_file_name,
297  read_binary_data,
298  discrete_parameter_values_in);
299 
300  initialize_parameters(param_min, param_max, discrete_parameter_values_in);
301 }

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

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

◆ read_parameter_ranges_from_file()

void libMesh::RBParametrized::read_parameter_ranges_from_file ( const std::string &  file_name,
const bool  read_binary,
RBParameters param_min,
RBParameters param_max 
)
privateinherited

Read in the parameter ranges from file.

Initialize parameters to the "minimum" parameter values.

Definition at line 303 of file rb_parametrized.C.

307 {
308  // The reading mode: DECODE for binary, READ for ASCII
309  XdrMODE mode = read_binary_data ? DECODE : READ;
310 
311  // Read in the parameter ranges
312  Xdr parameter_ranges_in(file_name, mode);
313  unsigned int n_continuous_params;
314  parameter_ranges_in >> n_continuous_params;
315 
316  for (unsigned int i=0; i<n_continuous_params; i++)
317  {
318  std::string param_name;
319  Real param_value;
320 
321  parameter_ranges_in >> param_name;
322  parameter_ranges_in >> param_value;
323 
324  param_min.set_value(param_name, param_value);
325  }
326  for (unsigned int i=0; i<n_continuous_params; i++)
327  {
328  std::string param_name;
329  Real param_value;
330 
331  parameter_ranges_in >> param_name;
332  parameter_ranges_in >> param_value;
333 
334  param_max.set_value(param_name, param_value);
335  }
336 
337  parameter_ranges_in.close();
338 }

References libMesh::Xdr::close(), libMesh::DECODE, libMesh::READ, libMesh::Real, and libMesh::RBParameters::set_value().

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

◆ 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 385 of file rb_evaluation.C.

386 {
387  // Here we implement the residual scaling for a coercive
388  // problem.
389  return alpha_LB;
390 }

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

◆ 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, and libMesh::RBEIMEvaluation.

Definition at line 108 of file rb_evaluation.C.

110 {
111  LOG_SCOPE("resize_data_structures()", "RBEvaluation");
112 
113  if (Nmax < this->get_n_basis_functions())
114  libmesh_error_msg("Error: Cannot set Nmax to be less than the current number of basis functions.");
115 
116  // Resize/clear inner product matrix
118  RB_inner_product_matrix.resize(Nmax,Nmax);
119 
120  // Allocate dense matrices for RB solves
122 
123  for (unsigned int q=0; q<rb_theta_expansion->get_n_A_terms(); q++)
124  {
125  // Initialize the memory for the RB matrices
126  RB_Aq_vector[q].resize(Nmax,Nmax);
127  }
128 
130 
131  for (unsigned int q=0; q<rb_theta_expansion->get_n_F_terms(); q++)
132  {
133  // Initialize the memory for the RB vectors
134  RB_Fq_vector[q].resize(Nmax);
135  }
136 
137 
138  // Initialize the RB output vectors
140  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
141  {
143  for (unsigned int q_l=0; q_l<rb_theta_expansion->get_n_output_terms(n); q_l++)
144  {
145  RB_output_vectors[n][q_l].resize(Nmax);
146  }
147  }
148 
149  // Initialize vectors storing output data
151 
152 
153  if (resize_error_bound_data)
154  {
155  // Initialize vectors for the norms of the Fq representors
156  unsigned int Q_f_hat = rb_theta_expansion->get_n_F_terms()*(rb_theta_expansion->get_n_F_terms()+1)/2;
157  Fq_representor_innerprods.resize(Q_f_hat);
158 
159  // Initialize vectors for the norms of the representors
161  for (unsigned int i=0; i<rb_theta_expansion->get_n_F_terms(); i++)
162  {
164  for (unsigned int j=0; j<rb_theta_expansion->get_n_A_terms(); j++)
165  {
166  Fq_Aq_representor_innerprods[i][j].resize(Nmax, 0.);
167  }
168  }
169 
170  unsigned int Q_a_hat = rb_theta_expansion->get_n_A_terms()*(rb_theta_expansion->get_n_A_terms()+1)/2;
171  Aq_Aq_representor_innerprods.resize(Q_a_hat);
172  for (unsigned int i=0; i<Q_a_hat; i++)
173  {
174  Aq_Aq_representor_innerprods[i].resize(Nmax);
175  for (unsigned int j=0; j<Nmax; j++)
176  {
177  Aq_Aq_representor_innerprods[i][j].resize(Nmax, 0.);
178  }
179  }
180 
182 
183  // Resize the output dual norm vectors
185  for (unsigned int n=0; n<rb_theta_expansion->get_n_outputs(); n++)
186  {
187  unsigned int Q_l_hat = rb_theta_expansion->get_n_output_terms(n)*(rb_theta_expansion->get_n_output_terms(n)+1)/2;
188  output_dual_innerprods[n].resize(Q_l_hat);
189  }
190 
191  // Clear and resize the vector of Aq_representors
193 
195  for (unsigned int q_a=0; q_a<rb_theta_expansion->get_n_A_terms(); q_a++)
196  {
197  Aq_representor[q_a].resize(Nmax);
198  }
199  }
200 }

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::RBEIMEvaluation::resize_data_structures(), libMesh::TransientRBEvaluation::resize_data_structures(), and libMesh::RBConstruction::train_reduced_basis().

◆ 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 78 of file rb_evaluation.C.

79 {
80  basis_functions.resize(n_bfs);
81 }

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().

◆ set_parameters()

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

Set the current parameters to params.

Definition at line 155 of file rb_parametrized.C.

156 {
158  libmesh_error_msg("Error: parameters not initialized in RBParametrized::set_current_parameters");
159 
160  valid_params(params); // Terminates if params has the wrong number of parameters
161 
162  // Make a copy of params (default assignment operator just does memberwise copy, which is sufficient here)
163  this->parameters = params;
164 }

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

Referenced by libMesh::RBEIMConstruction::compute_best_fit_error(), libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), libMesh::RBEIMConstruction::enrich_RB_space(), libMesh::RBEIMTheta::evaluate(), 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 libMesh::RBEIMConstruction::truth_solve().

◆ set_rb_theta_expansion()

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

Set the RBThetaExpansion object.

Definition at line 83 of file rb_evaluation.C.

84 {
85  rb_theta_expansion = &rb_theta_expansion_in;
86 }

References libMesh::RBEvaluation::rb_theta_expansion.

Referenced by libMesh::RBEIMEvaluation::RBEIMEvaluation(), and SimpleRBEvaluation().

◆ valid_params()

bool libMesh::RBParametrized::valid_params ( const RBParameters params)
privateinherited

Helper function to check that params is valid.

Definition at line 402 of file rb_parametrized.C.

403 {
404  if (params.n_parameters() != get_n_params())
405  libmesh_error_msg("Error: Number of parameters don't match");
406 
407  else
408  {
409  bool valid = true;
410  for (const auto & pr : params)
411  {
412  const std::string & param_name = pr.first;
413  valid = valid && ( (get_parameter_min(param_name) <= params.get_value(param_name)) &&
414  (params.get_value(param_name) <= get_parameter_max(param_name)) );
415 
416  if (is_discrete_parameter(param_name))
417  {
418  // make sure params.get_value(param_name) is sufficiently close
419  // to one of the discrete parameter values
420  valid = valid && is_value_in_list(params.get_value(param_name),
421  get_discrete_parameter_values().find(param_name)->second,
422  TOLERANCE);
423  }
424  }
425 
426  if (!valid && verbose_mode)
427  libMesh::out << "Warning: parameter is outside parameter range" << std::endl;
428 
429  return valid;
430  }
431 }

References libMesh::RBParametrized::get_discrete_parameter_values(), libMesh::RBParametrized::get_n_params(), libMesh::RBParametrized::get_parameter_max(), libMesh::RBParametrized::get_parameter_min(), libMesh::RBParametrized::is_discrete_parameter(), libMesh::RBParametrized::is_value_in_list(), libMesh::RBParameters::n_parameters(), libMesh::out, libMesh::TOLERANCE, libMesh::Quality::valid(), and libMesh::RBParametrized::verbose_mode.

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

◆ write_discrete_parameter_values_to_file()

void libMesh::RBParametrized::write_discrete_parameter_values_to_file ( const std::string &  file_name,
const bool  write_binary_data 
)
privateinherited

Write out the discrete parameter values to file.

Definition at line 255 of file rb_parametrized.C.

257 {
258  // write out the discrete parameters, if we have any
259  if (get_n_discrete_params() > 0)
260  {
261  // The writing mode: ENCODE for binary, WRITE for ASCII
262  XdrMODE mode = write_binary_data ? ENCODE : WRITE;
263 
264  Xdr discrete_parameters_out(file_name, mode);
265  unsigned int n_discrete_params = get_n_discrete_params();
266  discrete_parameters_out << n_discrete_params;
267 
268  for (const auto & pr : get_discrete_parameter_values())
269  {
270  std::string param_name = pr.first;
271  unsigned int n_discrete_values = cast_int<unsigned int>
272  (pr.second.size());
273  discrete_parameters_out << param_name << n_discrete_values;
274 
275  for (unsigned int i=0; i<n_discrete_values; i++)
276  {
277  Real discrete_value = pr.second[i];
278  discrete_parameters_out << discrete_value;
279  }
280  }
281  }
282 }

References libMesh::ENCODE, libMesh::RBParametrized::get_discrete_parameter_values(), libMesh::RBParametrized::get_n_discrete_params(), libMesh::Real, and libMesh::WRITE.

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

◆ 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 880 of file rb_evaluation.C.

883 {
884  LOG_SCOPE("write_out_basis_functions()", "RBEvaluation");
885 
886  std::vector<NumericVector<Number>*> basis_functions_ptrs;
887  for(std::size_t i=0; i<basis_functions.size(); i++)
888  {
889  basis_functions_ptrs.push_back(basis_functions[i].get());
890  }
891 
892  write_out_vectors(sys,
893  basis_functions_ptrs,
894  directory_name,
895  "bf",
896  write_binary_basis_functions);
897 }

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

Referenced by main().

◆ 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 
)
virtualinherited

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

Definition at line 899 of file rb_evaluation.C.

904 {
905  LOG_SCOPE("write_out_vectors()", "RBEvaluation");
906 
907  if (this->processor_id() == 0)
908  {
909  // Make a directory to store all the data files
910  Utility::mkdir(directory_name.c_str());
911  }
912 
913  // Make sure processors are synced up before we begin
914  this->comm().barrier();
915 
916  std::ostringstream file_name;
917  const std::string basis_function_suffix = (write_binary_vectors ? ".xdr" : ".dat");
918 
919  file_name << directory_name << "/" << data_name << "_data" << basis_function_suffix;
920  Xdr bf_data(file_name.str(),
921  write_binary_vectors ? ENCODE : WRITE);
922 
923  std::string version("libMesh-" + libMesh::get_io_compatibility_version());
924 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
925  version += " with infinite elements";
926 #endif
927  bf_data.data(version ,"# File Format Identifier");
928 
929  sys.write_header(bf_data, /*(unused arg)*/ version, /*write_additional_data=*/false);
930 
931  // Following EquationSystemsIO::write, we use a temporary numbering (node major)
932  // before writing out the data
934 
935  // Write all vectors at once.
936  {
937  // Note the API wants pointers to constant vectors, hence this...
938  std::vector<const NumericVector<Number> *> bf_out;
939  for (const auto & vec : vectors)
940  bf_out.push_back(vec);
941 
942  // for (auto & val : vectors)
943  // bf_out.push_back(val);
944  sys.write_serialized_vectors (bf_data, bf_out);
945  }
946 
947 
948  // set the current version
949  bf_data.set_version(LIBMESH_VERSION_ID(LIBMESH_MAJOR_VERSION,
950  LIBMESH_MINOR_VERSION,
951  LIBMESH_MICRO_VERSION));
952 
953 
954  // Undo the temporary renumbering
955  sys.get_mesh().fix_broken_node_and_element_numbering();
956 }

References 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(), libMesh::ParallelObject::processor_id(), libMesh::WRITE, libMesh::System::write_header(), and libMesh::System::write_serialized_vectors().

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

◆ 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 214 of file rb_parametrized.C.

217 {
218  write_parameter_ranges_to_file(continuous_param_file_name, write_binary_data);
219  write_discrete_parameter_values_to_file(discrete_param_file_name, write_binary_data);
220 }

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

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

◆ write_parameter_ranges_to_file()

void libMesh::RBParametrized::write_parameter_ranges_to_file ( const std::string &  file_name,
const bool  write_binary 
)
privateinherited

Write out the parameter ranges to file.

Definition at line 222 of file rb_parametrized.C.

224 {
225  // The writing mode: ENCODE for binary, WRITE for ASCII
226  XdrMODE mode = write_binary_data ? ENCODE : WRITE;
227 
228  // Write out the parameter ranges
229  Xdr parameter_ranges_out(file_name, mode);
230  unsigned int n_continuous_params = get_n_continuous_params();
231  parameter_ranges_out << n_continuous_params;
232 
233  for (const auto & pr : get_parameters_min())
234  {
235  std::string param_name = pr.first;
236  if (!is_discrete_parameter(param_name))
237  {
238  Real param_value = pr.second;
239  parameter_ranges_out << param_name << param_value;
240  }
241  }
242 
243  for (const auto & pr : get_parameters_max())
244  {
245  std::string param_name = pr.first;
246  if (!is_discrete_parameter(param_name))
247  {
248  Real param_value = pr.second;
249  parameter_ranges_out << param_name << param_value;
250  }
251  }
252  parameter_ranges_out.close();
253 }

References libMesh::Xdr::close(), libMesh::ENCODE, libMesh::RBParametrized::get_n_continuous_params(), libMesh::RBParametrized::get_parameters_max(), libMesh::RBParametrized::get_parameters_min(), libMesh::RBParametrized::is_discrete_parameter(), libMesh::Real, and libMesh::WRITE.

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

Member Data Documentation

◆ _communicator

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

◆ _counts

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

◆ _discrete_parameter_values

std::map<std::string, std::vector<Real> > libMesh::RBParametrized::_discrete_parameter_values
privateinherited

Map that defines the allowable values of any discrete parameters.

Definition at line 235 of file rb_parametrized.h.

Referenced by libMesh::RBParametrized::get_discrete_parameter_values(), libMesh::RBParametrized::initialize_parameters(), and libMesh::RBParametrized::is_discrete_parameter().

◆ _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 141 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 135 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 130 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 72 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 316 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 52 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 322 of file rb_evaluation.h.

Referenced by libMesh::RBEIMConstruction::compute_best_fit_error(), libMesh::TransientRBEvaluation::rb_solve(), libMesh::RBEvaluation::rb_solve(), and libMesh::RBEIMEvaluation::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

◆ parameters

RBParameters libMesh::RBParametrized::parameters
privateinherited

◆ parameters_initialized

bool libMesh::RBParametrized::parameters_initialized
privateinherited

◆ parameters_max

RBParameters libMesh::RBParametrized::parameters_max
privateinherited

◆ parameters_min

RBParameters libMesh::RBParametrized::parameters_min
privateinherited

◆ 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 281 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

◆ rb_theta_expansion

RBThetaExpansion* libMesh::RBEvaluation::rb_theta_expansion
privateinherited

◆ verbose_mode

bool libMesh::RBParametrized::verbose_mode
inherited

Public boolean to toggle verbose mode.

Definition at line 170 of file rb_parametrized.h.

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


The documentation for this class was generated from the following file:
libMesh::RBEvaluation::get_n_basis_functions
virtual unsigned int get_n_basis_functions() const
Get the current number of basis functions.
Definition: rb_evaluation.h:145
libMesh::RBParametrized::get_parameters_min
const RBParameters & get_parameters_min() const
Get an RBParameters object that specifies the minimum allowable value for each parameter.
Definition: rb_parametrized.C:174
libMesh::Number
Real Number
Definition: libmesh_common.h:195
libMesh::RBParametrized::_discrete_parameter_values
std::map< std::string, std::vector< Real > > _discrete_parameter_values
Map that defines the allowable values of any discrete parameters.
Definition: rb_parametrized.h:235
libMesh::RBEvaluation::RB_Aq_vector
std::vector< DenseMatrix< Number > > RB_Aq_vector
Dense matrices for the RB computations.
Definition: rb_evaluation.h:260
libMesh::RBThetaExpansion::get_n_output_terms
unsigned int get_n_output_terms(unsigned int output_index) const
Get the number of affine terms associated with the specified output.
Definition: rb_theta_expansion.C:53
libMesh::RBThetaExpansion::get_n_F_terms
unsigned int get_n_F_terms() const
Get Q_f, the number of terms in the affine expansion for the right-hand side.
Definition: rb_theta_expansion.C:41
libMesh::RBEvaluation::set_n_basis_functions
virtual void set_n_basis_functions(unsigned int n_bfs)
Set the number of basis functions.
Definition: rb_evaluation.C:78
libMesh::RBParameters::print
void print() const
Print the parameters.
Definition: rb_parameters.C:134
libMesh::PARALLEL
Definition: enum_parallel_type.h:36
libMesh::RBParametrized::write_parameter_data_to_files
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.
Definition: rb_parametrized.C:214
libMesh::RBParametrized::get_closest_value
static Real get_closest_value(Real value, const std::vector< Real > &list_of_values)
Definition: rb_parametrized.C:433
libMesh::RBEvaluation::is_rb_theta_expansion_initialized
bool is_rb_theta_expansion_initialized() const
Definition: rb_evaluation.C:96
libMesh::RBParametrized::read_discrete_parameter_values_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.
Definition: rb_parametrized.C:340
libMesh::libmesh_real
T libmesh_real(T a)
Definition: libmesh_common.h:166
libMesh::RBEvaluation::rb_solve
virtual Real rb_solve(unsigned int N)
Perform online solve with the N RB basis functions, for the set of parameters in current_params,...
Definition: rb_evaluation.C:209
libMesh::RBParametrized::get_n_params
unsigned int get_n_params() const
Get the number of parameters.
Definition: rb_parametrized.C:115
libMesh::RBParametrized::verbose_mode
bool verbose_mode
Public boolean to toggle verbose mode.
Definition: rb_parametrized.h:170
libMesh::RBEvaluation::output_dual_innerprods
std::vector< std::vector< Number > > output_dual_innerprods
The vector storing the dual norm inner product terms for each output.
Definition: rb_evaluation.h:308
libMesh::ReferenceCounter::_counts
static Counts _counts
Actually holds the data.
Definition: reference_counter.h:122
std::sqrt
MetaPhysicL::DualNumber< T, D > sqrt(const MetaPhysicL::DualNumber< T, D > &in)
SimpleRBEvaluation::eim_test_rb_theta_expansion
EimTestRBThetaExpansion eim_test_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e.
Definition: rb_classes.h:52
libMesh::TOLERANCE
static const Real TOLERANCE
Definition: libmesh_common.h:128
libMesh::ParallelObject::comm
const Parallel::Communicator & comm() const
Definition: parallel_object.h:94
libMesh::libmesh_conj
T libmesh_conj(T a)
Definition: libmesh_common.h:167
libMesh::ReferenceCounter::_n_objects
static Threads::atomic< unsigned int > _n_objects
The number of objects.
Definition: reference_counter.h:130
libMesh::WRITE
Definition: enum_xdr_mode.h:40
libMesh::RBThetaExpansion::eval_output_theta
virtual Number eval_output_theta(unsigned int output_index, unsigned int q_l, const RBParameters &mu)
Evaluate theta_q_l at the current parameter.
Definition: rb_theta_expansion.C:141
libMesh::RBEvaluation::set_rb_theta_expansion
void set_rb_theta_expansion(RBThetaExpansion &rb_theta_expansion_in)
Set the RBThetaExpansion object.
Definition: rb_evaluation.C:83
libMesh::RBParametrized::set_parameters
void set_parameters(const RBParameters &params)
Set the current parameters to params.
Definition: rb_parametrized.C:155
libMesh::RBParametrized::get_n_discrete_params
unsigned int get_n_discrete_params() const
Get the number of discrete parameters.
Definition: rb_parametrized.C:135
libMesh::ReferenceCounter::get_info
static std::string get_info()
Gets a string containing the reference information.
Definition: reference_counter.C:47
libMesh::RBParametrized::parameters_max
RBParameters parameters_max
Definition: rb_parametrized.h:230
libMesh::RBParameters::n_parameters
unsigned int n_parameters() const
Get the number of parameters that have been added.
Definition: rb_parameters.C:63
libMesh::RBEvaluation::assert_file_exists
void assert_file_exists(const std::string &file_name)
Helper function that checks if file_name exists.
Definition: rb_evaluation.C:874
libMesh::RBParametrized::get_n_continuous_params
unsigned int get_n_continuous_params() const
Get the number of continuous parameters.
Definition: rb_parametrized.C:125
libMesh::RBParametrized::get_parameters_max
const RBParameters & get_parameters_max() const
Get an RBParameters object that specifies the maximum allowable value for each parameter.
Definition: rb_parametrized.C:182
libMesh::NumericVector::build
static std::unique_ptr< NumericVector< T > > build(const Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package())
Builds a NumericVector on the processors in communicator comm using the linear solver package specifi...
Definition: numeric_vector.C:49
libMesh::RBParametrized::get_parameters
const RBParameters & get_parameters() const
Get the current parameters.
Definition: rb_parametrized.C:166
libMesh::DenseMatrix::resize
void resize(const unsigned int new_m, const unsigned int new_n)
Resize the matrix.
Definition: dense_matrix.h:822
libMesh::RBEvaluation::RBEvaluation
RBEvaluation(const Parallel::Communicator &comm)
Constructor.
Definition: rb_evaluation.C:47
libMesh::RBEvaluation::RB_outputs
std::vector< Number > RB_outputs
The vectors storing the RB output values and corresponding error bounds.
Definition: rb_evaluation.h:281
SimpleRBEvaluation::rb_scm_eval
RBSCMEvaluation * rb_scm_eval
Pointer to the SCM object that will provide our coercivity constant lower bound.
Definition: rb_classes.h:79
libMesh::RBEvaluation::residual_scaling_denom
virtual Real residual_scaling_denom(Real alpha_LB)
Specifies the residual scaling on the denominator to be used in the a posteriori error bound.
Definition: rb_evaluation.C:385
libMesh::libmesh_assert
libmesh_assert(ctx)
libMesh::RBParametrized::get_parameter_max
Real get_parameter_max(const std::string &param_name) const
Get maximum allowable value of parameter param_name.
Definition: rb_parametrized.C:198
libMesh::RBEvaluation::evaluate_RB_error_bound
bool evaluate_RB_error_bound
Boolean to indicate whether we evaluate a posteriori error bounds when rb_solve is called.
Definition: rb_evaluation.h:322
std::abs
MetaPhysicL::DualNumber< T, D > abs(const MetaPhysicL::DualNumber< T, D > &in)
libMesh::XdrMODE
XdrMODE
Defines an enum for read/write mode in Xdr format.
Definition: enum_xdr_mode.h:35
libMesh::DECODE
Definition: enum_xdr_mode.h:39
libMesh::RBEvaluation::RB_solution
DenseVector< Number > RB_solution
The RB solution vector.
Definition: rb_evaluation.h:270
libMesh::RBEvaluation::Fq_representor_innerprods
std::vector< Number > Fq_representor_innerprods
Vectors storing the residual representor inner products to be used in computing the residuals online.
Definition: rb_evaluation.h:290
libMesh::RBEvaluation::read_in_vectors
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.
Definition: rb_evaluation.C:971
libMesh::Threads::spin_mtx
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.
Definition: threads.C:29
libMesh::ParallelObject::processor_id
processor_id_type processor_id() const
Definition: parallel_object.h:106
libMesh::RBEvaluation::Fq_Aq_representor_innerprods
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.
Definition: rb_evaluation.h:299
libMesh::ParallelObject::_communicator
const Parallel::Communicator & _communicator
Definition: parallel_object.h:112
libMesh::get_io_compatibility_version
std::string get_io_compatibility_version()
Specifier for I/O file compatibility features.
Definition: libmesh_version.C:80
libMesh::RBEvaluation::clear_riesz_representors
virtual void clear_riesz_representors()
Clear all the Riesz representors that are used to compute the RB residual (and hence error bound).
Definition: rb_evaluation.C:411
libMesh::RBParameters::set_value
void set_value(const std::string &param_name, Real value)
Set the value of the specified parameter.
Definition: rb_parameters.C:47
libMesh::RBEvaluation::rb_theta_expansion
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
Definition: rb_evaluation.h:344
libMesh::RBEvaluation::read_in_vectors_from_multiple_files
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.
Definition: rb_evaluation.C:993
libMesh::RBThetaExpansion::eval_A_theta
virtual Number eval_A_theta(unsigned int q, const RBParameters &mu)
Evaluate theta_q_a at the current parameter.
Definition: rb_theta_expansion.C:119
libMesh::RBEvaluation::get_stability_lower_bound
virtual Real get_stability_lower_bound()
Get a lower bound for the stability constant (e.g.
Definition: rb_evaluation.C:377
libMesh::RBParametrized::parameters_min
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.
Definition: rb_parametrized.h:229
libMesh::RBEvaluation::compute_residual_dual_norm
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.
Definition: rb_evaluation.C:302
libMesh::TransientRBEvaluation
This class is part of the rbOOmit framework.
Definition: transient_rb_evaluation.h:50
libMesh::READ
Definition: enum_xdr_mode.h:41
SimpleRBEvaluation::ex6_theta_expansion
Ex6ThetaExpansion ex6_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e.
Definition: rb_classes.h:68
libMesh::RBParametrized::write_discrete_parameter_values_to_file
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.
Definition: rb_parametrized.C:255
libMesh::RBEvaluation::write_out_vectors
virtual 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.
Definition: rb_evaluation.C:899
libMesh::Utility::mkdir
int mkdir(const char *pathname)
Create a directory.
Definition: utility.C:140
libMesh::RBEvaluation::Aq_Aq_representor_innerprods
std::vector< std::vector< std::vector< Number > > > Aq_Aq_representor_innerprods
Definition: rb_evaluation.h:300
libMesh::RBThetaExpansion::get_n_outputs
unsigned int get_n_outputs() const
Get n_outputs, the number output functionals.
Definition: rb_theta_expansion.C:47
libMesh::RBParameters::get_parameter_names
void get_parameter_names(std::set< std::string > &param_names) const
Fill param_names with the names of the parameters.
Definition: rb_parameters.C:69
libMesh::Quality::valid
std::vector< ElemQuality > valid(const ElemType t)
Returns all valid quality metrics for element type t.
Definition: elem_quality.C:324
libMesh::RBEvaluation::RB_output_vectors
std::vector< std::vector< DenseVector< Number > > > RB_output_vectors
The vectors storing the RB output vectors.
Definition: rb_evaluation.h:275
libMesh::ENCODE
Definition: enum_xdr_mode.h:38
libMesh::DenseVector::resize
void resize(const unsigned int n)
Resize the vector.
Definition: dense_vector.h:355
distance
Real distance(const Point &p)
Definition: subdomains_ex3.C:50
libMesh::RBEvaluation::eval_output_dual_norm
Real eval_output_dual_norm(unsigned int n, const RBParameters &mu)
Evaluate the dual norm of output n for the current parameters.
Definition: rb_evaluation.C:392
SimpleRBEvaluation::cd_rb_theta_expansion
CDRBThetaExpansion cd_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e.
Definition: rb_classes.h:67
libMesh::RBParametrized::initialize_parameters
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.
Definition: rb_parametrized.C:60
libMesh::RBParametrized::read_parameter_ranges_from_file
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.
Definition: rb_parametrized.C:303
libMesh::MeshTools::Private::globally_renumber_nodes_and_elements
void globally_renumber_nodes_and_elements(MeshBase &)
There is no reason for a user to ever call this function.
Definition: mesh_tools.C:2411
libMesh::ReferenceElem::get
const Elem & get(const ElemType type_in)
Definition: reference_elem.C:237
libMesh::RBParametrized::parameters
RBParameters parameters
Vector storing the current parameters.
Definition: rb_parametrized.h:224
libMesh::RBEvaluation::compute_RB_inner_product
bool compute_RB_inner_product
Boolean flag to indicate whether we compute the RB_inner_product_matrix.
Definition: rb_evaluation.h:327
libMesh::RBEvaluation::RB_inner_product_matrix
DenseMatrix< Number > RB_inner_product_matrix
The inner product matrix.
Definition: rb_evaluation.h:255
SimpleRBEvaluation::acoustics_rb_theta_expansion
AcousticsRBThetaExpansion acoustics_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e.
Definition: rb_classes.h:72
libMesh::RBParametrized::read_parameter_data_from_files
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.
Definition: rb_parametrized.C:284
libMesh::RBParametrized::valid_params
bool valid_params(const RBParameters &params)
Helper function to check that params is valid.
Definition: rb_parametrized.C:402
value
static const bool value
Definition: xdr_io.C:56
libMesh::RBParametrized::get_discrete_parameter_values
const std::map< std::string, std::vector< Real > > & get_discrete_parameter_values() const
Get a const reference to the discrete parameter values.
Definition: rb_parametrized.C:381
libMesh::RBEvaluation::Aq_representor
std::vector< std::vector< std::unique_ptr< NumericVector< Number > > > > Aq_representor
Vector storing the residual representors associated with the left-hand side.
Definition: rb_evaluation.h:316
libMesh::RBThetaExpansion::get_n_A_terms
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
Definition: rb_theta_expansion.C:35
libMesh::RBSCMEvaluation::get_SCM_LB
virtual Real get_SCM_LB()
Evaluate single SCM lower bound.
Definition: rb_scm_evaluation.C:166
libMesh::RBThetaExpansion::eval_F_theta
virtual Number eval_F_theta(unsigned int q, const RBParameters &mu)
Evaluate theta_q_f at the current parameter.
Definition: rb_theta_expansion.C:130
libMesh::RBEvaluation::RB_output_error_bounds
std::vector< Real > RB_output_error_bounds
Definition: rb_evaluation.h:282
libMesh::RBParametrized::parameters_initialized
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
Definition: rb_parametrized.h:219
libMesh::RBEvaluation::resize_data_structures
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.
Definition: rb_evaluation.C:108
libMesh::RBEvaluation::basis_functions
std::vector< std::unique_ptr< NumericVector< Number > > > basis_functions
The libMesh vectors storing the finite element coefficients of the RB basis functions.
Definition: rb_evaluation.h:241
libMesh::Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Definition: libmesh_common.h:121
libMesh::RBParametrized::is_value_in_list
static bool is_value_in_list(Real value, const std::vector< Real > &list_of_values, Real tol)
Helper function to check if the specified value is in the list of values (within a tolerance given by...
Definition: rb_parametrized.C:453
libMesh::ReferenceCounter::_enable_print_counter
static bool _enable_print_counter
Flag to control whether reference count information is printed when print_info is called.
Definition: reference_counter.h:141
libMesh::RBEvaluation::RB_Fq_vector
std::vector< DenseVector< Number > > RB_Fq_vector
Dense vector for the RHS.
Definition: rb_evaluation.h:265
libMesh::out
OStreamProxy out
SimpleRBEvaluation::ex02_rb_theta_expansion
Ex02RBThetaExpansion ex02_rb_theta_expansion
The object that stores the "theta" expansion of the parameter dependent PDE, i.e.
Definition: rb_classes.h:85
libMesh::RBParametrized::write_parameter_ranges_to_file
void write_parameter_ranges_to_file(const std::string &file_name, const bool write_binary)
Write out the parameter ranges to file.
Definition: rb_parametrized.C:222
libMesh::RBParametrized::is_discrete_parameter
bool is_discrete_parameter(const std::string &mu_name) const
Is parameter mu_name discrete?
Definition: rb_parametrized.C:373
libMesh::Quality::name
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:42
libMesh::RBParameters::get_value
Real get_value(const std::string &param_name) const
Get the value of the specific parameter.
Definition: rb_parameters.C:41
libMesh::RBEvaluation::greedy_param_list
std::vector< RBParameters > greedy_param_list
The list of parameters selected by the Greedy algorithm in generating the Reduced Basis associated wi...
Definition: rb_evaluation.h:247
libMesh::RBParametrized::get_parameter_min
Real get_parameter_min(const std::string &param_name) const
Get minimum allowable value of parameter param_name.
Definition: rb_parametrized.C:190