Time-Dependent Subduction Zone Setup#

Authors: Cameron Seebeck, Cian Wilson

Recalling our implementation strategy we are following a similar workflow to that seen in the background examples.

  1. we will describe the subduction zone geometry and tesselate it into non-overlapping triangles to create a mesh

  2. we will declare function spaces for the temperature, wedge velocity and pressure, and slab velocity and pressure

  3. using these function space we will declare trial and test functions

  4. we will define Dirichlet boundary conditions at the boundaries as described in the introduction

  5. we will describe discrete weak forms for temperature and each of the coupled velocity-pressure systems that will be used to assemble the matrices (and vectors) to be solved

  6. we will set up matrices and solvers for the discrete systems of equations

  7. we will solve the matrix problems

For the time-dependent cases we have now implemented all but the rheology specific final step of solving the coupled velocity-pressure-temperature problem. In this notebook we do this for the case of an isoviscous rheology, deriving a new TDIsoSubductionProblem class from the TDSubductionProblem class we implemented in notebooks/03_sz_problems/3.5a_sz_tdep_problem.ipynb.

Preamble#

Let’s start by adding the path to the modules in the python folder to the system path (so we can find the our custom modules).

import sys, os
basedir = ''
if "__file__" in globals(): basedir = os.path.dirname(__file__)
sys.path.append(os.path.join(basedir, os.path.pardir, os.path.pardir, 'python'))

Let’s also load the module generated by the previous notebooks to get access to the parameters and functions defined there.

from sz_problems.sz_params import default_params, allsz_params
from sz_problems.sz_slab import create_slab
from sz_problems.sz_geometry import create_sz_geometry
from sz_problems.sz_problem import TemperatureSolver
from sz_problems.sz_tdep_problem import TDSubductionProblem

Then let’s load all the required modules at the beginning.

import geometry as geo
import utils
from mpi4py import MPI
import dolfinx as df
import dolfinx.fem.petsc
from petsc4py import PETSc
import numpy as np
import scipy as sp
import ufl
import basix.ufl as bu
import matplotlib.pyplot as pl
import copy
import pyvista as pv
import pathlib
output_folder = pathlib.Path(os.path.join(basedir, "output"))
output_folder.mkdir(exist_ok=True, parents=True)

TDIsoSubductionProblem class#

We build on the TDSubductionProblem class implemented in notebooks/03_sz_problems/3.5a_sz_tdep_problem.ipynb, deriving a TDIsoSubductionProblem class that implements and solves the equations for a time-dependent isoviscous case.

7. Solution#

In the isoviscous case, \(\eta\) = 1 (eta = 1), only the temperature depends on time and the velocity (and not vice-versa). So to solve the full time-dependent system of equations we only need to solve the two velocity-pressure systems once (already implemented in SubductionProblem.solve_stokes_isoviscous) before solving the temperature repeatedly, incrementing the time after each solve in a time-loop, to get a fully evolved solution for all variables (implemented below in solve). The timestep is controlled with the parameter dt and should be chosen in conjunction with theta to ensure a stable solution is found. The time-loop finishes once the final time, tf, is reached.

class TDIsoSubductionProblem(TDSubductionProblem):
    def solve(self, tf, dt, theta=0.5, verbosity=2, 
              petsc_options_s=None, petsc_options_T=None, plotter=None):
        """
        Solve the coupled temperature-velocity-pressure problem assuming an isoviscous rheology with time dependency

        Arguments:
          * tf - final time  (in Myr)
          * dt - the timestep (in Myr)
          
        Keyword Arguments:
          * theta         - theta parameter for timestepping (0 <= theta <= 1, defaults to theta=0.5)
          * petsc_options - a dictionary of petsc options to pass to the solver (defaults to mumps)
          * verbosity     - level of verbosity (<1=silent, >0=basic, >1=timestep, defaults to 2)
          * petsc_options_s - a dictionary of petsc options to pass to the Stokes solver 
                              (defaults to an LU direct solver using the MUMPS library) 
          * petsc_options_T - a dictionary of petsc options to pass to the temperature solver 
                              (defaults to an LU direct solver using the MUMPS library)
        """
        assert(theta >= 0 and theta <= 1)
        
        # set the timestepping options based on the arguments
        # these need to be set before calling self.temperature_forms_timedependent
        self.dt = df.fem.Constant(self.mesh, df.default_scalar_type(dt/self.t0_Myr))
        self.theta = df.fem.Constant(self.mesh, df.default_scalar_type(theta))

        # reset the initial conditions
        self.setup_boundaryconditions()
        
        # first solve both Stokes systems
        self.solve_stokes_isoviscous(petsc_options=petsc_options_s)

        # retrieve the temperature forms
        ST, fT, _ = self.temperature_forms()
        solver_T = TemperatureSolver(ST, fT, self.bcs_T, self.T_i, 
                                     petsc_options=petsc_options_T)

        # and solve the temperature problem repeatedly with time step dt
        t = 0
        ti = 0
        tf_nd = tf/self.t0_Myr
        if self.comm.rank == 0 and verbosity>0:
            print("Entering timeloop with {:d} steps (dt = {:g} Myr, final time = {:g} Myr)".format(int(np.ceil(tf_nd/self.dt.value)), dt, tf,))
        # enter the time-loop
        while t < tf_nd - 1e-9:
            if self.comm.rank == 0 and verbosity>1:
                print("Step: {:>6d}, Times: {:>9g} -> {:>9g} Myr".format(ti, t*self.t0_Myr, (t+self.dt.value)*self.t0_Myr))
            if plotter is not None:
                for mesh in plotter.meshes:
                    if self.T_i.name in mesh.point_data:
                        mesh.point_data[self.T_i.name][:] = self.T_i.x.array
                plotter.write_frame()
            # set the old solution to the new solution
            self.T_n.x.array[:] = self.T_i.x.array
            # solve for the new solution
            self.T_i = solver_T.solve()
            # increment the timestep number
            ti+=1
            # increment the time
            t+=self.dt.value
        if self.comm.rank == 0 and verbosity>0:
            print("Finished timeloop after {:d} steps (final time = {:g} Myr)".format(ti, t*self.t0_Myr,))

        # only update the pressure at the end as it is not necessary earlier
        self.update_p_functions()

