...
 
Commits (2)
# Created by https://www.gitignore.io/api/c,c++,latex,kate,linux,osx,kdevelop4,fortran,windows,vim,svn,matlab,emacs,eclipse,cmake,premake-gmake
# specific files fpr GPIAG_Software
sofi3D
snapmerge
partmodel
seismerge
sofi3D_acoustic
guide_sofi3D.pdf
*.d
*.hd
*.strip
/contrib/header/*
*.dat
*.old*
*.bin*
*.su*
LOG_FILE.*
*.log*
### C ###
# Object files
*.o
*.ko
*.obj
*.elf
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
### C++ ###
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
### LaTeX ###
*.acn
*.acr
*.alg
*.aux
*.bbl
*.bcf
*.blg
*.dvi
*.fdb_latexmk
*.fls
*.glg
*.glo
*.gls
*.idx
*.ilg
*.ind
*.ist
*.lof
*.log
*.lot
*.maf
*.mtc
*.mtc0
*.nav
*.nlo
*.out
*.pdfsync
*.ps
*.run.xml
*.snm
*.synctex.gz
*.toc
*.vrb
*.xdy
*.tdo
### Kate ###
# Swap Files #
.*.kate-swp
.swp.*
### Linux ###
*~
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
### OSX ###
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### KDevelop4 ###
*.kdev4
.kdev4/
### Fortran ###
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
### Vim ###
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
### SVN ###
.svn/
### Matlab ###
##---------------------------------------------------
## Remove autosaves generated by the Matlab editor
## We have git for backups!
##---------------------------------------------------
# Windows default autosave extension
*.asv
# OSX / *nix default autosave extension
*.m~
# Compiled MEX binaries (all platforms)
*.mex*
# Simulink Code Generation
slprj/
### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*
# Org-mode
.org-id-locations
*_archive
# flymake-mode
*_flymake.*
# eshell files
/eshell/history
/eshell/lastdir
# elpa packages
/elpa/
# reftex files
*.rel
# AUCTeX auto folder
/auto/
# cask packages
.cask/
### Eclipse ###
*.pydevproject
.metadata
.gradle
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
# Eclipse Core
.project
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Java annotation processor (APT)
.factorypath
# PDT-specific
.buildpath
# sbteclipse plugin
.target
# TeXlipse plugin
.texlipse
### CMake ###
CMakeCache.txt
CMakeFiles
CMakeScripts
Makefile
cmake_install.cmake
install_manifest.txt
### premake-gmake ###
Makefile
*.make
obj/
*.vp*
*.vs*
*.rho*
*.div*
*.rot*
......@@ -5,6 +5,5 @@ To create the manual pdf please use the script:
compile_LaTeX_manual.sh
If problems with the compilation occur or Latex isn't installed on your PC,
please visit https://git.scc.kit.edu/GPIAG-Software/DENISE/wikis/home.
The manual of the latest Release is placed on this page.
please visit https://git.scc.kit.edu/GPIAG-Software/SOFI3D/wikis/home.
The manual of the latest Release is placed on this page.
\ 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.
#!/bin/sh
# Seismogramme als eps erstellen
# input from command line
#model name
MODEL=$1
#plot only every EVERYTRACEth trace
EVERYTRACE=$2
#switch for manual or automatic clip
AUTOCLIP=$3
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
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su j=$EVERYTRACE|\
supswigb 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
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su j=$EVERYTRACE |\
supswigb 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 10
./seismogramme.sh halfspace 1
./seismogramme.sh tunnel 1
./seismogramme_rec_array.sh rec_array
#!/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_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=2800000 max=2800000 | \
suwind key=gx min=6000000 max=6000000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model: $MODEL, Profile in x direction, Component: $value, Clip: $clip" clip=$clip > $MODEL$PROFILE$value.eps
read clip <&5
PROFILE="_gz_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=2800000 max=2800000 | \
suwind key=gy min=4000000 max=4000000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Receiver position / m" title="Model: $MODEL, Profile in z direction, Component: $value, Clip: $clip" clip=$clip > $MODEL$PROFILE$value.eps
;;
*)
#auto clip (no input of constant clip required)
#---- 2D receiver array, profile in horizontal x direction
#testrun in order to determine the clip at perc=$PERCENTAGE
#stderr will be redirected to file clip.txt
PROFILE="_gx_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=2800000 max=2800000 | \
suwind key=gx min=6000000 max=6000000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Tracenumber" title="Model $MODEL, Profile in x direction, 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 | \
suwind key=gx min=6000000 max=6000000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Tracenumber" title="Model: $MODEL, Profile in x direction, $value component; clip=$CLIP" clip=$CLIP 1> $MODEL$PROFILE$value.eps
#---- 2D receiver array, profile in horizontal z direction
#testrun in order to determine the clip at perc=$PERCENTAGE
#stderr will be redirected to file clip.txt
PROFILE="_gz_"
suwind < ../../../overnightbuilt/reference_value/$MODEL/su/$MODEL"_ref_"$value.su \
key=gelev min=2800000 max=2800000 | \
suwind key=gy min=4000000 max=4000000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Tracenumber" title="Model: $MODEL, Profile in z direction, 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 | \
suwind key=gy min=4000000 max=4000000 | \
supswigb key=tracl hbox=9 wbox=9 \
label1="Time / s" label2="Tracenumber" title="Model $MODEL, Profile in z direction, $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 source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
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 2000 kg/m$^3$. The velocities in this model are $v_{P} = 3500$ m/s for the P-wave and $v_{S} = 2000$ m/s for the S-wave. \\
\begin{figure}[h]
\centering
\includegraphics[width=0.6\textwidth]{fullspace.eps}
\caption{Slice of the model \textbf{Homogeneous Fullspace} including the location of the source and receivers}
\label{fullspace}
\end{figure}
The Euclidean distance between each gridpoint is equally spaced in each direction and is 0.1 meter (DX, DY, DZ). The number size of the grid is 420 $\times$ 200 $\times$ 200 (NX $\times$ NY $\times$ NZ) gridpoints. The model dimension thus account for a rectangle with edge length 42 $\times$ 20 $\times$ 20 m.\\
The source for the seismic waves is an explosive point source with a center source frequence of 500 Hz which is located within the rectangle at the coordinates (10, 10, 10). To record the waves, several geophones are used which are arranged as a chain. The first receiver is located at (10.1, 10, 10) and the last at (30.1, 10.0, 10.0). Between each receiver there is an offset of 1 gridpoint, which is equal to 0.1 meters. So the whole chain consists of 301 geophones/receivers with a maximum offset of 30.1 m. 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. 4 cores are computing the expansion of the waves in the x-direction (NPROCX), 1 in the y-direction (NPROCY) and 1 in the z-direction (NPROCZ). The total time of wave propagation is 4 seconds (TIME) and a single timestep is 1.22e-5 s (DT).\\
The following SOFI3D features will be tested during this modeling run:
\begin{itemize}
\item The computational accuracy of your system with a scattered number of processors in one direction
\item The accuracy of the explosive source
\item The model can be directly used to validate the FD seismograms by comparing them to analytical data (see SOFI3D guide, section \textit{Comparison with Analytical solution}).
\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
\begin{table}[h]
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value\\
\hline
NX & 420\\
NY & 200\\
NZ & 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 & 0.1 m\\
DY & 0.1 m\\
DZ & 0.1 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 of cores used for each direction during the modeling.
\begin{table}[h]
\begin{minipage}{0.45\textwidth}
\begin{center}
\begin{tabular}{c|c}
Parameter & Value \\
\hline
$v_P$ & 3500 m/s\\
$v_S$ & 2000 m/s\\
$\rho$ & 2000 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\\
NPROCZ & 1\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of cores used}
\end{minipage}
\end{table}
\newpage
In the following figures, seismograms of all components (curl, divergence, pressure, $v_x$, $v_y$ and $v_z$) are show 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}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/fullspace_vz}
\end{minipage}
\end{figure*}
\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}[h]
\centering
\includegraphics[width=0.6\textwidth]{halfspace.eps}
\caption{Slice of the model \textbf{Layered 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 (DX, DY, DZ). The number of gridpoints (NX, NY, NZ) 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 and is located in the middle of the cube at the coordinates (15.5, 25.0, 0.5). To record the waves, several geophones are used, which are arranged as a chain. The first receiver is located at (15, 25, 0.5) and the last at (35, 25, 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), 2 in the y-direction (NPROCY) and 1 in the z-direction (NPROCZ). The total time of wave propagation is 0.15 seconds (TIME) and a single timestep is $1.4^{-4}$ seconds (DT).\\
The following SOFI3D 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
\begin{table}[h]
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value\\
\hline
NX & 100\\
NY & 100\\
NZ & 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\\
DZ & 0.5 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_{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\\
NPROCZ& 1\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of cores used}
\end{minipage}
\end{table}
\newpage
In the following figures, seismograms of all components (curl, divergence, pressure, $v_x$, $v_y$ and $v_z$) 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}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/halfspace_vz}
\end{minipage}
\end{figure*}
\relax
\@setckpt{layered_half_space.tex}{
\setcounter{page}{4}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{section}{1}
\setcounter{subsection}{1}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{1}
\setcounter{table}{4}
\setcounter{parentequation}{0}
}
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}[ht]
\centering
\includegraphics[width=0.6\textwidth]{rec_array.eps}
\caption{Slice of the model \textbf{Receiver Array} including the location of the source and receiver arrays}
\label{rec_array}
\end{figure}
The Euclidean distance between each gridpoint is equally spaced in each direction and is 40 meter (DX, DY, DZ). The number of gridpoints (NX, NY, NZ) differs in each direction. NX amounts 300 gridpoints, NY 200 gridpoints and NZ only 150 gridpoints. The model dimension thus account for a cuboid with a edge length of 12.000 meters in x, 8.000 meters in y and 6000 meters in z.\\
The source for the seismic waves is a plane wave excitation in a depth of 800 m. The center source frequence is 10 Hz. To record the waves, 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 6 gridpoint in the x-direction (DRX) and 5 gridpoint in the z-direction (DRZ) (note that y does point in the vertical direction), hence the Euclidean distance between each geophone is 240 meters in the x and 200 in z horizontal. 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), 1 in the y-direction (NPROCY) and 1 in the z-direction (NPROCZ). The total time of wave propagation is 4 seconds (TIME) and a single timestep is $3.2\cdot 10^{-3}$ seconds (DT).\\
Supplementary to the seismograms snapshots will be produced.
The following SOFI3D 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 functionality of the snapshots
\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
\begin{table}[ht]
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value\\
\hline
NX & 300\\
NY & 200\\
NZ & 150\\
\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\\
DZ & 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}[ht]
\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\\
NPROCZ& 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}[ht]
\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) & 100 m\\
Distance between receivers in x-direction & (DRX) & 6 gdp\\
Distance between receivers in z-direction & (DRZ) & 5 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 (curl, divergence, pressure, $v_x$, $v_y$ and $v_z$) of a receiverline in the x direction are shown.
\begin{figure*}[ht]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_vy}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gx_vz}
\end{minipage}
\end{figure*}
\newpage
In the following figures are the seismograms of all components (curl, divergence, pressure, $v_x$, $v_y$ and $v_z$) of a receiverline in the z direction shown.
\begin{figure*}[ht]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gz_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gz_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gz_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gz_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gz_vy}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/rec_array_gz_vz}
\end{minipage}
\end{figure*}
\ No newline at end of file
\documentclass[a4paper,10pt]{article}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{caption}
%opening
\title{SOFI3D Benchmark Test \\
Documentation}
\author{Matthias Heck, Stefan Jetschny}
\begin{document}
\maketitle
\begin{abstract}
This benchmark test provides information whether your installed release of SOFI3D 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 SOFI3D 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 SOFI3D installation (for information on the SOFI3D installation and compilation, please consult the SOFI3D 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{SOFI3D/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{SOFI3D/benchmark/su} and \texttt{SOFI3D/benchmark/snap}. You can also delete the benchmark model files written by the SOFI3D code (\texttt{SOFI3D/benchmark/mode/benchmark\_*.SOFI3D.rho}). Be careful not to touch (or delete) the following data
\begin{itemize}
\item folder \texttt{SOFI3D/benchmark/in\_and\_out}: the input files *.json ,
\item folder \texttt{SOFI3D/benchmark/model}: the c-files for the on-the-fly-generation of models,
\item folder \texttt{SOFI3D/benchmark/receiver}: the files containing receiver positions,
\item folder \texttt{SOFI3D/benchmark/reference\_value}: the original seismogram and snaphot md5 hashsum data (as reference for comparison),
\item folder \texttt{SOFI3D/benchmark/sources}: the files containing source positions,
\item folder \texttt{SOFI3D/benchmark/snap}: the shell script for the comparison of snapshot data \texttt{diff\_snap.sh} ,
\item folder \texttt{SOFI3D/benchmark/su}: the shell script for the comparison of seismogram data \texttt{diff\_seismogram.sh}.
\end{itemize}
In the main folder \texttt{SOFI3D/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/sofi3D_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
Check seismogram benchmark_tunnel_el_vz.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
benchmark_tunnel_el.bin.vz: OK
\end{verbatim}
You will also find empty files such as \texttt{seismogram\_tunnel\_el.ok} in the main folder \texttt{sofi3D/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{sofi3D/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{/sofi3D/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{sofi3D/benchmark/su/} and \texttt{sofi3D/benchmark/snap/} for further evaluation. In order to display the snapshot files, you will find suitable matlab scripts in the folder \texttt{/sofi3D/benchmark/snap}.
% The Models
\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 SOFI3D features. 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.
% Homogeneous Fullspace
\input{homogeneous_fullspace.tex}
\newpage
\clearpage
% Layered Half-Space
\input{layered_half_space.tex}
\newpage
\clearpage
% Receiver Array
\input{receiver_array.tex}
\newpage
\clearpage
% Tunnel
\input{tunnel.tex}
\clearpage
\end{document}
\ No newline at end of file
\subsection{Tunnel}
As you can see in figure \ref{tunnel}, the model consists of homogeneous material with a tunnel tube. The density of the surrounding material is $\rho =$ 2100 kg/m$^3$ and the velocities are $v_{P} = 5100$ m/s for the P-wave and $v_{S} = 2800$ m/s for the S-wave, whereas the tube is empty and the values for the velocities and the density are all zero.\\
\begin{figure}[h]
\begin{minipage}{0.475\textwidth}
\centering
\includegraphics[width=0.95\textwidth]{tunnel_front.eps}
\end{minipage}
\hfill
\begin{minipage}{0.475\textwidth}
\centering
\includegraphics[width=0.95\textwidth]{tunnel_side.eps}
\end{minipage}
\caption{Left: Slice of the model \textbf{Tunnel} as seen from the front, Right: Slice of the side. In both slices, the location of the source and receivers are shown.}
\label{tunnel}
\end{figure}
The Euclidean distance between each gridpoint is equally spaced in each direction and is 0.25 meter (DX, DY, DZ). The number of gridpoints (NX, NY, NZ) amounts in each direction 200 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 at 450 Hz at position (10.0, 25.0, 19.75). To record the waves, a chain of receivers is used. The first receiver is located at (8.0, 25.0, 19.75) and the last at (42.0, 25.0, 19.75). Between each receiver there is an offset of 4 gridpoint, which is equal to 1 meters. So the whole chain consists of 35 geophones/receivers with a total length of 34 meters. Furthermore, no free surface is included in the model which means that the model domain is sourrounded by an absorbing frame.\\
In this particular simulation a special absorbing frame, called ... is tested. Waves, which propagate through the vertical absorbing frame are not going to be absorbed. Instead they are going to propagate form the opposite absorbing frame, as if there were no barrier.
For the computation 4 processor cores are used. 2 cores are computing the expansion of the waves in the x-direction (NPROCX), 2 in the y-direction (NPROCY) and 1 in the z-direction (NPROCZ). The total time of wave propagation is 0.03 seconds (TIME) and a single timestep is $2.5\cdot10^{-5}$ seconds (DT).\\
During the modeling the order of spatial FD operators (FDORDER) is set to 2, because of this special problem with an empty tunnel tube.
Supplementary to the seismograms snapshots will be produced.
The following SOFI3D 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 functionality of the snapshots
\item The usage of external files containing receiver positions
\item The order of spatial FD operators
\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
\begin{table}[h]
\begin{minipage}{0.4\textwidth}
\begin{center}
\begin{tabular}{c|c}
Direction & Value\\
\hline
NX & 200\\
NY & 200\\
NZ & 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 & 0.25 m\\
DY & 0.25 m\\
DZ & 0.25 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}$ & 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 & 2\\
NPROCY & 2\\
NPROCZ& 1\\
\end{tabular}
\end{center}
\captionsetup{labelformat=empty}
\caption{Number of cores used}
\end{minipage}
\end{table}
\newpage
In the following figures, the seismograms of all components (curl, divergence, pressure, $v_x$, $v_y$ and $v_z$) are shown.
\begin{figure*}[h]
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/tunnel_curl}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/tunnel_div}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/tunnel_p}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/tunnel_vx}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/tunnel_vy}
\end{minipage}
%
\hfill
%
\begin{minipage}[t]{0.45\textwidth}
\includegraphics[width=\textwidth]{eps/tunnel_vz}
\end{minipage}
\end{figure*}
This diff is collapsed.
This diff is collapsed.
rm in_and_out/*.jout
rm in_and_out/*.snap
rm log/*.log.*
rm result_log/result_log*.out
rm model/bechmark_*.SOFI3D.rho
rm -r snap/benchmark_tunnel
rm -r snap/benchmark_rec_array
rm -r su/benchmark_fullspace
rm -r su/benchmark_halfspace
rm -r su/benchmark_rec_array
rm -r su/benchmark_tunnel
rm -r su/su_difference/*
rm seismogram_*.ok
cd ../src
#make sofi3D
make clean
make sofi3D_bench
make snapmerge
cd ../par
#-----------------------------------------------------------------
# JSON PARAMETER FILE FOR SOFI3D
#-----------------------------------------------------------------
# description:
# description/name of the model:
#
{
"Domain Decomposition" : "comment",
"NPROCX" : "2",
"NPROCY" : "1",
"NPROCZ" : "2",
"3-D Grid" : "comment",
"NX" : "200",
"NY" : "200",
"NZ" : "200",
"DX" : "0.25",
"DY" : "0.25",
"DZ" : "0.25",
"FD order" : "comment",
"FDORDER" : "2",
"FDCOEFF" : "2",
"Time Stepping" : "comment",
"TIME" : "0.03",
"DT" : "2.5e-5",
"Source" : "comment",
"SOURCE_SHAPE" : "1",
"SOURCE_TYPE" : "3",
"ALPHA, BETA" : "0.0 , 0.0",
"PLANE_WAVE_DEPTH" : "0.0",
"PLANE_WAVE_ANGLE" : "0.0",
"TS" : "0.002",
"SIGNAL_FILE" : "?",
"SRCREC" : "1",
"SOURCE_FILE" : "./sources/tunnel_src.dat",
"RUN_MULTIPLE_SHOTS" : "0",
"Model" : "comment",
"READMOD" : "0",
"MFILE" : "model/benchmark_tunnel",
"Q-approximation" : "comment",
"L" : "0",
"FL1" : "5.0",
"TAU" : "0.00001",
"Boundary Conditions" : "comment",
"FREE_SURF" : "0",
"ABS_TYPE" : "2",
"FW" : "30.0",
"DAMPING" : "8.0",
"FPML" : "5.0",
"VPPML" : "3500.0",
"BOUNDARY" : "1",
"A" : "0",
"Snapshots" : "comment",
"SNAP" : "4",
"TSNAP1" : "2.0e-3",
"TSNAP2" : "0.029",
"TSNAPINC" : "0.002",
"IDX" : "4",
"IDY" : "4",
"IDZ" : "4",
"SNAP_FORMAT" : "3",
"SNAP_FILE" : "./snap/benchmark_tunnel",
"SNAP_PLANE" : "1",
"Receiver" : "comment",
"SEISMO" : "4",
"READREC" : "1",
"REC_FILE" : "./receiver/tunnel_rec.dat",
"REFRECX, REFRECY, REFRECZ" : "0.0 , 0.0 , 0.0",
"XREC1,YREC1, ZREC1" : " 8.00 , 19.75 , 25.0",
"XREC2,YREC2, ZREC2" : "42.00 , 19.75 , 25.0",
"NGEOPH" : "4",
"Receiver array" : "comment",
"REC_ARRAY" : "0",
"REC_ARRAY_DEPTH" : "65.0",