Global problem with internal variables and sub-Newton: Norton creep

The same small-strain Norton model is used twice: first as a strain-controlled plane-strain material point via dae.TimeSteppingManager, then as a SimState finite element problem with a rectangular excavation in an initially lithostatic salt block.

Download this notebook

[6]:
from functools import partial
from pathlib import Path

import jax
import jax.numpy as jnp
import meshio
import numpy as np

from autopdex import SimState, dae, spaces
from autopdex.models import km_tools as km

jax.config.update("jax_enable_x64", True)

Material model

Units are MPa, m and days. Plane strain is embedded in the compact Kelvin-Mandel vector [xx, yy, zz, sqrt(2) xy]:

\[\boldsymbol\varepsilon = \left[\varepsilon_{xx},\varepsilon_{yy},\varepsilon_{zz},\sqrt{2}\,\varepsilon_{xy}\right]^T\]

All dot products below are Kelvin-Mandel products and therefore represent tensor contractions. With elastic strain

\[\boldsymbol\varepsilon_\mathrm{e} = \boldsymbol\varepsilon - \boldsymbol\varepsilon_\mathrm{cr},\]

the elastic strain energy density and stress are

\[\psi(\boldsymbol\varepsilon_\mathrm{e}) = \mu\,\boldsymbol\varepsilon_\mathrm{e}\cdot\boldsymbol\varepsilon_\mathrm{e} + \frac{1}{2}\lambda\,\mathrm{tr}(\boldsymbol\varepsilon_\mathrm{e})^2, \qquad \boldsymbol\sigma = \frac{\partial \psi}{\partial \boldsymbol\varepsilon_\mathrm{e}} + \boldsymbol\sigma_0.\]

The deviatoric and equivalent stresses are

\[\boldsymbol s = \mathrm{dev}(\boldsymbol\sigma), \qquad \sigma_\mathrm{eq} = \sqrt{\frac{3}{2}\,\boldsymbol s\cdot\boldsymbol s}.\]

The two-term Norton creep law is integrated locally as

\[\dot{\varepsilon}_\mathrm{cr,eq} = A_1\left(\frac{\sigma_\mathrm{eq}}{\sigma_\mathrm{ref}}\right)^{n_1} + A_2\left(\frac{\sigma_\mathrm{eq}}{\sigma_\mathrm{ref}}\right)^{n_2}, \qquad \dot{\boldsymbol\varepsilon}_\mathrm{cr} = \dot{\varepsilon}_\mathrm{cr,eq}\,\frac{3}{2}\,\frac{\boldsymbol s}{\sigma_\mathrm{eq}}.\]
[7]:
E = 25_000.0
nu = 0.25
lam = E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu))
mu = E / (2.0 * (1.0 + nu))

sigma_ref = 1.0
A1, n1 = 1.0e-7, 1.0
A2, n2 = 1.0e-10, 5.0

zero4 = jnp.zeros(4)

def strain_energy(eps_e):
    return mu * (eps_e @ eps_e) + 0.5 * lam * km.trace(eps_e) ** 2

def total_stress(eps, eps_cr, sigma_offset=zero4):
    return jax.jacrev(strain_energy)(eps - eps_cr) + sigma_offset

def equivalent_stress(sig):
    s = km.dev(sig)
    return jnp.sqrt(1.5 * (s @ s) + 1.0e-30)

def norton_creep(q_fun, t, settings):
    q, q_t = jax.jvp(q_fun, (t,), (1.0,))
    sig = total_stress(settings["eps"], q["eps_cr"], settings["sigma_offset"])
    s = km.dev(sig)
    sig_eq = equivalent_stress(sig)
    eq_rate = A1 * (sig_eq / sigma_ref) ** n1 + A2 * (sig_eq / sigma_ref) ** n2
    return q_t["eps_cr"] - eq_rate * 1.5 * s / sig_eq

1. Strain-controlled material point

The material point uses the prescribed compressive strain

\[\boldsymbol\varepsilon(t) = \left[-6\cdot 10^{-4}\min\left(\frac{t}{20\,\mathrm d},1\right),0,0,0\right]^T, \qquad \boldsymbol\sigma_0 = \boldsymbol 0, \qquad \boldsymbol\varepsilon_\mathrm{cr}(0)=\boldsymbol 0.\]
[ ]:
def strain_control(t):
    eps_xx = -6.0e-4 * jnp.minimum(t / 20.0, 1.0)
    return jnp.asarray([eps_xx, 0.0, 0.0, 0.0])

