libMesh::RBEIMEvaluation Class Reference

#include <rb_eim_evaluation.h>

Inheritance diagram for libMesh::RBEIMEvaluation:

Public Types

typedef RBEvaluation Parent
 

Public Member Functions

 RBEIMEvaluation (const libMesh::Parallel::Communicator &comm LIBMESH_CAN_DEFAULT_TO_COMMWORLD)
 
virtual ~RBEIMEvaluation ()
 
virtual void clear ()
 
virtual void resize_data_structures (const unsigned int Nmax, bool resize_error_bound_data=true)
 
void attach_parametrized_function (RBParametrizedFunction *pf)
 
unsigned int get_n_parametrized_functions () const
 
Number evaluate_parametrized_function (unsigned int var_index, const Point &p, const Elem &elem)
 
virtual Real rb_solve (unsigned int N)
 
void rb_solve (DenseVector< Number > &EIM_rhs)
 
void initialize_eim_theta_objects ()
 
std::vector< RBTheta * > get_eim_theta_objects ()
 
virtual AutoPtr< RBThetabuild_eim_theta (unsigned int index)
 
virtual void write_offline_data_to_files (const std::string &directory_name="offline_data", const bool write_binary_data=true)
 
virtual void read_offline_data_from_files (const std::string &directory_name="offline_data", bool read_error_bound_data=true, const bool read_binary_data=true)
 
void set_rb_theta_expansion (RBThetaExpansion &rb_theta_expansion_in)
 
RBThetaExpansionget_rb_theta_expansion ()
 
bool is_rb_theta_expansion_initialized () const
 
NumericVector< Number > & get_basis_function (unsigned int i)
 
virtual Real get_rb_solution_norm ()
 
virtual Real compute_residual_dual_norm (const unsigned int N)
 
virtual Real residual_scaling_denom (Real alpha_LB)
 
Real eval_output_dual_norm (unsigned int n, const RBParameters &mu)
 
virtual Real get_stability_lower_bound ()
 
virtual unsigned int get_n_basis_functions () const
 
virtual void set_n_basis_functions (unsigned int n_bfs)
 
virtual void clear_riesz_representors ()
 
virtual void write_out_basis_functions (System &sys, const std::string &directory_name="offline_data", const bool write_binary_basis_functions=true)
 
virtual void write_out_vectors (System &sys, std::vector< NumericVector< Number > * > &vectors, const std::string &directory_name="offline_data", const std::string &data_name="bf", const bool write_binary_basis_functions=true)
 
virtual void read_in_basis_functions (System &sys, const std::string &directory_name="offline_data", const bool read_binary_basis_functions=true)
 
virtual void read_in_vectors (System &sys, std::vector< NumericVector< Number > * > &vectors, const std::string &directory_name, const std::string &data_name, const bool read_binary_vectors)
 
void initialize_parameters (const RBParameters &mu_min_in, const RBParameters &mu_max_in, const RBParameters &mu_in)
 
void initialize_parameters (const RBParametrized &rb_parametrized)
 
unsigned int get_n_params () const
 
const RBParametersget_parameters () const
 
void set_parameters (const RBParameters &params)
 
const RBParametersget_parameters_min () const
 
const RBParametersget_parameters_max () const
 
Real get_parameter_min (const std::string &param_name) const
 
Real get_parameter_max (const std::string &param_name) const
 
void print_parameters () const
 
void write_parameter_ranges_to_file (const std::string &file_name, const bool write_binary)
 
void read_parameter_ranges_from_file (const std::string &file_name, const bool read_binary)
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static std::string get_io_version_string ()
 
static std::string get_info ()
 
static void print_info (std::ostream &out=libMesh::out)
 
static unsigned int n_objects ()
 
static void enable_print_counter_info ()
 
static void disable_print_counter_info ()
 

Public Attributes

DenseMatrix< Numberinterpolation_matrix
 
std::vector< Pointinterpolation_points
 
std::vector< unsigned int > interpolation_points_var
 
std::vector< Elem * > interpolation_points_elem
 
Point extra_interpolation_point
 
unsigned int extra_interpolation_point_var
 
Elemextra_interpolation_point_elem
 
DenseVector< Numberextra_interpolation_matrix_row
 
std::vector< NumericVector
< Number > * > 
basis_functions
 
std::vector< RBParametersgreedy_param_list
 
DenseMatrix< NumberRB_inner_product_matrix
 
std::vector< DenseMatrix
< Number > > 
RB_Aq_vector
 
