18#ifndef LIBMESH_PERIODIC_BOUNDARY_BASE_H
19#define LIBMESH_PERIODIC_BOUNDARY_BASE_H
22#include "libmesh/libmesh_config.h"
24#ifdef LIBMESH_ENABLE_PERIODIC
27#include "libmesh/point.h"
28#include "libmesh/dense_matrix.h"
Defines a dense matrix for use in Finite Element-type computations.
The base class for defining periodic boundaries.
std::set< unsigned int > variables
Set of variables for this periodic boundary, empty means all variables possible.
bool has_transformation_matrix() const
const DenseMatrix< Real > & get_transformation_matrix() const
Get the transformation matrix, if it is defined.
bool is_my_variable(unsigned int var_num) const
const std::set< unsigned int > & get_variables() const
Get the set of variables for this periodic boundary condition.
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 ...
boundary_id_type myboundary
The boundary ID of this boundary and its counterpart.
std::unique_ptr< DenseMatrix< Real > > _transformation_matrix
A DenseMatrix that defines the mapping of variables on this boundary and the counterpart boundary.
PeriodicBoundaryBase()
Constructor.
void set_variable(unsigned int var)
void set_transformation_matrix(const DenseMatrix< Real > &matrix)
Set the transformation matrix.
virtual ~PeriodicBoundaryBase()=default
Destructor.
boundary_id_type pairedboundary
void merge(const PeriodicBoundaryBase &pb)
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,...
A Point defines a location in LIBMESH_DIM dimensional Real space.
The libMesh namespace provides an interface to certain functionality in the library.