def material_point_model(q_fun, t, settings):
    return norton_creep(q_fun, t, {"eps": strain_control(t), "sigma_offset": zero4})

def material_point_output(q_fun, t, settings):
    q = q_fun(t)
    eps = strain_control(t)
    sig = total_stress(eps, q["eps_cr"])
    return {
        "eps_xx": eps[0],
        "eps_cr_eq": jnp.sqrt(2.0 / 3.0 * (q["eps_cr"] @ q["eps_cr"])),
        "sig_xx": sig[0],
        "sig_eq": equivalent_stress(sig),
    }

local_manager = dae.TimeSteppingManager(
    {
        "dae": material_point_model,
        "time integrators": {"eps_cr": dae.BackwardEuler()},
        "verbose": 0,
    },
    root_solver=partial(dae.newton_solver, atol=1e-13, rtol=1e-11),
    save_policy=dae.SaveAllPolicy(),
    postprocessing_fun=material_point_output,
)

result = local_manager.run({"eps_cr": zero4}, dt0=2.0, t_final=120.0, num_time_steps=60)
Progress: 3%, Time: 4.00e+00, dt: 2.00e+00, iterations: 1
Progress: 8%, Time: 1.00e+01, dt: 2.00e+00, iterations: 2
Progress: 13%, Time: 1.60e+01, dt: 2.00e+00, iterations: 2
Progress: 18%, Time: 2.20e+01, dt: 2.00e+00, iterations: 3
Progress: 23%, Time: 2.80e+01, dt: 2.00e+00, iterations: 2
Progress: 28%, Time: 3.40e+01, dt: 2.00e+00, iterations: 2
Progress: 33%, Time: 4.00e+01, dt: 2.00e+00, iterations: 2
Progress: 38%, Time: 4.60e+01, dt: 2.00e+00, iterations: 2
Progress: 43%, Time: 5.20e+01, dt: 2.00e+00, iterations: 2
Progress: 48%, Time: 5.80e+01, dt: 2.00e+00, iterations: 2
Progress: 53%, Time: 6.40e+01, dt: 2.00e+00, iterations: 2
Progress: 58%, Time: 7.00e+01, dt: 2.00e+00, iterations: 2
Progress: 63%, Time: 7.60e+01, dt: 2.00e+00, iterations: 2
Progress: 68%, Time: 8.20e+01, dt: 2.00e+00, iterations: 2
Progress: 73%, Time: 8.80e+01, dt: 2.00e+00, iterations: 2
Progress: 78%, Time: 9.40e+01, dt: 2.00e+00, iterations: 2
Progress: 83%, Time: 1.00e+02, dt: 2.00e+00, iterations: 2
Progress: 88%, Time: 1.06e+02, dt: 2.00e+00, iterations: 2
Progress: 93%, Time: 1.12e+02, dt: 2.00e+00, iterations: 2
Progress: 98%, Time: 1.18e+02, dt: 2.00e+00, iterations: 2

Visualization

[ ]:
hist = result.history
valid = np.isfinite(np.asarray(hist.t))
t = np.asarray(hist.t)[valid]
user = {key: np.asarray(value)[valid] for key, value in hist.user.items()}

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 3, figsize=(11, 3), constrained_layout=True)
ax[0].plot(t,user["eps_xx"])
ax[0].set_xlabel("time / d")
ax[0].set_ylabel(r"$\epsilon_{xx}$")

ax[1].plot(t, user["sig_xx"], label=r"$\sigma_{xx}$")
ax[1].plot(t, user["sig_eq"], label=r"$\sigma_\mathrm{eq}$")
ax[1].set_xlabel("time / d")
ax[1].set_ylabel("stress / MPa")
ax[1].legend()

ax[2].plot(t, user["eps_cr_eq"])
ax[2].set_xlabel("time / d")
ax[2].set_ylabel(r"$\epsilon_\mathrm{cr,eq}$")

plt.show()
../_images/notebooks_norton_creep_8_0.png

2. SimState excavation problem

The block is loaded by self weight and a lithostatic far-field traction on the top boundary. With \(y\) measured upward from the block center,

\[p_\mathrm{litho}(\boldsymbol x) = \gamma\left(d_\mathrm c-y\right), \qquad \gamma = \frac{\rho_\mathrm{salt}g}{10^6},\]

and the stress offset used by the constitutive update is