std::vector< DenseVector
< Number > > 
RB_Fq_vector
 
DenseVector< NumberRB_solution
 
std::vector< std::vector
< DenseVector< Number > > > 
RB_output_vectors
 
std::vector< NumberRB_outputs
 
std::vector< RealRB_output_error_bounds
 
std::vector< NumberFq_representor_innerprods
 
std::vector< std::vector
< std::vector< Number > > > 
Fq_Aq_representor_innerprods
 
std::vector< std::vector
< std::vector< Number > > > 
Aq_Aq_representor_innerprods
 
std::vector< std::vector
< Number > > 
output_dual_innerprods
 
std::vector< std::vector
< NumericVector< Number > * > > 
Aq_representor
 
bool evaluate_RB_error_bound
 
bool compute_RB_inner_product
 
bool verbose_mode
 

Protected Types

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

Protected Member Functions

void increment_constructor_count (const std::string &name)
 
void increment_destructor_count (const std::string &name)
 

Protected Attributes

const Parallel::Communicator_communicator
 

Static Protected Attributes

static Counts _counts
 
static Threads::atomic
< unsigned int > 
_n_objects
 
static Threads::spin_mutex _mutex
 
static bool _enable_print_counter = true
 

Private Member Functions

void write_out_interpolation_points_elem (const std::string directory_name)
 
void read_in_interpolation_points_elem (const std::string directory_name)
 

Private Attributes

std::vector
< RBParametrizedFunction * > 
_parametrized_functions
 
std::vector< RBTheta * > _rb_eim_theta_objects
 
RBThetaExpansion _empty_rb_theta_expansion
 
RBParameters _previous_parameters
 
unsigned int _previous_N
 
Real _previous_error_bound
 
SerialMesh _interpolation_points_mesh
 

Detailed Description

This class is part of the rbOOmit framework.

RBEIMEvaluation extends RBEvaluation to encapsulate the code and data required to perform "online" evaluations for EIM approximations.

Author
David J. Knezevic, 2011

Definition at line 52 of file rb_eim_evaluation.h.

Member Typedef Documentation

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 113 of file reference_counter.h.

The type of the parent.

Definition at line 70 of file rb_eim_evaluation.h.

Constructor & Destructor Documentation

libMesh::RBEIMEvaluation::RBEIMEvaluation ( const libMesh::Parallel::Communicator &comm  LIBMESH_CAN_DEFAULT_TO_COMMWORLD)

Constructor.

virtual libMesh::RBEIMEvaluation::~RBEIMEvaluation ( )
virtual

Destructor.

Member Function Documentation

void libMesh::RBEIMEvaluation::attach_parametrized_function ( RBParametrizedFunction pf)

Attach the parametrized function that we will approximate using the Empirical Interpolation Method.

virtual AutoPtr<RBTheta> libMesh::RBEIMEvaluation::build_eim_theta ( unsigned int  index)
virtual

Build a theta object corresponding to EIM index index. The default implementation builds an RBEIMTheta object, possibly override in subclasses if we need more specialized behavior.

virtual void libMesh::RBEIMEvaluation::clear ( )
virtual

Clear this object.

Reimplemented from libMesh::RBEvaluation.

virtual void libMesh::RBEvaluation::clear_riesz_representors ( )
virtualinherited

Clear all the Riesz representors that are used to compute the RB residual (and hence error bound). This is useful since once we complete the Greedy we may not need the representors any more.

Reimplemented in libMesh::TransientRBEvaluation.

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

