...
 
Commits (2)
......@@ -4,7 +4,7 @@ SOFI2D stands for Seismic mOdeling with FInite differences and denotes our
2-D viscoelastic time domain massive parallel modeling code for P- and SV-waves.
The manual and a reference paper is included
in the download archive
or can be downloaded [here](https://git.scc.kit.edu/GPIAG-Software/SOFI3D/wikis/home)
or can be downloaded [here](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/wikis/home)
# Conditions for the Use of the Software
......@@ -22,8 +22,8 @@ download package. See file [COPYING](/COPYING) and/or [online](http://www.gnu.or
# Download and Newsletter
You can Download the [latest Release](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/Release) or the current [Beta-Version](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/master).
You can Download the [latest stable Release](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/Release) or the current [beta-version](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/master).
Additional a SOFI2D branch with benchmarks is available: [overnightbuilt](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/overnightbuilt)
To receive news and updates please [register](https://www.gpi.kit.edu/Software.php) on the email list sofi@lists.kit.edu.
Please use this list also to ask questions on using the software or to report problems or bugs.
Please use this list also to ask questions on using the software or to report problems or bugs.
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
#!/bin/sh
# Seismogramme als eps erstellen
# input from command line
MODEL=$1
AUTOCLIP=$2
PERCENTAGE=99
#example command line call:
#./seismogramme.sh fullspace
#./seismogramme.sh fullspace clip
#if the command line argument AUTOCLIP='' then NO clip is specifically set
#instead the supswigb option perc=98 is used
#if the command line argument AUTOCLIP='clip' then a there will be a command line
#prompt that asked for constant clip for each individual component
exec 5<&0
#loop over components
while read value
do
case "$AUTOCLIP" in
clip)
#manual clip ( input of constant clip required)
echo "Clipwert: "
read CLIP <&5
supswigb < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Tracenumber" title="Model $MODEL, $value component; clip=$CLIP" clip=$clip > $MODEL"_"$value.eps
;;
*)
#auto clip (no input of constant clip required)
#testrun in order to determine the clip at perc=$PERCENTAGE
#stderr will be redirected to file clip.txt
supswigb < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Tracenumber" title="Model $MODEL, $value component" perc=$PERCENTAGE 1>$MODEL"_"$value.eps 2>clip.txt
#extract clip from file clip.txt
while read line;
do
if [ "$line" != "" ]; then
CLIP=`echo $line | cut -c 32-45`
fi
done < clip.txt
#use CLIP to add this CLIP into the title of the eps figure
supswigb < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Tracenumber" title="Model $MODEL, $value component; clip=$CLIP" clip=$CLIP 1>$MODEL"_"$value.eps
;;
esac
done < components.txt
#!/bin/bash
./seismogramme.sh fullspace
./seismogramme.sh fullspace_el
./seismogramme.sh halfspace
./seismogramme.sh halfspace_el
./seismogramme.sh tunnel_el
./seismogramme_rec_array.sh rec_array
./seismogramme_rec_array.sh rec_array_el
#!/bin/sh
# Seismogramme als eps erstellen
# input from command line
MODEL=$1
AUTOCLIP=$2
PERCENTAGE=99
#example command line call:
#./seismogramme.sh fullspace
#./seismogramme.sh fullspace clip
#if the command line argument AUTOCLIP='' then NO clip is specifically set
#instead the supswigb option perc=98 is used
#if the command line argument AUTOCLIP='clip' then a there will be a command line
#prompt that asked for constant clip for each individual component
exec 5<&0
#loop over components
while read value
do
case "$AUTOCLIP" in
clip)
#manual clip ( input of constant clip required)
echo "Clipwert: "
read CLIP <&5
PROFILE="_gx_28_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=2800000 max=2800000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model: $MODEL, Profile at 2800m, Component: $value, Clip: $clip" clip=$clip > $MODEL$PROFILE$value.eps
read clip <&5
PROFILE="_gx_38_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=3800000 max=3800000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model: $MODEL, Profile at 3800m, Component: $value, Clip: $clip" clip=$clip > $MODEL$PROFILE$value.eps
;;
*)
#auto clip (no input of constant clip required)
#---- 2D receiver array in 2800 m depth
#testrun in order to determine the clip at perc=$PERCENTAGE
#stderr will be redirected to file clip.txt
PROFILE="_gx_28_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=2800000 max=2800000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model $MODEL, Profile at 2800m, Component: $value" perc=$PERCENTAGE 1> $MODEL$PROFILE$value.eps 2>clip.txt
#extract clip from file clip.txt
while read line;
do
if [ "$line" != "" ]; then
CLIP=`echo $line | cut -c 32-45`
fi
done < clip.txt
#use CLIP to add this CLIP into the title of the eps figure
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=2800000 max=2800000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model: $MODEL, 2800m depth, $value component; clip=$CLIP" clip=$CLIP 1> $MODEL$PROFILE$value.eps
#---- 2D receiver array in 3800 m depth
#testrun in order to determine the clip at perc=$PERCENTAGE
#stderr will be redirected to file clip.txt
PROFILE="_gx_38_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=3800000 max=3800000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model: $MODEL, Profile at 3800m, Component: $value" perc=$PERCENTAGE 1> $MODEL$PROFILE$value.eps 2>clip.txt
#extract clip from file clip.txt
while read line;
do
if [ "$line" != "" ]; then
CLIP=`echo $line | cut -c 32-45`
fi
done < clip.txt
#use CLIP to add this CLIP into the title of the eps figure
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=3800000 max=3800000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model $MODEL, 3800m depth, $value component; clip=$CLIP" clip=$CLIP 1> $MODEL$PROFILE$value.eps
;;
esac
done < components.txt
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
\subsection{Homogeneous Fullspace}
As you can see in figure \ref{fullspace}, it consists of only one homogeneous material with a density of 2100 kg/m$^3$. The velocities in this model are $v_{P} = 5100$ m/s for the P-wave and $v_{S} = 2800$ m/s for the S-wave. \\
\begin{figure}[!h]
\centering
\includegraphics[width=0.475\textwidth]{fullspace.eps}
\caption{Homogeneous Fullspace}
\label{fullspace}
\end{figure}
The Euclidean distance between each gridpoint is equally spaced in each direction and is 54 meter (DH). The number of gridpoints (NX, NY) amounts in each direction 200 gridpoints. The model dimension thus account for a cube with a edge length of 10800 meters.\\
The source for the seismic waves is an explosive point source with a center source frequency of 5 Hz which is located in the middle of the cube at the coordinates (5400, 5400). To determine the waves, several geophones are used, which are arranged as a chain. The first receiver is located at (1620, 5400) and the last at (9180, 5400). Between each receiver there is an offset of 4 gridpoint, which is equal to 216.0 meters. So the whole chain consists of 35 geophones/receivers with a total length of 7506 meters. Furthermore, no free surface is included in the model which means that the model domain is sourrounded by an absorbing frame.\\
For the computation 4 processor cores are used. 2 cores are computing the expansion of the waves in the x-direction (NPROCX) and 2 in the y-direction (NPROCY). The total time of wave propagation is 4 seconds (TIME) and a single timestep is 0.004 seconds (DT).\\
The following SOFI3D features will be tested during this modeling run:
\begin{itemize}
\item The computational accuracy of your system with a with a equal number of processors for two directions
\item The accuracy of the explosive source
\end{itemize}
In the following, tables of all parameters used for this modeling are listed.\\
The first two tables contain the parameters for the size of the model
\vspace{0.5cm}
\begin{table}[h]
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value\\
\hline
NX & 200\\
NY & 200\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of gridpoints in each direction}
\end{minipage}
\hfill
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value \\
\hline
DX & 54 m\\
DY & 54 m\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Distance between gridpoints in each direction}
\end{minipage}
\end{table}
\vspace{1cm}
The next two tables contain both the parameters for the model like the velocities and the density and the number of cores used for each direction during the modeling.
\vspace{0.5cm}
\begin{table}[h]
\begin{minipage}{0.45\textwidth}
\begin{center}
\begin{tabular}{c|c}
Parameter & Value \\
\hline
$v_P$ & 5100 m/s\\
$v_S$ & 2800 m/s\\
$\rho$ & 2100 kg/$m^3$\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Parameters of the model}
\end{minipage}
\hfill
\begin{minipage}{0.45\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Number of cores\\
\hline
NPROCX & 4\\
NPROCY & 1\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of cores used}
\end{minipage}
\end{table}
\newpage
In the following figures, seismograms of the \textbf{viscoelastic} calculation of all components (curl, divergenc, pressure, $v_x$ and $v_y$) are shown.
\begin{figure*}[h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_vy}
\end{minipage}
\end{figure*}
\newpage
In the following figures, seismograms of the \textbf{elastic} calculation of all components (curl, divergenc, pressure, $v_x$ and $v_y$) are shown.
\begin{figure*}[h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_el_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_el_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_el_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_el_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_el_vy}
\end{minipage}
\end{figure*}
This diff is collapsed.
\subsection{Layered Half-Space}
As you can see in figure \ref{halfspace}, the model consists of two homogeneous material arranged as a layered half-space. The density of the materials are 1500 kg/m$^3$ for the upper layer and 2100 $\frac{kg}{m^3}$ for the half-space. The velocities in this model are $v_{P1} = 400 \frac{m}{s}$ for the P-wave and $v_{S2} = 210 \frac{m}{s}$ for the S-wave in the upper layer and $v_{P2} = 5100 $ m/s for the P-wave and $v_{S2} = 2800 $ m/s for the S-wave in the half-space\\
\begin{figure}[htbp]
\centering
\includegraphics[width=0.6\textwidth]{halfspace.eps}
\caption{Picture of the model \textbf{Layerd Halfspace} including the location of the source and receivers}
\label{halfspace}
\end{figure}
The Euclidean distance between each gridpoint is equally spaced in each direction and is 0.5 meter (DH). The number of gridpoints (NX, NY) amounts in each direction 100 gridpoints. The model dimension thus account for a cube with a edge length of 50 meters.\\
The source for the seismic waves is a force in z (in the vertical direction) with a center source frequency of 50 Hz which is located at the coordinates (15.5, 0.5). To determine the waves, several geophones are used, which are arranged as a chain. The first receiver is located at (15, 0.5) and the last at (35, 0.5). Between each receiver there is an offset of 1 gridpoint, which is equal to 0.5 meters. So the whole chain consists of 41 geophones/receivers with a total length of 20 meters. Furthermore, a free surface is included in the model which means that the model domain is sourrounded by an absorbing frame except the upper plane of the cube.\\
For the computation 4 processor cores are used. 2 cores are computing the expansion of the waves in the x-direction (NPROCX) and 2 in the y-direction (NPROCY). The total time of wave propagation is 0.15 seconds (TIME) and a single timestep is $1.4^{-4}$ seconds (DT).\\
In this model we specifie different values for FL and TAU for the viscoelastic calculation. We assume FL = 50 and TAU = 0.05.
The following SOFI2D features will be tested during this modeling run:
\begin{itemize}
\item The computational accuracy of your system with a equal number of processors for two directions
\item The accuracy of the free surface
\end{itemize}
In the following, tables of all parameters used for this modeling are listed.\\
The first two tables contain the parameters for the size of the model.
\vspace{0.5cm}
\begin{table}[h]
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value\\
\hline
NX & 100\\
NY & 100\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of gridpoints in each direction}
\end{minipage}
\hfill
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value \\
\hline
DX & 0.5 m\\
DY & 0.5 m\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Distance between gridpoints in each direction}
\end{minipage}
\end{table}
\vspace{1cm}
The next two tables contain both the parameters for the model like the velocities and the density and the number and the spreading of cores used for the modeling.
\vspace{0.5cm}
\begin{table}[h]
\begin{minipage}{0.45\textwidth}
\begin{center}
\begin{tabular}{c|c}
Parameter & Value \\
\hline
$v_{P1}$ & 500 m/s\\
$v_{S1}$ & 290 m/s\\
$\rho_{1}$ & 400 kg/$m^3$\\
$v_{P2}$ & 1500 m/s\\
$v_{S2}$ & 860 m/s\\
$\rho_{2}$ & 1200 kg/$m^3$\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Parameters of the model}
\end{minipage}
\hfill
\begin{minipage}{0.45\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Number of cores\\
\hline
NPROCX & 2\\
NPROCY & 2\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of cores used}
\end{minipage}
\end{table}
\newpage
In the following figures, seismograms of the \textbf{viscoelastic} calculation of all components (curl, divergence, pressure, $v_x$ and $v_y$) are shown.
\begin{figure*}[h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_vy}
\end{minipage}
%
\end{figure*}
\newpage
In the following figures, seismograms of the \textbf{elastic} calculation of all components (curl, divergence, pressure, $v_x$ and $v_y$) are shown.
\begin{figure*}[h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_el_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_el_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_el_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_el_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_el_vy}
\end{minipage}
%
\end{figure*}
\ No newline at end of file
This diff is collapsed.
\subsection{Receiver Array}
As you can see in figure \ref{rec_array}, the model consists of one homogeneous material. The density of the material is $\rho =$ 2500 kg/m$^3$. The velocities in this model are $v_{P} = 5100$ m/s for the P-wave and $v_{S} = 3100$ m/s for the S-wave.\\
\begin{figure}[htbp]
\centering
\includegraphics[width=7cm]{rec_array.eps}
\caption{bla}
\label{rec_array}
\end{figure}
The Euclidean distance between each gridpoint is equally spaced in each direction and is 40 meter (DH). The number of gridpoints (NX, NY) differs in each direction. NX amounts 300 gridpoints and NY 200 gridpoints. The model dimension thus account for a cuboid with a edge length of 12.000 meters in x and 8.000 meters in y.\\
The source for the seismic waves is a plane wave excitation in a depth of 800 m. The center source frequency is 10 Hz. To determine the waves, a lot of geophones are used, which are arranged in two horizontally layered arrays (REC\_ARRAY). The first receiver array is located in a depth of 2.800 meters (REC\_ARRAY\_DEPTH). The vertical distance between each receiver array is 25 gridpoints or 1.000 meters (REC\_ARRAY\_DIST). According to this, the second array is located in a depth of 3.800 meters.
In each array the distance between the receivers are 7 gridpoint in the x-direction (DRX), hence the Euclidean distance between each geophone is 240 meters in x. Aditionally, a free surface is included in the model which means that the model domain is sourrounded by an absorbing frame except the upper plane of the cuboid.\\
For the computation 4 processor cores are used. 4 cores are computing the expansion of the waves in the x-direction (NPROCX) and 1 in the y-direction (NPROCY). The total time of wave propagation is 4 seconds (TIME) and a single timestep is $3.2\cdot 10^{-3}$ seconds (DT).\\
The following SOFI2D features will be tested during this modeling run:
\begin{itemize}
\item The computational accuracy of your system with a scattered number of processors for each direction
\item The accuracy of the free surface
\item The snapshot output
\end{itemize}
In the following, tables of all parameters used for this modeling are listed.\\
The first two tables contain the parameters for the size of the model
\vspace{0.5cm}
\begin{table}[!h]
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value\\
\hline
NX & 300\\
NY & 200\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of gridpoints in each direction}
\end{minipage}
\hfill
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value \\
\hline
DX & 40 m\\
DY & 40 m\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Distance between gridpoints in each direction}
\end{minipage}
\end{table}
The next two tables contain both the parameters for the model like the velocities and the density and the number and the spreading of cores used for the modeling.
\begin{table}[!h]
\begin{minipage}{0.45\textwidth}
\begin{center}
\begin{tabular}{c|c}
Parameter & Value \\
\hline
$v_{P}$ & 5100 m/s\\
$v_{S}$ & 3100 m/s\\
$\rho$ & 2500 kg/$m^3$\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Parameters of the model}
\end{minipage}
\hfill
\begin{minipage}{0.45\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Number of cores\\
\hline
NPROCX & 4\\
NPROCY & 1\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of cores used}
\end{minipage}
\end{table}
This last table shows all parameters which describes the receiver arrays in the model. In the following table, gdp is for gridpoints.
\begin{table}[!h]
\begin{center}
\begin{tabular}{c|c|c}
Parameter & Acronym & Value \\
\hline
Number of planes & (REC\_ARRAY) & 2\\
Depth of first plane & (REC\_ARRAY\_DEPTH) & 2800 m\\
Vertical distance between planes & (REC\_ARRAY\_DIST) & 1000 m\\
Distance between receivers in x-direction & (DRX) & 7 gdp\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Parameters for the receiver arrays in the model}
\end{table}
\newpage
In the following figures, seismograms of all components for the \textbf{viscoelastic} calculation (curl, divergenc, pressure, $v_x$ and $v_y$) of both receiverline in the x direction at 2800m are shown.
\begin{figure*}[!h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_28_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_28_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_28_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_28_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_28_vy}
\end{minipage}
\end{figure*}
\newpage
In the following figures, seismograms of all components for the \textbf{viscoelastic} calculation (curl, divergenc, pressure, $v_x$ and $v_y$) of both receiverline in the x direction at 3800m are shown.
\begin{figure*}[!h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_38_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_38_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_38_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_38_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_38_vy}
\end{minipage}
\end{figure*}
\newpage
In the following figures, seismograms of all components for the \textbf{elastic} calculation (curl, divergenc, pressure, $v_x$ and $v_y$) of both receiverline in the x direction at 2800m are shown.
\begin{figure*}[!h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_28_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_28_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_28_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_28_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_28_vy}
\end{minipage}
\end{figure*}
\newpage
In the following figures, seismograms of all components for the \textbf{elastic} calculation (curl, divergenc, pressure, $v_x$ and $v_y$) of both receiverline in the x direction at 3800m are shown.
\begin{figure*}[!h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_38_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_38_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_38_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_38_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_el_gx_38_vy}
\end{minipage}
\end{figure*}
\ No newline at end of file
\documentclass[a4paper,10pt]{article}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage[T1]{fontenc}
\usepackage{caption}
%opening
\title{SOFI2D Benchmark Test \\
Documentation}
\author{Matthias Heck, Stefan Jetschny}
\begin{document}
\maketitle
\begin{abstract}
This benchmark test provides information whether your installed release of SOFI2D works as intended. During the test run, several model scenarios will be simulated and ,afterwards, the created seismogram and snapshot files will be compared with reference values created by the SOFI2D developer team. This benchmarking test can be used as an overnight built check while developing the code, i.e. after modifications to the code, the test evaluates if standard modeling scenarios still result in the same simulation output.
\end{abstract}
\newpage
% Execution
\section{Requirements and Execution of the benchmark test}
The benchmark (in the following also called \textit{overnight built}) test is an optional package which requires a fully functional SOFI2D installation (for information on the SOFI2D installation and compilation, please consult the SOFI2D guide). It is designed to be manually or automatically (via cron-jobs) started every night or every time a new code release is submitted to a version control system. Every necessary data for the benchmark test is included in the \texttt{SOFI2D/benchmark} folder, e.g. files small in size (seismograms) are included as reference values, larger snapshot files are represented by md5 hash sum files. During runtime of the benchmark, model files, seismogram files and snapshot files are generated by each model run which can sum up to more than 500 MB. You can easily clean up all the seismogram and snapshot data the files located in the directories \texttt{SOFI2D/benchmark/su} and \texttt{SOFI2D/benchmark/snap}. You can also delete the benchmark model files written by the SOFI2D code (\texttt{SOFI2D/benchmark/mode/benchmark\_*.SOFI2D.rho}). Be careful not to touch (or delete) the following data
\begin{itemize}
\item folder \texttt{SOFI2D/benchmark/in\_and\_out}: the input files *.json ,
\item folder \texttt{SOFI2D/benchmark/model}: the c-files for the on-the-fly-generation of models,
\item folder \texttt{SOFI2D/benchmark/receiver}: the files containing receiver positions,
\item folder \texttt{SOFI2D/benchmark/reference\_value}: the original seismogram and snaphot md5 hashsum data (as reference for comparison),
\item folder \texttt{SOFI2D/benchmark/sources}: the files containing source positions,
\item folder \texttt{SOFI2D/benchmark/snap}: the shell script for the comparison of snapshot data \texttt{diff\_snap.sh} ,
\item folder \texttt{SOFI2D/benchmark/su}: the shell script for the comparison of seismogram data \texttt{diff\_seismogram.sh}.
\end{itemize}
In the main folder \texttt{SOFI2D/benchmark/}, the shell script \texttt{benchmark\_all.sh} is located which will automatically execute the benchmark test for all models. In addition, it is possible to run the benchmark test only for one model with the shell script \texttt{benchmark.sh}. To start a single model benchmark you have to pass the model name. As an example, the console command \texttt{./benchmark.sh fullspace} will perform the benchmark test only for the fullspace model.
\newpage
In case of a proper benchmark run, the following information are displayed to the screen
\begin{verbatim}
user@maschine:/sofi2D/benchmark> ./benchmark.sh tunnel_el snap
#############################################################################
START: Benchmark for tunnel_el
#############################################################################
Benchmark for the elastic model
#######################
Compiling the model
#######################
find . -name "*.o" -exec rm {} \;
find . -name "*.c%" -exec rm {} \;
find . -name "*.bck" -exec rm {} \;
mpicc -Wall -O4 -c benchmod.c
mpicc -Wall -O4 -c benchmod_el.c
mpicc -Wall -O4 -c absorb.c
[...]
mpicc -Wall -O4 -c zero_elastic.c
mpicc -Wall -O4 -c zero_visc.c
mpicc -lm -lmpi benchmod.o benchmod_el.o absorb.o av_mue.o av_rho.o av_tau.o
catseis.o check_fs.o checkfd.o comm_ini.o exchange_par.o exchange_s_rsg.o
exchange_s.o exchange_v.o sofi2D.o holbergcoeff.o info.o initproc.o json_parser.o
matcopy.o matcopy_elastic.o merge.o mergemod.o note.o outseis.o outseis_glob.o
prepare_update_s.o psource.o rd_sour.o read_checkpoint.o read_par.o read_par_json.o
read_par_auto.o readdsk.o readmod_visco.o readmod_elastic.o receiver.o
save_checkpoint.o saveseis.o saveseis_glob.o seismo_ssg.o snap_ssg.o sources.o
splitrec.o splitsrc.o surface.o surface_elastic.o update_s_elastic.o update_s_visc.o
update_v.o util.o wavelet.o write_par.o writedsk.o writemod.o zero_elastic.o
zero_visc.o -o ../bin/sofi2D_bench
mpicc -Wall -O4 -c snapmerge.c
mpicc -lm -lmpi snapmerge.o holbergcoeff.o json_parser.o merge.o read_par.o
read_par_json.o read_par_auto.o readdsk.o writedsk.o util.o -o ../bin/snapmerge
#######################
End Compiling the model
#######################
#######################
Start modeling
#######################
#######################
End modeling
#######################
For information on the modeling process,
see file ./in_and_out/benchmark_tunnel_el.jout .
#######################
Merge the snap data
#######################
For information on the snapmerge process,
see file ./in_and_out/benchmark_tunnel_el.snap .
#######################
Compare the su data
#######################
Check seismogram benchmark_tunnel_el_curl.su : OK
Check seismogram benchmark_tunnel_el_div.su : OK
Check seismogram benchmark_tunnel_el_p.su : OK
Check seismogram benchmark_tunnel_el_vx.su : OK
Check seismogram benchmark_tunnel_el_vy.su : OK
#######################
Compare snap files
#######################
benchmark_tunnel_el.bin.curl: OK
benchmark_tunnel_el.bin.div: OK
benchmark_tunnel_el.bin.p: OK
benchmark_tunnel_el.bin.vx: OK
benchmark_tunnel_el.bin.vy: OK
\end{verbatim}
You will also find empty files such as \texttt{seismogram\_tunnel\_el.ok} in the main folder \texttt{sofi2D/benchmark} indicating that the current simulation data is equal to the reference values. You will find additional information information on the model run in folder \texttt{sofi2D/benchmark/in\_and\_out}, e.g. the modeling output file \texttt{benchmark\_tunnel\_el.jout} or the snapshot merge output file \texttt{benchmark\_tunnel\_el.snap}. The main information on the benchmark run are collected in the folder \texttt{/sofi2D/benchmark/result\_log} where there are gathered information on each model run similar to the screen output.
The seismogram and snapshot information can be found in each a subdirectory located in the folders \texttt{sofi2D/benchmark/su/} and \texttt{sofi2D/benchmark/snap/} for further evaluation. In order to display the snapshot files, you will find suitable matlab scripts in the folder \texttt{/sofi2D/benchmark/snap}.
\newpage
\section{The Models}
There are four different models which will be tested during the benchmark test. Every model was created with the intention to check the functionality of specific SOFI2D features and input parameter combinations, respectively. The models represent several typical problems that may encounter during seismic modeling: a homogeneous full space, a layered half-space, and a tunnel tube in an homogeneous surrounding medium. Furthermore an elastic and viscoelastic calculation will be done for the homogeneous fullspace and the layered half-space. In case of viscoelastic modeling we assume a constant Q model (qs=qp=const.) specified by the input file parameter FL (relaxation frequency ) and TAU which is 1/Q. For each calculation seismograms and snapshots will be produced.
% Homogeneous Fullspace
\input{fullspace.tex}
\newpage
\clearpage
% Layered Half-Space
\input{halfspace.tex}
\newpage
\clearpage
% Receiver Array
\input{rec_array.tex}
\newpage
\clearpage
% Tunnel
\input{tunnel.tex}
\newpage
\clearpage
\end{document}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
*.vx.*
*.vy.*
*.p.*
*.curl.*
This diff is collapsed.
##############################
# Benchmarktest for all models
##############################
touch duration_benchmark.out
echo "Start test: $(date)" > duration_benchmark.out
echo "Start test fullspace elastic: $(date +%X)" >> duration_benchmark.out
# Benchmarktest for homogeneous fullspace
./benchmark.sh fullspace_el
echo "End test fullspace: $(date +%X)" >> duration_benchmark.out
echo "Start test fullspace viscoelastic: $(date +%X)" >> duration_benchmark.out
# Benchmarktest for homogeneous fullspace
./benchmark.sh fullspace
echo "End test fullspace: $(date +%X)" >> duration_benchmark.out
echo "Start test halfspace elastic: $(date +%X)" >> duration_benchmark.out
# Benchmarktest for layered halfspace
./benchmark.sh halfspace_el
echo "End test halfspace: $(date +%X)" >> duration_benchmark.out
echo "Start test halfspace viscoelastic: $(date +%X)" >> duration_benchmark.out
# Benchmarktest for layered halfspace
./benchmark.sh halfspace
echo "End test halfspace: $(date +%X)" >> duration_benchmark.out
echo "Start test rec_array elastic: $(date +%X)" >> duration_benchmark.out
# Benchmarktest for receiver array (snap = SNAP ON)
./benchmark.sh rec_array_el snap
echo "End test rec_array: $(date +%X)" >> duration_benchmark.out
echo "Start test rec_array viscoelastic: $(date +%X)" >> duration_benchmark.out
# Benchmarktest for receiver array (snap = SNAP ON)
./benchmark.sh rec_array snap
echo "End test rec_array: $(date +%X)" >> duration_benchmark.out
echo "Start test tunnel elastic: $(date +%X)" >> duration_benchmark.out
# Benchmarktest for tunnel (snap = SNAP ON)
./benchmark.sh tunnel_el snap
echo "End test tunnel: $(date +%X)" >> duration_benchmark.out
# Insert your own Model!
This diff is collapsed.
cd ../src
make clean
make sofi2D_bench
make snapmerge
cd ../par
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.