\[\boldsymbol\sigma_0 = \left[-p_\mathrm{litho},-p_\mathrm{litho},-p_\mathrm{litho},0\right]^T.\]

The plane-strain kinematics used in weak_form are

\[\boldsymbol\varepsilon(\boldsymbol u) = \left[u_{x,x},u_{y,y},0,\frac{u_{x,y}+u_{y,x}}{\sqrt{2}}\right]^T.\]

Together with the separately added Neumann contribution, the weak form is

\[\int_\Omega \boldsymbol\sigma : \boldsymbol\varepsilon(\boldsymbol v)\,\mathrm d\Omega - \int_\Omega \boldsymbol b\cdot\boldsymbol v\,\mathrm d\Omega - \int_{\Gamma_t}\bar{\boldsymbol t}\cdot\boldsymbol v\,\mathrm d\Gamma =0, \qquad \boldsymbol b = \left[0,-\gamma\right]^T.\]

The strong displacement boundary conditions and the weak top load are

\[u_x=0 \quad \text{on} \quad x=\pm\frac{W}{2}, \qquad u_y=0 \quad \text{on} \quad y=-\frac{H}{2},\]
\[\bar{\boldsymbol t}=\left[0,-p_\mathrm{litho}\right]^T \quad \text{on} \quad y=\frac{H}{2}.\]

The excavation boundary remains traction-free because no inhomogeneous weak boundary load is added there.

[ ]:
mesh_path = Path("meshes/norton_creep_rectangular_hole.vtu")
mesh = meshio.read(mesh_path)

width, height = 80.0, 80.0
rho_salt = 2160.0
gravity = 9.81
depth_at_center = 750.0
unit_weight = rho_salt * gravity / 1.0e6  # MPa / m

def lithostatic_pressure(x):
    return unit_weight * (depth_at_center - x[1])
[ ]:
def weak_form(ctx: SimState.ModelContext):
    x = ctx.trial_ansatz["physical coor"](ctx.x_int)
    p = lithostatic_pressure(x)
    sigma0 = jnp.asarray([-p, -p, -p, 0.0])
    grad_u = jax.jacfwd(ctx.trial_ansatz["displacement"])(ctx.x_int, ctx.t)
    eps = km.pack_z_shear_zero(grad_u)

    if ctx.mode in ("weak form", "internal variables"):
        new_int_vars = ctx.solve_local("creep", inputs={"eps": eps, "sigma_offset": sigma0})

        if ctx.mode == "internal variables":
            return new_int_vars

        sig = total_stress(eps, new_int_vars["eps_cr"], sigma0)
        grad_v = jax.jacfwd(ctx.test_ansatz["displacement"])(ctx.x_int)
        v = ctx.test_ansatz["displacement"](ctx.x_int)
        body_force = jnp.asarray([0.0, -unit_weight])
        return sig @ km.pack_z_shear_zero(grad_v) - body_force @ v

    if ctx.mode == "output":
        u = ctx.trial_ansatz["displacement"](ctx.x_int, ctx.t)
        sig = total_stress(eps, ctx.internal_vars["eps_cr"], sigma0)
        return {
            "u": u,
            "eps_cr": ctx.internal_vars["eps_cr"],
            "sig_eq": equivalent_stress(sig),
            "sig_xx": sig[0],
            "sig_yy": sig[1],
            "sig_zz": sig[2],
            "sig_xy": sig[3] / jnp.sqrt(2.0),
        }

[ ]:
sim = SimState({
    "displacement": spaces.H1(order=2, dim=2, field_dimension=2),
    "eps_cr": spaces.InternalVariable(field_dimension=4),
})
sim.import_mesh(mesh)
sim.add_temporal_discretization({
    "displacement": dae.NoTimeDerivative(),
    "eps_cr": dae.BackwardEuler(),
})
sim.add_local_subsystem(
    "creep",
    norton_creep,
    fields=("eps_cr",),
    root_solver=partial(dae.newton_solver, atol=1e-14, rtol=1e-12),
)
sim.add_model("__all__", "weak form", weak_form, internal_variables=("eps_cr",))

sim.add_strong_bc("displacement", lambda x: jnp.isclose(x[0], -0.5 * width), lambda x, t: 0.0, index=0)
sim.add_strong_bc("displacement", lambda x: jnp.isclose(x[0], 0.5 * width), lambda x, t: 0.0, index=0)
sim.add_strong_bc("displacement", lambda x: jnp.isclose(x[1], -0.5 * height), lambda x, t: 0.0, index=1)
sim.add_weak_bc("displacement", lambda x: jnp.isclose(x[1], 0.5 * height), lambda x, t: jnp.asarray([0.0, -lithostatic_pressure(x)]))

