Rodin/Variational/ProblemBody.h file

Problem body class managing integrators and boundary conditions.

This file defines the ProblemBody class, which manages the collection of integrators (bilinear and linear forms) and boundary conditions that comprise a variational problem. The ProblemBody serves as a container and coordinator for all components of a finite element formulation.

Role in Problem Assembly

ProblemBody acts as an intermediate layer that:

  1. Collects all bilinear form integrators (matrix terms)
  2. Collects all linear form integrators (load vector terms)
  3. Manages essential (Dirichlet) boundary conditions
  4. Manages periodic boundary conditions
  5. Coordinates the assembly process

Design Pattern

The separation of ProblemBody from Problem follows the Bridge pattern, allowing:

  • Shared state between different problem types
  • Flexible composition of problem components
  • Independent evolution of assembly and solution strategies

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::ProblemBodyBase
Base class representing the body of a variational problem.