hermit.fenics.elastic_model
Reissner-Mindlin shell elastic model: strains, stress resultants, energy, residual.
Port of ElasticModelShapeOpt from femo dev_coupling. Geometry sensitivity is via
SpatialCoordinate differentiation, so all gradients are plain ufl.grad on the
(possibly moved) mesh – no gradx / J(uhat).
Classes
|
Module Contents
- class hermit.fenics.elastic_model.ElasticModel(mesh, w, clt_matrices, fiber_angle=None, fiber_direction=None, quadrature_degree=4)
fiber_angle/fiber_direction(at most one) rotateclt_matrices(laminate axes) into the element frame inside the form. With neither given,A/B/D/A_sare used exactly as passed (no identity rotation multiplied in), so the unoriented form is bit-identical to the form without orientation.- bending_energy(dx_inplane=dx)
- drilling_energy(dx_drilling=dx)
- elastic_energy(dx_inplane=None, dx_shear=None, dx_drilling=None)
- membrane_energy(dx_inplane=dx)
- shear_energy(dx_shear=dx)
- weak_residual(elastic_energy, f=None, m=None, load_terms=None, penalty=False, g=None, dss=None, dSS=None, bc_dof_mask=None, penalty_terms=None, penalty_targets=None)
penalty_terms, given, is a list of(dss, dSS, bc_dof_mask)triples whose contributions are summed (multi-region penalty, e.g.hm.clamp(...) + hm.symmetry(...)); with it omitted, the single(dss, dSS, bc_dof_mask)triple is used.load_terms, given, is a list of(kind, Function)pairs: each contributes its own residual term, on its own space, in place of the fixed-spacef/mcoefficientsload_terms=None(the default) uses. An empty list is valid (no distributed term – e.g. a point-load-onlyLoads, whose contribution is a direct RHS entry handled entirely outside this form); onlyf/mbothNoneandload_termsNoneis the error case (nothing at all to apply).
- E01
- W
- eps
- gamma
- gradu
- kappa
- mesh
- offset
- quadrature_degree = 4
- t_gu
- w