1 
\begin{figure} 
\begin{figure} 
2 
\includegraphics[width=\textwidth]{figures/FaultSystem2D} 
\includegraphics[width=\textwidth]{figures/FaultSystem2D} 
3 
\caption{\label{FAULTSYSTEM2D}Two dimensional fault system with one fault named `t` in the $(x\hackscore{0},x\hackscore{1})$ and its parametrization in the 
\caption{\label{FAULTSYSTEM2D}Two dimensional fault system with one fault named `t` in the $(x\hackscore{0},x\hackscore{1})$ and its parameterization in the 
4 
$w\hackscore{0}$ space. The fault has three segments.} 
$w\hackscore{0}$ space. The fault has three segments.} 
5 
\end{figure} 
\end{figure} 
6 


7 
\section{Fault System} 
\section{Fault System} 
8 
The \class{FaultSystem} is an easy to use interface to handle 2D and 3D fault systems \index{faults} as used for instance in simulating fault ruptures. The main purpose of the class is to provide a parametrization of an individual fault in the system of fault. In case of a 2D fault the fault is parametrized by a single value $w\hackscore{0}$ and in the case of a 3D fault two parameters $w\hackscore{0}$ and $w\hackscore{1}$ are used. Thsi parametrization can be used 
\label{Fault System} 
9 
to impose data (e.g. a slip distribution) onto the fault. It can also be a useful tool to visualize or analyse the results on the fault if the fault is not straight. 
The \class{FaultSystem} is an easy to use interface to handle 2D and 3D fault systems \index{faults} as used for instance in simulating fault ruptures. The main purpose of the class is to provide a parameterization of an individual fault in the system of fault. In case of a 2D fault the fault is parameterized by a single value $w\hackscore{0}$ and in the case of a 3D fault two parameters $w\hackscore{0}$ and $w\hackscore{1}$ are used. This parameterization can be used 
10 

to impose data (e.g. a slip distribution) onto the fault. It can also be a useful tool to visualize or analyze the results on the fault if the fault is not straight. 
11 


12 
A fault $t$ in the fault system is represented by two polygons $(V^{ti})$ and $(v^{ti})$ 
A fault $t$ in the fault system is represented by two polygons $(V^{ti})$ and $(v^{ti})$ 
13 
defining the top and bottom line of the fault $t$. 
defining the top and bottom line of the fault $t$. 
21 
and the end point $V^{ti}$ is called the $i$th segment, see Figure~\ref{FAULTSYSTEM2D}. 
and the end point $V^{ti}$ is called the $i$th segment, see Figure~\ref{FAULTSYSTEM2D}. 
22 


23 
In general a fault does not define a plane surface (or a straight line in 2D). In order to simplify working on 
In general a fault does not define a plane surface (or a straight line in 2D). In order to simplify working on 
24 
a fault in a fault system a parametrization $P^t: (w\hackscore{0},w\hackscore{1}) \rightarrow (x\hackscore{0},x\hackscore{1},x\hackscore{2})$ over a rectangular domain is introduced such that 
a fault in a fault system a parameterization $P^t: (w\hackscore{0},w\hackscore{1}) \rightarrow (x\hackscore{0},x\hackscore{1},x\hackscore{2})$ over a rectangular domain is introduced such that 
25 
\begin{equation} 
\begin{equation} 
26 
0\le w\hackscore{0} \le w^t\hackscore{0 max} \mbox{ and } w^t\hackscore{1max}\le w\hackscore{1} \le 0 
0\le w\hackscore{0} \le w^t\hackscore{0 max} \mbox{ and } w^t\hackscore{1max}\le w\hackscore{1} \le 0 
27 
\label{eq:fault 1} 
\label{eq:fault 1} 
40 
\end{equation} 
\end{equation} 
41 
and $d^{ti}$ is the unrolled distance of $W^{ti}$ from $W^{t0}$. In the 2D case $w^t\hackscore{1 max}$ is set to zero and therefore the second component is dropped, see Figure~\ref{FAULTSYSTEM2D}. 
and $d^{ti}$ is the unrolled distance of $W^{ti}$ from $W^{t0}$. In the 2D case $w^t\hackscore{1 max}$ is set to zero and therefore the second component is dropped, see Figure~\ref{FAULTSYSTEM2D}. 
42 


