Rodin/Solid/Integrators/InternalVirtualWork.h file

Façade for the internal virtual work nonlinear form in hyperelastic formulations.

Provides the unified API for constructing the internal virtual work contributions to a nonlinear solid mechanics problem:

auto ivw = Solid::InternalVirtualWork(law, displacement);

// Residual contribution (linear form):
LinearForm F(fes);
F += ivw.Residual(v);

// Tangent contribution (bilinear form):
BilinearForm K(trialFES, testFES);
K += ivw.Tangent(u, v);

// Both at once for problem definition:
Problem newton(u, v);
newton = ivw(u, v) - Integral(f, v) + DirichletBC(u, g).on(bc);

All three forms share the same constitutive law, displacement state, quadrature order, and input hook — ensuring consistency of the Newton linearization.

Namespaces

namespace Rodin
The Rodin library for finite element methods and shape optimization.
namespace Rodin::Solid
Hyperelastic solid mechanics module for large-deformation problems.

Classes

template<class Law, class State>
class Rodin::Solid::InternalVirtualWork
Façade for the internal virtual work nonlinear form.