Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Hyperelasticity in spectral formulation

Authors
Affiliations
University of Luxembourg
Rafinex
University of Luxembourg
University of Luxembourg

This demo solves a three-dimensional hyperelastic torsion problem by expressing the constitutive law in terms of the eigenvalues of the Cauchy strain tensor. It demonstrates how to obtain those principal stretches symbolically and how to differentiate a strain-energy density written directly in terms of them.

In particular, this demo emphasizes:


The task is to find a displacement field u∈[H01(Ω)]3u \in [H^1_0(\Omega)]^3 which solves the variational problem (principle of virtual displacements)

−12∫ΩδC ⁣:(Sbulk+Sshear) dx+∫Γδu⋅t ds=0- \frac 12 \int_\Omega \delta C \colon \left(S_\text{bulk} + S_\text{shear}\right) \,\text{d}x + \int_\Gamma \delta u \cdot t \,\text{d}s = 0

for all δu∈[H01(Ω)]3\delta u \in [H^1_0(\Omega)]^3. Stress tensor (second Piola-Kirchhoff) is computed from bulk and shear strain energies which are defined for a compressible Neo-Hookean material Pence & Gou, 2014 as

Wbulk=∫Ωκ2(J−1)2 dx,Wshear=∫Ωμ2(I1−3−2log⁡J) dx,\begin{align} W_\text{bulk} &= \int_\Omega \frac{\kappa}{2} (J - 1)^2 \,\text{d}x, \\ W_\text{shear} &= \int_\Omega \frac{\mu}{2} (I_1 - 3 - 2 \log J) \,\text{d}x, \end{align}

with Cauchy strain tensor C=FTFC = F^T F, deformation gradient F=I+∇uF = I + \nabla u and its derived invariants I1=tr(C)I_1 = \text{tr}(C) and J=det⁡C=det⁡FJ = \sqrt{\det C} = \det F and material parameters κ\kappa and μ\mu.

For the hyperelastic material the strain energy W=Wbulk+WshearW = W_\text{bulk} + W_\text{shear} is a potential for the stress tensor, i.e.

S=Sbulk+Sshear=2∂W∂C.S = S_\text{bulk} + S_\text{shear} = 2 \frac{\partial W}{\partial C}.

For isotropic strain energy functionals (which the Neo-Hookean model fulfils) we can write

si=2∂W∂ci,i∈{1,2,3},s_i = 2 \frac{\partial W}{\partial c_i}, \quad i \in \{1, 2, 3\},

for the three principal stresses (eigenvalues of the stress tensor SS) sis_i and three principal stretches (eigenvalues of the strain tensor CC) cic_i. Using the notion of principal stresses and stretches, the inner product contraction in the above variational problem simplifies to

−12∫Ω∑iδcisi dx+∫Γδu⋅t ds=0.- \frac 12 \int_\Omega \sum_i \delta c_i s_i \,\text{d}x + \int_\Gamma \delta u \cdot t \,\text{d}s = 0.

The key point in the above is to express the strain energy functional purely in terms of principal stretches cic_i, which is achieved using

I1=c0+c1+c2,J=c0c1c2.I_1 = c_0 + c_1 + c_2, \quad J = \sqrt{c_0 c_1 c_2}.

Principal stretches cic_i are available as symbolic closed-form expression of the primary unknown displacement uu thanks to helper function dolfiny.invariants.eigenstate, see Habera & Zilian (2021) for more detail.

Source

This demo is parametrised by the choice of formulation: “classic” or “spectral”. The classic formulation uses the main invariants of the Cauchy strain tensor, while the spectral formulation writes the strain energy directly in terms of the principal stretches.

Source
Arguments: Namespace(formulation='spectral')

Meshing, boundary tagging and function spaces definition

Mesh in this example is a tube with radius r=0.4r = 0.4, thickness t=0.1t = 0.1 and height h=1h = 1. It is tesselated using 27 node quadratic hexahedral elements.

Bottom of the tube is marked as “surface_lower” and top is marked as “surface_upper”.