Definition at line 86 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_petsc_snes_jacobian(), libMesh::__libmesh_petsc_snes_residual(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::MetisPartitioner::_do_partition(), libMesh::ParmetisPartitioner::_do_repartition(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult_add(), libMesh::EquationSystems::_read_impl(), libMesh::MeshRefinement::_refine_elements(), libMesh::ParallelMesh::add_elem(), libMesh::ImplicitSystem::add_matrix(), libMesh::ParallelMesh::add_node(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::bounding_box(), libMesh::System::calculate_norm(), libMesh::MeshRefinement::coarsen_elements(), 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::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMLibMeshSetSystem(), DMVariableBounds_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::for(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::LocationMap< T >::init(), libMesh::PetscDiffSolver::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::ParmetisPartitioner::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::ParallelMesh::libmesh_assert_valid_parallel_flags(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshSerializer::MeshSerializer(), libMesh::ParallelMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::MeshTools::n_p_levels(), libMesh::ParallelMesh::parallel_max_elem_id(), libMesh::ParallelMesh::parallel_max_node_id(), libMesh::ParallelMesh::parallel_n_elem(), libMesh::ParallelMesh::parallel_n_nodes(), libMesh::Partitioner::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::prepare_for_use(), libMesh::System::project_vector(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), 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::MeshBase::recalculate_n_partitions(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::UnstructuredMesh::write(), libMesh::LegacyXdrIO::write_mesh(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), and libMesh::DivaIO::write_stream().

87  { return _communicator; }
virtual Real libMesh::RBEvaluation::compute_residual_dual_norm ( const unsigned int  N)
virtualinherited

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

Reimplemented in libMesh::TransientRBEvaluation.

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 106 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

107 {
108  _enable_print_counter = false;
109  return;
110 }
void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

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

Definition at line 100 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

101 {
102  _enable_print_counter = true;
103  return;
104 }
Real libMesh::RBEvaluation::eval_output_dual_norm ( unsigned int  n,
const RBParameters mu 
)
inherited

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

Number libMesh::RBEIMEvaluation::evaluate_parametrized_function ( unsigned int  var_index,
const Point p,
const Elem elem 
)
Returns
the value of the parametrized function that is being approximated at the point p. var_index specifies the variable (i.e. the parametrized function index) to be evaluated. elem specifies the element of the mesh that contains p.
NumericVector<Number>& libMesh::RBEvaluation::get_basis_function ( unsigned int  i)
inherited

Get a reference to the i^th basis function.

std::vector<RBTheta*> libMesh::RBEIMEvaluation::get_eim_theta_objects ( )
Returns
the vector of theta objects that point to this RBEIMEvaluation.
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 (Counts::iterator it = _counts.begin();
59  it != _counts.end(); ++it)
60  {
61  const std::string name(it->first);
62  const unsigned int creations = it->second.first;
63  const unsigned int destructions = it->second.second;
64 
65  oss << "| " << name << " reference count information:\n"
66  << "| Creations: " << creations << '\n'
67  << "| Destructions: " << destructions << '\n';
68  }
69 
70  oss << " ---------------------------------------------------------------------------- \n";
71 
72  return oss.str();
73 
74 #else
75 
76  return "";
77 
78 #endif
79 }
static std::string libMesh::RBEvaluation::get_io_version_string ( )
staticinherited

Version string that we need to use for writing/reading basis functions.

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

Get the current number of basis functions.

Definition at line 148 of file rb_evaluation.h.

References libMesh::RBEvaluation::basis_functions.

149  { return libmesh_cast_int<unsigned int>(basis_functions.size()); }
unsigned int libMesh::RBEIMEvaluation::get_n_parametrized_functions ( ) const

Get the number of parametrized functions that have been attached to this system.

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

Get the number of parameters.

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

Get maximum allowable value of parameter param_name.

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

Get minimum allowable value of parameter param_name.

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

Get the current parameters.

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

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

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

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

virtual Real libMesh::RBEvaluation::get_rb_solution_norm ( )
virtualinherited

Return the norm of RB_solution.

Reimplemented in libMesh::TransientRBEvaluation.

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

Get a reference to the rb_theta_expansion.

virtual Real libMesh::RBEvaluation::get_stability_lower_bound ( )
virtualinherited

Get a lower bound for the stability constant (e.g. coercivity constant or inf-sup constant) at the current parameter value.

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

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

Definition at line 163 of file reference_counter.h.

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

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

164 {
165  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
166  std::pair<unsigned int, unsigned int>& p = _counts[name];
167 
168  p.first++;
169 }
void libMesh::ReferenceCounter::increment_destructor_count ( const std::string &  name)
inlineprotectedinherited

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

Definition at line 176 of file reference_counter.h.

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

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

177 {
178  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
179  std::pair<unsigned int, unsigned int>& p = _counts[name];
180 
181  p.second++;
182 }
void libMesh::RBEIMEvaluation::initialize_eim_theta_objects ( )

Build a vector of RBTheta objects that accesses the components of the RB_solution member variable of this RBEvaluation. Store these objects in the member vector rb_theta_objects.

void libMesh::RBParametrized::initialize_parameters ( const RBParameters mu_min_in,
const RBParameters mu_max_in,
const RBParameters mu_in 
)
inherited

Initialize the parameter ranges and set current_parameters.

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

Initialize the parameter ranges and set current_parameters.

bool libMesh::RBEvaluation::is_rb_theta_expansion_initialized ( ) const
inherited
Returns
true if the theta expansion has been initialized.
static unsigned int libMesh::ReferenceCounter::n_objects ( )
inlinestaticinherited

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

Definition at line 79 of file reference_counter.h.

References libMesh::ReferenceCounter::_n_objects.

80  { return _n_objects; }
processor_id_type libMesh::ParallelObject::n_processors ( ) const
inlineinherited
Returns
the number of processors in the group.

Definition at line 92 of file parallel_object.h.

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

Referenced by libMesh::ParmetisPartitioner::_do_repartition(), libMesh::ParallelMesh::add_elem(), libMesh::ParallelMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::ParallelMesh::assign_unique_ids(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::ParallelMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshBase::get_info(), libMesh::EquationSystems::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshBase::n_active_elem_on_proc(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::Partitioner::partition(), libMesh::MeshBase::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::PetscLinearSolver< T >::PetscLinearSolver(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshTools::processor_bounding_box(), libMesh::System::project_vector(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::UnstructuredMesh::read(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::Partitioner::repartition(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::BoundaryInfo::sync(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::CheckpointIO::write(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().

93  { return libmesh_cast_int<processor_id_type>(_communicator.size()); }
void libMesh::ReferenceCounter::print_info ( std::ostream &  out = libMesh::out)
staticinherited

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

Definition at line 88 of file reference_counter.C.

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

89 {
91 }
void libMesh::RBParametrized::print_parameters ( ) const
inherited

Print the current parameters.

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

Definition at line 98 of file parallel_object.h.

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

Referenced by libMesh::MetisPartitioner::_do_partition(), libMesh::EquationSystems::_read_impl(), libMesh::SerialMesh::active_local_elements_begin(), libMesh::ParallelMesh::active_local_elements_begin(), libMesh::SerialMesh::active_local_elements_end(), libMesh::ParallelMesh::active_local_elements_end(), libMesh::SerialMesh::active_local_subdomain_elements_begin(), libMesh::ParallelMesh::active_local_subdomain_elements_begin(), libMesh::SerialMesh::active_local_subdomain_elements_end(), libMesh::ParallelMesh::active_local_subdomain_elements_end(), libMesh::SerialMesh::active_not_local_elements_begin(), libMesh::ParallelMesh::active_not_local_elements_begin(), libMesh::SerialMesh::active_not_local_elements_end(), libMesh::ParallelMesh::active_not_local_elements_end(), libMesh::ParallelMesh::add_elem(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::ParallelMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::DofMap::build_sparsity(), libMesh::ParallelMesh::clear(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::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_Helper::create(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), libMesh::MeshBase::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), 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::MeshFunction::gradient(), libMesh::MeshFunction::hessian(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_discontinuous(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::SerialMesh::local_elements_begin(), libMesh::ParallelMesh::local_elements_begin(), libMesh::SerialMesh::local_elements_end(), libMesh::ParallelMesh::local_elements_end(), libMesh::SerialMesh::local_level_elements_begin(), libMesh::ParallelMesh::local_level_elements_begin(), libMesh::SerialMesh::local_level_elements_end(), libMesh::ParallelMesh::local_level_elements_end(), libMesh::SerialMesh::local_nodes_begin(), libMesh::ParallelMesh::local_nodes_begin(), libMesh::SerialMesh::local_nodes_end(), libMesh::ParallelMesh::local_nodes_end(), libMesh::SerialMesh::local_not_level_elements_begin(), libMesh::ParallelMesh::local_not_level_elements_begin(), libMesh::SerialMesh::local_not_level_elements_end(), libMesh::ParallelMesh::local_not_level_elements_end(), libMesh::MeshRefinement::make_coarsening_compatible(), 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::SerialMesh::not_local_elements_begin(), libMesh::ParallelMesh::not_local_elements_begin(), libMesh::SerialMesh::not_local_elements_end(), libMesh::ParallelMesh::not_local_elements_end(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::SparsityPattern::Build::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::MeshFunction::operator()(), libMesh::ParallelMesh::ParallelMesh(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::System::project_vector(), 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::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::UnstructuredMesh::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), 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::MeshData::read_xdr(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::total_weight(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::MeshTools::weight(), libMesh::ExodusII_IO::write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::UnstructuredMesh::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_elements(), libMesh::ExodusII_IO_Helper::write_elements_discontinuous(), 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::ExodusII_IO_Helper::write_nodal_coordinates_discontinuous(), libMesh::UCDIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs(), 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_sidesets(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), and libMesh::ExodusII_IO_Helper::write_timestep().

99  { return libmesh_cast_int<processor_id_type>(_communicator.rank()); }
virtual Real libMesh::RBEIMEvaluation::rb_solve ( unsigned int  N)
virtual

Calculate the EIM approximation to parametrized_function using the first N EIM basis functions. Store the solution coefficients in the member RB_solution.

Returns
the EIM a posteriori error bound.

Reimplemented from libMesh::RBEvaluation.

void libMesh::RBEIMEvaluation::rb_solve ( DenseVector< Number > &  EIM_rhs)

Calculate the EIM approximation for the given right-hand side vector EIM_rhs. Store the solution coefficients in the member RB_solution.

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

Read in all the basis functions from file. sys is used for file IO directory_name specifies which directory to write files to read_binary_basis_functions indicates whether to expect binary or ASCII data

void libMesh::RBEIMEvaluation::read_in_interpolation_points_elem ( const std::string  directory_name)
private

Read int interpolation_points_elem from a mesh.

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

Same as read_in_basis_functions, except in this case we pass in the vectors to be written. We assume that the size of vectors indicates the number of vectors that need to be read in.

virtual void libMesh::RBEIMEvaluation::read_offline_data_from_files ( const std::string &  directory_name = "offline_data",
bool  read_error_bound_data = true,
const bool  read_binary_data = true 
)
virtual

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

Reimplemented from libMesh::RBEvaluation.

void libMesh::RBParametrized::read_parameter_ranges_from_file ( const std::string &  file_name,
const bool  read_binary 
)
inherited

Read in the parameter ranges from file. Initialize parameters to the "minimum" parameter values.

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

Specifies the residual scaling on the denominator to be used in the a posteriori error bound. Overload in subclass in order to obtain the desired error bound.

virtual void libMesh::RBEIMEvaluation::resize_data_structures ( const unsigned int  Nmax,
bool  resize_error_bound_data = true 
)
virtual

Resize the data structures for storing data associated with this object.

Reimplemented from libMesh::RBEvaluation.

virtual void libMesh::RBEvaluation::set_n_basis_functions ( unsigned int  n_bfs)
inlinevirtualinherited

Set the number of basis functions. Useful when reading in stored data.

Definition at line 155 of file rb_evaluation.h.

References libMesh::RBEvaluation::basis_functions.

155 { basis_functions.resize(n_bfs); }
void libMesh::RBParametrized::set_parameters ( const RBParameters params)
inherited

Set the current parameters to params

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

Set the RBThetaExpansion object.

virtual void libMesh::RBEIMEvaluation::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.

Reimplemented from libMesh::RBEvaluation.

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

Write out all the basis functions to file. sys is used for file IO directory_name specifies which directory to write files to read_binary_basis_functions indicates whether to expect binary or ASCII data

void libMesh::RBEIMEvaluation::write_out_interpolation_points_elem ( const std::string  directory_name)
private

Write out interpolation_points_elem by putting the elements into a mesh and writing out the mesh.

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

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

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

Write out the parameter ranges to file.

Member Data Documentation

ReferenceCounter::Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited
RBThetaExpansion libMesh::RBEIMEvaluation::_empty_rb_theta_expansion
private

We initialize RBEIMEvaluation so that it has an "empty" RBThetaExpansion, because this isn't used at all in the EIM.

Definition at line 227 of file rb_eim_evaluation.h.

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 137 of file reference_counter.h.

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

SerialMesh libMesh::RBEIMEvaluation::_interpolation_points_mesh
private

Mesh object that we use to store copies of the elements associated with interpolation points.

Definition at line 251 of file rb_eim_evaluation.h.

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

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 131 of file reference_counter.h.

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 126 of file reference_counter.h.

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

std::vector<RBParametrizedFunction*> libMesh::RBEIMEvaluation::_parametrized_functions
private

This vector stores the parametrized functions that will be approximated in this EIM system.

Definition at line 215 of file rb_eim_evaluation.h.

Real libMesh::RBEIMEvaluation::_previous_error_bound
private

Store the previous error bound returned by rb_solve (so we can return it if we are avoiding an unnecessary repeat solve).

Definition at line 245 of file rb_eim_evaluation.h.

unsigned int libMesh::RBEIMEvaluation::_previous_N
private

Store the number of basis functions used for the previous solve (so we can avoid an unnecessary repeat solve).

Definition at line 239 of file rb_eim_evaluation.h.

RBParameters libMesh::RBEIMEvaluation::_previous_parameters
private

Store the parameters at which the previous solve was performed (so we can avoid an unnecessary repeat solve).

Definition at line 233 of file rb_eim_evaluation.h.

std::vector<RBTheta*> libMesh::RBEIMEvaluation::_rb_eim_theta_objects
private

The vector of RBTheta objects that are created to point to this RBEIMEvaluation.

Definition at line 221 of file rb_eim_evaluation.h.

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

Definition at line 292 of file rb_evaluation.h.

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

Vector storing the residual representors associated with the left-hand side. These are basis dependent and hence stored here, whereas the Fq_representors are stored in RBSystem.

Definition at line 308 of file rb_evaluation.h.

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

The libMesh vectors storing the finite element coefficients of the RB basis functions.

Definition at line 233 of file rb_evaluation.h.

Referenced by libMesh::RBEvaluation::get_n_basis_functions(), and libMesh::RBEvaluation::set_n_basis_functions().

bool libMesh::RBEvaluation::compute_RB_inner_product
inherited

Boolean flag to indicate whether we compute the RB_inner_product_matrix.

Definition at line 319 of file rb_evaluation.h.

bool libMesh::RBEvaluation::evaluate_RB_error_bound
inherited

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

Definition at line 314 of file rb_evaluation.h.

DenseVector<Number> libMesh::RBEIMEvaluation::extra_interpolation_matrix_row

We also need a DenseVector to represent the corresponding "extra" row of the interpolation matrix.

Definition at line 196 of file rb_eim_evaluation.h.

Point libMesh::RBEIMEvaluation::extra_interpolation_point

We also need an extra interpolation point and associated variable and Elem for the "extra" solve we do at the end of the Greedy algorithm.

Definition at line 188 of file rb_eim_evaluation.h.

Elem* libMesh::RBEIMEvaluation::extra_interpolation_point_elem

Definition at line 190 of file rb_eim_evaluation.h.

unsigned int libMesh::RBEIMEvaluation::extra_interpolation_point_var

Definition at line 189 of file rb_eim_evaluation.h.

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

Vectors storing the residual representor inner products to be used in computing the residuals online. We store the Aq-dependent representor inner products because they depend on a reduced basis space. The basis independent representors are stored in RBSystem.

Definition at line 291 of file rb_evaluation.h.

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

Vectors storing the residual representor inner products to be used in computing the residuals online. These values are independent of a basis, hence they can be copied over directly from an RBSystem.

Definition at line 282 of file rb_evaluation.h.

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

The list of parameters selected by the Greedy algorithm in generating the Reduced Basis associated with this RBEvaluation object.

Definition at line 239 of file rb_evaluation.h.

DenseMatrix<Number> libMesh::RBEIMEvaluation::interpolation_matrix

Dense matrix that stores the lower triangular interpolation matrix that can be used

Definition at line 163 of file rb_eim_evaluation.h.

std::vector<Point> libMesh::RBEIMEvaluation::interpolation_points

The list of interpolation points, i.e. locations at which the basis functions are maximized.

Definition at line 169 of file rb_eim_evaluation.h.

std::vector<Elem*> libMesh::RBEIMEvaluation::interpolation_points_elem

The corresponding list of elements at which the interpolation points were identified.

Definition at line 181 of file rb_eim_evaluation.h.

std::vector<unsigned int> libMesh::RBEIMEvaluation::interpolation_points_var

The corresponding list of variables indices at which the interpolation points were identified.

Definition at line 175 of file rb_eim_evaluation.h.

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

The vector storing the dual norm inner product terms for each output. These values are independent of a basis, hence they can be copied over directly from an RBSystem.

Definition at line 300 of file rb_evaluation.h.

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

Dense matrices for the RB computations.

Definition at line 252 of file rb_evaluation.h.

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

Dense vector for the RHS.

Definition at line 257 of file rb_evaluation.h.

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

The inner product matrix. This should be close to the identity, we need to calculate this rather than assume diagonality in order to accurately perform projections since orthogonality degrades with increasing N.

Definition at line 247 of file rb_evaluation.h.

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

Definition at line 274 of file rb_evaluation.h.

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

The vectors storing the RB output vectors.

Definition at line 267 of file rb_evaluation.h.

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

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

Definition at line 273 of file rb_evaluation.h.

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

The RB solution vector.

Definition at line 262 of file rb_evaluation.h.

bool libMesh::RBParametrized::verbose_mode
inherited

Public boolean to toggle verbose mode.

Definition at line 135 of file rb_parametrized.h.


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

Site Created By: libMesh Developers
Last modified: February 07 2014 16:58:02 UTC

Hosted By:
SourceForge.net Logo