Rodin/Variational/PeriodicBC.h file

Periodic boundary condition implementation.

This file defines classes for imposing periodic boundary conditions in finite element problems. Periodic conditions enforce that the solution values match across opposite boundaries of the domain.

Mathematical Foundation

A periodic boundary condition specifies:

\[ u(x + L) = u(x) \quad \text{for} \quad x \in \Gamma_- \]

where $ \Gamma_- $ and $ \Gamma_+ $ are matching boundary pairs separated by periodicity vector $ L $ .

Applications

  • Crystal lattice simulations
  • Unit cell problems in homogenization
  • Fluid flow in periodic geometries
  • Wave propagation in periodic media

Implementation

Periodic conditions are enforced by:

  1. Identifying matching DOF pairs on opposite boundaries
  2. Constraining one DOF to equal its periodic partner
  3. Eliminating dependent DOFs from the system

Usage Example

// Periodic BC between boundaries 1 and 2
auto pbc = PeriodicBC(u).from(1).to(2);

Namespaces

namespace Rodin
The Rodin library for Shape and Topology Optimization.
namespace Rodin::Variational
Module which provides the necessary tools for constructing variational problems.

Classes

template<class Scalar>
class Rodin::Variational::PeriodicBCBase
Abstract base class for a periodic boundary condition.
template<class Solution, class FES>
class Rodin::Variational::PeriodicBC<TrialFunction<Solution, FES>, IndexMap<IndexSet>>
Represents a Peridodic boundary condition on a ShapeFunction object.