Hyperelasticity#

Author: Jørgen S. Dokken and Garth N. Wells

This section shows how to solve the hyperelasticity problem for deformation of a beam.

We will also show how to create a constant boundary condition for a vector function space.

We start by importing DOLFINx and some additional dependencies. Then, we create a slender cantilever consisting of hexahedral elements and create the function space V for our unknown.

import numpy as np
import ufl

from petsc4py import PETSc
from mpi4py import MPI
from dolfinx import fem, mesh, plot
L = 20.0
domain = mesh.create_box(MPI.COMM_WORLD,[[0.0,0.0,0.0], [L, 1, 1]], [20, 5, 5], mesh.CellType.hexahedron)
V = fem.VectorFunctionSpace(domain, ("CG", 2))

We create two python functions for determining the facets to apply boundary conditions to

def left(x):
    return np.isclose(x[0], 0)

def right(x):
    return np.isclose(x[0], L)

fdim = domain.topology.dim -1
left_facets = mesh.locate_entities_boundary(domain, fdim, left)
right_facets = mesh.locate_entities_boundary(domain, fdim, right)

Next, we create a marker based on these two functions

# Concatenate and sort the arrays based on facet indices. Left facets marked with 1, right facets with two
marked_facets = np.hstack([left_facets, right_facets])
marked_values = np.hstack([np.full_like(left_facets, 1), np.full_like(right_facets, 2)])
sorted_facets = np.argsort(marked_facets)
facet_tag = mesh.meshtags(domain, fdim, marked_facets[sorted_facets], marked_values[sorted_facets])

We then create a function for supplying the boundary condition on the left side, which is fixed.

u_bc = np.array((0,) * domain.geometry.dim, dtype=PETSc.ScalarType)

To apply the boundary condition, we identity the dofs located on the facets marked by the MeshTag.

left_dofs = fem.locate_dofs_topological(V, facet_tag.dim, facet_tag.find(1))
bcs = [fem.dirichletbc(u_bc, left_dofs, V)]

Next, we define the body force on the reference configuration (B), and nominal (first Piola-Kirchhoff) traction (T).

B = fem.Constant(domain, PETSc.ScalarType((0, 0, 0)))
T = fem.Constant(domain, PETSc.ScalarType((0, 0, 0)))

Define the test and solution functions on the space \(V\)

v = ufl.TestFunction(V)
u = fem.Function(V)

Define kinematic quantities used in the problem

# Spatial dimension
d = len(u)

# Identity tensor
I = ufl.variable(ufl.Identity(d))

# Deformation gradient
F = ufl.variable(I + ufl.grad(u))

# Right Cauchy-Green tensor
C = ufl.variable(F.T * F)

# Invariants of deformation tensors
Ic = ufl.variable(ufl.tr(C))
J  = ufl.variable(ufl.det(F))

Define the elasticity model via a stored strain energy density function \(\psi\), and create the expression for the first Piola-Kirchhoff stress:

# Elasticity parameters
E = PETSc.ScalarType(1.0e4)
nu = PETSc.ScalarType(0.3)
mu = fem.Constant(domain, E/(2*(1 + nu)))
lmbda = fem.Constant(domain, E*nu/((1 + nu)*(1 - 2*nu)))
# Stored strain energy density (compressible neo-Hookean model)
psi = (mu / 2) * (Ic - 3) - mu * ufl.ln(J) + (lmbda / 2) * (ufl.ln(J))**2
# Stress
# Hyper-elasticity
P = ufl.diff(psi, F)

Comparison to linear elasticity

To illustrate the difference between linear and hyperelasticity, the following lines can be uncommented to solve the linear elasticity problem.

# P = 2.0 * mu * ufl.sym(ufl.grad(u)) + lmbda * ufl.tr(ufl.sym(ufl.grad(u))) * I

Define the variational form with traction integral over all facets with value 2. We set the quadrature degree for the integrals to 4.

metadata = {"quadrature_degree": 4}
ds = ufl.Measure('ds', domain=domain, subdomain_data=facet_tag, metadata=metadata)
dx = ufl.Measure("dx", domain=domain, metadata=metadata)
# Define form F (we want to find u such that F(u) = 0)
F = ufl.inner(ufl.grad(v), P)*dx - ufl.inner(v, B)*dx - ufl.inner(v, T)*ds(2) 

