Lección 9 · Hiperelasticidad y solución no lineal
Nivel: avanzado · Tiempo: 5 h · Prerrequisitos: lección 7, cálculo tensorial.
Qué cambia frente a elasticidad lineal
La forma depende del estado actual. Ya no se ensambla una sola matriz: UFL deriva el residual y el Jacobiano, SNES itera y la carga se aplica por incrementos. La verificación debe incluir convergencia y orientación positiva.
Objetivos
Definirás energía, residuo/Jacobiano automático, SNES y carga incremental; diagnosticarás divergencia e inversión de elementos.
Modelo y unidades
Bloque 1×0.2 neo-Hookeano, (E=100), (\nu=0.3), empotrado a la izquierda y carga final 5 a la derecha, aplicada en 3/6 incrementos.
Forma fuerte y condiciones
En configuración de referencia, (\operatorname{Div}P=0), con desplazamiento cero a la izquierda y (PN=T) a la derecha. (F=I+\nabla u), (J=\det F>0).
Energía y forma débil
El Jacobiano tangente es (D_uR(u;\delta u,v)) y UFL lo deriva.
Mapa matemático → software
| Concepto | Objeto |
|---|---|
| estado no lineal | fem.Function |
| (F) diferenciable | ufl.variable(I + grad(u)) |
| residuo | ufl.derivative(Pi, u, v) |
| Newton | fem.petsc.NonlinearProblem / SNES |
| carga incremental | Constant.value |
Ejemplo e inspección
Ejecuta python examples/09_hyperelasticity.py --quick --output results. Revisa
iteraciones por incremento, (J_{min}), energía, reacción y desplazamiento.
Solver
SNES Newton con backtracking, tolerancias explícitas, máximo 40 iteraciones y error ante divergencia. Cada incremento parte del estado convergido anterior.
Verificación cuantitativa
Se exige razón SNES positiva, (J_{min}>0.5), energía positiva, balance <2e-6 y desplazamiento de punta positivo. Ninguna figura sustituye (J_{min}).
Visualización
Exporta desplazamiento/J en campos separados y no extrapoles DG0 como si fuera continuo. Marca cualquier celda con (J\le0) como fallo, no como dato extremo.
Errores frecuentes
- Resolver carga completa desde estado cero.
- Usar
ln(J)con (J\le0) y ocultar NaN. - Derivar respecto de una expresión que no fue declarada
variable. - Medir solo residuo absoluto en variables mal escaladas.
Ejercicios graduados
- Compara 1, 3 y 6 incrementos.
- Aumenta (\nu\to0.499) y observa bloqueo.
- Formula desplazamiento–presión mixto casi incompresible.
Solución o guía
Si Newton falla, reduce incremento, conserva el último estado convergido y activa monitor SNES. Para incompresibilidad usa formulación mixta; no “arregles” el bloqueo relajando una tolerancia.
Fuentes, licencia, versión y cambios
API NonlinearProblem 0.11.
La implementación hiperelástica y sus verificaciones son originales del curso
y están disponibles bajo MIT.
Anterior: Gmsh y materiales · Siguiente: ruta de fluidos o Cahn–Hilliard