# Parameter File

## General Information

The parameter file in SeisSol is based on the Fortran NAMELIST format. The file is divided into different sections. Each section has a set of configuration parameters that influences the execution of SeisSol. Each configuration parameter can be one of the following:

**Integer****Float****Array**Arrays can contain integers or floats and have a fixed size. The elements are separated by spaces (`1 2 3 4`

)**String****Path**A path references a file or a directory and is given as a string in the parameter file with additional restrictions. A path might be absolute or relative to the starting directory of the execution. If the path is used for an output file, the user has to make sure that the directory exists. (E.g. If the path is set to “output/wavefield”, then the directory “output” must exist.)**Path prefix**Path prefixes are similar to paths. However, SeisSol will automatically append a filename extension or other suffixes (e.g. “-fault”).

## Commented parameter file

```
&equations
!yaml file defining spatial dependance of material properties
MaterialFileName = '33_layered_constant.yaml'
!1: Compute average materials for each cell, 0: sample material values at element barycenters
UseCellHomogenizedMaterial = 1
!off-fault plasticity parameters (ignored if Plasticity=0)
Plasticity=0
Tv=0.05
!Attenuation parameters (ignored if not compiled with attenuation)
FreqCentral=0.5
FreqRatio=100
GravitationalAcceleration = 9.81 ! value of gravitational acceleration
!ITM Parameters
ITMEnable = 1 ! 1 is on, 0 is off
ITMStartingtime = 2.0 ! Time when ITM is turned on
ITMTime = 0.01 !Time duration for which ITM is on
ITMVelocityscalingfactor = 2 ! Scaling factor
ITMReflectionType = 1 ! 1 reflects both waves, 2 reflects both waves with constant velocity, 3 reflects only P-waves, 4 reflects only S-waves
numflux = 'godunov' ! The numerical flux. Values: 'godunov', 'rusanov'
numfluxnearfault = 'godunov' ! The numerical flux for faces of cells adjacent to the fault (on cells which have at least one DR face), excluding the DR faces themselves. Values: 'godunov', 'rusanov'
/
&IniCondition
cICType = 'Zero' ! Initial Condition
!If not specified the default value is Zero
!Possible values are
!Zero All zero - the standard case to work with point source or dynamic rupture
!Planarwave A planar wave for convergence tests, needs periodic boundary conditions
!Travelling A planar wave travelling wave (one period of a plane wave), needs more parameters to be specified
!AcousticTravellingwithITM A travelling acoustic wave with ITM
!Scholte A Scholte wave to test elastic-acoustic coupling
!Snell Snells law to test elastic-acoustic coupling
!Ocean An uncoupled ocean test case for acoustic equations
!The following parameters are only needed for the travelling wave IC:
origin = 0 0 0.5 ! Origin of the wave
kVec = 6.283 0 0 ! Gives direction of wave propagation, the wavelength of the travelling wave is 2*pi / norm(kVec)
k = 6.283 ! Wave number to be used for the travelling acoustic wave with ITM test case. Not to be used in other scenarios
ampField = 2 0 0 0 0 0 0 1 0 ! Amplification of the different wave modes
/
&DynamicRupture
FL = 16 ! Friction law
!0: none, 16:LSW, 103: RS with strong velocity weakening
!yaml file defining spatial dependance of fault properties
ModelFileName = '33_fault0.yaml'
!reference vector for defining strike and dip direction
XRef = -0.1 ! Reference point
YRef = 0.0
ZRef = -1.0
refPointMethod = 1
etahack = 1 ! use any value smaller than one to mitigate quasi-divergent solutions in friction laws
OutputPointType = 5 ! Type (0: no output, 3: ascii file, 4: paraview file, 5: 3+4)
SlipRateOutputType=0 ! 0: (smoother) slip rate output evaluated from the difference between the velocity on both side of the fault
! 1: slip rate output evaluated from the fault tractions and the failure criterion (less smooth but usually more accurate where the rupture front is well developped)
TpProxyExponent = 0.3333333333333333 ! exponent alpha in the TP proxy slip weakening law (default is 1/3)
/
!see: https://seissol.readthedocs.io/en/latest/fault-output.html
! parameterize paraview file output
&Elementwise
printtimeinterval_sec = 0.2 ! Time interval at which output will be written
OutputMask = 1 1 1 1 1 1 1 1 1 1 1 1 ! turn on and off fault outputs
refinement_strategy = 2
refinement = 1
/
! parameterize ascii fault file outputs
&Pickpoint
printtimeinterval = 1 ! Index of printed info at timesteps
OutputMask = 1 1 1 1 1 1 1 1 1 1 1 1 ! turn on and off fault outputs
PPFileName = 'tpv33_faultreceivers.dat'
/
&SourceType
!Type = 50 ! 50: point source described by an ASCII file
!Type = 42 ! 42: finite source in netcdf format
!FileName = 'source_norm.dat'
/
&MeshNml
MeshFile = 'tpv33_gmsh' ! Name of mesh file
pumlboundaryformat = 'auto' ! the boundary data type for PUML files
meshgenerator = 'PUML' ! Name of meshgenerator (Netcdf or PUML)
PartitioningLib = 'Default' ! name of the partitioning library (see src/Geometry/PartitioningLib.cpp for a list of possible options, you may need to enable additional libraries during the build process)
/
&Discretization
CFL = 0.5 ! CFL number (<=1.0)
FixTimeStep = 5 ! Manually chosen maximum time step
ClusteredLTS = 2 ! 1 for Global time stepping, 2,3,5,... Local time stepping (advised value 2)
!ClusteredLTS defines the multi-rate for the time steps of the clusters 2 for Local time stepping
LtsWeightTypeId = 1 ! 0=exponential, 1=exponential-balanced, 2=encoded
vertexWeightElement = 100 ! Base vertex weight for each element used as input to ParMETIS
vertexWeightDynamicRupture = 200 ! Weight that's added for each DR face to element vertex weight
vertexWeightFreeSurfaceWithGravity = 300 ! Weight that's added for each free surface with gravity face to element vertex weight
! Wiggle factor settings:
! Wiggle factor adjusts time step size by a small factor. This can lead to a slightly better clustering.
LtsWiggleFactorMin = 1.0 ! Minimal wiggle factor applied to time step size. Should be > 1/rate
LtsWiggleFactorStepsize = 0.01 ! Stepsize for wiggle factor grid search
LtsWiggleFactorEnforceMaximumDifference = 1 ! 0 or 1: Enforces the maximum difference between neighboring clusters during wiggle factor search
LtsMaxNumberOfClusters = 20 ! Enforces a maximal number of clusters
LtsAutoMergeClusters = 0 ! 0 or 1: Activates auto merging of clusters
LtsAllowedRelativePerformanceLossAutoMerge = 0.1 ! Find minimal max number of clusters such that new computational cost is at most increased by this factor
LtsAutoMergeCostBaseline = 'bestWiggleFactor' ! Baseline used for auto merging clusters. Valid options: bestWiggleFactor / maxWiggleFactor
/
&Output
OutputFile = '../output_tpv33/tpv33'
WavefieldOutput = 1 ! disable/enable wavefield output (right now, format=6 needs to be set as well)
Format = 6 ! Format (10= no output, 6=hdf5 output)
! |stress |vel
iOutputMask = 0 0 0 0 0 0 1 1 1
! |strain |eta
iPlasticityMask = 0 0 0 0 0 0 1
TimeInterval = 2. ! Index of printed info at time
refinement = 1
OutputRegionBounds = -20e3 20e3 -10e3 10e3 -20e3 0e3 !(optional) array that describes the region
! of the wave field that should be written. Specified as 'xmin xmax ymin ymax zmin zmax'
! off-fault ascii receivers
ReceiverOutput = 1 ! Enable/disable off-fault ascii receiver output
RFileName = 'tpv33_receivers.dat' ! Record Points in extra file
pickdt = 0.005 ! Pickpoint Sampling
! (Optional) Synchronization point for receivers.
! If omitted, receivers are written at the end of the simulation.
ReceiverOutputInterval = 10.0
ReceiverComputeRotation = 0 ! Compute Rotation of the velocity field at the receivers
ReceiverComputeStrain = 0 ! Compute strain at the receivers
! Free surface output
SurfaceOutput = 1
SurfaceOutputRefinement = 1
SurfaceOutputInterval = 2.0
!Checkpointing
Checkpoint = 1 ! enable/disable checkpointing
checkPointFile = 'checkpoint/checkpoint'
checkPointBackend = 'mpio' ! Checkpoint backend
checkPointInterval = 6
xdmfWriterBackend = 'posix' ! (optional) The backend used in fault, wavefield,
! and free-surface output. The HDF5 backend is only supported when SeisSol is compiled with
! HDF5 support.
EnergyOutput = 1 ! Computation of energy, written in csv file
EnergyTerminalOutput = 1 ! Write energy to standard output
EnergyOutputInterval = 0.05
ComputeVolumeEnergiesEveryOutput = 4 ! Compute volume energies only once every ComputeVolumeEnergiesEveryOutput * EnergyOutputInterval
LoopStatisticsNetcdfOutput = 0 ! Writes detailed loop statistics. Warning: Produces terabytes of data!
/
&AbortCriteria
EndTime = 15.0
terminatorMaxTimePostRupture = 5.0 ! Stops SeisSol x sec after slip rate everywhere on the fault or seismic moment rate is below
! the given threshold
terminatorSlipRateThreshold = 0.5 ! Slip rate threshold for the above criteria (the proposed value should filter out locally high SR
! in "creeping" fronts (numerical artifacts when rupture dies out).
terminatorMomentRateThreshold = 2e18 ! Seismic moment rate threshold for the above criteria
/
```