Source
Output
Info    : Meshing 1D...- Splitting faces                                                                                                    
Info    : [  0%] Meshing curve 1 (Line)
Info    : [ 10%] Meshing curve 2 (Extruded)
Info    : [ 20%] Meshing curve 3 (Extruded)
Info    : [ 20%] Meshing curve 4 (Extruded)
Info    : [ 30%] Meshing curve 5 (Extruded)
Info    : [ 40%] Meshing curve 6 (Extruded)
Info    : [ 40%] Meshing curve 7 (Extruded)
Info    : [ 50%] Meshing curve 8 (Extruded)
Info    : [ 60%] Meshing curve 9 (Extruded)
Info    : [ 60%] Meshing curve 10 (Extruded)
Info    : [ 70%] Meshing curve 11 (Extruded)
Info    : [ 70%] Meshing curve 12 (Extruded)
Info    : [ 80%] Meshing curve 13 (Extruded)
Info    : [ 90%] Meshing curve 14 (Extruded)
Info    : [ 90%] Meshing curve 15 (Extruded)
Info    : [100%] Meshing curve 16 (Extruded)
Info    : Done meshing 1D (Wall 0.00015496s, CPU 0.000202s)
Info    : Meshing 2D...
Info    : [  0%] Meshing surface 1 (Extruded)
Info    : [ 20%] Meshing surface 2 (Extruded)
Info    : [ 30%] Meshing surface 3 (Extruded)
Info    : [ 40%] Meshing surface 4 (Extruded)
Info    : [ 50%] Meshing surface 5 (Extruded)
Info    : [ 60%] Meshing surface 6 (Extruded)
Info    : [ 70%] Meshing surface 7 (Extruded)
Info    : [ 80%] Meshing surface 8 (Extruded)
Info    : [ 90%] Meshing surface 9 (Extruded)
Info    : [100%] Meshing surface 10 (Extruded)
Info    : Done meshing 2D (Wall 0.0015333s, CPU 0s)
Info    : Meshing 3D...
Info    : Meshing volume 1 (Extruded)
Info    : Meshing volume 2 (Extruded)
Info    : Done meshing 3D (Wall 0.00258442s, CPU 0.000362s)
Info    : 1440 nodes 2040 elements
Info    : Meshing order 2 (curvilinear on)...
Info    : [  0%] Meshing curve 1 order 2
Info    : [ 10%] Meshing curve 2 order 2
Info    : [ 10%] Meshing curve 3 order 2
Info    : [ 20%] Meshing curve 4 order 2
Info    : [ 20%] Meshing curve 5 order 2
Info    : [ 20%] Meshing curve 6 order 2
Info    : [ 30%] Meshing curve 7 order 2
Info    : [ 30%] Meshing curve 8 order 2
Info    : [ 30%] Meshing curve 9 order 2
Info    : [ 40%] Meshing curve 10 order 2
Info    : [ 40%] Meshing curve 11 order 2
Info    : [ 40%] Meshing curve 12 order 2
Info    : [ 50%] Meshing curve 13 order 2
Info    : [ 50%] Meshing curve 14 order 2
Info    : [ 60%] Meshing curve 15 order 2
Info    : [ 60%] Meshing curve 16 order 2
Info    : [ 60%] Meshing surface 1 order 2
Info    : [ 70%] Meshing surface 2 order 2
Info    : [ 70%] Meshing surface 3 order 2
Info    : [ 70%] Meshing surface 4 order 2
Info    : [ 80%] Meshing surface 5 order 2
Info    : [ 80%] Meshing surface 6 order 2
Info    : [ 80%] Meshing surface 7 order 2
Info    : [ 90%] Meshing surface 8 order 2
Info    : [ 90%] Meshing surface 9 order 2
Info    : [ 90%] Meshing surface 10 order 2
Info    : [100%] Meshing volume 1 order 2
Info    : [100%] Meshing volume 2 order 2
Info    : Done meshing order 2 (Wall 0.0161964s, CPU 0.016795s)

Quadrature rule is limited to the 4th degree for performance reasons. The symbolic expressions resulting from the eigenvalues of the Cauchy strain tensor are rather involved so the time to assemble the forms increases.

Function space discretisation is based on vector-valued isoparametric continuous Lagrange element with three components - since we model the displacement in three dimensions.

Source
Source
<PIL.Image.Image image mode=RGB size=2048x2048>

Figure 1:Undeformed tube mesh.

Material parameters with units

There are four dimensional quantities in the problem:

