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 finite element methods and shape optimization.
namespace Rodin::Variational
Namespace Rodin::Variational.

Classes

template<class Scalar>
class Rodin::Variational::ProblemBodyBase
Base class representing the body of a variational problem.
template<class Scalar>
class Rodin::Variational::ProblemBody<void, void, Scalar>
Problem body containing only integrators and boundary conditions.
template<class Operator, class Scalar>
class Rodin::Variational::ProblemBody<Operator, void, Scalar>
Problem body containing operator terms only.
template<class Vector, class Scalar>
class Rodin::Variational::ProblemBody<void, Vector, Scalar>
Problem body containing vector terms only.
template<class Operator, class Vector, class Scalar>
class Rodin::Variational::ProblemBody
Accumulated bilinear forms, linear forms and boundary conditions of a Problem.