sim.set_postprocessing_policy(
    dae.SaveEquidistantPolicy(num_points=30),
    result_folder_name="norton_creep.res",
)
sim.set_step_size_controller(dae.RootIterationController(target_niters=8, max_step_size=50.0))

sim.initialize(verbose=1)
sim.set_root_solver(partial(dae.newton_solver, atol=1e-9, rtol=1e-7))
sim.prepare()

sim = sim.run(dt0=2.0, time_span=3000.0, num_time_steps=1000)
print(f"accepted steps = {int(sim.num_accepted)}, final time = {float(sim.settings['current time']):.1f} d")

Linear solver: Pardiso(lu); 32 threads.
Iteration 1, Residual norm: 0.8703147090298352
Iteration 2, Residual norm: 0.11392621541074148
Iteration 3, Residual norm: 0.002784154047653472
Iteration 4, Residual norm: 2.429917191604873e-06
Iteration 5, Residual norm: 1.323047195918442e-08

Iteration 1, Residual norm: 0.07046536440792059
Iteration 2, Residual norm: 0.0015103900747676033
Iteration 3, Residual norm: 1.0171819275356981e-06
Iteration 4, Residual norm: 1.4655309009388022e-08

Iteration 1, Residual norm: 0.06200617880926995
Iteration 2, Residual norm: 0.0014424988693897613
Iteration 3, Residual norm: 1.0741481588443244e-06
Iteration 4, Residual norm: 1.8146856555779567e-08

Iteration 1, Residual norm: 0.06117959594928221
Iteration 2, Residual norm: 0.0016102375058392748
Iteration 3, Residual norm: 1.461409465188693e-06
Iteration 4, Residual norm: 2.304596826187511e-08

Iteration 1, Residual norm: 0.06419768943026878
Iteration 2, Residual norm: 0.0019512776345168414
Iteration 3, Residual norm: 2.2861110069116263e-06
Iteration 4, Residual norm: 3.167138678624326e-08

Iteration 1, Residual norm: 0.06998075462080253
Iteration 2, Residual norm: 0.002485935604535741
Iteration 3, Residual norm: 3.900501354219111e-06
Iteration 4, Residual norm: 4.431102676528355e-08

Iteration 1, Residual norm: 0.0782395798391031
Iteration 2, Residual norm: 0.0032724549172510296
Iteration 3, Residual norm: 7.0604914392527084e-06
Iteration 4, Residual norm: 5.7708540160858634e-08

Iteration 1, Residual norm: 0.08901779205581728
Iteration 2, Residual norm: 0.004404559423507317
Iteration 3, Residual norm: 1.3334925470977597e-05
Iteration 4, Residual norm: 6.98018282320739e-08

Iteration 1, Residual norm: 0.1025229878107223
Iteration 2, Residual norm: 0.006015880597374486
Iteration 3, Residual norm: 2.5945234803643224e-05
Iteration 4, Residual norm: 7.934940299870176e-08

Iteration 1, Residual norm: 0.11902538996577716
Iteration 2, Residual norm: 0.008281528331944218
Iteration 3, Residual norm: 5.1292455218527833e-05
Iteration 4, Residual norm: 8.382046829224766e-08

Iteration 1, Residual norm: 0.1387752351305113
Iteration 2, Residual norm: 0.011410959657513778
Iteration 3, Residual norm: 0.00010145834033963265
Iteration 4, Residual norm: 9.641654482902231e-08

Iteration 1, Residual norm: 0.16194475336401867
Iteration 2, Residual norm: 0.0156313781002074
Iteration 3, Residual norm: 0.00019767932207243844
Iteration 4, Residual norm: 1.1801626457218626e-07
Progress: 3%, Time: 1.03e+02, dt: 2.76e+01, iterations: 4

Iteration 1, Residual norm: 0.18860992208264993
Iteration 2, Residual norm: 0.02116669028388541
Iteration 3, Residual norm: 0.00037434145750958245
Iteration 4, Residual norm: 1.8461933693835395e-07

Iteration 1, Residual norm: 0.2187663354831898
Iteration 2, Residual norm: 0.028218345151179013
Iteration 3, Residual norm: 0.0006824430705138653
Iteration 4, Residual norm: 4.607814863473072e-07

