fedoo.weakform.PlateEquilibrium
- class PlateEquilibrium(plate_properties, true_drilling_rotation=True, drill_stiffness_coefficient=0.01, name='', nlgeom=None, space=None, *, consistent_tangent=False)
Mechanical equilibrium equation for plate models.
The shear terms may be treated with different interpolation strategies to allow the use of advanced structural elements:
MITC (mixed interpolation of tensorial components): ‘ptri3mitc’, ‘pquad4mitc’, ‘ptri6mitc’, ‘pquad8mitc’, ‘pquad9mitc’. These elements use a mixed interpolation of the transverse shear strain (decoupled from the displacement and rotation degrees of freedom). This avoids most shear locking and remains robust under mesh distortion, especially for linear interpolations. Note that ‘ptri6mitc’ may become unstable in geometrically nonlinear analyses.
SRI (selective reduced interpolation): ‘ptri3sri’, ‘pquad4sri’. These elements use reduced integration to compute the transverse shear energy, while maintaining full integration for membrane and bending energies. Though better than its fully integrated counterpart, ‘ptri3sri’ is prone to shear locking and should generally be avoided. ‘pquad4sri’, however, presents an excellent performance compromise.
Fully integrated elements: ‘ptri3’, ‘pquad4’, ‘ptri6’, ‘pquad8’, ‘pquad9’.
By default, the weak form utilizes MITC formulations for ‘tri3’ and ‘quad4’ geometrical interpolations, and fully integrated elements for all higher-order shapes.
This weak form must be used in combination with a shell constitutive law, such as
fedoo.constitutivelaw.ShellHomogeneousorfedoo.constitutivelaw.ShellLaminate. Geometric nonlinearities are accounted for using a corotational approach.- Parameters:
plate_properties (str or ConstitutiveLaw object) – Shell constitutive law defining the membrane, bending, and shear stiffness (e.g.,
fedoo.constitutivelaw.ShellHomogeneousorfedoo.constitutivelaw.ShellLaminate).true_drilling_rotation (bool, default=True) –
Only active if nlgeom is enabled.
True: Enforces a kinematic link between the nodal RotZ and the in-plane displacement gradients (0.5 * [dv/dx - du/dy]). This allows for physically consistent in-plane material rotations, which are essential for large-deformation anisotropic analysis.
False: Applies a simple numerical penalty on the nodal RotZ to prevent matrix singularity without coupling it to the membrane deformation.
drill_stiffness_coefficient (float, default=1e-2) – The penalty coefficient used for the drilling rotation constraint. Scaled by the initial membrane shear stiffness, held fixed during the solve for both tangent options and both drilling modes. Increasing this value enforces the constraint more strictly but may introduce drilling locking in fully integrated elements.
consistent_tangent (bool or None, default=False) – Use the complete analytical UL residual derivative, including MITC, drilling and current geometry. False retains the historical tangent. Both options use the same fixed initial drilling stiffness scale. None switches after three iterations without at least a 1% improvement of the reference error (updated on significant improvements), and starts the next increment attempt with the historical tangent again.
name (str, optional) – Name of the WeakForm instance.
nlgeom (bool or str, optional) – Property used to treat geometric nonlinearities. If True, a step-by-step corotational frame update is activated.
- __init__(plate_properties, true_drilling_rotation=True, drill_stiffness_coefficient=0.01, name='', nlgeom=None, space=None, *, consistent_tangent=False)
Methods
Return a shallow copy sharing the weak form's model objects.
Return the list of all weak forms.
Return the optional dissipative provider for a time integrator.
Return the optional storage weakform for a time integrator.
PlateEquilibrium.get_weak_equation(assembly, pb)PlateEquilibrium.initialize(assembly, pb)Iterate over the leaf weakforms contained in this object.
PlateEquilibrium.set_damping([damping])Mechanical alias for
set_dissipation.Attach a dissipative contribution.
PlateEquilibrium.set_inertia(density_or_storage)Mechanical alias for
set_storage.PlateEquilibrium.set_start(assembly, pb)PlateEquilibrium.set_storage(storage[, ...])Attach a time-storage weakform to this static weakform.
PlateEquilibrium.sum(wf1, wf2)PlateEquilibrium.to_start(assembly, pb)PlateEquilibrium.update(assembly, pb)PlateEquilibrium.update_2(assembly, pb)Prepare tangent fields once, after the constitutive state update.
Return the name of the WeakForm.
Number of variables in the modeling space associated to the WeakForm.
Return the ModelingSpace associated to the WeakForm if defined.