Rodin/Solid/Local/Input.h file

Extensible input injection mechanism for constitutive evaluation.

An Input populates a ConstitutivePoint with auxiliary data at each quadrature point during integration. This is the injection site for material-specific fields (fiber directions, activation parameters, region-wise material properties, etc.) without hard-coding them into the integrator or the constitutive law.

Usage with CRTP

struct MyInput : Solid::Input<MyInput>
{
  void populate(Solid::ConstitutivePoint& cp) const
  {
    // e.g., interpolate fiber direction from a GridFunction
    Math::SpatialVector<Real> fiber = ...;
    cp.set<Solid::Tags::FiberDirection>(fiber);
  }
};

Solid::InternalForce force(law, v);
force.setInput(MyInput{});

Usage with lambda / std::function

force.setInput([&](Solid::ConstitutivePoint& cp) {
  cp.set<Solid::Tags::Activation>(activationValue);
});

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 Derived>
class Rodin::Solid::Input
CRTP base class for inputs.