As the varitional form is non-linear and written on residual form, we use the non-linear problem class from DOLFINx to set up required structures to use a Newton solver.

problem = fem.petsc.NonlinearProblem(F, u, bcs)

and then create and customize the Newton solver

from dolfinx import nls
solver = nls.petsc.NewtonSolver(domain.comm, problem)

# Set Newton solver options
solver.atol = 1e-8
solver.rtol = 1e-8
solver.convergence_criterion = "incremental"

We create a function to plot the solution at each time step.

import pyvista
import matplotlib.pyplot as plt
pyvista.start_xvfb()
plotter = pyvista.Plotter()
plotter.open_gif("deformation.gif", fps=3)

topology, cells, geometry = plot.create_vtk_mesh(u.function_space)
function_grid = pyvista.UnstructuredGrid(topology, cells, geometry)

values = np.zeros((geometry.shape[0], 3))
values[:, :len(u)] = u.x.array.reshape(geometry.shape[0], len(u))
function_grid["u"] = values
function_grid.set_active_vectors("u")

# Warp mesh by deformation
warped = function_grid.warp_by_vector("u", factor=1)
warped.set_active_vectors("u")

# Add mesh to plotter and visualize
actor = plotter.add_mesh(warped, show_edges=True, lighting=False, clim=[0, 10])

# Compute magnitude of displacement to visualize in GIF
Vs = fem.FunctionSpace(domain, ("Lagrange", 2))
magnitude = fem.Function(Vs)
us = fem.Expression(ufl.sqrt(sum([u[i]**2 for i in range(len(u))])), Vs.element.interpolation_points())
magnitude.interpolate(us)
warped["mag"] = magnitude.x.array

Finally, we solve the problem over several time steps, updating the y-component of the traction

from dolfinx import log
log.set_log_level(log.LogLevel.INFO)
tval0 = -1.5
for n in range(1, 10):
    T.value[2] = n * tval0
    num_its, converged = solver.solve(u)
    assert(converged)
    u.x.scatter_forward()
    print(f"Time step {n}, Number of iterations {num_its}, Load {T.value}")
    function_grid["u"][:, :len(u)] = u.x.array.reshape(geometry.shape[0], len(u))
    magnitude.interpolate(us)
    warped.set_active_scalars("mag")
    warped_n = function_grid.warp_by_vector(factor=1)
    plotter.update_coordinates(warped_n.points.copy(), render=False)
    plotter.update_scalar_bar_range([0, 10])
    plotter.update_scalars(magnitude.x.array)
    plotter.write_frame()
