libMesh::RBConstructionBase< Base > Class Template Reference

#include <rb_construction_base.h>

Inheritance diagram for libMesh::RBConstructionBase< Base >:

Public Types

typedef RBConstructionBase< Base > sys_type
 

Public Member Functions

 RBConstructionBase (EquationSystems &es, const std::string &name, const unsigned int number)
 
virtual ~RBConstructionBase ()
 
sys_typesystem ()
 
virtual void clear ()
 
void set_quiet_mode (bool quiet_mode_in)
 
bool is_quiet () const
 
numeric_index_type get_n_training_samples () const
 
numeric_index_type get_local_n_training_samples () const
 
numeric_index_type get_first_local_training_index () const
 
numeric_index_type get_last_local_training_index () const
 
virtual void initialize_training_parameters (const RBParameters &mu_min, const RBParameters &mu_max, unsigned int n_training_parameters, std::map< std::string, bool > log_param_scale, bool deterministic=true)
 
virtual void load_training_set (std::map< std::string, std::vector< Number >> &new_training_set)
 
void broadcast_parameters (unsigned int proc_id)
 
void set_training_random_seed (unsigned int seed)
 
void set_deterministic_training_parameter_name (const std::string &name)
 
const std::string & get_deterministic_training_parameter_name () const
 
void set_deterministic_training_parameter_repeats (unsigned int repeats)
 
unsigned int get_deterministic_training_parameter_repeats () const
 
void initialize_parameters (const RBParameters &mu_min_in, const RBParameters &mu_max_in, const std::map< std::string, std::vector< Real >> &discrete_parameter_values)
 
void initialize_parameters (const RBParametrized &rb_parametrized)
 
unsigned int get_n_params () const
 
unsigned int get_n_continuous_params () const
 
unsigned int get_n_discrete_params () const
 
std::set< std::string > get_parameter_names () 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_data_to_files (const std::string &continuous_param_file_name, const std::string &discrete_param_file_name, const bool write_binary_data)
 
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)
 
bool is_discrete_parameter (const std::string &mu_name) const
 
const std::map< std::string, std::vector< Real > > & get_discrete_parameter_values () const
 
void print_discrete_parameter_values () const
 

Static Public Member Functions

static Real get_closest_value (Real value, const std::vector< Real > &list_of_values)
 
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

bool verbose_mode
 

Protected Types

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

Protected Member Functions

virtual void init_data ()
 
RBParameters get_params_from_training_set (unsigned int index)
 
void set_params_from_training_set (unsigned int index)
 
virtual void set_params_from_training_set_and_broadcast (unsigned int index)
 
void increment_constructor_count (const std::string &name)
 
void increment_destructor_count (const std::string &name)
 

Static Protected Member Functions

static void get_global_max_error_pair (const Parallel::Communicator &communicator, std::pair< numeric_index_type, Real > &error_pair)
 
static void generate_training_parameters_random (const Parallel::Communicator &communicator, std::map< std::string, bool > log_param_scale, std::map< std::string, std::unique_ptr< NumericVector< Number >>> &training_parameters_in, unsigned int n_training_samples_in, const RBParameters &min_parameters, const RBParameters &max_parameters, int training_parameters_random_seed=-1, bool serial_training_set=false)
 
static void generate_training_parameters_deterministic (const Parallel::Communicator &communicator, std::map< std::string, bool > log_param_scale, std::map< std::string, std::unique_ptr< NumericVector< Number >>> &training_parameters_in, unsigned int n_training_samples_in, const RBParameters &min_parameters, const RBParameters &max_parameters, bool serial_training_set=false)
 

Protected Attributes

bool quiet_mode
 
bool serial_training_set
 
std::unique_ptr< NumericVector< Number > > inner_product_storage_vector
 

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 Attributes

bool training_parameters_initialized
 
std::map< std::string, std::unique_ptr< NumericVector< Number > > > training_parameters
 
int training_parameters_random_seed
 

Detailed Description

template<class Base>
class libMesh::RBConstructionBase< Base >

This class is part of the rbOOmit framework.

