## General

General issues related to running PyLith.

### Nondimensionalization

It is VERY IMPORTANT to make sure that the scales used in the nondimensionalization are appropriate for your problem. PyLith can solve problems across an extremely wide range of spatial and temporal scales if the appropriate scales are used in the nondimensionalization.

Due to roundoff errors and convergence tolerances in the iterative solvers, PyLith relies on reasonable scales in the solution in constructing the friction criterion and preconditioning the system. Failure to set appropriate scales in the nondimensionalization will cause the solution to be garbage.

• Quasi-static problems
  Default values:
relaxation_time = 1.0*year
length_scale = 1.0*km
pressure_scale = 3.0e+10*Pa
Recommended values:
relaxation_time = TIME_STEP
length_scale = DISCRETIZATION_SIZE or DISPLACEMENT_MAGNITUDE
pressure_scale = SHEAR_MODULUS

• Dynamic problems
  Default values:
shear_wave_speed = 3.0*km/s
density = 3000.0*kg/m**3
wave_period = 1.0*s

  Recommended values:
shear_wave_speed = MINIMUM_SHEAR_WAVE_SPEED
density = DENSITY
wave_period = MINIMUM_WAVE_PERIOD


### Fault output

Slip and traction vectors are output in the fault coordinate system (along strike, up-dip, and opening). The direction of the slip vector corresponds to the direction of motion on the “negative” side of the fault, which is defined by the origin of the fault normal vector. To convert to the global coordinate system, request that the fault orientation be included in the fault output via:

  vertex_info_fields = [strike_dir,dip_dir,normal_dir]


With this information it is easy to rotate the slip or traction vector from the fault coordinate system to the global coordinate system. This is usually done in a Python script with HDF5 output or within ParaView using the calculator. The expression for the slip in global coordinates is:

  (slip_X*strike_dir_X+slip_Y*dip_dir_X)*iHat+(slip_X*strike_dir_Y+slip_Y*dip_dir_Y)*jHat+(slip_X*strike_dir_Z+slip_Y*dip_dir_Z)*kHat


### Spontaneous (Dynamic) Rupture in Quasistatic Simulations

Use of the FaultCohesiveDyn object for spontaneous (dynamic) rupture in quasistatic simulations requires careful selection of solver parameters. See Session V of the 2013 Crustal Deformation Modeling tutorial for a detailed discussion.