plotter.close()
2023-05-01 08:15:16.899 (   6.720s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:17.388 (   7.208s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.488564, 0.460000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:17.604 (   7.425s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:17.968 (   7.788s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.363549, 0.330000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:17.979 (   7.799s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 22.2455 (tol = 1e-08) r (rel) = 0.134278(tol = 1e-08)
2023-05-01 08:15:18.186 (   8.006s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:18.535 (   8.355s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.348530, 0.320000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:18.546 (   8.366s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 2.43261 (tol = 1e-08) r (rel) = 0.0146837(tol = 1e-08)
2023-05-01 08:15:18.751 (   8.571s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:19.100 (   8.920s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.349096, 0.300000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:19.111 (   8.931s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 4.43158 (tol = 1e-08) r (rel) = 0.0267498(tol = 1e-08)
2023-05-01 08:15:19.319 (   9.139s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:19.649 (   9.469s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.330337, 0.300000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:19.661 (   9.481s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 0.144189 (tol = 1e-08) r (rel) = 0.000870353(tol = 1e-08)
2023-05-01 08:15:19.869 (   9.689s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:20.204 (  10.024s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.335163, 0.300000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:20.216 (  10.036s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 0.021424 (tol = 1e-08) r (rel) = 0.000129319(tol = 1e-08)
2023-05-01 08:15:20.424 (  10.244s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:20.763 (  10.584s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.339770, 0.330000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:20.777 (  10.598s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 7: r (abs) = 4.80067e-06 (tol = 1e-08) r (rel) = 2.89777e-08(tol = 1e-08)
2023-05-01 08:15:20.986 (  10.806s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:21.321 (  11.142s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.335571, 0.310000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:21.333 (  11.153s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 8: r (abs) = 2.64464e-11 (tol = 1e-08) r (rel) = 1.59635e-13(tol = 1e-08)
2023-05-01 08:15:21.333 (  11.153s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 8 iterations and 8 linear solver iterations.
Time step 1, Number of iterations 8, Load [ 0.   0.  -1.5]
2023-05-01 08:15:21.784 (  11.605s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:22.141 (  11.962s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.357014, 0.310000, 0.050000 (PETSc Krylov solver)
2023-05-01 08:15:22.358 (  12.179s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:22.698 (  12.518s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.339284, 0.310000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:22.710 (  12.530s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 17.3254 (tol = 1e-08) r (rel) = 0.117842(tol = 1e-08)
2023-05-01 08:15:22.917 (  12.738s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:23.269 (  13.089s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.351818, 0.310000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:23.280 (  13.101s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 5.14882 (tol = 1e-08) r (rel) = 0.0350207(tol = 1e-08)
2023-05-01 08:15:23.485 (  13.306s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:23.835 (  13.656s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.349881, 0.330000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:23.846 (  13.667s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 7.24003 (tol = 1e-08) r (rel) = 0.0492445(tol = 1e-08)
2023-05-01 08:15:24.054 (  13.875s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:24.395 (  14.215s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.340651, 0.300000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:24.408 (  14.228s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 0.777889 (tol = 1e-08) r (rel) = 0.00529096(tol = 1e-08)
2023-05-01 08:15:24.614 (  14.434s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:24.952 (  14.773s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.338947, 0.330000, 0.010000 (PETSc Krylov solver)
2023-05-01 08:15:24.964 (  14.785s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 1.25525 (tol = 1e-08) r (rel) = 0.00853785(tol = 1e-08)
2023-05-01 08:15:25.170 (  14.991s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:25.508 (  15.328s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.337341, 0.310000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:25.520 (  15.340s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 7: r (abs) = 0.00849512 (tol = 1e-08) r (rel) = 5.77813e-05(tol = 1e-08)
2023-05-01 08:15:25.727 (  15.548s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:26.067 (  15.887s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.339699, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:26.080 (  15.901s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 8: r (abs) = 0.000192107 (tol = 1e-08) r (rel) = 1.30665e-06(tol = 1e-08)
2023-05-01 08:15:26.287 (  16.107s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:26.632 (  16.452s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.344593, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:26.643 (  16.463s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 9: r (abs) = 1.70757e-10 (tol = 1e-08) r (rel) = 1.16144e-12(tol = 1e-08)
2023-05-01 08:15:26.643 (  16.463s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 9 iterations and 9 linear solver iterations.
Time step 2, Number of iterations 9, Load [ 0.  0. -3.]
2023-05-01 08:15:26.977 (  16.798s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:27.322 (  17.142s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.344678, 0.310000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:27.540 (  17.361s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:27.884 (  17.704s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.343635, 0.340000, 0.010000 (PETSc Krylov solver)
2023-05-01 08:15:27.897 (  17.718s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 10.0011 (tol = 1e-08) r (rel) = 0.0887471(tol = 1e-08)
2023-05-01 08:15:28.103 (  17.923s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:28.444 (  18.264s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.341099, 0.310000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:28.455 (  18.276s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 5.33026 (tol = 1e-08) r (rel) = 0.0472992(tol = 1e-08)
2023-05-01 08:15:28.661 (  18.482s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:28.998 (  18.818s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.336554, 0.300000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:29.009 (  18.829s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 11.9901 (tol = 1e-08) r (rel) = 0.106397(tol = 1e-08)
2023-05-01 08:15:29.214 (  19.034s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:29.549 (  19.370s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.335408, 0.310000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:29.560 (  19.380s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 2.29702 (tol = 1e-08) r (rel) = 0.0203831(tol = 1e-08)
2023-05-01 08:15:29.766 (  19.587s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:30.121 (  19.941s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.354027, 0.320000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:30.132 (  19.953s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 3.90234 (tol = 1e-08) r (rel) = 0.0346282(tol = 1e-08)
2023-05-01 08:15:30.340 (  20.160s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:30.683 (  20.504s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.343931, 0.310000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:30.694 (  20.515s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 7: r (abs) = 0.236535 (tol = 1e-08) r (rel) = 0.00209895(tol = 1e-08)
2023-05-01 08:15:30.901 (  20.721s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:31.246 (  21.066s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.345437, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:31.257 (  21.078s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 8: r (abs) = 0.0427142 (tol = 1e-08) r (rel) = 0.000379034(tol = 1e-08)
2023-05-01 08:15:31.463 (  21.283s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:31.817 (  21.638s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.354546, 0.340000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:31.828 (  21.648s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 9: r (abs) = 2.87798e-05 (tol = 1e-08) r (rel) = 2.55384e-07(tol = 1e-08)
2023-05-01 08:15:32.033 (  21.853s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:32.372 (  22.192s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.338649, 0.310000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:32.386 (  22.206s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 10: r (abs) = 6.09481e-10 (tol = 1e-08) r (rel) = 5.40836e-12(tol = 1e-08)
2023-05-01 08:15:32.386 (  22.206s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 10 iterations and 10 linear solver iterations.
Time step 3, Number of iterations 10, Load [ 0.   0.  -4.5]
2023-05-01 08:15:32.719 (  22.540s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:33.057 (  22.877s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.337536, 0.330000, 0.010000 (PETSc Krylov solver)
2023-05-01 08:15:33.273 (  23.094s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:33.615 (  23.435s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.341698, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:33.626 (  23.447s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 5.50693 (tol = 1e-08) r (rel) = 0.0653918(tol = 1e-08)
2023-05-01 08:15:33.832 (  23.652s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:34.171 (  23.991s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.338977, 0.300000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:34.183 (  24.003s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 26.2489 (tol = 1e-08) r (rel) = 0.311692(tol = 1e-08)
2023-05-01 08:15:34.390 (  24.210s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:34.724 (  24.545s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.334859, 0.300000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:34.738 (  24.558s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 2.30927 (tol = 1e-08) r (rel) = 0.0274213(tol = 1e-08)
2023-05-01 08:15:34.944 (  24.764s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:35.285 (  25.106s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.341763, 0.320000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:35.298 (  25.119s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 14.0562 (tol = 1e-08) r (rel) = 0.16691(tol = 1e-08)
2023-05-01 08:15:35.506 (  25.327s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:35.852 (  25.673s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.346272, 0.330000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:35.864 (  25.684s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 0.222774 (tol = 1e-08) r (rel) = 0.00264532(tol = 1e-08)
2023-05-01 08:15:36.071 (  25.891s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:36.424 (  26.244s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352958, 0.320000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:36.435 (  26.256s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 7: r (abs) = 0.286671 (tol = 1e-08) r (rel) = 0.00340406(tol = 1e-08)
2023-05-01 08:15:36.642 (  26.462s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:36.983 (  26.804s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.341577, 0.330000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:36.995 (  26.815s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 8: r (abs) = 0.000321869 (tol = 1e-08) r (rel) = 3.82203e-06(tol = 1e-08)
2023-05-01 08:15:37.201 (  27.021s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:37.547 (  27.367s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.345877, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:37.558 (  27.378s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 9: r (abs) = 2.63796e-07 (tol = 1e-08) r (rel) = 3.13244e-09(tol = 1e-08)
2023-05-01 08:15:37.558 (  27.378s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 9 iterations and 9 linear solver iterations.
Time step 4, Number of iterations 9, Load [ 0.  0. -6.]
2023-05-01 08:15:37.910 (  27.731s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:38.258 (  28.078s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.347165, 0.330000, 0.010000 (PETSc Krylov solver)
2023-05-01 08:15:38.476 (  28.296s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:38.832 (  28.652s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.355631, 0.340000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:38.844 (  28.664s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 3.19462 (tol = 1e-08) r (rel) = 0.0496479(tol = 1e-08)
2023-05-01 08:15:39.052 (  28.873s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:39.399 (  29.219s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.346019, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:39.410 (  29.230s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 7.71429 (tol = 1e-08) r (rel) = 0.119888(tol = 1e-08)
2023-05-01 08:15:39.616 (  29.436s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:39.968 (  29.789s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352422, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:39.980 (  29.801s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 0.850873 (tol = 1e-08) r (rel) = 0.0132235(tol = 1e-08)
2023-05-01 08:15:40.186 (  30.006s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:40.530 (  30.350s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.343922, 0.320000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:40.541 (  30.361s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 0.371434 (tol = 1e-08) r (rel) = 0.0057725(tol = 1e-08)
2023-05-01 08:15:40.746 (  30.567s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:41.094 (  30.914s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.347678, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:41.106 (  30.926s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 0.00215066 (tol = 1e-08) r (rel) = 3.34236e-05(tol = 1e-08)
2023-05-01 08:15:41.311 (  31.132s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:41.673 (  31.494s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.361820, 0.350000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:41.685 (  31.505s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 7: r (abs) = 2.54607e-06 (tol = 1e-08) r (rel) = 3.95687e-08(tol = 1e-08)
2023-05-01 08:15:41.892 (  31.712s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:42.254 (  32.074s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.361755, 0.320000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:42.265 (  32.086s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 8: r (abs) = 1.51485e-13 (tol = 1e-08) r (rel) = 2.35425e-15(tol = 1e-08)
2023-05-01 08:15:42.265 (  32.086s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 8 iterations and 8 linear solver iterations.
Time step 5, Number of iterations 8, Load [ 0.   0.  -7.5]
2023-05-01 08:15:42.604 (  32.424s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:42.956 (  32.777s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352284, 0.310000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:43.173 (  32.993s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:43.525 (  33.346s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352173, 0.330000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:43.536 (  33.356s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 2.00649 (tol = 1e-08) r (rel) = 0.0395622(tol = 1e-08)
2023-05-01 08:15:43.742 (  33.562s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:44.105 (  33.925s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.362470, 0.350000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:44.116 (  33.936s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 4.60977 (tol = 1e-08) r (rel) = 0.0908914(tol = 1e-08)
2023-05-01 08:15:44.322 (  34.142s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:44.674 (  34.494s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352249, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:44.686 (  34.506s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 0.185372 (tol = 1e-08) r (rel) = 0.00365501(tol = 1e-08)
2023-05-01 08:15:44.893 (  34.713s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:45.245 (  35.066s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352834, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:45.258 (  35.078s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 0.024688 (tol = 1e-08) r (rel) = 0.000486777(tol = 1e-08)
2023-05-01 08:15:45.465 (  35.285s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:45.815 (  35.635s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.349954, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:45.826 (  35.646s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 5.69254e-06 (tol = 1e-08) r (rel) = 1.12241e-07(tol = 1e-08)
2023-05-01 08:15:46.033 (  35.853s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:46.388 (  36.208s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.355105, 0.330000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:46.400 (  36.220s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 7: r (abs) = 2.67626e-11 (tol = 1e-08) r (rel) = 5.27682e-13(tol = 1e-08)
2023-05-01 08:15:46.400 (  36.220s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 7 iterations and 7 linear solver iterations.
Time step 6, Number of iterations 7, Load [ 0.  0. -9.]
2023-05-01 08:15:46.738 (  36.558s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:47.091 (  36.911s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352828, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:47.309 (  37.130s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:47.663 (  37.484s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.354094, 0.330000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:47.675 (  37.495s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 1.38506 (tol = 1e-08) r (rel) = 0.0336622(tol = 1e-08)
2023-05-01 08:15:47.880 (  37.700s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:48.230 (  38.050s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.350240, 0.320000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:48.241 (  38.061s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 3.03739 (tol = 1e-08) r (rel) = 0.07382(tol = 1e-08)
2023-05-01 08:15:48.446 (  38.267s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:48.804 (  38.624s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.357498, 0.330000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:48.817 (  38.637s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 0.0412386 (tol = 1e-08) r (rel) = 0.00100225(tol = 1e-08)
2023-05-01 08:15:49.024 (  38.845s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:49.388 (  39.208s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.363553, 0.340000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:49.399 (  39.220s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 0.00205057 (tol = 1e-08) r (rel) = 4.98364e-05(tol = 1e-08)
2023-05-01 08:15:49.606 (  39.426s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:49.970 (  39.790s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.363638, 0.340000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:49.983 (  39.803s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 1.78865e-08 (tol = 1e-08) r (rel) = 4.34709e-10(tol = 1e-08)
2023-05-01 08:15:49.983 (  39.803s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 6 iterations and 6 linear solver iterations.
Time step 7, Number of iterations 6, Load [  0.    0.  -10.5]
2023-05-01 08:15:50.315 (  40.135s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:50.669 (  40.489s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.353664, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:50.886 (  40.706s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:51.244 (  41.064s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.358309, 0.350000, 0.010000 (PETSc Krylov solver)
2023-05-01 08:15:51.255 (  41.076s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 1.06336 (tol = 1e-08) r (rel) = 0.031085(tol = 1e-08)
2023-05-01 08:15:51.462 (  41.282s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:51.817 (  41.637s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.354632, 0.320000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:51.829 (  41.649s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 2.0477 (tol = 1e-08) r (rel) = 0.0598598(tol = 1e-08)
2023-05-01 08:15:52.034 (  41.855s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:52.407 (  42.227s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.372294, 0.340000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:52.418 (  42.238s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 0.00897719 (tol = 1e-08) r (rel) = 0.000262427(tol = 1e-08)
2023-05-01 08:15:52.624 (  42.445s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:52.979 (  42.800s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.354983, 0.320000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:52.991 (  42.811s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 0.000167422 (tol = 1e-08) r (rel) = 4.89419e-06(tol = 1e-08)
2023-05-01 08:15:53.196 (  43.017s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:53.551 (  43.371s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.354459, 0.340000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:53.563 (  43.384s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 3.23994e-11 (tol = 1e-08) r (rel) = 9.4712e-13(tol = 1e-08)
2023-05-01 08:15:53.563 (  43.384s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 6 iterations and 6 linear solver iterations.
Time step 8, Number of iterations 6, Load [  0.   0. -12.]
2023-05-01 08:15:53.896 (  43.716s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:54.249 (  44.070s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.353381, 0.310000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:54.468 (  44.288s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:54.826 (  44.646s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.357662, 0.330000, 0.040000 (PETSc Krylov solver)
2023-05-01 08:15:54.838 (  44.659s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 2: r (abs) = 0.898789 (tol = 1e-08) r (rel) = 0.0309666(tol = 1e-08)
2023-05-01 08:15:55.045 (  44.865s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:55.397 (  45.217s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.352339, 0.310000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:55.409 (  45.229s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 3: r (abs) = 1.38354 (tol = 1e-08) r (rel) = 0.0476679(tol = 1e-08)
2023-05-01 08:15:55.616 (  45.436s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:55.972 (  45.792s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.356009, 0.320000, 0.050000 (PETSc Krylov solver)
2023-05-01 08:15:55.982 (  45.803s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 4: r (abs) = 0.00185096 (tol = 1e-08) r (rel) = 6.37724e-05(tol = 1e-08)
2023-05-01 08:15:56.188 (  46.008s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:56.541 (  46.362s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.353518, 0.320000, 0.030000 (PETSc Krylov solver)
2023-05-01 08:15:56.554 (  46.374s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 5: r (abs) = 7.87183e-06 (tol = 1e-08) r (rel) = 2.71213e-07(tol = 1e-08)
Time step 9, Number of iterations 6, Load [  0.    0.  -13.5]
2023-05-01 08:15:56.760 (  46.580s) [main            ]              petsc.cpp:675   INFO| PETSc Krylov solver starting to solve system.
2023-05-01 08:15:57.109 (  46.930s) [main            ]         TimeLogger.cpp:28    INFO| Elapsed wall, usr, sys time: 0.349545, 0.330000, 0.020000 (PETSc Krylov solver)
2023-05-01 08:15:57.121 (  46.941s) [main            ]       NewtonSolver.cpp:36    INFO| Newton iteration 6: r (abs) = 2.75782e-13 (tol = 1e-08) r (rel) = 9.50169e-15(tol = 1e-08)
2023-05-01 08:15:57.121 (  46.941s) [main            ]       NewtonSolver.cpp:255   INFO| Newton solver finished in 6 iterations and 6 linear solver iterations.
gif