hermit.fenics.elastic_model =========================== .. py:module:: hermit.fenics.elastic_model .. autoapi-nested-parse:: 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)``. .. !! processed by numpydoc !! Classes ------- .. autoapisummary:: hermit.fenics.elastic_model.ElasticModel Module Contents --------------- .. py:class:: ElasticModel(mesh, w, clt_matrices, fiber_angle=None, fiber_direction=None, quadrature_degree=4) ``fiber_angle`` / ``fiber_direction`` (at most one) rotate ``clt_matrices`` (laminate axes) into the element frame *inside the form*. With neither given, ``A/B/D/A_s`` are used exactly as passed (no identity rotation multiplied in), so the unoriented form is bit-identical to the form without orientation. .. !! processed by numpydoc !! .. py:method:: bending_energy(dx_inplane=dx) .. py:method:: drilling_energy(dx_drilling=dx) .. py:method:: elastic_energy(dx_inplane=None, dx_shear=None, dx_drilling=None) .. py:method:: membrane_energy(dx_inplane=dx) .. py:method:: shear_energy(dx_shear=dx) .. py:method:: 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-space ``f``/``m`` coefficients ``load_terms=None`` (the default) uses. An empty list is valid (no distributed term -- e.g. a point-load-only ``Loads``, whose contribution is a direct RHS entry handled entirely outside this form); only ``f``/``m`` both ``None`` *and* ``load_terms`` ``None`` is the error case (nothing at all to apply). .. !! processed by numpydoc !! .. py:attribute:: E01 .. py:attribute:: W .. py:attribute:: eps .. py:attribute:: gamma .. py:attribute:: gradu .. py:attribute:: kappa .. py:attribute:: mesh .. py:attribute:: offset .. py:attribute:: quadrature_degree :value: 4 .. py:attribute:: t_gu .. py:attribute:: w