QUAD4_PLANE — 4-node bilinear plane quad
========================================
The 2D bilinear quadrilateral, used for plane-stress and
plane-strain analysis. Four corner nodes × 2 in-plane
translations = 8 DOFs per element.
* **Spec:** ``ELEMENTS.QUAD4_PLANE``
.. raw:: html
Verified vs Kirsch plate-with-hole + NAFEMS LE1 elliptic membrane
Cross-vendor mapping
--------------------
========================== ==================================== ============================================
Solver Element name Notes
========================== ==================================== ============================================
femorph-solver ``ELEMENTS.QUAD4_PLANE`` plane stress / plane strain via Model setup
ANSYS Mechanical APDL ``PLANE182`` KEYOPT(3): 0 plane stress, 2 plane strain, 1 axisymmetric
NX / MSC Nastran ``CQUAD4`` PSHELL property + plane-stress / plane-strain options
Abaqus ``CPS4`` / ``CPE4`` / ``CAX4`` CPS plane stress, CPE plane strain, CAX axisymmetric
LS-DYNA ``ELEMENT_SHELL`` ELFORM=18 (membrane) for in-plane problems
========================== ==================================== ============================================
Restrictions
------------
Use a different element when:
* **Steep stress gradients** (notches, cracks, point loads) —
bilinear basis is too coarse; refine aggressively or use a
quadratic element. Quadratic-quad (QUAD8) is on the roadmap.
* **Out-of-plane loading** — QUAD4_PLANE has no transverse DOFs;
use ``QUAD4_SHELL`` for plate / shell loading.
* **Distorted quads** with mid-edge offsets — bilinear forms
don't preserve linear strain on distorted quads; refine to
rectangles where possible.
Shape functions
---------------
Bilinear Lagrange on the reference square
:math:`\hat\Omega = [-1, +1]^{2}` with corner-node sign vector
:math:`(\xi_i, \eta_i) \in \{-1, +1\}^{2}`:
.. math::
N_i(\xi, \eta) =
\tfrac{1}{4}(1 + \xi_i\, \xi)(1 + \eta_i\, \eta).
These satisfy Kronecker-delta interpolation at the four
corners and partition-of-unity on :math:`\hat\Omega`. See
:ref:`sphx_glr_gallery_elements_plane182_example_quad4_shape_functions.py`
for contour plots and a verified basis-matrix identity at every
corner.
Integration
-----------
* **2 × 2 Gauss-Legendre** for both stiffness and mass.
Exact for the bilinear strain-displacement product on a
regular quad — see :doc:`../theory/quadrature`.
Constitutive
------------
Plane-stress vs plane-strain selected by ``ELEMENTS.QUAD4_PLANE(mode=...)``:
* ``"stress"`` (default) — out-of-plane normal stress
:math:`\sigma_{zz} = 0`. 3 × 3 elastic matrix:
.. math::
\mathbf{C}^{(\sigma)} =
\frac{E}{1 - \nu^{2}}
\begin{bmatrix}
1 & \nu & 0 \\
\nu & 1 & 0 \\
0 & 0 & (1 - \nu)/2
\end{bmatrix}.
* ``"strain"`` — out-of-plane strain :math:`\varepsilon_{zz} = 0`.
3 × 3 elastic matrix:
.. math::
\mathbf{C}^{(\varepsilon)} =
\frac{E}{(1 + \nu)(1 - 2\nu)}
\begin{bmatrix}
1 - \nu & \nu & 0 \\
\nu & 1 - \nu & 0 \\
0 & 0 & (1 - 2\nu)/2
\end{bmatrix}.
Real constants
--------------
* ``REAL[0]`` — :math:`t`, out-of-plane thickness (used to
scale the plane-stress integral; ignored under plane strain).
Stress recovery
---------------
The strain-displacement matrix evaluated at each Gauss /
node point gives 3-component Voigt strain
:math:`(\varepsilon_{xx}, \varepsilon_{yy}, \gamma_{xy})`;
:func:`compute_nodal_stress
`
applies the 3 × 3 :math:`\mathbf{C}` matrix above to recover
in-plane stress. Issue #262 wired the plane-element strain
extraction into the canonical recovery path
(``strain_batch`` returns 3-component strain, padded to 6-Voigt
for the global stress-averaging machinery).
Verification cross-references
-----------------------------
* :ref:`sphx_glr_gallery_elements_plane182_example_plane182.py` — single-quad uniaxial-tension test.
* :ref:`sphx_glr_gallery_verification_example_verify_nafems_le1.py` — NAFEMS LE1 elliptic membrane (stress-concentration benchmark, σ_yy(D) = 92.7 MPa).
Implementation: :mod:`femorph_solver.elements.quad4_plane`.
References
----------
* Hughes, T. J. R. (2000) *The Finite Element Method —
Linear Static and Dynamic Finite Element Analysis*, Dover,
§3.5 + §3.6 (bilinear quad).
* Zienkiewicz, O. C. and Taylor, R. L. (2013) *The Finite
Element Method: Its Basis and Fundamentals*, 7th ed.,
§6.3.2 + §6.4.
* Cook, R. D., Malkus, D. S., Plesha, M. E., Witt, R. J.
(2002) *Concepts and Applications of Finite Element
Analysis*, 4th ed., Wiley, §3.5 (plane stress), §3.6
(plane strain).