Iteration 1, Residual norm: 0.25235665332759283
Iteration 2, Residual norm: 0.03695230588213608
Iteration 3, Residual norm: 0.0011912607342822188
Iteration 4, Residual norm: 1.3726833899113829e-06
Iteration 5, Residual norm: 2.0372452711790226e-07

Iteration 1, Residual norm: 0.2759572052366413
Iteration 2, Residual norm: 0.04360072390068423
Iteration 3, Residual norm: 0.0016638723543820032
Iteration 4, Residual norm: 2.6856611477233794e-06
Iteration 5, Residual norm: 2.3228692938152302e-07
Progress: 8%, Time: 2.59e+02, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27551802429721034
Iteration 2, Residual norm: 0.043493427319163266
Iteration 3, Residual norm: 0.001637187129426745
Iteration 4, Residual norm: 2.599487301235191e-06
Iteration 5, Residual norm: 2.3772748709110648e-07

Iteration 1, Residual norm: 0.27529143067430956
Iteration 2, Residual norm: 0.04341985023145303
Iteration 3, Residual norm: 0.0016171466419412075
Iteration 4, Residual norm: 2.532210838970707e-06
Iteration 5, Residual norm: 2.393946486655723e-07

Iteration 1, Residual norm: 0.2751616805451854
Iteration 2, Residual norm: 0.0433632976774891
Iteration 3, Residual norm: 0.0016016278903109495
Iteration 4, Residual norm: 2.480627718324511e-06
Iteration 5, Residual norm: 2.401514094917875e-07
Progress: 13%, Time: 4.09e+02, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27507222603040415
Iteration 2, Residual norm: 0.04331499712558296
Iteration 3, Residual norm: 0.0015892878577948694
Iteration 4, Residual norm: 2.438833415357591e-06
Iteration 5, Residual norm: 2.3895604939124106e-07

Iteration 1, Residual norm: 0.2749957424993923
Iteration 2, Residual norm: 0.043270446306383624
Iteration 3, Residual norm: 0.0015792505048265104
Iteration 4, Residual norm: 2.405473223263346e-06
Iteration 5, Residual norm: 2.396867286390501e-07

Iteration 1, Residual norm: 0.2749196191661987
Iteration 2, Residual norm: 0.043227459474683004
Iteration 3, Residual norm: 0.0015709283883942487
Iteration 4, Residual norm: 2.376698194518179e-06
Iteration 5, Residual norm: 2.406092037618662e-07
Progress: 18%, Time: 5.59e+02, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27483871384631137
Iteration 2, Residual norm: 0.043185096737444154
Iteration 3, Residual norm: 0.001563913968478
Iteration 4, Residual norm: 2.352808260256001e-06
Iteration 5, Residual norm: 2.385525284946109e-07

Iteration 1, Residual norm: 0.274751631097939
Iteration 2, Residual norm: 0.04314306426206516
Iteration 3, Residual norm: 0.0015579226379081258
Iteration 4, Residual norm: 2.332645309144682e-06
Iteration 5, Residual norm: 2.3818135066350288e-07

Iteration 1, Residual norm: 0.2746587744706357
Iteration 2, Residual norm: 0.04310138797355583
Iteration 3, Residual norm: 0.0015527467061914495
Iteration 4, Residual norm: 2.3154887200142016e-06
Iteration 5, Residual norm: 2.3788467066421956e-07
Progress: 23%, Time: 7.09e+02, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27456131805786493
Iteration 2, Residual norm: 0.04306023288222291
Iteration 3, Residual norm: 0.001548233361825896
Iteration 4, Residual norm: 2.3008199566854432e-06
Iteration 5, Residual norm: 2.3914409005230875e-07

Iteration 1, Residual norm: 0.2744606762950566
Iteration 2, Residual norm: 0.0430198062211216
Iteration 3, Residual norm: 0.001544266935508154
Iteration 4, Residual norm: 2.2877952611357264e-06
Iteration 5, Residual norm: 2.3850353066223573e-07

Iteration 1, Residual norm: 0.2743582378007472
Iteration 2, Residual norm: 0.042980307719708045
Iteration 3, Residual norm: 0.001540758158021327
Iteration 4, Residual norm: 2.2766550355725653e-06
Iteration 5, Residual norm: 2.3844647126022957e-07
Progress: 28%, Time: 8.59e+02, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2742552387079736
Iteration 2, Residual norm: 0.042941909528335646
Iteration 3, Residual norm: 0.0015376367144462014
Iteration 4, Residual norm: 2.267202742561663e-06
Iteration 5, Residual norm: 2.381634672536397e-07