Demonstration - Benchmark case 1 (time-dependent)#

resscale = 5.0
xs = [0.0, 140.0, 240.0, 400.0]
ys = [0.0, -70.0, -120.0, -200.0]
lc_depth = 40
uc_depth = 15
coast_distance = 0
extra_width = 0
sztype = 'continental'
io_depth = 139
A      = 100.0      # age of subducting slab (Myr)
qs     = 0.065      # surface heat flux (W/m^2)
Vs     = 100.0      # slab speed (mm/yr)

slab = create_slab(xs, ys, resscale, lc_depth)
geom_case1td = create_sz_geometry(slab, resscale, sztype, io_depth, extra_width, 
                              coast_distance, lc_depth, uc_depth)
sz_case1td = TDIsoSubductionProblem(geom_case1td, A=A, Vs=Vs, sztype=sztype, qs=qs)

sz_case1td.solve(25, 0.05, theta=0.5)
    
Entering timeloop with 500 steps (dt = 0.05 Myr, final time = 25 Myr)
Step:      0, Times:         0 ->      0.05 Myr
Step:      1, Times:      0.05 ->       0.1 Myr
Step:      2, Times:       0.1 ->      0.15 Myr
Step:      3, Times:      0.15 ->       0.2 Myr
Step:      4, Times:       0.2 ->      0.25 Myr
Step:      5, Times:      0.25 ->       0.3 Myr
Step:      6, Times:       0.3 ->      0.35 Myr
Step:      7, Times:      0.35 ->       0.4 Myr
Step:      8, Times:       0.4 ->      0.45 Myr
Step:      9, Times:      0.45 ->       0.5 Myr
Step:     10, Times:       0.5 ->      0.55 Myr
Step:     11, Times:      0.55 ->       0.6 Myr
Step:     12, Times:       0.6 ->      0.65 Myr
Step:     13, Times:      0.65 ->       0.7 Myr
Step:     14, Times:       0.7 ->      0.75 Myr
Step:     15, Times:      0.75 ->       0.8 Myr
Step:     16, Times:       0.8 ->      0.85 Myr
Step:     17, Times:      0.85 ->       0.9 Myr
Step:     18, Times:       0.9 ->      0.95 Myr
Step:     19, Times:      0.95 ->         1 Myr
Step:     20, Times:         1 ->      1.05 Myr
Step:     21, Times:      1.05 ->       1.1 Myr
Step:     22, Times:       1.1 ->      1.15 Myr
Step:     23, Times:      1.15 ->       1.2 Myr
Step:     24, Times:       1.2 ->      1.25 Myr
Step:     25, Times:      1.25 ->       1.3 Myr
Step:     26, Times:       1.3 ->      1.35 Myr
Step:     27, Times:      1.35 ->       1.4 Myr
Step:     28, Times:       1.4 ->      1.45 Myr
Step:     29, Times:      1.45 ->       1.5 Myr
Step:     30, Times:       1.5 ->      1.55 Myr
Step:     31, Times:      1.55 ->       1.6 Myr
Step:     32, Times:       1.6 ->      1.65 Myr
Step:     33, Times:      1.65 ->       1.7 Myr
Step:     34, Times:       1.7 ->      1.75 Myr
Step:     35, Times:      1.75 ->       1.8 Myr
Step:     36, Times:       1.8 ->      1.85 Myr
Step:     37, Times:      1.85 ->       1.9 Myr
Step:     38, Times:       1.9 ->      1.95 Myr
Step:     39, Times:      1.95 ->         2 Myr
Step:     40, Times:         2 ->      2.05 Myr
Step:     41, Times:      2.05 ->       2.1 Myr
Step:     42, Times:       2.1 ->      2.15 Myr
Step:     43, Times:      2.15 ->       2.2 Myr
Step:     44, Times:       2.2 ->      2.25 Myr
Step:     45, Times:      2.25 ->       2.3 Myr
Step:     46, Times:       2.3 ->      2.35 Myr
Step:     47, Times:      2.35 ->       2.4 Myr
Step:     48, Times:       2.4 ->      2.45 Myr
Step:     49, Times:      2.45 ->       2.5 Myr
Step:     50, Times:       2.5 ->      2.55 Myr
Step:     51, Times:      2.55 ->       2.6 Myr
Step:     52, Times:       2.6 ->      2.65 Myr
Step:     53, Times:      2.65 ->       2.7 Myr
Step:     54, Times:       2.7 ->      2.75 Myr
Step:     55, Times:      2.75 ->       2.8 Myr
Step:     56, Times:       2.8 ->      2.85 Myr
Step:     57, Times:      2.85 ->       2.9 Myr
Step:     58, Times:       2.9 ->      2.95 Myr
Step:     59, Times:      2.95 ->         3 Myr
Step:     60, Times:         3 ->      3.05 Myr
Step:     61, Times:      3.05 ->       3.1 Myr
Step:     62, Times:       3.1 ->      3.15 Myr
Step:     63, Times:      3.15 ->       3.2 Myr
Step:     64, Times:       3.2 ->      3.25 Myr
Step:     65, Times:      3.25 ->       3.3 Myr
Step:     66, Times:       3.3 ->      3.35 Myr
Step:     67, Times:      3.35 ->       3.4 Myr
Step:     68, Times:       3.4 ->      3.45 Myr
Step:     69, Times:      3.45 ->       3.5 Myr
Step:     70, Times:       3.5 ->      3.55 Myr
Step:     71, Times:      3.55 ->       3.6 Myr
Step:     72, Times:       3.6 ->      3.65 Myr
Step:     73, Times:      3.65 ->       3.7 Myr
Step:     74, Times:       3.7 ->      3.75 Myr
Step:     75, Times:      3.75 ->       3.8 Myr
Step:     76, Times:       3.8 ->      3.85 Myr
Step:     77, Times:      3.85 ->       3.9 Myr
Step:     78, Times:       3.9 ->      3.95 Myr
Step:     79, Times:      3.95 ->         4 Myr
Step:     80, Times:         4 ->      4.05 Myr
Step:     81, Times:      4.05 ->       4.1 Myr
Step:     82, Times:       4.1 ->      4.15 Myr
Step:     83, Times:      4.15 ->       4.2 Myr
Step:     84, Times:       4.2 ->      4.25 Myr
Step:     85, Times:      4.25 ->       4.3 Myr
Step:     86, Times:       4.3 ->      4.35 Myr
Step:     87, Times:      4.35 ->       4.4 Myr
Step:     88, Times:       4.4 ->      4.45 Myr
Step:     89, Times:      4.45 ->       4.5 Myr
Step:     90, Times:       4.5 ->      4.55 Myr
Step:     91, Times:      4.55 ->       4.6 Myr
Step:     92, Times:       4.6 ->      4.65 Myr
Step:     93, Times:      4.65 ->       4.7 Myr
Step:     94, Times:       4.7 ->      4.75 Myr
Step:     95, Times:      4.75 ->       4.8 Myr
Step:     96, Times:       4.8 ->      4.85 Myr
Step:     97, Times:      4.85 ->       4.9 Myr
Step:     98, Times:       4.9 ->      4.95 Myr
Step:     99, Times:      4.95 ->         5 Myr
Step:    100, Times:         5 ->      5.05 Myr
Step:    101, Times:      5.05 ->       5.1 Myr
Step:    102, Times:       5.1 ->      5.15 Myr
Step:    103, Times:      5.15 ->       5.2 Myr
Step:    104, Times:       5.2 ->      5.25 Myr
Step:    105, Times:      5.25 ->       5.3 Myr
Step:    106, Times:       5.3 ->      5.35 Myr
Step:    107, Times:      5.35 ->       5.4 Myr
Step:    108, Times:       5.4 ->      5.45 Myr
Step:    109, Times:      5.45 ->       5.5 Myr
Step:    110, Times:       5.5 ->      5.55 Myr
Step:    111, Times:      5.55 ->       5.6 Myr
Step:    112, Times:       5.6 ->      5.65 Myr
Step:    113, Times:      5.65 ->       5.7 Myr
Step:    114, Times:       5.7 ->      5.75 Myr
Step:    115, Times:      5.75 ->       5.8 Myr
Step:    116, Times:       5.8 ->      5.85 Myr
Step:    117, Times:      5.85 ->       5.9 Myr
Step:    118, Times:       5.9 ->      5.95 Myr
Step:    119, Times:      5.95 ->         6 Myr
Step:    120, Times:         6 ->      6.05 Myr
Step:    121, Times:      6.05 ->       6.1 Myr
Step:    122, Times:       6.1 ->      6.15 Myr
Step:    123, Times:      6.15 ->       6.2 Myr
Step:    124, Times:       6.2 ->      6.25 Myr
Step:    125, Times:      6.25 ->       6.3 Myr
Step:    126, Times:       6.3 ->      6.35 Myr
Step:    127, Times:      6.35 ->       6.4 Myr
Step:    128, Times:       6.4 ->      6.45 Myr
Step:    129, Times:      6.45 ->       6.5 Myr
Step:    130, Times:       6.5 ->      6.55 Myr
Step:    131, Times:      6.55 ->       6.6 Myr
Step:    132, Times:       6.6 ->      6.65 Myr
Step:    133, Times:      6.65 ->       6.7 Myr
Step:    134, Times:       6.7 ->      6.75 Myr
Step:    135, Times:      6.75 ->       6.8 Myr
Step:    136, Times:       6.8 ->      6.85 Myr
Step:    137, Times:      6.85 ->       6.9 Myr
Step:    138, Times:       6.9 ->      6.95 Myr
Step:    139, Times:      6.95 ->         7 Myr
Step:    140, Times:         7 ->      7.05 Myr
Step:    141, Times:      7.05 ->       7.1 Myr
Step:    142, Times:       7.1 ->      7.15 Myr
Step:    143, Times:      7.15 ->       7.2 Myr
Step:    144, Times:       7.2 ->      7.25 Myr
Step:    145, Times:      7.25 ->       7.3 Myr
Step:    146, Times:       7.3 ->      7.35 Myr
Step:    147, Times:      7.35 ->       7.4 Myr
Step:    148, Times:       7.4 ->      7.45 Myr
Step:    149, Times:      7.45 ->       7.5 Myr
Step:    150, Times:       7.5 ->      7.55 Myr
Step:    151, Times:      7.55 ->       7.6 Myr
Step:    152, Times:       7.6 ->      7.65 Myr
Step:    153, Times:      7.65 ->       7.7 Myr
Step:    154, Times:       7.7 ->      7.75 Myr
Step:    155, Times:      7.75 ->       7.8 Myr
Step:    156, Times:       7.8 ->      7.85 Myr
Step:    157, Times:      7.85 ->       7.9 Myr
Step:    158, Times:       7.9 ->      7.95 Myr
Step:    159, Times:      7.95 ->         8 Myr
Step:    160, Times:         8 ->      8.05 Myr
Step:    161, Times:      8.05 ->       8.1 Myr
Step:    162, Times:       8.1 ->      8.15 Myr
Step:    163, Times:      8.15 ->       8.2 Myr
Step:    164, Times:       8.2 ->      8.25 Myr
Step:    165, Times:      8.25 ->       8.3 Myr
Step:    166, Times:       8.3 ->      8.35 Myr
Step:    167, Times:      8.35 ->       8.4 Myr
Step:    168, Times:       8.4 ->      8.45 Myr
Step:    169, Times:      8.45 ->       8.5 Myr
Step:    170, Times:       8.5 ->      8.55 Myr
Step:    171, Times:      8.55 ->       8.6 Myr
Step:    172, Times:       8.6 ->      8.65 Myr
Step:    173, Times:      8.65 ->       8.7 Myr
Step:    174, Times:       8.7 ->      8.75 Myr
Step:    175, Times:      8.75 ->       8.8 Myr
Step:    176, Times:       8.8 ->      8.85 Myr
Step:    177, Times:      8.85 ->       8.9 Myr
Step:    178, Times:       8.9 ->      8.95 Myr
Step:    179, Times:      8.95 ->         9 Myr
Step:    180, Times:         9 ->      9.05 Myr
Step:    181, Times:      9.05 ->       9.1 Myr
Step:    182, Times:       9.1 ->      9.15 Myr
Step:    183, Times:      9.15 ->       9.2 Myr
Step:    184, Times:       9.2 ->      9.25 Myr
Step:    185, Times:      9.25 ->       9.3 Myr
Step:    186, Times:       9.3 ->      9.35 Myr
Step:    187, Times:      9.35 ->       9.4 Myr
Step:    188, Times:       9.4 ->      9.45 Myr
Step:    189, Times:      9.45 ->       9.5 Myr
Step:    190, Times:       9.5 ->      9.55 Myr
Step:    191, Times:      9.55 ->       9.6 Myr
Step:    192, Times:       9.6 ->      9.65 Myr
Step:    193, Times:      9.65 ->       9.7 Myr
Step:    194, Times:       9.7 ->      9.75 Myr
Step:    195, Times:      9.75 ->       9.8 Myr
Step:    196, Times:       9.8 ->      9.85 Myr
Step:    197, Times:      9.85 ->       9.9 Myr
Step:    198, Times:       9.9 ->      9.95 Myr
Step:    199, Times:      9.95 ->        10 Myr
Step:    200, Times:        10 ->     10.05 Myr
Step:    201, Times:     10.05 ->      10.1 Myr
Step:    202, Times:      10.1 ->     10.15 Myr
Step:    203, Times:     10.15 ->      10.2 Myr
Step:    204, Times:      10.2 ->     10.25 Myr
Step:    205, Times:     10.25 ->      10.3 Myr
Step:    206, Times:      10.3 ->     10.35 Myr
Step:    207, Times:     10.35 ->      10.4 Myr
Step:    208, Times:      10.4 ->     10.45 Myr
Step:    209, Times:     10.45 ->      10.5 Myr
Step:    210, Times:      10.5 ->     10.55 Myr
Step:    211, Times:     10.55 ->      10.6 Myr
Step:    212, Times:      10.6 ->     10.65 Myr
Step:    213, Times:     10.65 ->      10.7 Myr
Step:    214, Times:      10.7 ->     10.75 Myr
Step:    215, Times:     10.75 ->      10.8 Myr
Step:    216, Times:      10.8 ->     10.85 Myr
Step:    217, Times:     10.85 ->      10.9 Myr
Step:    218, Times:      10.9 ->     10.95 Myr
Step:    219, Times:     10.95 ->        11 Myr
Step:    220, Times:        11 ->     11.05 Myr
Step:    221, Times:     11.05 ->      11.1 Myr
Step:    222, Times:      11.1 ->     11.15 Myr
Step:    223, Times:     11.15 ->      11.2 Myr
Step:    224, Times:      11.2 ->     11.25 Myr
Step:    225, Times:     11.25 ->      11.3 Myr
Step:    226, Times:      11.3 ->     11.35 Myr
Step:    227, Times:     11.35 ->      11.4 Myr
Step:    228, Times:      11.4 ->     11.45 Myr
Step:    229, Times:     11.45 ->      11.5 Myr
Step:    230, Times:      11.5 ->     11.55 Myr
Step:    231, Times:     11.55 ->      11.6 Myr
Step:    232, Times:      11.6 ->     11.65 Myr
Step:    233, Times:     11.65 ->      11.7 Myr
Step:    234, Times:      11.7 ->     11.75 Myr
Step:    235, Times:     11.75 ->      11.8 Myr
Step:    236, Times:      11.8 ->     11.85 Myr
Step:    237, Times:     11.85 ->      11.9 Myr
Step:    238, Times:      11.9 ->     11.95 Myr
Step:    239, Times:     11.95 ->        12 Myr
Step:    240, Times:        12 ->     12.05 Myr
Step:    241, Times:     12.05 ->      12.1 Myr
Step:    242, Times:      12.1 ->     12.15 Myr
Step:    243, Times:     12.15 ->      12.2 Myr
Step:    244, Times:      12.2 ->     12.25 Myr
Step:    245, Times:     12.25 ->      12.3 Myr
Step:    246, Times:      12.3 ->     12.35 Myr
Step:    247, Times:     12.35 ->      12.4 Myr
Step:    248, Times:      12.4 ->     12.45 Myr
Step:    249, Times:     12.45 ->      12.5 Myr
Step:    250, Times:      12.5 ->     12.55 Myr
Step:    251, Times:     12.55 ->      12.6 Myr
Step:    252, Times:      12.6 ->     12.65 Myr
Step:    253, Times:     12.65 ->      12.7 Myr
Step:    254, Times:      12.7 ->     12.75 Myr
Step:    255, Times:     12.75 ->      12.8 Myr
Step:    256, Times:      12.8 ->     12.85 Myr
Step:    257, Times:     12.85 ->      12.9 Myr
Step:    258, Times:      12.9 ->     12.95 Myr
Step:    259, Times:     12.95 ->        13 Myr
Step:    260, Times:        13 ->     13.05 Myr
Step:    261, Times:     13.05 ->      13.1 Myr
Step:    262, Times:      13.1 ->     13.15 Myr
Step:    263, Times:     13.15 ->      13.2 Myr
Step:    264, Times:      13.2 ->     13.25 Myr
Step:    265, Times:     13.25 ->      13.3 Myr
Step:    266, Times:      13.3 ->     13.35 Myr
Step:    267, Times:     13.35 ->      13.4 Myr
Step:    268, Times:      13.4 ->     13.45 Myr
Step:    269, Times:     13.45 ->      13.5 Myr
Step:    270, Times:      13.5 ->     13.55 Myr
Step:    271, Times:     13.55 ->      13.6 Myr
Step:    272, Times:      13.6 ->     13.65 Myr
Step:    273, Times:     13.65 ->      13.7 Myr
Step:    274, Times:      13.7 ->     13.75 Myr
Step:    275, Times:     13.75 ->      13.8 Myr
Step:    276, Times:      13.8 ->     13.85 Myr
Step:    277, Times:     13.85 ->      13.9 Myr
Step:    278, Times:      13.9 ->     13.95 Myr
Step:    279, Times:     13.95 ->        14 Myr
Step:    280, Times:        14 ->     14.05 Myr
Step:    281, Times:     14.05 ->      14.1 Myr
Step:    282, Times:      14.1 ->     14.15 Myr
Step:    283, Times:     14.15 ->      14.2 Myr
Step:    284, Times:      14.2 ->     14.25 Myr
Step:    285, Times:     14.25 ->      14.3 Myr
Step:    286, Times:      14.3 ->     14.35 Myr
Step:    287, Times:     14.35 ->      14.4 Myr
Step:    288, Times:      14.4 ->     14.45 Myr
Step:    289, Times:     14.45 ->      14.5 Myr
Step:    290, Times:      14.5 ->     14.55 Myr
Step:    291, Times:     14.55 ->      14.6 Myr
Step:    292, Times:      14.6 ->     14.65 Myr
Step:    293, Times:     14.65 ->      14.7 Myr
Step:    294, Times:      14.7 ->     14.75 Myr
Step:    295, Times:     14.75 ->      14.8 Myr
Step:    296, Times:      14.8 ->     14.85 Myr
Step:    297, Times:     14.85 ->      14.9 Myr
Step:    298, Times:      14.9 ->     14.95 Myr
Step:    299, Times:     14.95 ->        15 Myr
Step:    300, Times:        15 ->     15.05 Myr
Step:    301, Times:     15.05 ->      15.1 Myr
Step:    302, Times:      15.1 ->     15.15 Myr
Step:    303, Times:     15.15 ->      15.2 Myr
Step:    304, Times:      15.2 ->     15.25 Myr
Step:    305, Times:     15.25 ->      15.3 Myr
Step:    306, Times:      15.3 ->     15.35 Myr
Step:    307, Times:     15.35 ->      15.4 Myr
Step:    308, Times:      15.4 ->     15.45 Myr
Step:    309, Times:     15.45 ->      15.5 Myr
Step:    310, Times:      15.5 ->     15.55 Myr
Step:    311, Times:     15.55 ->      15.6 Myr
Step:    312, Times:      15.6 ->     15.65 Myr
Step:    313, Times:     15.65 ->      15.7 Myr
Step:    314, Times:      15.7 ->     15.75 Myr
Step:    315, Times:     15.75 ->      15.8 Myr
Step:    316, Times:      15.8 ->     15.85 Myr
Step:    317, Times:     15.85 ->      15.9 Myr
Step:    318, Times:      15.9 ->     15.95 Myr
Step:    319, Times:     15.95 ->        16 Myr
Step:    320, Times:        16 ->     16.05 Myr
Step:    321, Times:     16.05 ->      16.1 Myr
Step:    322, Times:      16.1 ->     16.15 Myr
Step:    323, Times:     16.15 ->      16.2 Myr
Step:    324, Times:      16.2 ->     16.25 Myr
Step:    325, Times:     16.25 ->      16.3 Myr
Step:    326, Times:      16.3 ->     16.35 Myr
Step:    327, Times:     16.35 ->      16.4 Myr
Step:    328, Times:      16.4 ->     16.45 Myr
Step:    329, Times:     16.45 ->      16.5 Myr
Step:    330, Times:      16.5 ->     16.55 Myr
Step:    331, Times:     16.55 ->      16.6 Myr
Step:    332, Times:      16.6 ->     16.65 Myr
Step:    333, Times:     16.65 ->      16.7 Myr
Step:    334, Times:      16.7 ->     16.75 Myr
Step:    335, Times:     16.75 ->      16.8 Myr
Step:    336, Times:      16.8 ->     16.85 Myr
Step:    337, Times:     16.85 ->      16.9 Myr
Step:    338, Times:      16.9 ->     16.95 Myr
Step:    339, Times:     16.95 ->        17 Myr
Step:    340, Times:        17 ->     17.05 Myr
Step:    341, Times:     17.05 ->      17.1 Myr
Step:    342, Times:      17.1 ->     17.15 Myr
Step:    343, Times:     17.15 ->      17.2 Myr
Step:    344, Times:      17.2 ->     17.25 Myr
Step:    345, Times:     17.25 ->      17.3 Myr
Step:    346, Times:      17.3 ->     17.35 Myr
Step:    347, Times:     17.35 ->      17.4 Myr
Step:    348, Times:      17.4 ->     17.45 Myr
Step:    349, Times:     17.45 ->      17.5 Myr
Step:    350, Times:      17.5 ->     17.55 Myr
Step:    351, Times:     17.55 ->      17.6 Myr
Step:    352, Times:      17.6 ->     17.65 Myr
Step:    353, Times:     17.65 ->      17.7 Myr
Step:    354, Times:      17.7 ->     17.75 Myr
Step:    355, Times:     17.75 ->      17.8 Myr
Step:    356, Times:      17.8 ->     17.85 Myr
Step:    357, Times:     17.85 ->      17.9 Myr
Step:    358, Times:      17.9 ->     17.95 Myr
Step:    359, Times:     17.95 ->        18 Myr
Step:    360, Times:        18 ->     18.05 Myr
Step:    361, Times:     18.05 ->      18.1 Myr
Step:    362, Times:      18.1 ->     18.15 Myr
Step:    363, Times:     18.15 ->      18.2 Myr
Step:    364, Times:      18.2 ->     18.25 Myr
Step:    365, Times:     18.25 ->      18.3 Myr
Step:    366, Times:      18.3 ->     18.35 Myr
Step:    367, Times:     18.35 ->      18.4 Myr
Step:    368, Times:      18.4 ->     18.45 Myr
Step:    369, Times:     18.45 ->      18.5 Myr
Step:    370, Times:      18.5 ->     18.55 Myr
Step:    371, Times:     18.55 ->      18.6 Myr
Step:    372, Times:      18.6 ->     18.65 Myr
Step:    373, Times:     18.65 ->      18.7 Myr
Step:    374, Times:      18.7 ->     18.75 Myr
Step:    375, Times:     18.75 ->      18.8 Myr
Step:    376, Times:      18.8 ->     18.85 Myr
Step:    377, Times:     18.85 ->      18.9 Myr
Step:    378, Times:      18.9 ->     18.95 Myr
Step:    379, Times:     18.95 ->        19 Myr
Step:    380, Times:        19 ->     19.05 Myr
Step:    381, Times:     19.05 ->      19.1 Myr
Step:    382, Times:      19.1 ->     19.15 Myr
Step:    383, Times:     19.15 ->      19.2 Myr
Step:    384, Times:      19.2 ->     19.25 Myr
Step:    385, Times:     19.25 ->      19.3 Myr
Step:    386, Times:      19.3 ->     19.35 Myr
Step:    387, Times:     19.35 ->      19.4 Myr
Step:    388, Times:      19.4 ->     19.45 Myr
Step:    389, Times:     19.45 ->      19.5 Myr
Step:    390, Times:      19.5 ->     19.55 Myr
Step:    391, Times:     19.55 ->      19.6 Myr
Step:    392, Times:      19.6 ->     19.65 Myr
Step:    393, Times:     19.65 ->      19.7 Myr
Step:    394, Times:      19.7 ->     19.75 Myr
Step:    395, Times:     19.75 ->      19.8 Myr
Step:    396, Times:      19.8 ->     19.85 Myr
Step:    397, Times:     19.85 ->      19.9 Myr
Step:    398, Times:      19.9 ->     19.95 Myr
Step:    399, Times:     19.95 ->        20 Myr
Step:    400, Times:        20 ->     20.05 Myr
Step:    401, Times:     20.05 ->      20.1 Myr
Step:    402, Times:      20.1 ->     20.15 Myr
Step:    403, Times:     20.15 ->      20.2 Myr
Step:    404, Times:      20.2 ->     20.25 Myr
Step:    405, Times:     20.25 ->      20.3 Myr
Step:    406, Times:      20.3 ->     20.35 Myr
Step:    407, Times:     20.35 ->      20.4 Myr
Step:    408, Times:      20.4 ->     20.45 Myr
Step:    409, Times:     20.45 ->      20.5 Myr
Step:    410, Times:      20.5 ->     20.55 Myr
Step:    411, Times:     20.55 ->      20.6 Myr
Step:    412, Times:      20.6 ->     20.65 Myr
Step:    413, Times:     20.65 ->      20.7 Myr
Step:    414, Times:      20.7 ->     20.75 Myr
Step:    415, Times:     20.75 ->      20.8 Myr
Step:    416, Times:      20.8 ->     20.85 Myr
Step:    417, Times:     20.85 ->      20.9 Myr
Step:    418, Times:      20.9 ->     20.95 Myr
Step:    419, Times:     20.95 ->        21 Myr
Step:    420, Times:        21 ->     21.05 Myr
Step:    421, Times:     21.05 ->      21.1 Myr
Step:    422, Times:      21.1 ->     21.15 Myr
Step:    423, Times:     21.15 ->      21.2 Myr
Step:    424, Times:      21.2 ->     21.25 Myr
Step:    425, Times:     21.25 ->      21.3 Myr
Step:    426, Times:      21.3 ->     21.35 Myr
Step:    427, Times:     21.35 ->      21.4 Myr
Step:    428, Times:      21.4 ->     21.45 Myr
Step:    429, Times:     21.45 ->      21.5 Myr
Step:    430, Times:      21.5 ->     21.55 Myr
Step:    431, Times:     21.55 ->      21.6 Myr
Step:    432, Times:      21.6 ->     21.65 Myr
Step:    433, Times:     21.65 ->      21.7 Myr
Step:    434, Times:      21.7 ->     21.75 Myr
Step:    435, Times:     21.75 ->      21.8 Myr
Step:    436, Times:      21.8 ->     21.85 Myr
Step:    437, Times:     21.85 ->      21.9 Myr
Step:    438, Times:      21.9 ->     21.95 Myr
Step:    439, Times:     21.95 ->        22 Myr
Step:    440, Times:        22 ->     22.05 Myr
Step:    441, Times:     22.05 ->      22.1 Myr
Step:    442, Times:      22.1 ->     22.15 Myr
Step:    443, Times:     22.15 ->      22.2 Myr
Step:    444, Times:      22.2 ->     22.25 Myr
Step:    445, Times:     22.25 ->      22.3 Myr
Step:    446, Times:      22.3 ->     22.35 Myr
Step:    447, Times:     22.35 ->      22.4 Myr
Step:    448, Times:      22.4 ->     22.45 Myr
Step:    449, Times:     22.45 ->      22.5 Myr
Step:    450, Times:      22.5 ->     22.55 Myr
Step:    451, Times:     22.55 ->      22.6 Myr
Step:    452, Times:      22.6 ->     22.65 Myr
Step:    453, Times:     22.65 ->      22.7 Myr
Step:    454, Times:      22.7 ->     22.75 Myr
Step:    455, Times:     22.75 ->      22.8 Myr
Step:    456, Times:      22.8 ->     22.85 Myr
Step:    457, Times:     22.85 ->      22.9 Myr
Step:    458, Times:      22.9 ->     22.95 Myr
Step:    459, Times:     22.95 ->        23 Myr
Step:    460, Times:        23 ->     23.05 Myr
Step:    461, Times:     23.05 ->      23.1 Myr
Step:    462, Times:      23.1 ->     23.15 Myr
Step:    463, Times:     23.15 ->      23.2 Myr
Step:    464, Times:      23.2 ->     23.25 Myr
Step:    465, Times:     23.25 ->      23.3 Myr
Step:    466, Times:      23.3 ->     23.35 Myr
Step:    467, Times:     23.35 ->      23.4 Myr
Step:    468, Times:      23.4 ->     23.45 Myr
Step:    469, Times:     23.45 ->      23.5 Myr
Step:    470, Times:      23.5 ->     23.55 Myr
Step:    471, Times:     23.55 ->      23.6 Myr
Step:    472, Times:      23.6 ->     23.65 Myr
Step:    473, Times:     23.65 ->      23.7 Myr
Step:    474, Times:      23.7 ->     23.75 Myr
Step:    475, Times:     23.75 ->      23.8 Myr
Step:    476, Times:      23.8 ->     23.85 Myr
Step:    477, Times:     23.85 ->      23.9 Myr
Step:    478, Times:      23.9 ->     23.95 Myr
Step:    479, Times:     23.95 ->        24 Myr
Step:    480, Times:        24 ->     24.05 Myr
Step:    481, Times:     24.05 ->      24.1 Myr
Step:    482, Times:      24.1 ->     24.15 Myr
Step:    483, Times:     24.15 ->      24.2 Myr
Step:    484, Times:      24.2 ->     24.25 Myr
Step:    485, Times:     24.25 ->      24.3 Myr
Step:    486, Times:      24.3 ->     24.35 Myr
Step:    487, Times:     24.35 ->      24.4 Myr
Step:    488, Times:      24.4 ->     24.45 Myr
Step:    489, Times:     24.45 ->      24.5 Myr
Step:    490, Times:      24.5 ->     24.55 Myr
Step:    491, Times:     24.55 ->      24.6 Myr
Step:    492, Times:      24.6 ->     24.65 Myr
Step:    493, Times:     24.65 ->      24.7 Myr
Step:    494, Times:      24.7 ->     24.75 Myr
Step:    495, Times:     24.75 ->      24.8 Myr
Step:    496, Times:      24.8 ->     24.85 Myr
Step:    497, Times:     24.85 ->      24.9 Myr
Step:    498, Times:      24.9 ->     24.95 Myr
Step:    499, Times:     24.95 ->        25 Myr
Finished timeloop after 500 steps (final time = 25 Myr)
plotter_isotd = utils.plot.plot_scalar(sz_case1td.T_i, scale=sz_case1td.T0, gather=True, cmap='coolwarm', scalar_bar_args={'title': 'Temperature (deg C)', 'bold':True})
utils.plot.plot_vector_glyphs(sz_case1td.vw_i, plotter=plotter_isotd, factor=0.1, gather=True, color='k', scale=utils.mps_to_mmpyr(sz_case1td.v0))
utils.plot.plot_vector_glyphs(sz_case1td.vs_i, plotter=plotter_isotd, factor=0.1, gather=True, color='k', scale=utils.mps_to_mmpyr(sz_case1td.v0))
utils.plot.plot_geometry(sz_case1td.geom, plotter=plotter_isotd, color='green', width=2)
utils.plot.plot_couplingdepth(sz_case1td.geom.slab_spline, plotter=plotter_isotd, render_points_as_spheres=True, point_size=10.0, color='green')
utils.plot.plot_show(plotter_isotd)
utils.plot.plot_save(plotter_isotd, output_folder / "sz_problem_case1td_solution.png")

Finish up#

Convert this notebook to a python module (saving first and ignoring markdown cells and those tagged as “main” or “ipy”).

from ipylab import JupyterFrontEnd
app = JupyterFrontEnd()
app.commands.execute('docmanager:save')
!jupyter nbconvert --TagRemovePreprocessor.enabled=True --TagRemovePreprocessor.remove_cell_tags="['main', 'ipy']" --TemplateExporter.exclude_markdown=True --TemplateExporter.exclude_input_prompt=True --TemplateExporter.exclude_output_prompt=True --NbConvertApp.export_format=script --ClearOutputPreprocessor.enabled=True --FilesWriter.build_directory=../../python/sz_problems --NbConvertApp.output_base=sz_tdep_isoviscous 3.5b_sz_tdep_isoviscous.ipynb
[NbConvertApp] Converting notebook 3.5b_sz_tdep_isoviscous.ipynb to script
[NbConvertApp] Writing 4182 bytes to ../../python/sz_problems/sz_tdep_isoviscous.py