Hermit
Reissner-Mindlin shell analysis in FEniCSx, connected to CSDL for gradient-based design.
Hermit is a linear-static shell finite-element code built on
FEniCSx (DOLFINx 0.9 or 0.11). It wraps the FE solve and its
output functionals as CSDL custom operations,
so shell compliance, mass, centre of gravity, stress and nodal fields are all
differentiable with respect to thickness, composite ply layup, applied loads, and
the mesh coordinates. The mechanics are based on RMShell model in
femo_alpha.
import hermit as hm
domain = hm.ShellDomain(mesh)
material = hm.isotropic(domain, E=E, nu=nu, thickness=thickness, density=density)
state = hm.solve(domain, material, hm.pressure(domain, p),
hm.clamp(domain, where=hm.near("x", 0.0)))
compliance, mass = hm.compliance(state), hm.mass(state)
# compliance and mass are csdl.Variables
Start with Getting started, then the Tutorials.