Iteration 1, Residual norm: 0.27415271890067794
Iteration 2, Residual norm: 0.042904743321423924
Iteration 3, Residual norm: 0.0015348474068837869
Iteration 4, Residual norm: 2.2582191901946446e-06
Iteration 5, Residual norm: 2.3841731489192385e-07

Iteration 1, Residual norm: 0.27405151564542407
Iteration 2, Residual norm: 0.04286890445664369
Iteration 3, Residual norm: 0.001532345274265725
Iteration 4, Residual norm: 2.250888948672843e-06
Iteration 5, Residual norm: 2.383437761561388e-07
Progress: 33%, Time: 1.01e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27395227957546375
Iteration 2, Residual norm: 0.042834454160712715
Iteration 3, Residual norm: 0.0015300926001526102
Iteration 4, Residual norm: 2.2441434258085032e-06
Iteration 5, Residual norm: 2.384016705863096e-07

Iteration 1, Residual norm: 0.27385549493597644
Iteration 2, Residual norm: 0.04280142446647941
Iteration 3, Residual norm: 0.0015280584060455673
Iteration 4, Residual norm: 2.2384256326457913e-06
Iteration 5, Residual norm: 2.38406594747399e-07

Iteration 1, Residual norm: 0.27376151232911783
Iteration 2, Residual norm: 0.04276982186648801
Iteration 3, Residual norm: 0.0015262185935020912
Iteration 4, Residual norm: 2.2330711727474904e-06
Iteration 5, Residual norm: 2.3828933162707282e-07
Progress: 38%, Time: 1.16e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2736705647303479
Iteration 2, Residual norm: 0.042739636069341766
Iteration 3, Residual norm: 0.0015245492681406655
Iteration 4, Residual norm: 2.2281926018323325e-06
Iteration 5, Residual norm: 2.3807385559461077e-07

Iteration 1, Residual norm: 0.2735827950538158
Iteration 2, Residual norm: 0.04271084034138744
Iteration 3, Residual norm: 0.0015230322761325679
Iteration 4, Residual norm: 2.224217989008669e-06
Iteration 5, Residual norm: 2.3970353309336777e-07

Iteration 1, Residual norm: 0.27349827394475706
Iteration 2, Residual norm: 0.042683397734336194
Iteration 3, Residual norm: 0.0015216518951599554
Iteration 4, Residual norm: 2.220783587840727e-06
Iteration 5, Residual norm: 2.395319071172633e-07
Progress: 43%, Time: 1.31e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27341701607217855
Iteration 2, Residual norm: 0.04265726371692847
Iteration 3, Residual norm: 0.0015203942000642345
Iteration 4, Residual norm: 2.217409621330088e-06
Iteration 5, Residual norm: 2.3899042003988767e-07

Iteration 1, Residual norm: 0.2733389930166539
Iteration 2, Residual norm: 0.042632387748962115
Iteration 3, Residual norm: 0.0015192464593868926
Iteration 4, Residual norm: 2.2147687297242868e-06
Iteration 5, Residual norm: 2.4021745269279607e-07

Iteration 1, Residual norm: 0.2732641471431458
Iteration 2, Residual norm: 0.04260871705342757
Iteration 3, Residual norm: 0.00151819867085767
Iteration 4, Residual norm: 2.2122461076655738e-06
Iteration 5, Residual norm: 2.4028448801889186e-07
Progress: 48%, Time: 1.46e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2731923951345769
Iteration 2, Residual norm: 0.04258619725439682
Iteration 3, Residual norm: 0.001517241021638099
Iteration 4, Residual norm: 2.2100504642906036e-06
Iteration 5, Residual norm: 2.400947776257022e-07

Iteration 1, Residual norm: 0.2731236386478436
Iteration 2, Residual norm: 0.042564772663409495
Iteration 3, Residual norm: 0.001516365957357529
Iteration 4, Residual norm: 2.2077561916482587e-06
Iteration 5, Residual norm: 2.400167806165371e-07