This is the base class for the Construction stage of the certified reduced basis (RB) method. We template the Base class so that we can derive from the appropriate libMesh System type (e.g. LinearImplicitSystem for standard reduced basis, EigenSystem for SCM) at compile time.

Author
David J. Knezevic
Date
2009

Definition at line 54 of file rb_construction_base.h.

Member Typedef Documentation

◆ Counts

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

Data structure to log the information. The log is identified by the class name.

Definition at line 117 of file reference_counter.h.

◆ sys_type

template<class Base>
typedef RBConstructionBase<Base> libMesh::RBConstructionBase< Base >::sys_type

The type of system.

Definition at line 74 of file rb_construction_base.h.

Constructor & Destructor Documentation

◆ RBConstructionBase()

template<class Base>
libMesh::RBConstructionBase< Base >::RBConstructionBase ( EquationSystems es,
const std::string &  name,
const unsigned int  number 
)

Constructor. Initializes required data structures.

◆ ~RBConstructionBase()

template<class Base>
virtual libMesh::RBConstructionBase< Base >::~RBConstructionBase ( )
virtual

Destructor.

Member Function Documentation

◆ broadcast_parameters()

template<class Base>
void libMesh::RBConstructionBase< Base >::broadcast_parameters ( unsigned int  proc_id)

Broadcasts parameters on processor proc_id to all processors.

◆ clear()

template<class Base>
virtual void libMesh::RBConstructionBase< Base >::clear ( )
virtual

◆ disable_print_counter_info()

void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

Definition at line 106 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

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

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

◆ enable_print_counter_info()

void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

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

Definition at line 100 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

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

◆ generate_training_parameters_deterministic()

template<class Base>
static void libMesh::RBConstructionBase< Base >::generate_training_parameters_deterministic ( const Parallel::Communicator communicator,
std::map< std::string, bool >  log_param_scale,
std::map< std::string, std::unique_ptr< NumericVector< Number >>> &  training_parameters_in,
unsigned int  n_training_samples_in,
const RBParameters min_parameters,
const RBParameters max_parameters,
bool  serial_training_set = false 
)
staticprotected

Static helper function for generating a deterministic set of parameters. Only works with 1 or 2 parameters (as defined by the lengths of min/max parameters vectors), otherwise throws an error.

◆ generate_training_parameters_random()

template<class Base>
static void libMesh::RBConstructionBase< Base >::generate_training_parameters_random ( const Parallel::Communicator communicator,
std::map< std::string, bool >  log_param_scale,
std::map< std::string, std::unique_ptr< NumericVector< Number >>> &  training_parameters_in,
unsigned int  n_training_samples_in,
const RBParameters min_parameters,
const RBParameters max_parameters,
int  training_parameters_random_seed = -1,
bool  serial_training_set = false 
)
staticprotected

Static helper function for generating a randomized set of parameters.

◆ get_closest_value()

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

◆ get_deterministic_training_parameter_name()

template<class Base>
const std::string& libMesh::RBConstructionBase< Base >::get_deterministic_training_parameter_name ( ) const

Get the name of the parameter that we will generate deterministic training parameters for.

◆ get_deterministic_training_parameter_repeats()

template<class Base>
unsigned int libMesh::RBConstructionBase< Base >::get_deterministic_training_parameter_repeats ( ) const

Get the number of times each sample of the deterministic training parameter is repeated.

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

◆ get_first_local_training_index()

template<class Base>
numeric_index_type libMesh::RBConstructionBase< Base >::get_first_local_training_index ( ) const

Get the first local index of the training parameters.

◆ get_global_max_error_pair()

template<class Base>
static void libMesh::RBConstructionBase< Base >::get_global_max_error_pair ( const Parallel::Communicator communicator,
std::pair< numeric_index_type, Real > &  error_pair 
)
staticprotected

Static function to return the error pair (index,error) that is corresponds to the largest error on all processors.

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

◆ get_last_local_training_index()

template<class Base>
numeric_index_type libMesh::RBConstructionBase< Base >::get_last_local_training_index ( ) const

Get the last local index of the training parameters.

◆ get_local_n_training_samples()

