[pylithapp] # 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] timedependent = 1 greensfns = 1 implicit = 1 petsc = 1 solverlinear = 1 meshiocubit = 1 implicitelasticity = 1 fiatlagrange = 1 pylithapp = 1 materials = 1 # ---------------------------------------------------------------------- # mesh_generator # ---------------------------------------------------------------------- [pylithapp.mesh_generator] #debug = 1 ; uncomment to get very verbose mesh information # Change the default mesh reader to the CUBIT reader. reader = pylith.meshio.MeshIOCubit # Optimize ordering of mesh cells and vertices using reverse # Cuthill-KcKee algorithm. #reorder_mesh = True [pylithapp.mesh_generator.reader] coordsys.space_dim = 2 # Set filename of mesh to import. #filename = mesh/mesh_tri3.exo filename = mesh/mesh_tri3_uniform_straight.exo # ---------------------------------------------------------------------- # domain setup # ---------------------------------------------------------------------- [pylithapp.problem] dimension = 2 normalizer.length_scale = 1.0*km # Use relaxation time of 1.0*year so timesteps in output are in years normalizer.relaxation_time = 1.0*year # ---------------------------------------------------------------------- # problem # ---------------------------------------------------------------------- [pylithapp.timedependent] bc = [dir_y_neg,dir_y_pos, neu_x_neg,neu_x_pos] bc.neu_x_pos = pylith.bc.Neumann ; Change BC type to Neumann bc.neu_x_neg = pylith.bc.Neumann ; Change BC type to Neumann # Set materials to an array of one material: materials = [crust] [pylithapp.timedependent.materials.crust] id = 1 db_properties = spatialdata.spatialdb.SimpleDB db_properties.query_type = nearest quadrature.cell = pylith.feassemble.FIATSimplex quadrature.cell.dimension = 2 [pylithapp.timedependent.formulation.time_step] # Define the total time for the simulation and the default time step size. total_time = 101.0*year ; total time of simulation # Define an appropriate time step for simulations. Important for # nondimensionalization of velocities and slip rates. dt = 1.0*year [pylithapp.timedependent.implicit] output = [domain] # Set subdomain component to OutputSolnSubset (boundary of the domain). #output.subdomain = pylith.meshio.OutputSolnSubset # Fault friction is a nonlinear problem so we need to use the nonlinear # solver. solver = pylith.problems.SolverNonlinear [pylithapp.timedependent.materials.crust] # initial stresses db_initial_stress = spatialdata.spatialdb.SimpleDB db_initial_stress.label = Initial stress in crust db_initial_stress.iohandler.filename = spatialdb/initial_stress.spatialdb db_initial_stress.query_type = nearest # ---------------------------------------------------------------------- # boundary conditions # ---------------------------------------------------------------------- # Neumann (stress BC) [pylithapp.timedependent.bc.neu_x_pos] label = bndry_east ; Name of CUBIT nodeset for +x boundary db_initial = spatialdata.spatialdb.SimpleDB db_initial.label = Neumann BC +x edge db_initial.iohandler.filename = spatialdb/x_tract.spatialdb db_initial.query_type = nearest quadrature.cell = pylith.feassemble.FIATLagrange quadrature.cell.dimension = 1 quadrature.cell.quad_order = 2 [pylithapp.timedependent.bc.neu_x_neg] label = bndry_west ; Name of CUBIT nodeset for -x boundary db_initial = spatialdata.spatialdb.SimpleDB db_initial.label = Neumann BC -x edge db_initial.iohandler.filename = spatialdb/x_tract.spatialdb db_initial.query_type = nearest quadrature.cell = pylith.feassemble.FIATLagrange quadrature.cell.dimension = 1 quadrature.cell.quad_order = 2 # Dirichlet (Displacement BC) [pylithapp.problem.bc.dir_y_pos] label = face_top ; Name of CUBIT nodeset for +y boundary bc_dof = [0,1] db_rate = spatialdata.spatialdb.UniformDB db_rate.label = Dirichlet rate BC on +y db_rate.values = [displacement-rate-x,displacement-rate-y,rate-start-time] db_rate.data = [1.0*cm/year,0.0*cm/year,1.0*year] [pylithapp.problem.bc.dir_y_neg] label = face_bot ; Name of CUBIT nodeset for -y boundary bc_dof = [0,1] db_initial = pylith.bc.ZeroDispDB db_initial.label = Dirichlet BC on -y # ---------------------------------------------------------------------- # PETSc # ---------------------------------------------------------------------- [pylithapp.timedependent.formulation] split_fields = True use_custom_constraint_pc = True ; Use only if problem contains a fault matrix_type = aij [pylithapp.petsc] # Preconditioner settings. pc_type = asm sub_pc_factor_shift_type = nonzero # Convergence parameters. ksp_rtol = 1.0e-8 ksp_atol = 1.0e-12 ksp_max_it = 1000 ksp_gmres_restart = 50 # Linear solver monitoring options. #ksp_monitor = true #ksp_view = true ksp_converged_reason = true # Nonlinear solver monitoring options. snes_rtol = 1.0e-9 snes_atol = 1.0e-8 snes_max_it = 500 snes_monitor = true snes_linesearch_monitor = true #snes_view = true snes_converged_reason = true # Friction sensitivity solve used to compute the increment in slip # associated with changes in the Lagrange multiplier imposed by the # fault constitutive model. friction_pc_type = asm friction_sub_pc_factor_shift_type = nonzero friction_ksp_max_it = 25 friction_ksp_gmres_restart = 30 # Uncomment to view details of friction sensitivity solve. #friction_ksp_monitor = true #friction_ksp_view = true friction_ksp_converged_reason = true # PETSc summary -- useful for performance information. #log_summary = true # Uncomment to launch gdb when starting PyLith. # start_in_debugger = true # End of file