ParameterValueDescription
lrefl_\text{ref}0.1 m0.1\,\mathrm{m}reference length scale
treft_\text{ref}0.2 MPa0.2\,\mathrm{MPa}load scale
μ\muE2(1+ν)\frac{E}{2(1 + \nu)}shear modulus
κ\kappaλ+23μ\lambda + \frac{2}{3} \mubulk modulus

derived from Poisson ratio ν=0.4\nu = 0.4, Lamé coefficient λ=Eν(1+ν)(1−2ν)\lambda = \frac{E \nu}{(1 + \nu)(1 - 2 \nu)} and Young’s modulus E=1 MPaE = 1 \, \mathrm{MPa}.

We can execute the Buckingham Pi analysis which shows overview of the dimensional quantities and derives a set of dimensionless numbers. In this examaple we arrive at two dimensionless numbers:

  1. bulk-to-shear ratio κ/μ=4.67\kappa / \mu = 4.67 and

  2. loading factor tref/μ=0.56t_\text{ref} / \mu = 0.56.

Source

==================================================
Buckingham Pi Analysis
==================================================
Symbol | Expression      | Value (in base units)              
-------+-----------------+------------------------------------
μ      | 3.571e+5*pascal | 3.571e+5*kilogram/(meter*second**2)
κ      | 1.667e+6*pascal | 1.667e+6*kilogram/(meter*second**2)
l_ref  | 0.1*meter       | 0.1*meter                          
t_ref  | 2.0e+5*pascal   | 2.0e+5*kilogram/(meter*second**2)  
u_ref  | 1.0*meter       | 1.0*meter                          

Dimension matrix (7 x 5):
Dimension           | μ  | κ  | l_ref | t_ref | u_ref
--------------------+----+----+-------+-------+------
amount_of_substance | 0  | 0  | 0     | 0     | 0    
current             | 0  | 0  | 0     | 0     | 0    
length              | -1 | -1 | 1     | -1    | 1    
luminous_intensity  | 0  | 0  | 0     | 0     | 0    
mass                | 1  | 1  | 0     | 1     | 0    
temperature         | 0  | 0  | 0     | 0     | 0    
time                | -2 | -2 | 0     | -2    | 0    

Dimensionless groups (3):
Group | Expression  | Value
------+-------------+------
Pi_1  | κ/μ         | 4.67 
Pi_2  | t_ref/μ     | 0.56 
Pi_3  | u_ref/l_ref | 10   
==================================================

Weak form

Source

Boundary traction tt is created to represent rotational vector field in the shifted xyxy-plane which is scaled with the reference load scale treft_\text{ref}. We first compute radial vector field in the shifted xyxy-plane

d=x−lrefh(0,0,1)Td = x - l_\text{ref} h (0,0,1)^T

which we normalize and cross product with the unit vector ez=(0,0,1)Te_z = (0,0,1)^T,

t=αtrefd∣∣d∣∣×ez.t = \alpha t_\text{ref} \frac{d}{||d||} \times e_z.

A load factor α\alpha is increased from 0 to 1 during the loading procedure.

Source

==================================================
Terms after normalization with "bulk"
==================================================
Reference factor from 'bulk':
Term | Factor     | Value (in base units)             
-----+------------+-----------------------------------
bulk | l_ref**3*κ | 1667.0*kilogram*meter**2/second**2

Term     | Factor  | Value (in base units)
---------+---------+----------------------
bulk     | 1       | 1.000                
shear    | μ/κ     | 0.2143               
external | t_ref/κ | 0.1200               
==================================================

The problem solved leads to symmetric positive definite system on the algebraic level. We choose to solve it using MUMPS Cholesky LDLTLDL^T solver for general symmetric matrices. We explicitly numerical pivoting by setting CNTL(1) = 0.

The nonlinear SNES solver is configured to use Newton line search with no (basic) line search.

