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

This class represents a subset of the dofs of a System, selected by the subdomain_id and possible the variable numbers. More...

#include <system_subset_by_subdomain.h>

Inheritance diagram for libMesh::SystemSubsetBySubdomain:
[legend]

Classes

class  SubdomainSelection
 Subclass for user-specified selection of subdomain ids to be included in a SystemSubset. More...
 
class  SubdomainSelectionByList
 Selection of subdomain ids by a list. More...
 

Public Member Functions

 SystemSubsetBySubdomain (const System &system, const SubdomainSelection &subdomain_selection, const std::set< unsigned int > *const var_nums=nullptr)
 Constructor. More...
 
 SystemSubsetBySubdomain (const System &system, const std::set< subdomain_id_type > &subdomain_ids, const std::set< unsigned int > *const var_nums=nullptr)
 Constructor. More...
 
virtual ~SystemSubsetBySubdomain ()
 Destructor. More...
 
virtual const std::vector< unsigned int > & dof_ids () const override
 
void init (const SubdomainSelection &subdomain_selection)
 Initializes the class. More...
 
void init (const std::set< subdomain_id_type > &subdomain_ids)
 Initializes the class. More...
 
const Systemget_system () const
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static std::string get_info ()
 Gets a string containing the reference information. More...
 
static void print_info (std::ostream &out=libMesh::out)
 Prints the reference information, by default to libMesh::out. More...
 
static unsigned int n_objects ()
 Prints the number of outstanding (created, but not yet destroyed) objects. More...
 
static void enable_print_counter_info ()
 Methods to enable/disable the reference counter output from print_info() More...
 
static void disable_print_counter_info ()
 

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 set_var_nums (const std::set< unsigned int > *const var_nums)
 Sets _var_nums to either a copy of var_nums or, if that is nullptr, a set of all variable numbers that occur in the system. More...
 
void increment_constructor_count (const std::string &name)
 Increments the construction counter. More...
 
void increment_destructor_count (const std::string &name)
 Increments the destruction counter. More...
 

Protected Attributes

std::set< unsigned int > _var_nums
 The set of all variable numbers that are contained in the subset. More...
 
std::vector< unsigned int > _dof_ids
 The actual set of the dof ids. More...
 
const System_system
 A reference to the System we belong to. More...
 
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
 Flag to control whether reference count information is printed when print_info is called. More...
 

Detailed Description

This class represents a subset of the dofs of a System, selected by the subdomain_id and possible the variable numbers.

The dofs in the subset will be sorted.

Author
Tim Kroeger
Date
2010

Definition at line 45 of file system_subset_by_subdomain.h.

Member Typedef Documentation

◆ Counts

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

Data structure to log the information.

The log is identified by the class name.

Definition at line 117 of file reference_counter.h.

Constructor & Destructor Documentation

◆ SystemSubsetBySubdomain() [1/2]

libMesh::SystemSubsetBySubdomain::SystemSubsetBySubdomain ( const System system,
const SubdomainSelection subdomain_selection,
const std::set< unsigned int > *const  var_nums = nullptr 
)

Constructor.

The subset will consist of those dofs which are associated to at least one mesh element that has a subdomain id contained in the subdomain_selection. If var_nums is not a nullptr, dofs that are associated to a variable number that is not contained in var_nums will not contain to the subset, no matter what elements they belong to.

◆ SystemSubsetBySubdomain() [2/2]

libMesh::SystemSubsetBySubdomain::SystemSubsetBySubdomain ( const System system,
const std::set< subdomain_id_type > &  subdomain_ids,
const std::set< unsigned int > *const  var_nums = nullptr 
)

Constructor.

The subset will consist of those dofs which are associated to at least one mesh element that has a subdomain id contained in the set subdomain_ids. If var_nums is not a nullptr, dofs that are associated to a variable number that is not contained in var_nums will not contain to the subset, no matter what elements they belong to.

◆ ~SystemSubsetBySubdomain()

virtual libMesh::SystemSubsetBySubdomain::~SystemSubsetBySubdomain ( )
virtual

Destructor.

Member Function Documentation

◆ comm()

const Parallel::Communicator& libMesh::ParallelObject::comm ( ) const
inherited

◆ disable_print_counter_info()

static void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited

◆ dof_ids()

virtual const std::vector<unsigned int>& libMesh::SystemSubsetBySubdomain::dof_ids ( ) const
overridevirtual
Returns
The actual set of dofs that the subset consists of.

The result will contain local dofs on each processor only and will not contain duplicates.

Implements libMesh::SystemSubset.

◆ enable_print_counter_info()

static void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

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

◆ get_info()

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

Gets a string containing the reference information.

◆ get_system()

const System& libMesh::SystemSubset::get_system ( ) const
inherited
Returns
The System to which we belong.

◆ increment_constructor_count()

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

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)
static Counts _counts
Actually holds the data.
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.

◆ increment_destructor_count()

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

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)
static Counts _counts
Actually holds the data.
spin_mutex spin_mtx
A convenient spin mutex object which can be used for obtaining locks.

◆ init() [1/2]

void libMesh::SystemSubsetBySubdomain::init ( const SubdomainSelection subdomain_selection)

Initializes the class.

Will be called by the constructors. Can also be called manually to update the subset. This is required if (a) the subdomain ids of some elements have changed in the meantime and you want these changes to take effect, or (b) you want to use a different SubdomainSelection object now.

◆ init() [2/2]

void libMesh::SystemSubsetBySubdomain::init ( const std::set< subdomain_id_type > &  subdomain_ids)

Initializes the class.

Will be called by the constructors. Can also be called manually to update the subset. This is required if (a) the subdomain ids of some elements have changed in the meantime and you want these changes to take effect, or (b) you want to use a different list of subdomain ids now.

◆ n_objects()

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

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
The number of objects.

◆ n_processors()

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

Definition at line 93 of file parallel_object.h.

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

Referenced by libMesh::MeshBase::partition().

94  { return cast_int<processor_id_type>(_communicator.size()); }
processor_id_type size() const
Definition: communicator.h:175
const Parallel::Communicator & _communicator

◆ print_info()

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

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

◆ processor_id()

processor_id_type libMesh::ParallelObject::processor_id ( ) const
inherited

◆ set_var_nums()

void libMesh::SystemSubsetBySubdomain::set_var_nums ( const std::set< unsigned int > *const  var_nums)
protected

Sets _var_nums to either a copy of var_nums or, if that is nullptr, a set of all variable numbers that occur in the system.

Member Data Documentation

◆ _communicator

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

◆ _counts

Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited

◆ _dof_ids

std::vector<unsigned int> libMesh::SystemSubsetBySubdomain::_dof_ids
protected

The actual set of the dof ids.

Definition at line 194 of file system_subset_by_subdomain.h.

◆ _enable_print_counter

bool libMesh::ReferenceCounter::_enable_print_counter
staticprotectedinherited

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

Definition at line 141 of file reference_counter.h.

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

◆ _system

const System& libMesh::SystemSubset::_system
protectedinherited

A reference to the System we belong to.

Definition at line 75 of file system_subset.h.

◆ _var_nums

std::set<unsigned int> libMesh::SystemSubsetBySubdomain::_var_nums
protected

The set of all variable numbers that are contained in the subset.

This will be set by the constructor to either a copy of its var_nums argument or, if that is nullptr, a set of all variable numbers that occur in the system.

Definition at line 189 of file system_subset_by_subdomain.h.


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