libMesh
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Attributes | List of all members
libMesh::RBSCMEvaluation Class Reference

This class is part of the rbOOmit framework. More...

#include <rb_scm_evaluation.h>

Inheritance diagram for libMesh::RBSCMEvaluation:
[legend]

Public Member Functions

 RBSCMEvaluation (const Parallel::Communicator &comm)
 Constructor. More...
 
virtual ~RBSCMEvaluation ()
 Destructor. More...
 
void set_rb_theta_expansion (RBThetaExpansion &rb_theta_expansion_in)
 Set the RBThetaExpansion object. More...
 
RBThetaExpansionget_rb_theta_expansion ()
 Get a reference to the rb_theta_expansion. More...
 
virtual Real get_SCM_LB ()
 Evaluate single SCM lower bound. More...
 
virtual Real get_SCM_UB ()
 Evaluate single SCM upper bound. More...
 
Real get_C_J_stability_constraint (unsigned int j) const
 Get stability constraints (i.e. More...
 
void set_C_J_stability_constraint (unsigned int j, Real stability_constraint_in)
 Set stability constraints (i.e. More...
 
Real get_SCM_UB_vector (unsigned int j, unsigned int q)
 Get entries of SCM_UB_vector, which stores the vector y, corresponding to the minimizing eigenvectors for the elements of C_J. More...
 
void set_SCM_UB_vector (unsigned int j, unsigned int q, Real y_q)
 Set entries of SCM_UB_vector, which stores the vector y, corresponding to the minimizing eigenvectors for the elements of C_J. More...
 
unsigned int get_C_J_size ()
 Get size of the set C_J. More...
 
const RBParametersget_C_J_entry (unsigned int j)
 Get entry of C_J. More...
 
Real get_C_J_stability_value (unsigned int j)
 Get entry of C_J_stability_vector. More...
 
Real get_B_min (unsigned int i) const
 Get B_min and B_max. More...
 
Real get_B_max (unsigned int i) const
 
void set_B_min (unsigned int i, Real B_min_val)
 Set B_min and B_max. More...
 
void set_B_max (unsigned int i, Real B_max_val)
 
virtual void save_current_parameters ()
 Helper function to save current_parameters in saved_parameters. More...
 
virtual void reload_current_parameters ()
 Helper function to (re)load current_parameters from saved_parameters. More...
 
virtual void set_current_parameters_from_C_J (unsigned int C_J_index)
 Set parameters based on values saved in "C_J". 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", const bool read_binary_data=true)
 Read in the saved Offline reduced basis data to initialize the system for Online solves. More...
 
virtual void clear ()
 Clear all the data structures associated with the system. 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 RBParametersget_parameters () const
 Get the current parameters. More...
 
bool set_parameters (const RBParameters &params)
 Set the current parameters to params The parameters are checked for validity; an error is thrown if the number of parameters or samples is different than expected. More...
 
const RBParametersget_parameters_min () const
 Get an RBParameters object that specifies the minimum allowable value for each parameter. More...
 
const RBParametersget_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::Communicatorcomm () 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_stream=libMesh::out)
 Prints the reference information, by default to libMesh::out. More...
 
static unsigned int n_objects ()
 Prints the number of outstanding (created, but not yet destroyed) objects. More...
 
static void enable_print_counter_info ()
 Methods to enable/disable the reference counter output from print_info() More...
 
static void disable_print_counter_info ()
 

Public Attributes

std::vector< RealB_min
 B_min, B_max define the bounding box. More...
 
std::vector< RealB_max
 
std::vector< RBParametersC_J
 Vector storing the greedily selected parameters during SCM training. More...
 
std::vector< RealC_J_stability_vector
 Vector storing the (truth) stability values at the parameters in C_J. More...
 
std::vector< std::vector< Real > > SCM_UB_vectors
 This matrix stores the infimizing vectors y_1( \( \mu \)),...,y_Q_a( \( \mu \)), for each \( \mu \) in C_J, which are used in computing the SCM upper bounds. More...
 
bool verbose_mode
 Public boolean to toggle verbose mode. More...
 

Protected Types

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

Protected Member Functions

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

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 Attributes

RBParameters saved_parameters
 Vector in which to save a parameter set. More...
 
RBThetaExpansionrb_theta_expansion
 A pointer to to the object that stores the theta expansion. More...
 

Detailed Description

This class is part of the rbOOmit framework.

RBSCMEvaluation encapsulates the functionality required to evaluate the Successive Constraint Method for associated with a reduced basis model.

Author
David J. Knezevic
Date
2011

Definition at line 52 of file rb_scm_evaluation.h.

Member Typedef Documentation

◆ Counts

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

Data structure to log the information.

The log is identified by the class name.

Definition at line 119 of file reference_counter.h.

Constructor & Destructor Documentation

◆ RBSCMEvaluation()

libMesh::RBSCMEvaluation::RBSCMEvaluation ( const Parallel::Communicator comm)

Constructor.

Definition at line 52 of file rb_scm_evaluation.C.

References B_max, B_min, C_J, C_J_stability_vector, and SCM_UB_vectors.

52  :
53  ParallelObject(comm_in)
54 {
55  // Clear SCM data vectors
56  B_min.clear();
57  B_max.clear();
58  C_J.clear();
59  C_J_stability_vector.clear();
60  SCM_UB_vectors.clear();
61 }
std::vector< Real > B_min
B_min, B_max define the bounding box.
ParallelObject(const Parallel::Communicator &comm_in)
Constructor.
std::vector< Real > B_max
std::vector< std::vector< Real > > SCM_UB_vectors
This matrix stores the infimizing vectors y_1( ),...,y_Q_a( ), for each in C_J, which are used in co...
std::vector< Real > C_J_stability_vector
Vector storing the (truth) stability values at the parameters in C_J.
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.

◆ ~RBSCMEvaluation()

libMesh::RBSCMEvaluation::~RBSCMEvaluation ( )
virtualdefault

Destructor.

Member Function Documentation

◆ clear()

void libMesh::RBParametrized::clear ( )
virtualinherited

Clear all the data structures associated with the system.

Reimplemented in libMesh::RBConstruction, libMesh::RBEIMConstruction, libMesh::TransientSystem< RBConstruction >, libMesh::RBConstructionBase< Base >, libMesh::RBConstructionBase< LinearImplicitSystem >, libMesh::RBConstructionBase< System >, libMesh::RBConstructionBase< CondensedEigenSystem >, libMesh::RBEIMEvaluation, libMesh::RBSCMConstruction, libMesh::TransientRBConstruction, libMesh::TransientRBEvaluation, and libMesh::RBEvaluation.

Definition at line 45 of file rb_parametrized.C.

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

46 {
47  parameters.clear();
50  parameters_initialized = false;
51 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
RBParameters parameters_min
Vectors that define the ranges (min and max) for the parameters.
void clear()
Clear this object.
Definition: rb_parameters.C:47
RBParameters parameters
Vector storing the current parameters.

◆ comm()

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

Definition at line 97 of file parallel_object.h.

References libMesh::ParallelObject::_communicator.

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

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

◆ disable_print_counter_info()

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 100 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

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

◆ enable_print_counter_info()

void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

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

Definition at line 94 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

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

◆ get_B_max()

Real libMesh::RBSCMEvaluation::get_B_max ( unsigned int  i) const

Definition at line 130 of file rb_scm_evaluation.C.

References B_max.

Referenced by libMesh::RBDataSerialization::add_rb_scm_evaluation_data_to_builder(), libMesh::RBSCMConstruction::compute_SCM_bounding_box(), and legacy_write_offline_data_to_files().

131 {
132  libmesh_error_msg_if(q >= B_max.size(), "Error: q is too large in get_B_max.");
133 
134  return B_max[q];
135 }
std::vector< Real > B_max

◆ get_B_min()

Real libMesh::RBSCMEvaluation::get_B_min ( unsigned int  i) const

Get B_min and B_max.

Definition at line 122 of file rb_scm_evaluation.C.

References B_min.

Referenced by libMesh::RBDataSerialization::add_rb_scm_evaluation_data_to_builder(), libMesh::RBSCMConstruction::compute_SCM_bounding_box(), and legacy_write_offline_data_to_files().

123 {
124  libmesh_error_msg_if(q >= B_min.size(), "Error: q is too large in get_B_min.");
125 
126  return B_min[q];
127 }
std::vector< Real > B_min
B_min, B_max define the bounding box.

◆ get_C_J_entry()

const RBParameters & libMesh::RBSCMEvaluation::get_C_J_entry ( unsigned int  j)

Get entry of C_J.

Definition at line 115 of file rb_scm_evaluation.C.

References C_J.

116 {
117  libmesh_error_msg_if(j >= C_J.size(), "Error: Input parameter j is too large in get_C_J.");
118 
119  return C_J[j];
120 }
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.

◆ get_C_J_size()

unsigned int libMesh::RBSCMEvaluation::get_C_J_size ( )
inline

Get size of the set C_J.

Definition at line 120 of file rb_scm_evaluation.h.

References C_J.

121  { return cast_int<unsigned int>(C_J.size()); }
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.

◆ get_C_J_stability_constraint()

Real libMesh::RBSCMEvaluation::get_C_J_stability_constraint ( unsigned int  j) const

Get stability constraints (i.e.

the values of coercivity/ inf-sup/stability constants at the parameter values chosen during the greedy); we store one constraint for each element of C_J.

Definition at line 88 of file rb_scm_evaluation.C.

References C_J_stability_vector.

Referenced by libMesh::RBDataSerialization::add_rb_scm_evaluation_data_to_builder(), libMesh::RBSCMConstruction::evaluate_stability_constant(), and legacy_write_offline_data_to_files().

89 {
90  libmesh_error_msg_if(j >= C_J_stability_vector.size(), "Error: Input parameter j is too large in get_C_J_stability_constraint.");
91 
92  return C_J_stability_vector[j];
93 }
std::vector< Real > C_J_stability_vector
Vector storing the (truth) stability values at the parameters in C_J.

◆ get_C_J_stability_value()

Real libMesh::RBSCMEvaluation::get_C_J_stability_value ( unsigned int  j)
inline

Get entry of C_J_stability_vector.

Definition at line 131 of file rb_scm_evaluation.h.

References C_J_stability_vector.

131 { return C_J_stability_vector[j]; }
std::vector< Real > C_J_stability_vector
Vector storing the (truth) stability values at the parameters in C_J.

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

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

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

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

◆ get_discrete_parameter_values()

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

Get a const reference to the discrete parameter values.

Definition at line 370 of file rb_parametrized.C.

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

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

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

◆ get_info()

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

Gets a string containing the reference information.

Definition at line 47 of file reference_counter.C.

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

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

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

◆ get_n_continuous_params()

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

Get the number of continuous parameters.

Definition at line 112 of file rb_parametrized.C.

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

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

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

◆ get_n_discrete_params()

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

Get the number of discrete parameters.

Definition at line 121 of file rb_parametrized.C.

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

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

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

◆ get_n_params()

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

Get the number of parameters.

Definition at line 103 of file rb_parametrized.C.

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

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

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

◆ get_parameter_max()

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

Get maximum allowable value of parameter param_name.

Definition at line 183 of file rb_parametrized.C.

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

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

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

◆ get_parameter_min()

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

Get minimum allowable value of parameter param_name.

Definition at line 176 of file rb_parametrized.C.

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

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

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

◆ get_parameter_names()

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

Get a set that stores the parameter names.

Definition at line 129 of file rb_parametrized.C.

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

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

◆ get_parameters()

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

Get the current parameters.

Definition at line 155 of file rb_parametrized.C.

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

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

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

◆ get_parameters_max()

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

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

Definition at line 169 of file rb_parametrized.C.

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

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

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

◆ get_parameters_min()

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

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

Definition at line 162 of file rb_parametrized.C.

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

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

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

◆ get_rb_theta_expansion()

RBThetaExpansion & libMesh::RBSCMEvaluation::get_rb_theta_expansion ( )

Get a reference to the rb_theta_expansion.

Definition at line 70 of file rb_scm_evaluation.C.

References rb_theta_expansion.

Referenced by libMesh::RBDataSerialization::add_rb_scm_evaluation_data_to_builder(), libMesh::RBSCMConstruction::get_rb_theta_expansion(), and libMesh::RBDataDeserialization::load_rb_scm_evaluation_data().

71 {
72  libmesh_error_msg_if(!rb_theta_expansion, "Error: rb_theta_expansion hasn't been initialized yet");
73 
74  return *rb_theta_expansion;
75 }
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.

◆ get_SCM_LB()

Real libMesh::RBSCMEvaluation::get_SCM_LB ( )
virtual

Evaluate single SCM lower bound.

Definition at line 151 of file rb_scm_evaluation.C.

References B_max, B_min, C_J, C_J_stability_vector, libMesh::RBThetaExpansion::eval_A_theta(), libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBParametrized::get_parameters(), libMesh::libmesh_real(), rb_theta_expansion, libMesh::Real, reload_current_parameters(), save_current_parameters(), and set_current_parameters_from_C_J().

Referenced by libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), and SimpleRBEvaluation::get_stability_lower_bound().

152 {
153  LOG_SCOPE("get_SCM_LB()", "RBSCMEvaluation");
154 
155  // Initialize the LP
156  glp_prob * lp;
157  lp = glp_create_prob();
158  glp_set_obj_dir(lp,GLP_MIN);
159 
160  // Add columns to the LP: corresponds to
161  // the variables y_1,...y_Q_a.
162  // These are the same for each \mu in the SCM
163  // training set, hence can do this up front.
164  glp_add_cols(lp,rb_theta_expansion->get_n_A_terms());
165 
166  for (unsigned int q=0; q<rb_theta_expansion->get_n_A_terms(); q++)
167  {
168  if (B_max[q] < B_min[q]) // Invalid bound, set as free variable
169  {
170  // GLPK indexing is not zero based!
171  glp_set_col_bnds(lp, q+1, GLP_FR, 0., 0.);
172  }
173  else
174  {
175  // GLPK indexing is not zero based!
176  glp_set_col_bnds(lp, q+1, GLP_DB, double(B_min[q]), double(B_max[q]));
177  }
178 
179  // If B_max is not defined, just set lower bounds...
180  // glp_set_col_bnds(lp, q+1, GLP_LO, B_min[q], 0.);
181  }
182 
183 
184  // Add rows to the LP: corresponds to the auxiliary
185  // variables that define the constraints at each
186  // mu \in C_J_M
187  unsigned int n_rows = cast_int<unsigned int>(C_J.size());
188  glp_add_rows(lp, n_rows);
189 
190  // Now put current_parameters in saved_parameters
192 
193  unsigned int matrix_size = n_rows*rb_theta_expansion->get_n_A_terms();
194  std::vector<int> ia(matrix_size+1);
195  std::vector<int> ja(matrix_size+1);
196  std::vector<double> ar(matrix_size+1);
197  unsigned int count=0;
198  for (unsigned int m=0; m<n_rows; m++)
199  {
201 
202  // Set the lower bound on the auxiliary variable
203  // due to the stability constant at mu_index
204  glp_set_row_bnds(lp, m+1, GLP_LO, double(C_J_stability_vector[m]), 0.);
205 
206  // Now define the matrix that relates the y's
207  // to the auxiliary variables at the current
208  // value of mu.
209  for (unsigned int q=0; q<rb_theta_expansion->get_n_A_terms(); q++)
210  {
211  count++;
212 
213  ia[count] = m+1;
214  ja[count] = q+1;
215 
216  // This can only handle Reals right now
217  ar[count] = double(libmesh_real( rb_theta_expansion->eval_A_theta(q,get_parameters()) ));
218  }
219  }
220 
221  // Now load the original parameters back into current_parameters
222  // in order to set the coefficients of the objective function
224 
225  glp_load_matrix(lp, matrix_size, ia.data(), ja.data(), ar.data());
226 
227  for (unsigned int q=0; q<rb_theta_expansion->get_n_A_terms(); q++)
228  {
229  glp_set_obj_coef(lp,q+1, double(libmesh_real( rb_theta_expansion->eval_A_theta(q,get_parameters()) )) );
230  }
231 
232  // Use this command to initialize the basis for the LP
233  // since default behavior is to use the basis from
234  // the previous solve, but that might become singular
235  // if we switch the order of constraints (as can
236  // happen when we generate a new C_J_M)
237  //lpx_cpx_basis(lp); //glp_cpx_basis(lp);
238 
239  glp_smcp parm;
240  glp_init_smcp(&parm);
241  parm.msg_lev = GLP_MSG_ERR;
242  parm.meth = GLP_DUAL;
243 
244 
245  // use the simplex method and solve the LP
246  glp_simplex(lp, &parm);
247 
248  Real min_J_obj = glp_get_obj_val(lp);
249 
250  // int simplex_status = glp_get_status(lp);
251  // if (simplex_status == GLP_UNBND)
252  // {
253  // libMesh::out << "Simplex method gave unbounded solution." << std::endl;
254  // min_J_obj = std::numeric_limits<Real>::quiet_NaN();
255  // }
256  // else
257  // {
258  // min_J_obj = glp_get_obj_val(lp);
259  // }
260 
261  // Destroy the LP
262  glp_delete_prob(lp);
263 
264  return min_J_obj;
265 }
T libmesh_real(T a)
std::vector< Real > B_min
B_min, B_max define the bounding box.
virtual Number eval_A_theta(unsigned int q, const RBParameters &mu) const
Evaluate theta_q_a at the current parameter.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
virtual void save_current_parameters()
Helper function to save current_parameters in saved_parameters.
std::vector< Real > B_max
std::vector< Real > C_J_stability_vector
Vector storing the (truth) stability values at the parameters in C_J.
virtual void reload_current_parameters()
Helper function to (re)load current_parameters from saved_parameters.
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
const RBParameters & get_parameters() const
Get the current parameters.
virtual void set_current_parameters_from_C_J(unsigned int C_J_index)
Set parameters based on values saved in "C_J".
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ get_SCM_UB()

Real libMesh::RBSCMEvaluation::get_SCM_UB ( )
virtual

Evaluate single SCM upper bound.

Definition at line 267 of file rb_scm_evaluation.C.

References C_J, libMesh::RBThetaExpansion::eval_A_theta(), libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBParametrized::get_parameters(), libMesh::libmesh_real(), rb_theta_expansion, libMesh::Real, and SCM_UB_vectors.

Referenced by libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set().

268 {
269  LOG_SCOPE("get_SCM_UB()", "RBSCMEvaluation");
270 
271  // Add rows to the LP: corresponds to the auxiliary
272  // variables that define the constraints at each
273  // mu \in C_J
274  unsigned int n_rows = cast_int<unsigned int>(C_J.size());
275 
276  // For each mu, we just find the minimum of J_obj over
277  // the subset of vectors in SCM_UB_vectors corresponding
278  // to C_J_M (SCM_UB_vectors contains vectors for all of
279  // C_J).
280  Real min_J_obj = 0.;
281  for (unsigned int m=0; m<n_rows; m++)
282  {
283  const std::vector<Real> UB_vector = SCM_UB_vectors[m];
284 
285  Real J_obj = 0.;
286  for (unsigned int q=0; q<rb_theta_expansion->get_n_A_terms(); q++)
287  {
288  J_obj += libmesh_real( rb_theta_expansion->eval_A_theta(q,get_parameters()) )*UB_vector[q];
289  }
290 
291  if ((m==0) || (J_obj < min_J_obj))
292  {
293  min_J_obj = J_obj;
294  }
295  }
296 
297  return min_J_obj;
298 }
T libmesh_real(T a)
virtual Number eval_A_theta(unsigned int q, const RBParameters &mu) const
Evaluate theta_q_a at the current parameter.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
std::vector< std::vector< Real > > SCM_UB_vectors
This matrix stores the infimizing vectors y_1( ),...,y_Q_a( ), for each in C_J, which are used in co...
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
const RBParameters & get_parameters() const
Get the current parameters.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ get_SCM_UB_vector()

Real libMesh::RBSCMEvaluation::get_SCM_UB_vector ( unsigned int  j,
unsigned int  q 
)

Get entries of SCM_UB_vector, which stores the vector y, corresponding to the minimizing eigenvectors for the elements of C_J.

Definition at line 106 of file rb_scm_evaluation.C.

References SCM_UB_vectors.

Referenced by libMesh::RBDataSerialization::add_rb_scm_evaluation_data_to_builder(), and legacy_write_offline_data_to_files().

107 {
108  // First make sure that j <= J
109  libmesh_error_msg_if(j >= SCM_UB_vectors.size(), "Error: We must have j < J in get_SCM_UB_vector.");
110  libmesh_error_msg_if(q >= SCM_UB_vectors[0].size(), "Error: q is too large in get_SCM_UB_vector.");
111 
112  return SCM_UB_vectors[j][q];
113 }
std::vector< std::vector< Real > > SCM_UB_vectors
This matrix stores the infimizing vectors y_1( ),...,y_Q_a( ), for each in C_J, which are used in co...

◆ increment_constructor_count()

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

Increments the construction counter.

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

Definition at line 183 of file reference_counter.h.

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

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

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

◆ increment_destructor_count()

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

Increments the destruction counter.

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

Definition at line 207 of file reference_counter.h.

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

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

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

◆ initialize_parameters() [1/2]

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

Initialize the parameter ranges and set current_parameters.

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

Definition at line 53 of file rb_parametrized.C.

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

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

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

◆ initialize_parameters() [2/2]

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

Initialize the parameter ranges and set current_parameters.

Definition at line 96 of file rb_parametrized.C.

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

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

◆ is_discrete_parameter()

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

Is parameter mu_name discrete?

Definition at line 363 of file rb_parametrized.C.

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

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

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

◆ legacy_read_offline_data_from_files()

void libMesh::RBSCMEvaluation::legacy_read_offline_data_from_files ( const std::string &  directory_name = "offline_data",
const bool  read_binary_data = true 
)
virtual

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

Note
This is a legacy method, use RBDataSerialization instead.

Definition at line 432 of file rb_scm_evaluation.C.

References B_max, B_min, C_J, C_J_stability_vector, libMesh::Xdr::close(), libMesh::DECODE, libMesh::RBThetaExpansion::get_n_A_terms(), libMesh::RBParametrized::get_parameters(), libMesh::index_range(), rb_theta_expansion, libMesh::READ, libMesh::RBParametrized::read_parameter_data_from_files(), libMesh::Real, and SCM_UB_vectors.

434 {
435  LOG_SCOPE("legacy_read_offline_data_from_files()", "RBSCMEvaluation");
436 
437  // The reading mode: DECODE for binary, READ for ASCII
438  XdrMODE mode = read_binary_data ? DECODE : READ;
439 
440  // The suffix to use for all the files that are written out
441  const std::string suffix = read_binary_data ? ".xdr" : ".dat";
442 
443  // The string stream we'll use to make the file names
444  std::ostringstream file_name;
445 
446  // Read in the parameter ranges
447  file_name.str("");
448  file_name << directory_name << "/parameter_ranges" << suffix;
449  std::string continuous_param_file_name = file_name.str();
450 
451  // Read in the discrete parameter values
452  file_name.str("");
453  file_name << directory_name << "/discrete_parameter_values" << suffix;
454  std::string discrete_param_file_name = file_name.str();
455  read_parameter_data_from_files(continuous_param_file_name,
456  discrete_param_file_name,
457  read_binary_data);
458 
459  // Read in the bounding box min values
460  // Note that there are Q_a values
461  file_name.str("");
462  file_name << directory_name << "/B_min" << suffix;
463  Xdr B_min_in(file_name.str(), mode);
464 
465  B_min.clear();
466  for (unsigned int i=0; i<rb_theta_expansion->get_n_A_terms(); i++)
467  {
468  Real B_min_val;
469  B_min_in >> B_min_val;
470  B_min.push_back(B_min_val);
471  }
472  B_min_in.close();
473 
474 
475  // Read in the bounding box max values
476  // Note that there are Q_a values
477  file_name.str("");
478  file_name << directory_name << "/B_max" << suffix;
479  Xdr B_max_in(file_name.str(), mode);
480 
481  B_max.clear();
482  for (unsigned int i=0; i<rb_theta_expansion->get_n_A_terms(); i++)
483  {
484  Real B_max_val;
485  B_max_in >> B_max_val;
486  B_max.push_back(B_max_val);
487  }
488 
489  // Read in the length of the C_J data
490  file_name.str("");
491  file_name << directory_name << "/C_J_length" << suffix;
492  Xdr C_J_length_in(file_name.str(), mode);
493 
494  unsigned int C_J_length;
495  C_J_length_in >> C_J_length;
496  C_J_length_in.close();
497 
498  // Read in C_J_stability_vector
499  file_name.str("");
500  file_name << directory_name << "/C_J_stability_vector" << suffix;
501  Xdr C_J_stability_vector_in(file_name.str(), mode);
502 
503  C_J_stability_vector.clear();
504  for (unsigned int i=0; i<C_J_length; i++)
505  {
506  Real C_J_stability_val;
507  C_J_stability_vector_in >> C_J_stability_val;
508  C_J_stability_vector.push_back(C_J_stability_val);
509  }
510  C_J_stability_vector_in.close();
511 
512  // Read in C_J
513  file_name.str("");
514  file_name << directory_name << "/C_J" << suffix;
515  Xdr C_J_in(file_name.str(), mode);
516 
517  // Resize C_J based on C_J_stability_vector and Q_a
518  C_J.resize( C_J_length );
519  for (auto & params : C_J)
520  for (const auto & pr : get_parameters())
521  {
522  const std::string & param_name = pr.first;
523  Real param_value;
524  C_J_in >> param_value;
525  params.set_value(param_name, param_value);
526  }
527  C_J_in.close();
528 
529 
530  // Read in SCM_UB_vectors get_SCM_UB_vector
531  file_name.str("");
532  file_name << directory_name << "/SCM_UB_vectors" << suffix;
533  Xdr SCM_UB_vectors_in(file_name.str(), mode);
534 
535  // Resize SCM_UB_vectors based on C_J_stability_vector and Q_a
536  SCM_UB_vectors.resize( C_J_stability_vector.size() );
537  for (auto i : index_range(SCM_UB_vectors))
538  {
540  for (unsigned int j=0; j<rb_theta_expansion->get_n_A_terms(); j++)
541  {
542  SCM_UB_vectors_in >> SCM_UB_vectors[i][j];
543  }
544  }
545  SCM_UB_vectors_in.close();
546 }
std::vector< Real > B_min
B_min, B_max define the bounding box.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
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.
std::vector< Real > B_max
std::vector< std::vector< Real > > SCM_UB_vectors
This matrix stores the infimizing vectors y_1( ),...,y_Q_a( ), for each in C_J, which are used in co...
std::vector< Real > C_J_stability_vector
Vector storing the (truth) stability values at the parameters in C_J.
XdrMODE
Defines an enum for read/write mode in Xdr format.
Definition: enum_xdr_mode.h:35
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
const RBParameters & get_parameters() const
Get the current parameters.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...
Definition: int_range.h:111

◆ legacy_write_offline_data_to_files()

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

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.

Definition at line 315 of file rb_scm_evaluation.C.

References B_max, B_min, C_J, C_J_stability_vector, libMesh::Xdr::close(), libMesh::ENCODE, get_B_max(), get_B_min(), get_C_J_stability_constraint(), libMesh::RBThetaExpansion::get_n_A_terms(), get_SCM_UB_vector(), libMesh::make_range(), libMesh::Utility::mkdir(), libMesh::out, libMesh::ParallelObject::processor_id(), rb_theta_expansion, libMesh::Real, SCM_UB_vectors, libMesh::WRITE, and libMesh::RBParametrized::write_parameter_data_to_files().

317 {
318  LOG_SCOPE("legacy_write_offline_data_to_files()", "RBSCMEvaluation");
319 
320  if (this->processor_id() == 0)
321  {
322  // Make a directory to store all the data files
323  if (mkdir(directory_name.c_str(), 0777) == -1)
324  {
325  libMesh::out << "In RBSCMEvaluation::write_offline_data_to_files, directory "
326  << directory_name << " already exists, overwriting contents." << std::endl;
327  }
328 
329  // The writing mode: ENCODE for binary, WRITE for ASCII
330  XdrMODE mode = write_binary_data ? ENCODE : WRITE;
331 
332  // The suffix to use for all the files that are written out
333  const std::string suffix = write_binary_data ? ".xdr" : ".dat";
334 
335  // Stream for building the file names
336  std::ostringstream file_name;
337 
338  // Write out the parameter ranges
339  file_name.str("");
340  file_name << directory_name << "/parameter_ranges" << suffix;
341  std::string continuous_param_file_name = file_name.str();
342 
343  // Write out the discrete parameter values
344  file_name.str("");
345  file_name << directory_name << "/discrete_parameter_values" << suffix;
346  std::string discrete_param_file_name = file_name.str();
347 
348  write_parameter_data_to_files(continuous_param_file_name,
349  discrete_param_file_name,
350  write_binary_data);
351 
352  // Write out the bounding box min values
353  file_name.str("");
354  file_name << directory_name << "/B_min" << suffix;
355  Xdr B_min_out(file_name.str(), mode);
356 
357  for (auto i : make_range(B_min.size()))
358  {
359  Real B_min_i = get_B_min(i);
360  B_min_out << B_min_i;
361  }
362  B_min_out.close();
363 
364 
365  // Write out the bounding box max values
366  file_name.str("");
367  file_name << directory_name << "/B_max" << suffix;
368  Xdr B_max_out(file_name.str(), mode);
369 
370  for (auto i : make_range(B_max.size()))
371  {
372  Real B_max_i = get_B_max(i);
373  B_max_out << B_max_i;
374  }
375  B_max_out.close();
376 
377  // Write out the length of the C_J data
378  file_name.str("");
379  file_name << directory_name << "/C_J_length" << suffix;
380  Xdr C_J_length_out(file_name.str(), mode);
381 
382  unsigned int C_J_length = cast_int<unsigned int>(C_J.size());
383  C_J_length_out << C_J_length;
384  C_J_length_out.close();
385 
386  // Write out C_J_stability_vector
387  file_name.str("");
388  file_name << directory_name << "/C_J_stability_vector" << suffix;
389  Xdr C_J_stability_vector_out(file_name.str(), mode);
390 
391  for (auto i : make_range(C_J_stability_vector.size()))
392  {
393  Real C_J_stability_constraint_i = get_C_J_stability_constraint(i);
394  C_J_stability_vector_out << C_J_stability_constraint_i;
395  }
396  C_J_stability_vector_out.close();
397 
398  // Write out C_J
399  file_name.str("");
400  file_name << directory_name << "/C_J" << suffix;
401  Xdr C_J_out(file_name.str(), mode);
402 
403  for (const auto & param : C_J)
404  for (const auto & pr : param)
405  for (const auto & value_vector : pr.second)
406  {
407  // Need to make a copy of the value so that it's not const
408  // Xdr is not templated on const's
409  libmesh_error_msg_if(value_vector.size() != 1,
410  "Error: multi-value RB parameters are not yet supported here.");
411  Real param_value = value_vector[0];
412  C_J_out << param_value;
413  }
414  C_J_out.close();
415 
416  // Write out SCM_UB_vectors get_SCM_UB_vector
417  file_name.str("");
418  file_name << directory_name << "/SCM_UB_vectors" << suffix;
419  Xdr SCM_UB_vectors_out(file_name.str(), mode);
420 
421  for (auto i : make_range(SCM_UB_vectors.size()))
422  for (auto j : make_range(rb_theta_expansion->get_n_A_terms()))
423  {
424  Real SCM_UB_vector_ij = get_SCM_UB_vector(i,j);
425  SCM_UB_vectors_out << SCM_UB_vector_ij;
426  }
427  SCM_UB_vectors_out.close();
428  }
429 }
std::vector< Real > B_min
B_min, B_max define the bounding box.
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.
Real get_B_min(unsigned int i) const
Get B_min and B_max.
unsigned int get_n_A_terms() const
Get Q_a, the number of terms in the affine expansion for the bilinear form.
int mkdir(const char *pathname)
Create a directory.
Definition: utility.C:144
std::vector< Real > B_max
std::vector< std::vector< Real > > SCM_UB_vectors
This matrix stores the infimizing vectors y_1( ),...,y_Q_a( ), for each in C_J, which are used in co...
std::vector< Real > C_J_stability_vector
Vector storing the (truth) stability values at the parameters in C_J.
XdrMODE
Defines an enum for read/write mode in Xdr format.
Definition: enum_xdr_mode.h:35
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real get_C_J_stability_constraint(unsigned int j) const
Get stability constraints (i.e.
OStreamProxy out
Real get_B_max(unsigned int i) const
IntRange< T > make_range(T beg, T end)
The 2-parameter make_range() helper function returns an IntRange<T> when both input parameters are of...
Definition: int_range.h:134
processor_id_type processor_id() const
Real get_SCM_UB_vector(unsigned int j, unsigned int q)
Get entries of SCM_UB_vector, which stores the vector y, corresponding to the minimizing eigenvectors...

◆ n_objects()

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

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

Definition at line 85 of file reference_counter.h.

References libMesh::ReferenceCounter::_n_objects.

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

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

◆ n_processors()

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

Definition at line 103 of file parallel_object.h.

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

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

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

◆ print_discrete_parameter_values()

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

Print out all the discrete parameter values.

Definition at line 377 of file rb_parametrized.C.

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

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

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

◆ print_info()

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

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

Definition at line 81 of file reference_counter.C.

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

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

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

◆ print_parameters()

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

Print the current parameters.

Definition at line 190 of file rb_parametrized.C.

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

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

191 {
192  libmesh_error_msg_if(!parameters_initialized, "Error: parameters not initialized in RBParametrized::print_current_parameters");
193 
194  get_parameters().print();
195 }
bool parameters_initialized
Flag indicating whether the parameters have been initialized.
void print() const
Print the parameters.
const RBParameters & get_parameters() const
Get the current parameters.

◆ processor_id()

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

Definition at line 114 of file parallel_object.h.

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

Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO::assert_symmetric_cmaps(), libMesh::Partitioner::assign_partitioning(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::Partitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::DistributedMesh::clear_elems(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::RBConstruction::compute_max_error_bound(), libMesh::Nemesis_IO_Helper::compute_node_communication_maps(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::Nemesis_IO::copy_scalar_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::distribute_scalar_dofs(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::find_dofs_to_send(), libMesh::MeshFunction::find_element(), libMesh::MeshFunction::find_elements(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), libMesh::RBEIMEvaluation::gather_bfs(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), libMesh::MeshBase::get_info(), libMesh::DofMap::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::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::LaplaceMeshSmoother::init(), 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::TransientRBEvaluation::legacy_write_offline_data_to_files(), legacy_write_offline_data_to_files(), libMesh::RBEvaluation::legacy_write_offline_data_to_files(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DofMap::local_variable_indices(), main(), libMesh::MeshRefinement::make_coarsening_compatible(), AugmentSparsityOnInterface::mesh_reinit(), libMesh::TriangulatorInterface::MeshedHole::MeshedHole(), libMesh::MeshBase::n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::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::RBEIMEvaluation::node_gather_bfs(), libMesh::SparsityPattern::Build::operator()(), libMesh::DistributedMesh::own_node(), libMesh::BoundaryInfo::parallel_sync_node_ids(), libMesh::BoundaryInfo::parallel_sync_side_ids(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::print_dof_constraints(), libMesh::DofMap::process_mesh_constraint_rows(), libMesh::Nemesis_IO_Helper::put_cmap_params(), libMesh::Nemesis_IO_Helper::put_elem_cmap(), libMesh::Nemesis_IO_Helper::put_elem_map(), libMesh::Nemesis_IO_Helper::put_loadbal_param(), libMesh::Nemesis_IO_Helper::put_node_cmap(), libMesh::Nemesis_IO_Helper::put_node_map(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read(), libMesh::EquationSystems::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::ExodusII_IO::read_header(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::DynaIO::read_mesh(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::TransientRBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::read_riesz_representors_from_files(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::System::read_serialized_data(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::Nemesis_IO_Helper::read_var_names_impl(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DistributedMesh::renumber_nodes_and_elements(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::DistributedMesh::set_next_unique_id(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::RBEIMEvaluation::side_gather_bfs(), ExodusTest< elem_type >::test_read_gold(), ExodusTest< elem_type >::test_write(), MeshInputTest::testAbaqusRead(), MeshInputTest::testCopyElementSolutionImpl(), MeshInputTest::testCopyElementVectorImpl(), MeshInputTest::testCopyNodalSolutionImpl(), DefaultCouplingTest::testCoupling(), PointNeighborCouplingTest::testCoupling(), MeshInputTest::testDynaFileMappings(), MeshInputTest::testDynaNoSplines(), MeshInputTest::testDynaReadElem(), MeshInputTest::testDynaReadPatch(), MeshInputTest::testExodusFileMappings(), MeshInputTest::testExodusIGASidesets(), MeshInputTest::testExodusWriteElementDataFromDiscontinuousNodalData(), MeshInputTest::testLowOrderEdgeBlocks(), SystemsTest::testProjectMatrix1D(), SystemsTest::testProjectMatrix2D(), SystemsTest::testProjectMatrix3D(), BoundaryInfoTest::testShellFaceConstraints(), MeshInputTest::testSingleElementImpl(), WriteVecAndScalar::testSolution(), CheckpointIOTest::testSplitter(), MeshInputTest::testTetgenIO(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), 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_Helper::write_elemset_data(), libMesh::ExodusII_IO_Helper::write_elemsets(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodal_data(), libMesh::VTKIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_common(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::ExodusII_IO_Helper::write_nodeset_data(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::RBEIMEvaluation::write_out_interior_basis_functions(), libMesh::RBEIMEvaluation::write_out_node_basis_functions(), libMesh::RBEIMEvaluation::write_out_side_basis_functions(), write_output_solvedata(), libMesh::System::write_parallel_data(), libMesh::RBConstruction::write_riesz_representors_to_files(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_data(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), libMesh::ExodusII_IO_Helper::write_sideset_data(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), libMesh::ExodusII_IO_Helper::write_timestep(), and libMesh::ExodusII_IO::write_timestep_discontinuous().

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

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

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

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

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

◆ reload_current_parameters()

void libMesh::RBSCMEvaluation::reload_current_parameters ( )
virtual

Helper function to (re)load current_parameters from saved_parameters.

Definition at line 310 of file rb_scm_evaluation.C.

References saved_parameters, and libMesh::RBParametrized::set_parameters().

Referenced by get_SCM_LB().

311 {
313 }
bool set_parameters(const RBParameters &params)
Set the current parameters to params The parameters are checked for validity; an error is thrown if t...
RBParameters saved_parameters
Vector in which to save a parameter set.

◆ save_current_parameters()

void libMesh::RBSCMEvaluation::save_current_parameters ( )
virtual

Helper function to save current_parameters in saved_parameters.

Definition at line 305 of file rb_scm_evaluation.C.

References libMesh::RBParametrized::get_parameters(), and saved_parameters.

Referenced by get_SCM_LB().

306 {
308 }
const RBParameters & get_parameters() const
Get the current parameters.
RBParameters saved_parameters
Vector in which to save a parameter set.

◆ set_B_max()

void libMesh::RBSCMEvaluation::set_B_max ( unsigned int  i,
Real  B_max_val 
)

Definition at line 144 of file rb_scm_evaluation.C.

References B_max.

Referenced by libMesh::RBSCMConstruction::compute_SCM_bounding_box().

145 {
146  libmesh_error_msg_if(q >= B_max.size(), "Error: q is too large in set_B_max.");
147 
148  B_max[q] = B_max_val;
149 }
std::vector< Real > B_max

◆ set_B_min()

void libMesh::RBSCMEvaluation::set_B_min ( unsigned int  i,
Real  B_min_val 
)

Set B_min and B_max.

Definition at line 137 of file rb_scm_evaluation.C.

References B_min.

Referenced by libMesh::RBSCMConstruction::compute_SCM_bounding_box().

138 {
139  libmesh_error_msg_if(q >= B_min.size(), "Error: q is too large in set_B_min.");
140 
141  B_min[q] = B_min_val;
142 }
std::vector< Real > B_min
B_min, B_max define the bounding box.

◆ set_C_J_stability_constraint()

void libMesh::RBSCMEvaluation::set_C_J_stability_constraint ( unsigned int  j,
Real  stability_constraint_in 
)

Set stability constraints (i.e.

the values of coercivity/ inf-sup/stability constants at the parameter values chosen during the greedy); we store one constraint for each element of C_J.

Definition at line 77 of file rb_scm_evaluation.C.

References C_J, and C_J_stability_vector.

Referenced by libMesh::RBSCMConstruction::evaluate_stability_constant().

78 {
79  libmesh_error_msg_if(j >= C_J_stability_vector.size(), "Error: Input parameter j is too large in set_C_J_stability_constraint.");
80 
81  // we assume that C_J_stability_vector is resized elsewhere
82  // to be the same size as C_J.
83  libmesh_assert_equal_to (C_J_stability_vector.size(), C_J.size());
84 
85  C_J_stability_vector[j] = stability_const_in;
86 }
std::vector< Real > C_J_stability_vector
Vector storing the (truth) stability values at the parameters in C_J.
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.

◆ set_current_parameters_from_C_J()

void libMesh::RBSCMEvaluation::set_current_parameters_from_C_J ( unsigned int  C_J_index)
virtual

Set parameters based on values saved in "C_J".

Definition at line 300 of file rb_scm_evaluation.C.

References C_J, and libMesh::RBParametrized::set_parameters().

Referenced by get_SCM_LB().

301 {
302  set_parameters(C_J[C_J_index]);
303 }
std::vector< RBParameters > C_J
Vector storing the greedily selected parameters during SCM training.
bool set_parameters(const RBParameters &params)
Set the current parameters to params The parameters are checked for validity; an error is thrown if t...

◆ set_parameters()

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

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

We

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

Definition at line 141 of file rb_parametrized.C.

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

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

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

◆ set_rb_theta_expansion()

void libMesh::RBSCMEvaluation::set_rb_theta_expansion ( RBThetaExpansion rb_theta_expansion_in)

Set the RBThetaExpansion object.

Definition at line 65 of file rb_scm_evaluation.C.

References rb_theta_expansion.

Referenced by main().

66 {
67  rb_theta_expansion = &rb_theta_expansion_in;
68 }
RBThetaExpansion * rb_theta_expansion
A pointer to to the object that stores the theta expansion.

◆ set_SCM_UB_vector()

void libMesh::RBSCMEvaluation::set_SCM_UB_vector ( unsigned int  j,
unsigned int  q,
Real  y_q 
)

Set entries of SCM_UB_vector, which stores the vector y, corresponding to the minimizing eigenvectors for the elements of C_J.

Definition at line 95 of file rb_scm_evaluation.C.

References SCM_UB_vectors.

Referenced by libMesh::RBSCMConstruction::evaluate_stability_constant().

96 {
97  // First make sure that j <= J
98  libmesh_error_msg_if(j >= SCM_UB_vectors.size(), "Error: We must have j < J in set_SCM_UB_vector.");
99 
100  // Next make sure that q <= Q_a or Q_a_hat
101  libmesh_error_msg_if(q >= SCM_UB_vectors[0].size(), "Error: q is too large in set_SCM_UB_vector.");
102 
103  SCM_UB_vectors[j][q] = y_q;
104 }
std::vector< std::vector< Real > > SCM_UB_vectors
This matrix stores the infimizing vectors y_1( ),...,y_Q_a( ), for each in C_J, which are used in co...

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

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

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

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

Member Data Documentation

◆ _communicator

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

◆ _counts

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

Actually holds the data.

Definition at line 124 of file reference_counter.h.

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

◆ _enable_print_counter

bool libMesh::ReferenceCounter::_enable_print_counter = true
staticprotectedinherited

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

Definition at line 143 of file reference_counter.h.

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

◆ _mutex

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

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 137 of file reference_counter.h.

◆ _n_objects

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

The number of objects.

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

Definition at line 132 of file reference_counter.h.

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

◆ B_max

std::vector<Real> libMesh::RBSCMEvaluation::B_max

◆ B_min

std::vector<Real> libMesh::RBSCMEvaluation::B_min

◆ C_J

std::vector<RBParameters > libMesh::RBSCMEvaluation::C_J

◆ C_J_stability_vector

std::vector<Real> libMesh::RBSCMEvaluation::C_J_stability_vector

◆ rb_theta_expansion

RBThetaExpansion* libMesh::RBSCMEvaluation::rb_theta_expansion
private

A pointer to to the object that stores the theta expansion.

This is not a std::unique_ptr since we may want to share it.

Note
A shared_ptr would be a good option here.

Definition at line 222 of file rb_scm_evaluation.h.

Referenced by get_rb_theta_expansion(), get_SCM_LB(), get_SCM_UB(), legacy_read_offline_data_from_files(), legacy_write_offline_data_to_files(), and set_rb_theta_expansion().

◆ saved_parameters

RBParameters libMesh::RBSCMEvaluation::saved_parameters
private

Vector in which to save a parameter set.

Useful in get_SCM_LB, for example.

Definition at line 214 of file rb_scm_evaluation.h.

Referenced by reload_current_parameters(), and save_current_parameters().

◆ SCM_UB_vectors

std::vector<std::vector<Real> > libMesh::RBSCMEvaluation::SCM_UB_vectors

This matrix stores the infimizing vectors y_1( \( \mu \)),...,y_Q_a( \( \mu \)), for each \( \mu \) in C_J, which are used in computing the SCM upper bounds.

Definition at line 206 of file rb_scm_evaluation.h.

Referenced by libMesh::RBSCMConstruction::enrich_C_J(), get_SCM_UB(), get_SCM_UB_vector(), legacy_read_offline_data_from_files(), legacy_write_offline_data_to_files(), libMesh::RBDataDeserialization::load_rb_scm_evaluation_data(), RBSCMEvaluation(), libMesh::RBSCMConstruction::resize_SCM_vectors(), and set_SCM_UB_vector().

◆ verbose_mode

bool libMesh::RBParametrized::verbose_mode
inherited

Public boolean to toggle verbose mode.

Definition at line 191 of file rb_parametrized.h.

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


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