template<class Base>
numeric_index_type libMesh::RBConstructionBase< Base >::get_local_n_training_samples ( ) const

Get the total number of training samples local to this processor.

◆ get_n_continuous_params()

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

Get the number of continuous parameters.

◆ get_n_discrete_params()

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

Get the number of discrete parameters.

◆ get_n_params()

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

Get the number of parameters.

◆ get_n_training_samples()

template<class Base>
numeric_index_type libMesh::RBConstructionBase< Base >::get_n_training_samples ( ) const

Get the total number of training samples.

◆ get_parameter_max()

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

Get maximum allowable value of parameter param_name.

◆ get_parameter_min()

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

Get minimum allowable value of parameter param_name.

◆ get_parameter_names()

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

Get a set that stores the parameter names.

◆ get_parameters()

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

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

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

◆ get_params_from_training_set()

template<class Base>
RBParameters libMesh::RBConstructionBase< Base >::get_params_from_training_set ( unsigned int  index)
protected

Return the RBParameters in index index of training set.

◆ increment_constructor_count()

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

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

Definition at line 181 of file reference_counter.h.

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

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

182 {
183  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
184  std::pair<unsigned int, unsigned int> & p = _counts[name];
185 
186  p.first++;
187 }
std::string name(const ElemQuality q)
Definition: elem_quality.C:42
spin_mutex spin_mtx
Definition: threads.C:29

◆ increment_destructor_count()

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

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

Definition at line 194 of file reference_counter.h.

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

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

195 {
196  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
197  std::pair<unsigned int, unsigned int> & p = _counts[name];
198 
199  p.second++;
200 }
std::string name(const ElemQuality q)
Definition: elem_quality.C:42
spin_mutex spin_mtx
Definition: threads.C:29

◆ init_data()

template<class Base>
virtual void libMesh::RBConstructionBase< Base >::init_data ( )
protectedvirtual

Initializes the member data fields associated with the system, so that, e.g., assemble() may be used.

Reimplemented in libMesh::RBEIMConstruction.

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

◆ initialize_parameters() [2/2]

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

Initialize the parameter ranges and set current_parameters.

◆ initialize_training_parameters()

template<class Base>
virtual void libMesh::RBConstructionBase< Base >::initialize_training_parameters ( const RBParameters mu_min,
const RBParameters mu_max,
unsigned int  n_training_parameters,
std::map< std::string, bool >  log_param_scale,
bool  deterministic = true 
)
virtual

Initialize the parameter ranges and indicate whether deterministic or random training parameters should be used and whether or not we want the parameters to be scaled logarithmically.

◆ is_discrete_parameter()

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

Is parameter mu_name discrete?

◆ is_quiet()

template<class Base>
bool libMesh::RBConstructionBase< Base >::is_quiet ( ) const
inline

Is the system in quiet mode?

Definition at line 98 of file rb_construction_base.h.

99  { return this->quiet_mode; }

◆ load_training_set()

template<class Base>
virtual void libMesh::RBConstructionBase< Base >::load_training_set ( std::map< std::string, std::vector< Number >> &  new_training_set)
virtual

Overwrite the training parameters with new_training_set.

◆ n_objects()

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

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

Definition at line 83 of file reference_counter.h.

References libMesh::ReferenceCounter::_n_objects.

84  { return _n_objects; }
static Threads::atomic< unsigned int > _n_objects

◆ print_discrete_parameter_values()

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

Print out all the discrete parameter values.

◆ print_info()

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

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

Definition at line 87 of file reference_counter.C.

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

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

◆ print_parameters()

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

Print the current parameters.

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

◆ set_deterministic_training_parameter_name()

template<class Base>
void libMesh::RBConstructionBase< Base >::set_deterministic_training_parameter_name ( const std::string &  name)

In some cases we only want to allow discrete parameter values, instead of parameters that may take any value in a specified interval. Here we provide a method to set the d Set the discrete values for parameter mu that are allowed in the training set. This must be called before the training set is generated. Set the name of the parameter that we will generate deterministic training parameters for. Defaults to "NONE".

◆ set_deterministic_training_parameter_repeats()