43 
In the case of 2D the parametrization $P^t$ is constructed as follows: 
In the case of 2D the parameterization $P^t$ is constructed as follows: 
44 
The line connecting $V^{t(i1)}$ and $V^{ti}$ is given by 
The line connecting $V^{t(i1)}$ and $V^{ti}$ is given by 
45 
\begin{equation} 
\begin{equation} 
46 
x=V^{t(i1)} + s \cdot (V^{ti}V^{t(i1)}) 
x=V^{t(i1)} + s \cdot (V^{ti}V^{t(i1)}) 
47 
\label{eq:2D line 1} 
\label{eq:2D line 1} 
48 
\end{equation} 
\end{equation} 
49 
where $s$ is between $0$ and $1$. The point $x$ is on $i$th fault segement if and only if 
where $s$ is between $0$ and $1$. The point $x$ is on $i$th fault segment if and only if 
50 
such an $s$ esxists. If assume $x$ is on the fault one can calculate $s$ as 
such an $s$ exists. If assume $x$ is on the fault one can calculate $s$ as 
51 
\begin{equation} 
\begin{equation} 
52 
s = \frac{ (x V^{t(i1)})^t \cdot (V^{ti}V^{t(i1)}) }{\V^{ti}V^{t(i1)}\^2} 
s = \frac{ (x V^{t(i1)})^t \cdot (V^{ti}V^{t(i1)}) }{\V^{ti}V^{t(i1)}\^2} 
53 
\label{eq:2D line 1b} 
\label{eq:2D line 1b} 
60 
to get $P^t(w\hackscore{0})=x$. 
to get $P^t(w\hackscore{0})=x$. 
61 
It remains the question if the given $x$ is actual on the segment $i$ of fault $t$. To test this $s$ is restricted 
It remains the question if the given $x$ is actual on the segment $i$ of fault $t$. To test this $s$ is restricted 
62 
between $0$ and $1$ (so if $s<0$ $s$ is set to $0$ and if $s>1$ $s$ is set to $1$) and the we check the 
between $0$ and $1$ (so if $s<0$ $s$ is set to $0$ and if $s>1$ $s$ is set to $1$) and the we check the 
63 
residual of equation~\ref{eq:2D line 1}, ie. $x$ is been accepted to be in the segement if 
residual of equation~\ref{eq:2D line 1}, ie. $x$ is been accepted to be in the segment if 
64 
\begin{equation} 
\begin{equation} 
65 
\xV^{t(i1)}  s \cdot (V^{ti}V^{t(i1)}) \ \le tol \cdot max(\V^{ti}V^{t(i1)}\, \xV^{t(i1)} \) 
\xV^{t(i1)}  s \cdot (V^{ti}V^{t(i1)}) \ \le tol \cdot max(\V^{ti}V^{t(i1)}\, \xV^{t(i1)} \) 
66 
\label{eq:2D line 3} 
\label{eq:2D line 3} 
105 
\end{methoddesc} 
\end{methoddesc} 
106 


107 
\begin{methoddesc}[FaultSystem]{getW0Offsets}{tag} 
\begin{methoddesc}[FaultSystem]{getW0Offsets}{tag} 
108 
returns the offsets for the parametrization of fault \var{tag}. 
returns the offsets for the parameterization of fault \var{tag}. 
109 
For tag \var{tag}=$t$ this is the list $[d^{ti}]$. 
For tag \var{tag}=$t$ this is the list $[d^{ti}]$. 
110 
\end{methoddesc} 
\end{methoddesc} 
111 


