[CIG-SHORT] Convergence issues for slip weakening friction

Ekaterina Bolotskaya bolee at mit.edu
Thu Jun 15 22:41:13 PDT 2017


Dear Pylith developers,

I'm currently running a 2D simulation which is a 2m (height) by 3m (width) elastic block.
The block is initially compressed both vertically (2MPa) and horizontally (2MPa) and then sheared with a rate of 0.045 MPa/year for 100 years. Vertical displacement is fixed for all the boundaries: both horizontal and vertical.

The block has a horizontal fault in the middle which goes almost all the way to the edges of the block (2.98m - fault length).
I want to have an ~1m long section with a smaller friction coefficient (0.6) in the middle of the fault which would slip first and I want the slip to then propagate to the two side regions that initially had higher friction coefficient (0.8) but that should have same 0.6 coefficient once the slip started happening. I try to implement that using the slipweakening database.
I created a friction database that looks like that:

// -*- C++ -*- (tell Emacs to use C++ mode for syntax highlighting)
//
// This spatial database specifies the distribution of
// friction coefficient and cohesion along the fault

#SPATIAL.ascii 1
SimpleDB {
  num-values  = 4
  value-names = static-coefficient dynamic-coefficient slip-weakening-parameter cohesion
  value-units = none none m MPa
  num-locs    = 3
  data-dim    = 1    // locations form a line
  space-dim   = 2
  cs-data     = cartesian {
    to-meters = 1.0  // specify coordinates in m
space-dim = 2
  }
}

//  Columns are
// (1) x coordinate (m)
// (2) y coordinate (m)
// (3) static-coefficient (none)
// (4) dynamic-coefficient (none)
// (5) slip-weakening-parameter (m)
// (6) cohesion (MPa)

 -0.75    0.0    0.8   0.6    5e-6   0.0
   0.0    0.0    0.6   0.6    5e-6   0.0
  0.75    0.0    0.8   0.6    5e-6   0.0

that I call like that:
friction = pylith.friction.SlipWeakening
friction.label = Slip weakening friction
#friction.force_healing = True

# We must define the quadrature information for fault cells.
# The fault cells are 1D (surface).
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 1

friction.db_properties = spatialdata.spatialdb.SimpleDB
friction.db_properties.label = Slip weakening friction
friction.db_properties.iohandler.filename = spatialdb/friction_slip_weak.spatialdb
#friction.db_properties.query_type = linear

My convergence parameters are:
ksp_rtol = 1.0e-20
ksp_atol = 1.0e-12

snes_rtol = 1.0e-20
snes_atol = 1.0e-10

The simulation runs fine before the weakening part starts (the slip of the side regions becomes larger than the slip-weakening-parameter. And then I'm getting the following error:

2000 SNES Function norm 1.248115112027e-07
Nonlinear solve did not converge due to DIVERGED_MAX_IT iterations 2000
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR:
[0]PETSC ERROR: SNESSolve has not converged
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.
[0]PETSC ERROR: Petsc Development GIT revision: v3.7.2-876-g7e45237  GIT Date: 2016-06-16 04:41:50 -0500
[0]PETSC ERROR: /home/bolee/pylith-2.1.3-linux-x86_64/bin/mpinemesis on a arch-pylith named terrella by bolee Wed Jun 14 22:42:40 2017
[0]PETSC ERROR: Configure options --prefix=/home/jenkins-slave/workspace/PyLith-binary-petsc/tag_arch/64bit/tag_os/centos/dist --with-mpi= --with-c2html=no --with-x=no --with-hwloc=0 --with-ssl=0 --with-debugging=0 --with-shared-libraries=1 --with-mpi-compilers=1 --download-fblaslapack=1 --with-chaco=1 --download-chaco=1 --with-parmetis=1 --download-parmetis=1 --download-metis=1 --with-ml=1 --download-ml=1 --wth-hdf5=1 --with-hdf5-dir= PETSC_DIR=/home/jenkins-slave/workspace/PyLith-binary-petsc/tag_arch/64bit/tag_os/centos PETSC_ARCH=arch-pylith CPPFLAGS=-I/home/jenkins-slave/workspace/PyLith-binary-petsc/tag_arch/64bit/tag_os/centos/dist LDFLAGS=-L/home/jenkins-slave/workspace/PyLith-binary-petsc/tag_arch/64bit/tag_os/centos/dist/lib
[0]PETSC ERROR: #1 SNESSolve() line 4020 in /home/jenkins-slave/workspace/PyLith-binary-petsc/tag_arch/64bit/tag_os/centos/src/snes/interface/snes.c
[0]PETSC ERROR: #2 SNESLogConvergenceHistory() line 152 in /home/jenkins-slave/workspace/PyLith-binary/tag_arch/64bit/tag_os/centos/libsrc/pylith/problems/SolverNonlinear.cc

I've tried running the same simulation with just a uniform db:

friction = pylith.friction.SlipWeakening
friction.label = Slip weakening friction
#friction.force_healing = True

# We must define the quadrature information for fault cells.
# The fault cells are 1D (surface).
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 1

friction.db_properties = spatialdata.spatialdb.UniformDB
friction.db_properties.label = Slip weakening
friction.db_properties.values = [static-coefficient,dynamic-coefficient,slip-weakening-parameter,cohesion]
friction.db_properties.data = [0.8,0.6,5e-6*m,0.0*Pa]

I've tried decreasing the shearing rates down to 0.01MPa/year.
I've tried adjusting the nonlinear convergence parameters:
snes_rtol = 1.0e-13
snes_atol = 1.0e-8

And I'm still getting the same error.

Could you please tell me what might be wrong?
Let me know if I should send you the whole code.
Thanks!


Best regards,
Ekaterina Bolotskaya

PhD in Geophysics,
Earth, Atmospheric and Planetary Science Department,
Massachusetts Institute of Technology
E-mail. bolee at mit.edu
Mob. +1 (857) 284-2805<tel:%2B1%20%28857%29%20284-2805>
         +7 (963) 995-36-33<tel:%2B7%20%28963%29%20995-36-33>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geodynamics.org/pipermail/cig-short/attachments/20170616/b78378de/attachment-0001.html>


More information about the CIG-SHORT mailing list