template<class Base>
void libMesh::RBConstructionBase< Base >::set_deterministic_training_parameter_repeats ( unsigned int  repeats)

Set the number of times each sample of the deterministic training parameter is repeated.

◆ set_parameters()

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

Set the current parameters to params

◆ set_params_from_training_set()

template<class Base>
void libMesh::RBConstructionBase< Base >::set_params_from_training_set ( unsigned int  index)
protected

Set parameters to the RBParameters stored in index index of the training set.

◆ set_params_from_training_set_and_broadcast()

template<class Base>
virtual void libMesh::RBConstructionBase< Base >::set_params_from_training_set_and_broadcast ( unsigned int  index)
protectedvirtual

Load the specified training parameter and then broadcast to all processors.

◆ set_quiet_mode()

template<class Base>
void libMesh::RBConstructionBase< Base >::set_quiet_mode ( bool  quiet_mode_in)
inline

Set the quiet_mode flag. If quiet == false then we print out a lot of extra information during the Offline stage.

Definition at line 92 of file rb_construction_base.h.

93  { this->quiet_mode = quiet_mode_in; }

◆ set_training_random_seed()

template<class Base>
void libMesh::RBConstructionBase< Base >::set_training_random_seed ( unsigned int  seed)

Set the seed that is used to randomly generate training parameters.

◆ system()

template<class Base>
sys_type& libMesh::RBConstructionBase< Base >::system ( )
inline
Returns
A reference to *this.

Definition at line 79 of file rb_construction_base.h.

79 { return *this; }

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

Member Data Documentation

◆ _counts

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

◆ _enable_print_counter

bool libMesh::ReferenceCounter::_enable_print_counter = true
staticprotectedinherited

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

Definition at line 141 of file reference_counter.h.

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

◆ _mutex

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

Mutual exclusion object to enable thread-safe reference counting.

Definition at line 135 of file reference_counter.h.

◆ _n_objects

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

The number of objects. Print the reference count information when the number returns to 0.

Definition at line 130 of file reference_counter.h.

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

◆ inner_product_storage_vector

template<class Base>
std::unique_ptr<NumericVector<Number> > libMesh::RBConstructionBase< Base >::inner_product_storage_vector
protected

We keep an extra temporary vector that is useful for performing inner products (avoids unnecessary memory allocation/deallocation).

Definition at line 254 of file rb_construction_base.h.

◆ quiet_mode

template<class Base>
bool libMesh::RBConstructionBase< Base >::quiet_mode
protected

Flag to indicate whether we print out extra information during the Offline stage.

Definition at line 239 of file rb_construction_base.h.

Referenced by libMesh::RBConstructionBase< CondensedEigenSystem >::is_quiet(), and libMesh::RBConstructionBase< CondensedEigenSystem >::set_quiet_mode().

◆ serial_training_set

template<class Base>
bool libMesh::RBConstructionBase< Base >::serial_training_set
protected

This boolean flag indicates whether or not the training set should be the same on all processors. By default it is false, but in the case of the Empirical Interpolation Method (RBEIMConstruction), for example, we need the training set to be identical on all processors.

Definition at line 247 of file rb_construction_base.h.

◆ training_parameters

template<class Base>
std::map<std::string, std::unique_ptr<NumericVector<Number> > > libMesh::RBConstructionBase< Base >::training_parameters
private

The training samples.

Definition at line 268 of file rb_construction_base.h.

◆ training_parameters_initialized

template<class Base>
bool libMesh::RBConstructionBase< Base >::training_parameters_initialized
private

Boolean flag to indicate whether or not the parameter ranges have been initialized.

Definition at line 263 of file rb_construction_base.h.

◆ training_parameters_random_seed

template<class Base>
int libMesh::RBConstructionBase< Base >::training_parameters_random_seed
private

If < 0, use std::time() * processor_id() to seed the random number generator for the training parameters (default). If >= 0, use the provided value * processor_id() as the random number generator seed.

Definition at line 276 of file rb_construction_base.h.

◆ verbose_mode

bool libMesh::RBParametrized::verbose_mode
inherited

Public boolean to toggle verbose mode.

Definition at line 170 of file rb_parametrized.h.


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