Iteration 1, Residual norm: 0.2730577687421261
Iteration 2, Residual norm: 0.0425443885168216
Iteration 3, Residual norm: 0.0015155652036263493
Iteration 4, Residual norm: 2.2059463550317625e-06
Iteration 5, Residual norm: 2.3997624269832295e-07
Progress: 53%, Time: 1.61e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27299467020165663
Iteration 2, Residual norm: 0.04252499096211956
Iteration 3, Residual norm: 0.001514832821868669
Iteration 4, Residual norm: 2.2044296583874217e-06
Iteration 5, Residual norm: 2.3992018358426874e-07

Iteration 1, Residual norm: 0.27293422455157557
Iteration 2, Residual norm: 0.0425065287686304
Iteration 3, Residual norm: 0.001514162302599386
Iteration 4, Residual norm: 2.2030988276013856e-06
Iteration 5, Residual norm: 2.398685278125074e-07

Iteration 1, Residual norm: 0.2728763129473243
Iteration 2, Residual norm: 0.04248895057648136
Iteration 3, Residual norm: 0.0015135494270464062
Iteration 4, Residual norm: 2.2020356489331635e-06
Iteration 5, Residual norm: 2.3988694661447206e-07
Progress: 58%, Time: 1.76e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.27282081689856214
Iteration 2, Residual norm: 0.04247220928236993
Iteration 3, Residual norm: 0.001512988674340772
Iteration 4, Residual norm: 2.201386294073481e-06
Iteration 5, Residual norm: 2.403286586617612e-07

Iteration 1, Residual norm: 0.27276762112492586
Iteration 2, Residual norm: 0.042456258799114306
Iteration 3, Residual norm: 0.001512476472774114
Iteration 4, Residual norm: 2.2005216048608967e-06
Iteration 5, Residual norm: 2.4030344827702945e-07

Iteration 1, Residual norm: 0.27271661347425924
Iteration 2, Residual norm: 0.04244105582619412
Iteration 3, Residual norm: 0.0015120087904047983
Iteration 4, Residual norm: 2.1997616686587684e-06
Iteration 5, Residual norm: 2.4026394731182785e-07
Progress: 63%, Time: 1.91e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2726676855384908
Iteration 2, Residual norm: 0.04242655974891242
Iteration 3, Residual norm: 0.0015115819189374382
Iteration 4, Residual norm: 2.1991158468376596e-06
Iteration 5, Residual norm: 2.4022747740139365e-07

Iteration 1, Residual norm: 0.27262073414358173
Iteration 2, Residual norm: 0.04241273134109415
Iteration 3, Residual norm: 0.001511192545326865
Iteration 4, Residual norm: 2.198632396695999e-06
Iteration 5, Residual norm: 2.4017738007156475e-07

Iteration 1, Residual norm: 0.2725756604422118
Iteration 2, Residual norm: 0.0423995338197896
Iteration 3, Residual norm: 0.0015108381232574494
Iteration 4, Residual norm: 2.1983868421827994e-06
Iteration 5, Residual norm: 2.409159955278185e-07
Progress: 68%, Time: 2.06e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2725323699079658
Iteration 2, Residual norm: 0.04238693311099187
Iteration 3, Residual norm: 0.001510516362448976
Iteration 4, Residual norm: 2.1978590422477944e-06
Iteration 5, Residual norm: 2.4087915118998553e-07

Iteration 1, Residual norm: 0.27249077326202276
Iteration 2, Residual norm: 0.04237489681706984
Iteration 3, Residual norm: 0.0015102244264771848
Iteration 4, Residual norm: 2.197550946597501e-06
Iteration 5, Residual norm: 2.408928147204653e-07

Iteration 1, Residual norm: 0.2724507857424007
Iteration 2, Residual norm: 0.04236339449732255
Iteration 3, Residual norm: 0.0015099602344293115
Iteration 4, Residual norm: 2.197327508980326e-06
Iteration 5, Residual norm: 2.408683814586606e-07
Progress: 73%, Time: 2.21e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2724123274102877
Iteration 2, Residual norm: 0.042352397606771855
Iteration 3, Residual norm: 0.001509721767080095
Iteration 4, Residual norm: 2.1971888353248725e-06
Iteration 5, Residual norm: 2.408329354045606e-07

Iteration 1, Residual norm: 0.27237532165622236
Iteration 2, Residual norm: 0.04234187976030287
Iteration 3, Residual norm: 0.0015095072360848092
Iteration 4, Residual norm: 2.1971555864887435e-06
Iteration 5, Residual norm: 2.4085477507498417e-07