136 
while \var{bottom} is the list of the vertices defing the bottom of the fault. 
while \var{bottom} is the list of the vertices defing the bottom of the fault. 
137 
In the case of 2D \var{bottom} must not be present. Both list, if present, must have the same length. 
In the case of 2D \var{bottom} must not be present. Both list, if present, must have the same length. 
138 
\var{w1_max} defines the range of the $w\hackscore{1}$. If not present the mean value over the depth of 
\var{w1_max} defines the range of the $w\hackscore{1}$. If not present the mean value over the depth of 
139 
all segement edges in the fault is used. 
all segment edges in the fault is used. 
140 
\var{w0_offsets} sets the offsets $d^{ti}$. If not present it i schoosen such that $d^{ti}d^{t(i1)}$ is the length of the $i$th segment. In some cases, eg. when kinks in the fault are relevant, it can be useful 
\var{w0_offsets} sets the offsets $d^{ti}$. If not present it i chosen such that $d^{ti}d^{t(i1)}$ is the length of the $i$th segment. In some cases, eg. when kinks in the fault are relevant, it can be useful 
141 
to explicitly specify the offsets in order to simplify the signamnt of values. 
to explicitly specify the offsets in order to simplify the assignment of values. 
142 
\end{methoddesc} 
\end{methoddesc} 
143 


144 
\begin{methoddesc}[FaultSystem]{getMaxValue}{f\optional{, tol=1.e8}} 
\begin{methoddesc}[FaultSystem]{getMaxValue}{f\optional{, tol=1.e8}} 
145 
returns the maximum value of \var{f}, the fault wher the maximum is found and the location on the fault in fault coordinates. \var{f} must be a \Scalar. When the maximum is calculated only \DataSamplePoints are considered 
returns the maximum value of \var{f}, the fault where the maximum is found and the location on the fault in fault coordinates. \var{f} must be a \Scalar. When the maximum is calculated only \DataSamplePoints are considered 
146 
which are on a fault in the fault system in the sense of condition~\label{eq:2D line 3} or \label{eq:3D line 3}, respectively. In the case no \DataSamplePoints is found the returned tag is \var{None} and 
which are on a fault in the fault system in the sense of condition~\label{eq:2D line 3} or \label{eq:3D line 3}, respectively. In the case no \DataSamplePoints is found the returned tag is \var{None} and 
147 
the maximum value as well as the location of the maximum value are undefined. 
the maximum value as well as the location of the maximum value are undefined. 
148 
\end{methoddesc} 
\end{methoddesc} 
149 


150 
\begin{methoddesc}[FaultSystem]{getParametrization}{x,tag \optional{\optional{, tol=1.e8}, outsider=None}} 
\begin{methoddesc}[FaultSystem]{getParametrization}{x,tag \optional{\optional{, tol=1.e8}, outsider=None}} 
151 
resturns the argument $w$ of the parameterization $P^t$ for \var{tag}=$t$ to provide \var{x} 
returns the argument $w$ of the parameterization $P^t$ for \var{tag}=$t$ to provide \var{x} 
152 
together with a mask indicating where the given location if on a fault in the fault system by the value $1$ (otherwise the value is set to $0$). \var{x} needs to be \Vector or \numpyNDA object. \var{tol} defines the tolerance to decide if a given \DataSamplePoints is on fault \var{tag}. The value 
together with a mask indicating where the given location if on a fault in the fault system by the value $1$ (otherwise the value is set to $0$). \var{x} needs to be \Vector or \numpyNDA object. \var{tol} defines the tolerance to decide if a given \DataSamplePoints is on fault \var{tag}. The value 
153 
\var{outside} is the value used as a replacement value for $w$ where the corresponding value in \var{x} is not 
\var{outside} is the value used as a replacement value for $w$ where the corresponding value in \var{x} is not 
154 
on a fault. If not \var{outside} is not present an appropriate value is used. 
on a fault. If not \var{outside} is not present an appropriate value is used. 
155 
\end{methoddesc} 
\end{methoddesc} 
156 


157 

\begin{methoddesc}[FaultSystem]{getSideAndDistance}{x,tag} 
158 

returns the side and the distance at locations \var{x} from the fault \tag{tag}. 
159 

\var{x} needs to be \Vector or \numpyNDA object. Positive values for side means that the corresponding location is 
160 

to the right of the fault, a negative value means that the corresponding location is 
161 

to the left of the fault. The value zero means that the side is undefined. 
162 

\end{methoddesc} 
163 


164 
\subsection{Example} 
\subsection{Example} 
165 
See section~\ref{Slip CHAP} 
See section~\ref{Slip CHAP} 
166 


167 


168 





169 


170 


171 

