15  Homework 2

Hyperelasticity — Implementation and Model Comparison

Due date: TBD — submitted via Moodle

Goal: Implement a hyperelastic stress update and compare model responses.


15.1 Task 1 — Implementation

Write a Python function compute_hyperelastic_stress(F, model, params) that:

  • Takes the deformation gradient F (3×3 NumPy array) and material parameters.
  • Implements the Cauchy stress \(\boldsymbol{\sigma}\) for two models:
    • Neo-Hookean: \(W = \frac{\mu}{2}(I_1-3) - \mu\ln J + \frac{\lambda}{2}(\ln J)^2\)
    • Mooney-Rivlin: \(W = C_1(I_1-3) + C_2(I_2-3)\) plus a volumetric term.
  • Returns \(\boldsymbol{\sigma}\) (and optionally the spatial elasticity tensor).

15.2 Task 2 — Verification

Test your function on hydrostatic tension/compression \(\mathbf{F} = \lambda\mathbf{I}\). Compare the numerically computed stress to the analytical formula for each model.


15.3 Task 3 — Comparison

Simulate a simple shear path: \(\mathbf{F}(\gamma) = \mathbf{I} + \gamma\,\mathbf{e}_1\otimes\mathbf{e}_2\), \(\gamma \in [0, 1]\).

For both models (with the same initial shear modulus):

  1. Plot \(\sigma_{12}\) vs \(\gamma\).
  2. Plot the normal stress difference \(\sigma_{11} - \sigma_{22}\) vs \(\gamma\) (Poynting effect).

Discuss: Comment on differences in shear stiffness and normal stress between the two models.