libMesh
|
The base class for defining periodic boundaries. More...
#include <periodic_boundary_base.h>
Public Types | |
enum | TransformationType { FORWARD =0, INVERSE =1 } |
Public Member Functions | |
PeriodicBoundaryBase () | |
Constructor. More... | |
PeriodicBoundaryBase (const PeriodicBoundaryBase &other) | |
Copy constructor. More... | |
virtual | ~PeriodicBoundaryBase ()=default |
Destructor. More... | |
virtual Point | get_corresponding_pos (const Point &pt) const =0 |
This function should be overridden by derived classes to define how one finds corresponding nodes on the periodic boundary pair. More... | |
virtual std::unique_ptr< PeriodicBoundaryBase > | clone (TransformationType t=FORWARD) const =0 |
If we want the DofMap to be able to make copies of references and store them in the underlying map, this class must be clone'able, i.e. More... | |
void | set_variable (unsigned int var) |
void | merge (const PeriodicBoundaryBase &pb) |
bool | is_my_variable (unsigned int var_num) const |
bool | has_transformation_matrix () const |
const DenseMatrix< Real > & | get_transformation_matrix () const |
Get the transformation matrix, if it is defined. More... | |
void | set_transformation_matrix (const DenseMatrix< Real > &matrix) |
Set the transformation matrix. More... | |
const std::set< unsigned int > & | get_variables () const |
Get the set of variables for this periodic boundary condition. More... | |
Public Attributes | |
boundary_id_type | myboundary |
The boundary ID of this boundary and its counterpart. More... | |
boundary_id_type | pairedboundary |
Protected Attributes | |
std::set< unsigned int > | variables |
Set of variables for this periodic boundary, empty means all variables possible. More... | |
std::unique_ptr< DenseMatrix< Real > > | _transformation_matrix |
A DenseMatrix that defines the mapping of variables on this boundary and the counterpart boundary. More... | |
The base class for defining periodic boundaries.
Definition at line 48 of file periodic_boundary_base.h.
libMesh::PeriodicBoundaryBase::PeriodicBoundaryBase | ( | ) |
Constructor.
Definition at line 34 of file periodic_boundary_base.C.
libMesh::PeriodicBoundaryBase::PeriodicBoundaryBase | ( | const PeriodicBoundaryBase & | other | ) |
Copy constructor.
Definition at line 42 of file periodic_boundary_base.C.
References _transformation_matrix.
|
virtualdefault |
Destructor.
|
pure virtual |
If we want the DofMap to be able to make copies of references and store them in the underlying map, this class must be clone'able, i.e.
have a kind of virtual construction mechanism. The user can also pass a flag to enable an 'inverse transformation' to be cloned from a forward transformation. The simplest way to implement a clone function like this is in terms of a copy constructor, see periodic_boundary.h.
Implemented in AzimuthalPeriodicBoundary, and libMesh::PeriodicBoundary.
Referenced by libMesh::DofMap::add_periodic_boundary().
|
pure virtual |
This function should be overridden by derived classes to define how one finds corresponding nodes on the periodic boundary pair.
Implemented in AzimuthalPeriodicBoundary, and libMesh::PeriodicBoundary.
Referenced by libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), libMesh::FEAbstract::compute_periodic_node_constraints(), and libMesh::PeriodicBoundaries::neighbor().
const DenseMatrix< Real > & libMesh::PeriodicBoundaryBase::get_transformation_matrix | ( | ) | const |
Get the transformation matrix, if it is defined.
Throw an error if it is not defined.
Definition at line 86 of file periodic_boundary_base.C.
References _transformation_matrix, and has_transformation_matrix().
Referenced by libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints().
const std::set< unsigned int > & libMesh::PeriodicBoundaryBase::get_variables | ( | ) | const |
Get the set of variables for this periodic boundary condition.
Definition at line 109 of file periodic_boundary_base.C.
References variables.
Referenced by libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints().
bool libMesh::PeriodicBoundaryBase::has_transformation_matrix | ( | ) | const |
Definition at line 79 of file periodic_boundary_base.C.
References _transformation_matrix.
Referenced by libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), and get_transformation_matrix().
bool libMesh::PeriodicBoundaryBase::is_my_variable | ( | unsigned int | var_num | ) | const |
Definition at line 71 of file periodic_boundary_base.C.
References variables.
Referenced by libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints().
void libMesh::PeriodicBoundaryBase::merge | ( | const PeriodicBoundaryBase & | pb | ) |
Definition at line 64 of file periodic_boundary_base.C.
References variables.
Referenced by libMesh::DofMap::add_periodic_boundary().
void libMesh::PeriodicBoundaryBase::set_transformation_matrix | ( | const DenseMatrix< Real > & | matrix | ) |
Set the transformation matrix.
When calling this method we require the following conditions: 1) matrix
is square with size that matches this->variables.size() 2) the list of variables in this->variables set must all have the same FE type Both of these conditions are asserted in DBG mode.
Definition at line 96 of file periodic_boundary_base.C.
References _transformation_matrix, and variables.
void libMesh::PeriodicBoundaryBase::set_variable | ( | unsigned int | var | ) |
Definition at line 57 of file periodic_boundary_base.C.
References variables.
|
protected |
A DenseMatrix that defines the mapping of variables on this boundary and the counterpart boundary.
This is necessary for periodic-boundaries with vector-valued quantities (e.g. velocity or displacement) on a sector of a circular domain, for example, since in that case we must map each variable to a corresponding linear combination of all the variables. We store the DenseMatrix via a unique_ptr, and an uninitialized pointer is treated as equivalent to the identity matrix.
Definition at line 146 of file periodic_boundary_base.h.
Referenced by get_transformation_matrix(), has_transformation_matrix(), PeriodicBoundaryBase(), and set_transformation_matrix().
boundary_id_type libMesh::PeriodicBoundaryBase::myboundary |
The boundary ID of this boundary and its counterpart.
Definition at line 58 of file periodic_boundary_base.h.
Referenced by libMesh::DofMap::add_periodic_boundary(), Biharmonic::JR::JR(), main(), libMesh::PeriodicBoundary::PeriodicBoundary(), and PeriodicBCTest::testPeriodicBC().
boundary_id_type libMesh::PeriodicBoundaryBase::pairedboundary |
Definition at line 58 of file periodic_boundary_base.h.
Referenced by libMesh::DofMap::add_periodic_boundary(), libMesh::FEGenericBase< FEOutputType< T >::type >::compute_periodic_constraints(), Biharmonic::JR::JR(), main(), libMesh::PeriodicBoundaries::neighbor(), libMesh::PeriodicBoundary::PeriodicBoundary(), and PeriodicBCTest::testPeriodicBC().
|
protected |
Set of variables for this periodic boundary, empty means all variables possible.
Definition at line 134 of file periodic_boundary_base.h.
Referenced by get_variables(), is_my_variable(), merge(), set_transformation_matrix(), and set_variable().