# -*- Config -*- (syntax highlighting) # ---------------------------------------------------------------------- # # Brad T. Aagaard, U.S. Geological Survey # Charles A. Williams, GNS Science # Matthew G. Knepley, University of Chicago # # This code was developed as part of the Computational Infrastructure # for Geodynamics (http://geodynamics.org). # # Copyright (c) 2010-2017 University of California, Davis # # See COPYING for license information. # # ---------------------------------------------------------------------- # # This is not a self-contained simulation configuration file. This # file only specifies the general parameters common to the simulations # in this directory. # # ---------------------------------------------------------------------- # journal # ---------------------------------------------------------------------- # Turn on some journals to show progress. [pylithapp.journal.info] pylithapp = 1 timedependent = 1 greensfns = 1 implicit = 1 petsc = 1 solverlinear = 1 meshiocubit = 1 implicitelasticity = 1 faultcohesivekin = 1 faultcohesivedyn = 1 materials = 1 mesh_distributor = 1 # ---------------------------------------------------------------------- # mesh_generator # ---------------------------------------------------------------------- # We use a mesh from CUBIT/Trelis, so we need to change the reader # from the default (MeshIOAscii) and set the filename. [pylithapp.mesh_generator] reader = pylith.meshio.MeshIOCubit reader.filename = mesh/mesh_tet.exo # Optimize ordering of mesh cells and vertices using reverse # Cuthill-KcKee algorithm. reorder_mesh = True # Our mesh uses a local transverse Mercator geographic projection. By # specifying the projection, we can use other georeferenced coordinate # systems in spatial databases and the code will automatically # transform coordinates as necessary. [pylithapp.mesh_generator.reader] coordsys = spatialdata.geocoords.CSGeoProj coordsys.space_dim = 3 coordsys.datum_horiz = WGS84 coordsys.datum_vert = mean sea level coordsys.projector.projection = tmerc coordsys.projector.proj_options = +lon_0=-122.6765 +lat_0=45.5231 +k=0.9996 # ---------------------------------------------------------------------- # materials # ---------------------------------------------------------------------- # For have a material for each block we created in CUBIT/Trelis. # # We have 4 blocks: # - slab (block 1) # - wedge (block 2) # - mantle (block 3) # - crust (block 4) # # The material model and parameters are specified in separate files to # avoid conflicting parameters when we vary the material model from # the default. See 'mat_elastic.cfg' and 'mat_viscoelastic.cfg'. [pylithapp.problem] materials = [slab, wedge, crust, mantle] [pylithapp.problem.materials.slab] label = Subducting slab id = 1 quadrature.cell = pylith.feassemble.FIATSimplex quadrature.cell.dimension = 3 # Average cell output over quadrature points, yielding one point per cell output.cell_filter = pylith.meshio.CellFilterAvg output.writer = pylith.meshio.DataWriterHDF5 [pylithapp.problem.materials.wedge] label = Accretionary wedge id = 2 quadrature.cell = pylith.feassemble.FIATSimplex quadrature.cell.dimension = 3 output.cell_filter = pylith.meshio.CellFilterAvg output.writer = pylith.meshio.DataWriterHDF5 [pylithapp.problem.materials.mantle] label = Mantle id = 3 quadrature.cell = pylith.feassemble.FIATSimplex quadrature.cell.dimension = 3 output.cell_filter = pylith.meshio.CellFilterAvg output.writer = pylith.meshio.DataWriterHDF5 [pylithapp.problem.materials.crust] label = Continental crust id = 4 quadrature.cell = pylith.feassemble.FIATSimplex quadrature.cell.dimension = 3 output.cell_filter = pylith.meshio.CellFilterAvg output.writer = pylith.meshio.DataWriterHDF5 # ---------------------------------------------------------------------- # boundary conditions # ---------------------------------------------------------------------- [pylithapp.problem] # The generic setup is roller boundary conditions on the lateral and # bottom boundaries. That is, we have zero displacements for the DOF # normal to the boundary. We can use the default Dirichlet BC with its # default spatial database (ZeroDispDB) for the boundary values. # # Array of boundary conditions (defaults to DirichletBC): # x_neg (ZeroDispDB to specify zero x-displacement) # x_pos (ZeroDispDB to specify zero x-displacement) # y_neg (ZeroDispDB to specify zero y-displacement) # y_pos (ZeroDispDB to specify zero y-displacement) # z_neg (ZeroDispDB to specify zero z-displacement) bc = [x_neg, x_pos, y_neg, y_pos, z_neg] # The label corresponds to the name of the nodeset in CUBIT. # -x face [pylithapp.problem.bc.x_neg] bc_dof = [0] label = boundary_xneg db_initial.label = Dirichlet BC on -x # +x face [pylithapp.problem.bc.x_pos] bc_dof = [0] label = boundary_xpos db_initial.label = Dirichlet BC on +x # -y face [pylithapp.problem.bc.y_neg] bc_dof = [1] label = boundary_yneg db_initial.label = Dirichlet BC on -y # +y face [pylithapp.problem.bc.y_pos] bc_dof = [1] label = boundary_ypos db_initial.label = Dirichlet BC on +y # -z face [pylithapp.problem.bc.z_neg] bc_dof = [2] label = boundary_zneg db_initial.label = Dirichlet BC on -z # ---------------------------------------------------------------------- # output # ---------------------------------------------------------------------- # We output the solution over the entire domain and over the top surface. # # We write the output using HDF5/Xdmf files. [pylithapp.problem.formulation] output = [domain, subdomain] # Set subdomain component to OutputSolnSubset (boundary of the domain). output.subdomain = pylith.meshio.OutputSolnSubset [pylithapp.problem.formulation.output.domain] writer = pylith.meshio.DataWriterHDF5 [pylithapp.problem.formulation.output.subdomain] # Name of nodeset for top surface. label = boundary_zpos writer = pylith.meshio.DataWriterHDF5 # ---------------------------------------------------------------------- # PETSc # ---------------------------------------------------------------------- [pylithapp.petsc] malloc_dump = # Use LU preconditioner (helful for learning and debugging, not production simulations) pc_type = lu # Convergence parameters. ksp_rtol = 1.0e-10 ksp_atol = 1.0e-11 ksp_max_it = 500 ksp_gmres_restart = 50 # Linear solver monitoring options. ksp_monitor = true #ksp_view = true ksp_converged_reason = true ksp_error_if_not_converged = true # Nonlinear solver monitoring options. snes_rtol = 1.0e-10 snes_atol = 1.0e-9 snes_max_it = 100 snes_monitor = true snes_linesearch_monitor = true #snes_view = true snes_converged_reason = true snes_error_if_not_converged = true # PETSc summary -- useful for performance information. log_view = true # End of file