# -*- Python -*- [pylithapp] # ---------------------------------------------------------------------- # problem # ---------------------------------------------------------------------- [pylithapp.timedependent] # Set bc to an array of 5 boundary conditions: 'x_pos','x_neg', 'y_pos', # 'y_neg', and 'z_neg'. formulation.solver = pylith.problems.SolverNonlinear bc = [x_pos,x_neg,y_pos,y_neg,z_neg] # Set gravity field (default is None) #gravity_field = spatialdata.spatialdb.GravityField [pylithapp.timedependent.implicit] # Set the output to an array of 2 output managers. # We will output the solution over the domain and the ground surface. output = [domain,subdomain] output.subdomain = pylith.meshio.OutputSolnSubset # Change the total simulation time to 200 years, and use a constant time # step size of 5 years. [pylithapp.timedependent.implicit.time_step] total_time = 1000.0*year dt = 10.0*year # ---------------------------------------------------------------------- # materials # ---------------------------------------------------------------------- [pylithapp.timedependent] materials.fault_block = pylith.materials.DruckerPrager3D [pylithapp.timedependent.materials.fault_block] db_properties = spatialdata.spatialdb.CompositeDB db_properties.db_A = spatialdata.spatialdb.SimpleDB db_properties.db_B = spatialdata.spatialdb.SimpleDB #allow_tensile_yield = True [pylithapp.timedependent.materials.fault_block.db_properties] values_A = [density,vs,vp] ; Elastic properties. db_A.label = Elastic properties db_A.iohandler.filename = spatialdb/mat_fault_block.spatialdb values_B = [friction-angle,cohesion,dilatation-angle] db_B.label = Drucker-Prager properties db_B.iohandler.filename = spatialdb/mat_pfault_block.spatialdb [pylithapp.timedependent.materials.fault_block] output.cell_info_fields = [density,mu,lambda,alpha_yield,beta,alpha_flow] output.cell_data_fields = [total_strain,stress,plastic_strain] # ---------------------------------------------------------------------- # boundary conditions # ---------------------------------------------------------------------- # We use the default ZeroDispDB for all boundaries, since we just want # zero displacements in the direction normal to each face. # The label corresponds to the name of the nodeset in CUBIT. [pylithapp.timedependent.bc.x_pos] bc_dof = [0] label = face_xpos db_initial.label = Dirichlet BC on +x db_rate = spatialdata.spatialdb.UniformDB db_rate.label = Dirichlet rate BC on +x db_rate.values = [displacement-rate-x,rate-start-time] db_rate.data = [0.0035*m/year,0.0*year] [pylithapp.timedependent.bc.x_neg] bc_dof = [0] label = face_xneg db_initial.label = Dirichlet BC on -x db_rate = spatialdata.spatialdb.UniformDB db_rate.label = Dirichlet rate BC on -x db_rate.values = [displacement-rate-x,rate-start-time] db_rate.data = [0.001*m/year,0.0*year] [pylithapp.timedependent.bc.y_pos] bc_dof = [1] label = face_ypos db_initial.label = Dirichlet BC on +y [pylithapp.timedependent.bc.y_neg] bc_dof = [1] label = face_yneg db_initial.label = Dirichlet BC on -y [pylithapp.timedependent.bc.z_neg] bc_dof = [2] label = face_zneg db_initial.label = Dirichlet BC on -z # ---------------------------------------------------------------------- # output # ---------------------------------------------------------------------- # Give basename for VTK domain output of solution over domain. [pylithapp.problem.formulation.output.domain] output_freq = time_step time_step = 100.0*year writer.filename = output/disp.vtk writer.time_format = %04.0f writer.time_constant = 1.0*year # Give basename for VTK domain output of solution over ground surface. [pylithapp.problem.formulation.output.subdomain] # Name of nodeset for ground surface. label = face_zpos # We keep the default output frequency behavior (skip every n steps), and # ask to skip 0 steps between output, so that we get output every time step. output_freq = time_step time_step = 100.0*year writer.filename = output/groundsurf.vtk writer.time_format = %04.0f writer.time_constant = 1.0*year # Give basename for VTK output of crust state variables. [pylithapp.timedependent.materials.crust.output] # Average values over quadrature points. cell_filter = pylith.meshio.CellFilterAvgMesh output_freq = time_step time_step = 100.0*year writer.filename = output/crust.vtk writer.time_format = %04.0f writer.time_constant = 1.0*year [pylithapp.timedependent.materials.fault_block.output] # Average values over quadrature points. cell_filter = pylith.meshio.CellFilterAvgMesh output_freq = time_step time_step = 100.0*year writer.filename = output/fault_block.vtk writer.time_format = %04.0f writer.time_constant = 1.0*year