Source
Source
Output
cc1: note: disable pass rtl-combine for functions in the range of [0, 4294967295]
cc1: note: disable pass rtl-combine for functions in the range of [0, 4294967295]
libffcx_forms_af412b33d1f218b8ef11e3593608f959f9204a7a.c: In function ‘tabulate_tensor_integral_07dacba57768d863f9622b2cfb21fb469f80aa07_hexahedron’:
libffcx_forms_af412b33d1f218b8ef11e3593608f959f9204a7a.c:613:6: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
  613 | void tabulate_tensor_integral_07dacba57768d863f9622b2cfb21fb469f80aa07_hexahedron(double* restrict A,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*** Load factor = 0.1000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=0.000e+00 |dx|=0.000e+00 |r|=1.653e-04 (u)
# all           |x|=0.000e+00 |dx|=0.000e+00 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=2.636e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=3.355e+00 |dx|=3.355e+00 |r|=1.258e-03 (u)
# all           |x|=3.355e+00 |dx|=3.355e+00 |r|=1.258e-03
# SNES iteration  1, KSP iteration   0       |r|=1.258e-03 
# SNES iteration  1, KSP iteration   1       |r|=2.330e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=3.256e+00 |dx|=1.644e-01 |r|=2.691e-05 (u)
# all           |x|=3.256e+00 |dx|=1.644e-01 |r|=2.691e-05
# SNES iteration  2, KSP iteration   0       |r|=2.691e-05 
# SNES iteration  2, KSP iteration   1       |r|=5.190e-18 
# SNES iteration  3 
# sub  0 [ 29k] |x|=3.253e+00 |dx|=4.947e-02 |r|=9.646e-06 (u)
# all           |x|=3.253e+00 |dx|=4.947e-02 |r|=9.646e-06
# SNES iteration  3, KSP iteration   0       |r|=9.646e-06 
# SNES iteration  3, KSP iteration   1       |r|=1.003e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=3.253e+00 |dx|=9.594e-04 |r|=4.645e-09 (u)
# all           |x|=3.253e+00 |dx|=9.594e-04 |r|=4.645e-09
# SNES iteration  4, KSP iteration   0       |r|=4.645e-09 
# SNES iteration  4, KSP iteration   1       |r|=6.873e-22 
# SNES iteration  5 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=3.253e+00 |dx|=6.808e-06 |r|=2.275e-13 (u)
# all           |x|=3.253e+00 |dx|=6.808e-06 |r|=2.275e-13
absolute asymmetry measure = 3.592e-16
relative asymmetry measure = 9.184e-17

*** Load factor = 0.2000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=3.253e+00 |dx|=6.808e-06 |r|=1.653e-04 (u)
# all           |x|=3.253e+00 |dx|=6.808e-06 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=2.702e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=6.563e+00 |dx|=3.312e+00 |r|=1.472e-03 (u)
# all           |x|=6.563e+00 |dx|=3.312e+00 |r|=1.472e-03
# SNES iteration  1, KSP iteration   0       |r|=1.472e-03 
# SNES iteration  1, KSP iteration   1       |r|=2.033e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=6.615e+00 |dx|=1.439e-01 |r|=2.808e-05 (u)
# all           |x|=6.615e+00 |dx|=1.439e-01 |r|=2.808e-05
# SNES iteration  2, KSP iteration   0       |r|=2.808e-05 
# SNES iteration  2, KSP iteration   1       |r|=7.798e-18 
# SNES iteration  3 
# sub  0 [ 29k] |x|=6.664e+00 |dx|=7.284e-02 |r|=1.491e-05 (u)
# all           |x|=6.664e+00 |dx|=7.284e-02 |r|=1.491e-05
# SNES iteration  3, KSP iteration   0       |r|=1.491e-05 
# SNES iteration  3, KSP iteration   1       |r|=1.401e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=6.665e+00 |dx|=1.429e-03 |r|=8.404e-09 (u)
# all           |x|=6.665e+00 |dx|=1.429e-03 |r|=8.404e-09
# SNES iteration  4, KSP iteration   0       |r|=8.404e-09 
# SNES iteration  4, KSP iteration   1       |r|=1.473e-21 
# SNES iteration  5 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=6.665e+00 |dx|=1.503e-05 |r|=9.099e-13 (u)
# all           |x|=6.665e+00 |dx|=1.503e-05 |r|=9.099e-13
absolute asymmetry measure = 3.629e-16
relative asymmetry measure = 8.793e-17

*** Load factor = 0.3000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=6.665e+00 |dx|=1.503e-05 |r|=1.653e-04 (u)
# all           |x|=6.665e+00 |dx|=1.503e-05 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=2.946e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=1.020e+01 |dx|=3.547e+00 |r|=2.479e-03 (u)
# all           |x|=1.020e+01 |dx|=3.547e+00 |r|=2.479e-03
# SNES iteration  1, KSP iteration   0       |r|=2.479e-03 
# SNES iteration  1, KSP iteration   1       |r|=2.060e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=1.026e+01 |dx|=1.653e-01 |r|=4.638e-05 (u)
# all           |x|=1.026e+01 |dx|=1.653e-01 |r|=4.638e-05
# SNES iteration  2, KSP iteration   0       |r|=4.638e-05 
# SNES iteration  2, KSP iteration   1       |r|=9.478e-18 
# SNES iteration  3 
# sub  0 [ 29k] |x|=1.033e+01 |dx|=9.295e-02 |r|=2.039e-05 (u)
# all           |x|=1.033e+01 |dx|=9.295e-02 |r|=2.039e-05
# SNES iteration  3, KSP iteration   0       |r|=2.039e-05 
# SNES iteration  3, KSP iteration   1       |r|=3.374e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=1.033e+01 |dx|=3.342e-03 |r|=3.430e-08 (u)
# all           |x|=1.033e+01 |dx|=3.342e-03 |r|=3.430e-08
# SNES iteration  4, KSP iteration   0       |r|=3.430e-08 
# SNES iteration  4, KSP iteration   1       |r|=5.086e-21 
# SNES iteration  5 
# sub  0 [ 29k] |x|=1.033e+01 |dx|=5.170e-05 |r|=8.867e-12 (u)
# all           |x|=1.033e+01 |dx|=5.170e-05 |r|=8.867e-12
# SNES iteration  5, KSP iteration   0       |r|=8.867e-12 
# SNES iteration  5, KSP iteration   1       |r|=1.285e-25 
# SNES iteration  6 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=1.033e+01 |dx|=1.307e-09 |r|=3.124e-16 (u)
# all           |x|=1.033e+01 |dx|=1.307e-09 |r|=3.124e-16
absolute asymmetry measure = 3.778e-16
relative asymmetry measure = 8.447e-17

*** Load factor = 0.4000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=1.033e+01 |dx|=1.307e-09 |r|=1.653e-04 (u)
# all           |x|=1.033e+01 |dx|=1.307e-09 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=3.197e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=1.413e+01 |dx|=3.827e+00 |r|=4.048e-03 (u)
# all           |x|=1.413e+01 |dx|=3.827e+00 |r|=4.048e-03
# SNES iteration  1, KSP iteration   0       |r|=4.048e-03 
# SNES iteration  1, KSP iteration   1       |r|=2.060e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=1.415e+01 |dx|=1.850e-01 |r|=1.075e-04 (u)
# all           |x|=1.415e+01 |dx|=1.850e-01 |r|=1.075e-04
# SNES iteration  2, KSP iteration   0       |r|=1.075e-04 
# SNES iteration  2, KSP iteration   1       |r|=6.186e-18 
# SNES iteration  3 
# sub  0 [ 29k] |x|=1.419e+01 |dx|=5.544e-02 |r|=7.397e-06 (u)
# all           |x|=1.419e+01 |dx|=5.544e-02 |r|=7.397e-06
# SNES iteration  3, KSP iteration   0       |r|=7.397e-06 
# SNES iteration  3, KSP iteration   1       |r|=4.950e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=1.419e+01 |dx|=4.906e-03 |r|=6.294e-08 (u)
# all           |x|=1.419e+01 |dx|=4.906e-03 |r|=6.294e-08
# SNES iteration  4, KSP iteration   0       |r|=6.294e-08 
# SNES iteration  4, KSP iteration   1       |r|=2.648e-21 
# SNES iteration  5 
# sub  0 [ 29k] |x|=1.419e+01 |dx|=2.603e-05 |r|=1.940e-12 (u)
# all           |x|=1.419e+01 |dx|=2.603e-05 |r|=1.940e-12
# SNES iteration  5, KSP iteration   0       |r|=1.940e-12 
# SNES iteration  5, KSP iteration   1       |r|=1.248e-25 
# SNES iteration  6 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=1.419e+01 |dx|=1.247e-09 |r|=4.263e-16 (u)
# all           |x|=1.419e+01 |dx|=1.247e-09 |r|=4.263e-16
absolute asymmetry measure = 4.038e-16
relative asymmetry measure = 8.552e-17

*** Load factor = 0.5000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=1.419e+01 |dx|=1.247e-09 |r|=1.653e-04 (u)
# all           |x|=1.419e+01 |dx|=1.247e-09 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=3.381e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=1.808e+01 |dx|=3.946e+00 |r|=5.126e-03 (u)
# all           |x|=1.808e+01 |dx|=3.946e+00 |r|=5.126e-03
# SNES iteration  1, KSP iteration   0       |r|=5.126e-03 
# SNES iteration  1, KSP iteration   1       |r|=2.121e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=1.804e+01 |dx|=1.959e-01 |r|=1.674e-04 (u)
# all           |x|=1.804e+01 |dx|=1.959e-01 |r|=1.674e-04
# SNES iteration  2, KSP iteration   0       |r|=1.674e-04 
# SNES iteration  2, KSP iteration   1       |r|=1.364e-17 
# SNES iteration  3 
# sub  0 [ 29k] |x|=1.799e+01 |dx|=5.355e-02 |r|=1.606e-06 (u)
# all           |x|=1.799e+01 |dx|=5.355e-02 |r|=1.606e-06
# SNES iteration  3, KSP iteration   0       |r|=1.606e-06 
# SNES iteration  3, KSP iteration   1       |r|=2.410e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=1.799e+01 |dx|=2.289e-03 |r|=1.538e-08 (u)
# all           |x|=1.799e+01 |dx|=2.289e-03 |r|=1.538e-08
# SNES iteration  4, KSP iteration   0       |r|=1.538e-08 
# SNES iteration  4, KSP iteration   1       |r|=2.314e-22 
# SNES iteration  5 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=1.799e+01 |dx|=2.299e-06 |r|=2.196e-14 (u)
# all           |x|=1.799e+01 |dx|=2.299e-06 |r|=2.196e-14
absolute asymmetry measure = 4.405e-16
relative asymmetry measure = 9.231e-17

*** Load factor = 0.6000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=1.799e+01 |dx|=2.299e-06 |r|=1.653e-04 (u)
# all           |x|=1.799e+01 |dx|=2.299e-06 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=3.304e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=2.169e+01 |dx|=3.782e+00 |r|=4.790e-03 (u)
# all           |x|=2.169e+01 |dx|=3.782e+00 |r|=4.790e-03
# SNES iteration  1, KSP iteration   0       |r|=4.790e-03 
# SNES iteration  1, KSP iteration   1       |r|=2.265e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=2.160e+01 |dx|=1.899e-01 |r|=1.478e-04 (u)
# all           |x|=2.160e+01 |dx|=1.899e-01 |r|=1.478e-04
# SNES iteration  2, KSP iteration   0       |r|=1.478e-04 
# SNES iteration  2, KSP iteration   1       |r|=1.209e-17 
# SNES iteration  3 
# sub  0 [ 29k] |x|=2.150e+01 |dx|=9.993e-02 |r|=1.152e-05 (u)
# all           |x|=2.150e+01 |dx|=9.993e-02 |r|=1.152e-05
# SNES iteration  3, KSP iteration   0       |r|=1.152e-05 
# SNES iteration  3, KSP iteration   1       |r|=7.770e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=2.150e+01 |dx|=6.437e-03 |r|=1.124e-07 (u)
# all           |x|=2.150e+01 |dx|=6.437e-03 |r|=1.124e-07
# SNES iteration  4, KSP iteration   0       |r|=1.124e-07 
# SNES iteration  4, KSP iteration   1       |r|=5.218e-21 
# SNES iteration  5 
# sub  0 [ 29k] |x|=2.150e+01 |dx|=4.364e-05 |r|=6.216e-12 (u)
# all           |x|=2.150e+01 |dx|=4.364e-05 |r|=6.216e-12
# SNES iteration  5, KSP iteration   0       |r|=6.216e-12 
# SNES iteration  5, KSP iteration   1       |r|=3.672e-25 
# SNES iteration  6 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=2.150e+01 |dx|=3.058e-09 |r|=6.053e-16 (u)
# all           |x|=2.150e+01 |dx|=3.058e-09 |r|=6.053e-16
absolute asymmetry measure = 5.396e-16
relative asymmetry measure = 9.161e-17

*** Load factor = 0.7000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=2.150e+01 |dx|=3.058e-09 |r|=1.653e-04 (u)
# all           |x|=2.150e+01 |dx|=3.058e-09 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=3.150e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=2.483e+01 |dx|=3.441e+00 |r|=3.670e-03 (u)
# all           |x|=2.483e+01 |dx|=3.441e+00 |r|=3.670e-03
# SNES iteration  1, KSP iteration   0       |r|=3.670e-03 
# SNES iteration  1, KSP iteration   1       |r|=1.958e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=2.471e+01 |dx|=1.720e-01 |r|=9.135e-05 (u)
# all           |x|=2.471e+01 |dx|=1.720e-01 |r|=9.135e-05
# SNES iteration  2, KSP iteration   0       |r|=9.135e-05 
# SNES iteration  2, KSP iteration   1       |r|=1.153e-17 
# SNES iteration  3 
# sub  0 [ 29k] |x|=2.462e+01 |dx|=9.648e-02 |r|=1.270e-05 (u)
# all           |x|=2.462e+01 |dx|=9.648e-02 |r|=1.270e-05
# SNES iteration  3, KSP iteration   0       |r|=1.270e-05 
# SNES iteration  3, KSP iteration   1       |r|=4.994e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=2.462e+01 |dx|=3.682e-03 |r|=3.581e-08 (u)
# all           |x|=2.462e+01 |dx|=3.682e-03 |r|=3.581e-08
# SNES iteration  4, KSP iteration   0       |r|=3.581e-08 
# SNES iteration  4, KSP iteration   1       |r|=3.275e-21 
# SNES iteration  5 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=2.462e+01 |dx|=2.313e-05 |r|=1.603e-12 (u)
# all           |x|=2.462e+01 |dx|=2.313e-05 |r|=1.603e-12
absolute asymmetry measure = 5.036e-16
relative asymmetry measure = 7.543e-17

*** Load factor = 0.8000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=2.462e+01 |dx|=2.313e-05 |r|=1.653e-04 (u)
# all           |x|=2.462e+01 |dx|=2.313e-05 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=3.132e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=2.757e+01 |dx|=3.072e+00 |r|=2.624e-03 (u)
# all           |x|=2.757e+01 |dx|=3.072e+00 |r|=2.624e-03
# SNES iteration  1, KSP iteration   0       |r|=2.624e-03 
# SNES iteration  1, KSP iteration   1       |r|=1.628e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=2.744e+01 |dx|=1.506e-01 |r|=5.122e-05 (u)
# all           |x|=2.744e+01 |dx|=1.506e-01 |r|=5.122e-05
# SNES iteration  2, KSP iteration   0       |r|=5.122e-05 
# SNES iteration  2, KSP iteration   1       |r|=9.576e-18 
# SNES iteration  3 
# sub  0 [ 29k] |x|=2.738e+01 |dx|=7.118e-02 |r|=6.890e-06 (u)
# all           |x|=2.738e+01 |dx|=7.118e-02 |r|=6.890e-06
# SNES iteration  3, KSP iteration   0       |r|=6.890e-06 
# SNES iteration  3, KSP iteration   1       |r|=2.105e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=2.738e+01 |dx|=1.353e-03 |r|=4.565e-09 (u)
# all           |x|=2.738e+01 |dx|=1.353e-03 |r|=4.565e-09
# SNES iteration  4, KSP iteration   0       |r|=4.565e-09 
# SNES iteration  4, KSP iteration   1       |r|=6.797e-22 
# SNES iteration  5 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=2.738e+01 |dx|=3.959e-06 |r|=4.074e-14 (u)
# all           |x|=2.738e+01 |dx|=3.959e-06 |r|=4.074e-14
absolute asymmetry measure = 4.969e-16
relative asymmetry measure = 6.938e-17

*** Load factor = 0.9000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=2.738e+01 |dx|=3.959e-06 |r|=1.653e-04 (u)
# all           |x|=2.738e+01 |dx|=3.959e-06 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=3.081e-16 
# SNES iteration  1 
# sub  0 [ 29k] |x|=2.999e+01 |dx|=2.745e+00 |r|=1.889e-03 (u)
# all           |x|=2.999e+01 |dx|=2.745e+00 |r|=1.889e-03
# SNES iteration  1, KSP iteration   0       |r|=1.889e-03 
# SNES iteration  1, KSP iteration   1       |r|=1.304e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=2.988e+01 |dx|=1.296e-01 |r|=2.962e-05 (u)
# all           |x|=2.988e+01 |dx|=1.296e-01 |r|=2.962e-05
# SNES iteration  2, KSP iteration   0       |r|=2.962e-05 
# SNES iteration  2, KSP iteration   1       |r|=8.401e-18 
# SNES iteration  3 
# sub  0 [ 29k] |x|=2.984e+01 |dx|=4.715e-02 |r|=2.732e-06 (u)
# all           |x|=2.984e+01 |dx|=4.715e-02 |r|=2.732e-06
# SNES iteration  3, KSP iteration   0       |r|=2.732e-06 
# SNES iteration  3, KSP iteration   1       |r|=4.554e-19 
# SNES iteration  4 
# sub  0 [ 29k] |x|=2.984e+01 |dx|=4.517e-04 |r|=4.578e-10 (u)
# all           |x|=2.984e+01 |dx|=4.517e-04 |r|=4.578e-10
# SNES iteration  4, KSP iteration   0       |r|=4.578e-10 
# SNES iteration  4, KSP iteration   1       |r|=1.291e-22 
# SNES iteration  5 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=2.984e+01 |dx|=4.690e-07 |r|=8.788e-16 (u)
# all           |x|=2.984e+01 |dx|=4.690e-07 |r|=8.788e-16
absolute asymmetry measure = 5.671e-16
relative asymmetry measure = 7.596e-17

*** Load factor = 1.0000 (spectral formulation) 
 
# SNES iteration  0 
# sub  0 [ 29k] |x|=2.984e+01 |dx|=4.690e-07 |r|=1.653e-04 (u)
# all           |x|=2.984e+01 |dx|=4.690e-07 |r|=1.653e-04
# SNES iteration  0, KSP iteration   0       |r|=1.653e-04 
# SNES iteration  0, KSP iteration   1       |r|=1.387e-15 
# SNES iteration  1 
# sub  0 [ 29k] |x|=3.218e+01 |dx|=2.475e+00 |r|=1.408e-03 (u)
# all           |x|=3.218e+01 |dx|=2.475e+00 |r|=1.408e-03
# SNES iteration  1, KSP iteration   0       |r|=1.408e-03 
# SNES iteration  1, KSP iteration   1       |r|=3.526e-17 
# SNES iteration  2 
# sub  0 [ 29k] |x|=3.208e+01 |dx|=1.103e-01 |r|=1.807e-05 (u)
# all           |x|=3.208e+01 |dx|=1.103e-01 |r|=1.807e-05
# SNES iteration  2, KSP iteration   0       |r|=1.807e-05 
# SNES iteration  2, KSP iteration   1       |r|=5.351e-17 
# SNES iteration  3 
# sub  0 [ 29k] |x|=3.206e+01 |dx|=3.044e-02 |r|=9.974e-07 (u)
# all           |x|=3.206e+01 |dx|=3.044e-02 |r|=9.974e-07
# SNES iteration  3, KSP iteration   0       |r|=9.974e-07 
# SNES iteration  3, KSP iteration   1       |r|=3.364e-20 
# SNES iteration  4 
# sub  0 [ 29k] |x|=3.206e+01 |dx|=1.577e-04 |r|=4.883e-11 (u)
# all           |x|=3.206e+01 |dx|=1.577e-04 |r|=4.883e-11
# SNES iteration  4, KSP iteration   0       |r|=4.883e-11 
# SNES iteration  4, KSP iteration   1       |r|=1.235e-23 
# SNES iteration  5 success = CONVERGED_FNORM_RELATIVE
# sub  0 [ 29k] |x|=3.206e+01 |dx|=5.559e-08 |r|=8.131e-16 (u)
# all           |x|=3.206e+01 |dx|=5.559e-08 |r|=8.131e-16
absolute asymmetry measure = 5.009e-16
relative asymmetry measure = 6.518e-17
Source
<PIL.Image.Image image mode=RGB size=2048x2048>

Figure 2:Deformed tube coloured by von Mises stress σvm\sigma_\text{vm} at full torsional load.

References
  1. Pence, T. J., & Gou, K. (2014). On compressible versions of the incompressible neo-Hookean material. Mathematics and Mechanics of Solids, 20(2), 157–182. 10.1177/1081286514544258
  2. Habera, M., & Zilian, A. (2021). Symbolic spectral decomposition of 3x3 matrices. arXiv. 10.48550/ARXIV.2111.02117