Green-Lagrange Strain

The Green-Lagrange strain tensor (\(\mathbf{E}\)) is a finite strain measure suitable for large displacements and rotations. It is defined in the reference (material) configuration.

Unlike Cauchy strain, it accounts for geometric non-linearities (such as the stretching of a rotated element).

Theory

It is derived from the Right Cauchy-Green deformation tensor \(\mathbf{C}\):

\[\mathbf{E} = \frac{1}{2} (\mathbf{C} - \mathbf{I}) = \frac{1}{2} (\mathbf{F}^T \mathbf{F} - \mathbf{I})\]

Where \(\mathbf{F} = \mathbf{I} + \nabla \mathbf{u}\) is the deformation gradient.

Component Formulation

When expanded in 2D cartesian coordinates, the components include the quadratic terms of the displacement gradients:

\[E_{xx} = \frac{\partial u}{\partial x} + \frac{1}{2} \left[ \left(\frac{\partial u}{\partial x}\right)^2 + \left(\frac{\partial v}{\partial x}\right)^2 \right]\]
\[E_{yy} = \frac{\partial v}{\partial y} + \frac{1}{2} \left[ \left(\frac{\partial u}{\partial y}\right)^2 + \left(\frac{\partial v}{\partial y}\right)^2 \right]\]
\[E_{xy} = \frac{1}{2} \left[ \frac{\partial u}{\partial y} + \frac{\partial v}{\partial x} + \left( \frac{\partial u}{\partial x} \frac{\partial u}{\partial y} + \frac{\partial v}{\partial x} \frac{\partial v}{\partial y} \right) \right]\]
where
  • \(u\): displacement in x-direction

  • \(v\): displacement in y-direction

  • \(\frac{\partial u}{\partial x}\): the partial derivative of the displacement field along x (\(\mathbf{u}\)) with respect to the spatial coordinate \(x\),

  • \(\frac{\partial v}{\partial y}\): the partial derivative of the displacement field along y (\(\mathbf{v}\)) with respect to the spatial coordinate \(y\),

  • \(\frac{\partial u}{\partial y}\): the partial derivative of the displacement field along y (\(\mathbf{u}\)) with respect to the spatial coordinate \(y\),

  • \(\frac{\partial v}{\partial x}\): the partial derivative of the displacement field along x (\(\mathbf{v}\)) with respect to the spatial coordinate \(x\),

Python Implementation

import numpy as np

def compute_strain_green_lagrange(disp_x, disp_y, dx, dy):
    """
    Compute Green-Lagrange Strain (Large Strain).

    Assumes indexing='ij' (axis 0 is x, axis 1 is y).
    """
    # 1. Compute Gradients
    grad_u = np.gradient(disp_x, dx, dy)
    du_dx, du_dy = grad_u[0], grad_u[1] # u_x, u_y

    grad_v = np.gradient(disp_y, dx, dy)
    dv_dx, dv_dy = grad_v[0], grad_v[1] # v_x, v_y

    # 2. Compute Strain Components (Corrected for cross-terms)
    # Exx uses derivatives w.r.t X only (u_x and v_x)
    E_xx = du_dx + 0.5 * (du_dx**2 + dv_dx**2)

    # Eyy uses derivatives w.r.t Y only (u_y and v_y)
    E_yy = dv_dy + 0.5 * (du_dy**2 + dv_dy**2)

    # Exy mixes terms
    E_xy = 0.5 * (du_dy + dv_dx + (du_dx * du_dy) + (dv_dx * dv_dy))

    return E_xx, E_yy, E_xy

References