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):
- Plot \(\sigma_{12}\) vs \(\gamma\).
- 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.