Iteration 1, Residual norm: 0.2723396988544444
Iteration 2, Residual norm: 0.04233181504511904
Iteration 3, Residual norm: 0.0015093149113213594
Iteration 4, Residual norm: 2.1971163647850473e-06
Iteration 5, Residual norm: 2.408336109631796e-07
Progress: 78%, Time: 2.36e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.272305390798759
Iteration 2, Residual norm: 0.04232218029401811
Iteration 3, Residual norm: 0.0015091432144706239
Iteration 4, Residual norm: 2.1971285673903425e-06
Iteration 5, Residual norm: 2.408166088360099e-07

Iteration 1, Residual norm: 0.27227233402539125
Iteration 2, Residual norm: 0.042312953228091074
Iteration 3, Residual norm: 0.0015089905878593005
Iteration 4, Residual norm: 2.1972352587821796e-06
Iteration 5, Residual norm: 2.408213967173634e-07

Iteration 1, Residual norm: 0.27224046870507174
Iteration 2, Residual norm: 0.0423041130613428
Iteration 3, Residual norm: 0.0015088560780512305
Iteration 4, Residual norm: 2.1973360501563117e-06
Iteration 5, Residual norm: 2.4080644150587423e-07
Progress: 83%, Time: 2.51e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2722097383937335
Iteration 2, Residual norm: 0.04229564029993594
Iteration 3, Residual norm: 0.001508738137659416
Iteration 4, Residual norm: 2.197587499883975e-06
Iteration 5, Residual norm: 2.407906316767323e-07

Iteration 1, Residual norm: 0.2721800899316631
Iteration 2, Residual norm: 0.0422875165136657
Iteration 3, Residual norm: 0.0015086358965605677
Iteration 4, Residual norm: 2.1977652513695425e-06
Iteration 5, Residual norm: 2.407782109254482e-07

Iteration 1, Residual norm: 0.2721514730990636
Iteration 2, Residual norm: 0.04227972453176629
Iteration 3, Residual norm: 0.0015085481903303452
Iteration 4, Residual norm: 2.1979765020675827e-06
Iteration 5, Residual norm: 2.407669483229387e-07
Progress: 88%, Time: 2.66e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2721238405562257
Iteration 2, Residual norm: 0.042272248205789856
Iteration 3, Residual norm: 0.0015084739824436405
Iteration 4, Residual norm: 2.198218395927081e-06
Iteration 5, Residual norm: 2.4075678035202945e-07

Iteration 1, Residual norm: 0.272097148051264
Iteration 2, Residual norm: 0.04226507186143495
Iteration 3, Residual norm: 0.0015084126948650884
Iteration 4, Residual norm: 2.198524096502484e-06
Iteration 5, Residual norm: 2.4075371352470695e-07

Iteration 1, Residual norm: 0.27207135327549803
Iteration 2, Residual norm: 0.04225818152175199
Iteration 3, Residual norm: 0.001508363047581056
Iteration 4, Residual norm: 2.198818134676682e-06
Iteration 5, Residual norm: 2.4074460965444906e-07
Progress: 93%, Time: 2.81e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.2720464165148727
Iteration 2, Residual norm: 0.04225156358457946
Iteration 3, Residual norm: 0.0015083244558111502
Iteration 4, Residual norm: 2.199098849126442e-06
Iteration 5, Residual norm: 2.4073987595650216e-07

Iteration 1, Residual norm: 0.2720223002560728
Iteration 2, Residual norm: 0.042245205319710065
Iteration 3, Residual norm: 0.0015082961680203569
Iteration 4, Residual norm: 2.19949350289361e-06
Iteration 5, Residual norm: 2.4073376613431784e-07

Iteration 1, Residual norm: 0.27199896916260297
Iteration 2, Residual norm: 0.042239094446197833
Iteration 3, Residual norm: 0.0015082775915126415
Iteration 4, Residual norm: 2.1998520866291442e-06
Iteration 5, Residual norm: 2.4143929980125994e-07
Progress: 98%, Time: 2.96e+03, dt: 5.00e+01, iterations: 5

Iteration 1, Residual norm: 0.24124063068325668
Iteration 2, Residual norm: 0.03406623537565543
Iteration 3, Residual norm: 0.0009723323378291807
Iteration 4, Residual norm: 9.205718539503011e-07
Iteration 5, Residual norm: 1.8823075056984094e-07

accepted steps = 71, final time = 3000.0 d

Final deformation state: zoom to the excavation

a4e35e5c71994aa799b5ba06ce6bbf89