## Sections

Additional, more detailed information on several sections are listed here.

### DynamicRupture

#### Reference point

The slip rate is defined as the velocity difference between the two sides of a fault, that is,

\(\Delta v=v^{+}-v^{-}\).

A practical issue is to define which side at an interface corresponds to
“+” and which one to “-”. The reference point defines which side is
which and it is **crucial** to set it correctly.

The parameters `XRef, YRef, ZRef`

define the coordinate vector of the
reference point, which we denote with **r**. Furthermore, the
`refPointMethod`

has to specified, whose effect is outlined in the
following.

**refPointMethod=0**In order to decide if a side of a fault is “+” or “-” we compute the vectors**n**,**x**, and**y**for a face of a tetrahedron, whose boundary condition indicates it to be part of the fault. The vector**n**is the face’s normal, which always points outward with respect to the tetrahedron. The vector**x**is an arbitrary vertex of the face and the vector**y**is face’s the missing vertex, that is, the vertex which belongs to the tetrahedron but not to the face.We define\(\text{isPlus}:=\left<\mathbf{r}-\mathbf{x},\mathbf{n}\right>\cdot\left<\mathbf{y}-\mathbf{x},\mathbf{n}\right>>0\)isPlus is only true whenever**r**-**x**and**y**-**x**point in the same direction (lie in the same half-space w.r.t.**n**).This method works, as long as the sign of the first dot product is the same for all faces tagged as being part of the fault.*Example:*One has a planar fault with normal**N**and an arbitrary point**z**on the plane. Then a good reference point would be**z**+**N**. In this case,**n**=**N**and\(\left<\mathbf{z}+\mathbf{N}-\mathbf{x},\mathbf{n}\right>=\left<\mathbf{z}-\mathbf{x},\mathbf{N}\right>+\left<\mathbf{N},\mathbf{N}\right>=\left<\mathbf{N},\mathbf{N}\right>\)that is, the first dot product becomes independent of the face.**refPointMethod=1**Here,**r**should be rather be called reference direction instead of reference point.We define, with**n**again being a face’s normal,\(\text{isPlus}:=\left<\mathbf{r},\mathbf{n}\right>>0\)*Example:*One has a planar fault with normal**N**. Then a good reference direction would be**N**.

*Application Example:* Assume you have chosen a *enu* coordinate system
(x=east, y=north, z=up). Your fault is in the x-z-plane with y=0
(strike-slip fault) and you set the reference point to (0,10000,0) with
`refPointMethod=0`

. Then, the faces with normal (0,+1,0) make up the
“+”-side. In this case, all vertices of the “+”-tetrahedron lie in the
half-space \(y\ge 0\).

In the fault output, a strike and dip direction is defined (see
`create_fault_rotationmatrix.f90`

). For the normal (0,-1,0), one would
obtain (-1,0,0) as strike direction (west). Recalling the definition of
the slip rate, a positive slip rate indicates left-lateral motion.

Read the article Left-lateral, right-lateral, normal, reverse for more information.