libMesh::ElemAssembly Class Reference

#include <elem_assembly.h>

Inheritance diagram for libMesh::ElemAssembly:

Public Member Functions

 ElemAssembly ()
 
virtual ~ElemAssembly ()
 
virtual void interior_assembly (FEMContext &)
 
virtual void boundary_assembly (FEMContext &)
 
virtual void get_nodal_values (std::vector< dof_id_type > &, DenseMatrix< Number > &, DenseVector< Number > &, const System &, const Node &)
 
virtual void get_nodal_rhs_values (std::map< numeric_index_type, Number > &values, const System &, const Node &)
 

Static Public Member Functions

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 is_nodal_rhs_values_overriden
 

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)
 

Static Protected Attributes

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

Detailed Description

ElemAssembly provides a per-element (interior and boundary) assembly functionality.

Author
David J. Knezevic
Date
2011

Definition at line 38 of file elem_assembly.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 119 of file reference_counter.h.

Constructor & Destructor Documentation

libMesh::ElemAssembly::ElemAssembly ( )
inline

Constructor. Initializes required data structures.

Definition at line 46 of file elem_assembly.h.

46  :
48  {}
virtual libMesh::ElemAssembly::~ElemAssembly ( )
inlinevirtual

Destructor.

Definition at line 53 of file elem_assembly.h.

53 {}

Member Function Documentation

virtual void libMesh::ElemAssembly::boundary_assembly ( FEMContext )
inlinevirtual

Perform the element boundary assembly.

Definition at line 63 of file elem_assembly.h.

63 { }
void libMesh::ReferenceCounter::disable_print_counter_info ( )
staticinherited
void libMesh::ReferenceCounter::enable_print_counter_info ( )
staticinherited

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

Definition at line 101 of file reference_counter.C.

References libMesh::ReferenceCounter::_enable_print_counter.

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

102 {
103  _enable_print_counter = true;
104  return;
105 }
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 }
std::string name(const ElemQuality q)
Definition: elem_quality.C:39
virtual void libMesh::ElemAssembly::get_nodal_rhs_values ( std::map< numeric_index_type, Number > &  values,
const System ,
const Node  
)
inlinevirtual

Get values to add to the RHS vector based on node. This allows one to impose point loads, for example. Get values to add to the matrix or rhs vector based on node. This allows one to impose point loads or springs, for example.

Definition at line 87 of file elem_assembly.h.

References is_nodal_rhs_values_overriden.

90  {
91  // use get_nodal_values instead, since that enables matrix and vector assembly
92  libmesh_deprecated();
93 
94  // By default, just clear the values map
95  values.clear();
96 
97  // Set flag so that we know this is the default implementation
99  }
virtual void libMesh::ElemAssembly::get_nodal_values ( std::vector< dof_id_type > &  ,
DenseMatrix< Number > &  ,
DenseVector< Number > &  ,
const System ,
const Node  
)
inlinevirtual

Get values to add to the matrix or rhs vector based on node. This allows one to impose point loads or springs, for example.

Definition at line 70 of file elem_assembly.h.

75  {
76  // Do nothing by default
77  }
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 185 of file reference_counter.h.

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

Referenced by libMesh::ReferenceCounter::n_objects(), and libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().

186 {
187  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
188  std::pair<unsigned int, unsigned int> & p = _counts[name];
189 
190  p.first++;
191 }
std::string name(const ElemQuality q)
Definition: elem_quality.C:39
spin_mutex spin_mtx
Definition: threads.C:29
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 198 of file reference_counter.h.

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

Referenced by libMesh::ReferenceCounter::n_objects(), and libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().

199 {
200  Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
201  std::pair<unsigned int, unsigned int> & p = _counts[name];
202 
203  p.second++;
204 }
std::string name(const ElemQuality q)
Definition: elem_quality.C:39
spin_mutex spin_mtx
Definition: threads.C:29
virtual void libMesh::ElemAssembly::interior_assembly ( FEMContext )
inlinevirtual

Perform the element interior assembly.

Definition at line 58 of file elem_assembly.h.

58 { }
static unsigned int libMesh::ReferenceCounter::n_objects ( )
inlinestaticinherited
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().

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

89 {
91  out_stream << ReferenceCounter::get_info();
92 }
static std::string get_info()

Member Data Documentation

ReferenceCounter::Counts libMesh::ReferenceCounter::_counts
staticprotectedinherited
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().

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.

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

bool libMesh::ElemAssembly::is_nodal_rhs_values_overriden

Temporary flag to help us figure out if we should call the deprecated get_nodal_rhs_values method or not.

Definition at line 106 of file elem_assembly.h.

Referenced by get_nodal_rhs_values().


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