...
 
Commits (30)
......@@ -3,14 +3,20 @@
# Sofi2D specific
sofi2D
sofi2D_bench
snapmerge
guide_sofi2D.pdf
*.orig
*jout
*.log*
*.su
*.bin*
*.dat
*.json
*.avi
### C ###
# Object files
......
......@@ -9,4 +9,4 @@ Daniel Koehn
Andre Kurzmann
Tilman Metz
Martin Schaefer
Florian Wittkamp
......@@ -2,7 +2,6 @@ To compile the program do:
cd sofi2D/src
then
"make sofi2D" to compile the standard staggered grid version (SSG)
or "make sofi2D_rsg" to compile the rotated staggered grid version (RSG)
(you probably need to change the compiler options in soif2D/src/Makefile)
......
# What is SOFI2D?
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)
# Conditions for the Use of the Software
**SOFI2D** stands for Seismic mOdeling with FInite differences and denotes our
2D viscoelastic time domain massive parallel modeling code for P- and SV-waves.
SOFI2D is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License
as published by the Free Software Foundation, version 2.0 of the License only.
SOFI2D is the forward solver for the full waveform inversion code [**IFOS2D**](https://git.scc.kit.edu/GPIAG-Software/IFOS2D).
SOFI2D is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You will receive a copy of the GNU General Public License along with the SOFI2D
download package. See file [COPYING](/COPYING) and/or [online](http://www.gnu.org/licenses/gpl-2.0.html)
The [**manual**](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/wikis/home) and a reference paper is included
in the download archive
or can be downloaded [here](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/wikis/home).
# 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).
Additional a SOFI2D branch with benchmarks is available: [overnightbuilt](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/overnightbuilt)
You can Download the [**latest stable Release**](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/master) or the current [**beta-version**](https://git.scc.kit.edu/GPIAG-Software/SOFI2D/tree/develop).
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.
To receive news and updates please [**register**](http://www.gpi.kit.edu/Software-WS.php) on the email list [sofi@lists.kit.edu](http://www.gpi.kit.edu/Software-WS.php).
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 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.
......@@ -14,6 +14,7 @@
"FD order" : "comment",
"FDORDER" : "8",
"FDORDER_TIME" : "2",
"MAXRELERROR" : "1",
"2-D Grid" : "comment",
......
......@@ -153,8 +153,18 @@
YEAR = 1999,
VOLUME = 89,
NUMBER = 4,
PAGES = {918--930} }
PAGES = {918--930} }
@article{ghrist2000staggered,
title={Staggered time integrators for wave equations},
author={Ghrist, Michelle and Fornberg, Bengt and Driscoll, Tobin A},
journal={SIAM Journal on Numerical Analysis},
volume={38},
number={3},
pages={718--741},
year={2000},
publisher={SIAM}
}
@mastersthesis{behrens:97,
AUTHOR = {Behrens, O.},
......@@ -304,6 +314,20 @@
VOLUME = "71",
NUMBER = 4,
PAGES={T109-T115}}
@inproceedings{bohlen2015higher,
Author = {Bohlen, T and Wittkamp, F},
Booktitle = {77th EAGE Conference and Exhibition 2015},
Title = {Higher Order FDTD Seismic Modelling Using the Staggered Adams-Bashforth Time Integrator},
Year = {2015}}
@article{bohlen2015higher2,
Author = {Bohlen, T and Wittkamp, F},
Date-Added = {2015-09-30 10:53:59 +0000},
Date-Modified = {2015-09-30 10:58:00 +0000},
Journal = {Geophysical Journal International},
Title = {3-D viscoelastic FDTD seismic modelling using the staggered Adams-Bashforth time integrator},
Year = {(submitted)}}
@incollection{boore:72,
AUTHOR = {Boore, {D.M.}},
......@@ -565,6 +589,25 @@
NUMBER = 1,
PAGES = {5--8} }
@ARTICLE{courant:28,
author = {Courant, {R.} and Friedrichs, {K.} and Lewy, {H.}},
journal = {Mathematische Annalen},
title = {{\"U}ber die partiellen {D}ifferenzen\-gleichungen der mathematischen {P}hysik},
volume = {100},
pages = {32-74},
year ={1928}
}
@ARTICLE{courant:67,
author = {Courant, {R.} and Friedrichs, {K.} and Lewy, {H.}},
journal = {IBM Journal},
title = {On the partial difference equations of mathematical physics},
pages = {215-234},
year ={March 1967}
}
@article{coutant:95,
AUTHOR = {Coutant, {O.} and Virieux, {J.} and Zollo, {A.}},
TITLE = {Numerical Source Implementation in a 2D Finite Difference Scheme for
......
......@@ -17,14 +17,14 @@ cd ./Latex
/bin/rm -rf *.spl > /dev/null
/bin/rm -rf breakurl.sty > /dev/null
latex breakurl.ins
pdflatex breakurl.ins
latex guide_sofi2D
pdflatex guide_sofi2D
bibtex guide_sofi2D
latex guide_sofi2D
latex guide_sofi2D
latex guide_sofi2D
dvipdf guide_sofi2D
pdflatex guide_sofi2D
pdflatex guide_sofi2D
pdflatex guide_sofi2D
#dvipdf guide_sofi2D
/bin/rm -rf *.dvi > /dev/null
/bin/rm -rf *.log > /dev/null
......
#-----------------------------------------------------------------
# JSON PARAMETER FILE FOR SOFI2D
#-----------------------------------------------------------------
# description:
# description/name of the model:
#
{
"Domain Decomposition" : "comment",
"NPROCX" : "2",
......@@ -12,7 +5,8 @@
"FD order" : "comment",
"FDORDER" : "4",
"MAXRELERROR" : "1",
"FDORDER_TIME" : "4",
"MAXRELERROR" : "0",
"2-D Grid" : "comment",
"NX" : "300",
......@@ -33,7 +27,7 @@
"SOURCE_TYPE values (point_source): explosive=1;force_in_x=2;force_in_y=3;custom_force=4" : "comment",
"SRCREC" : "1",
"SRCREC values : read from SOURCE_FILE=1, PLANE_WAVE=2 (internal)" : "comment"
"SRCREC values : read from SOURCE_FILE=1, PLANE_WAVE=2 (internal)" : "comment",
"SOURCE_FILE" : "./sources/source.dat",
"RUN_MULTIPLE_SHOTS" : "0",
......@@ -48,7 +42,7 @@
"WRITE_MODELFILES" : "2",
"Q-approximation" : "comment",
"L" : "0",
"L" : "1",
"FL1" : "5.0",
"TAU" : "0.00001",
......@@ -109,5 +103,5 @@
"Checkpoints" : "comment",
"CHECKPTREAD" : "0",
"CHECKPTWRITE" : "0",
"CHECKPT_FILE" : "tmp/checkpoint_sofi2D",
"CHECKPT_FILE" : "tmp/checkpoint_sofi2D"
}
#!/bin/bash
xmovie n1=150 n2=300 d1=2.0 d2=2.0 < snap/2layer.bin.y.00 \
label1=Y[m] label2=X[m] title="#%g" clip=1.0e-11 loop=1 width=900 height=450
sugain qbal=1 < su/$1.su.0 \
| suxwigb xcur=2.0 title="$1" key=gx \
label2=" X [m]" label1="Time [s]" wbox=600.0 hbox=400.0 \
linewidth=0 titlesize=8 style=seismic &
#!/bin/bash
i=0
while [ "$i" -lt "90" ]
do
i=`expr $i + 1`
I=`echo $i | awk '{printf("%i.0",$1*2+38)}'`
echo running Shot $I $i
cp source_org.dat source.dat
replace 42.0 $I source.dat
../bin/fdelast_ssg_4th < fdveps_ku1500.inp > fdveps_ku1500.$i.out
cp su/ku1500_div.su.0 su/ku1500_div_$i.su.0
cp su/ku1500_rot.su.0 su/ku1500_rot_$i.su.0
cp su/ku1500_p.su.0 su/ku1500_p_$i.su.0
cp su/ku1500_x.su.0 su/ku1500_x_$i.su.0
cp su/ku1500_y.su.0 su/ku1500_y_$i.su.0
done
#!/bin/bash
cat su/$1_y.su.? > su/$1_y.su
cat su/$1_x.su.? > su/$1_x.su
cat su/$1_p.su.? > su/$1_p.su
cat su/$1_div.su.? > su/$1_div.su
cat su/$1_rot.su.? > su/$1_rot.su
This diff is collapsed.
......@@ -295,7 +295,7 @@ void PML_pro(float * d_x, float * K_x, float * alpha_prime_x, float * a_x, float
if(abscissa_in_PML >= 0.0){
abscissa_normalized = abscissa_in_PML / thickness_PML_y;
d_y_half[h] = d0_x * pow(abscissa_normalized,NPOWER);
d_y_half[h] = d0_y * pow(abscissa_normalized,NPOWER);
/* this taken from Gedney page 8.2 */
K_y_half[h] = 1.0 + (K_MAX_CPML - 1.0) * pow(abscissa_normalized,NPOWER);
......
......@@ -219,7 +219,7 @@ void check_fs(FILE *fp, int argc, char *fileinp)
{
fprintf(fp, "\n");
sprintf(errmsg, "\n in: <check_fs.c> \n");
err(errmsg);
declare_error(errmsg);
}
}
This diff is collapsed.
......@@ -38,7 +38,7 @@ MPI_Request *req_send, MPI_Request *req_rec){
/* comunication initialisation for persistent communication */
fdo2 = 2*(FDORDER/2 + 1);
fdo2 = 2*(FDORDER/2);
/* buffer arrays are copied into local buffers using buffered send (bsend),
......
......@@ -26,7 +26,7 @@
void exchange_par(void){
/* declaration of extern variables */
extern int NX, NY, FDORDER, MAXRELERROR, SOURCE_TYPE, SOURCE_SHAPE, SNAP, SNAP_FORMAT, L;
extern int NX, NY, FDORDER, MAXRELERROR, SOURCE_TYPE, SOURCE_SHAPE, SNAP, SNAP_FORMAT, L, FDORDER_TIME;
extern float DH, TIME, DT, TS, *FL, TAU, DAMPING, FPML, NPOWER, K_MAX_CPML, VPPML, PLANE_WAVE_DEPTH, PLANE_WAVE_ANGLE, SRCPOSXYZ[3];
extern float XREC1, XREC2, YREC1, YREC2;
extern float REC_ARRAY_DEPTH, REC_ARRAY_DIST;
......@@ -126,6 +126,8 @@ void exchange_par(void){
idum[34] = WRITE_MODELFILES;
idum[35] = ABS_TYPE;
idum[36] = FDORDER_TIME;
} /** if (MYID == 0) **/
......@@ -219,7 +221,10 @@ void exchange_par(void){
RUN_MULTIPLE_SHOTS = idum[33];
WRITE_MODELFILES = idum[34];
ABS_TYPE = idum[35];
ABS_TYPE = idum[35];
FDORDER_TIME = idum[36];
MPI_Bcast(&FL[1],L,MPI_FLOAT,0,MPI_COMM_WORLD);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -33,7 +33,7 @@ int RUNMODE, WRITE_MODELFILES=0, ABS_TYPE;
int OUTNTIMESTEPINFO=1; /*every OUTNTIMESTEPINFO th timestep, information on the time step will be given to screen/file */
int SEISMO=0, NDT=1, NSRC=1, SEIS_FORMAT=0, FREE_SURF=0, READMOD=0, READREC=0, SRCREC=0, RSG=0, FW=0;
int NX=1, NY=1, NT=0, SOURCE_TYPE=0, SOURCE_SHAPE=0, SNAP=0, SNAP_FORMAT=0, LOG=0, REC_ARRAY=0;
int L=0, BOUNDARY=0, DC=0, DRX=0, NXG=0, NYG=0, IDX=1, IDY=1, CHECKPTREAD=0, CHECKPTWRITE=0, FDORDER=0, MAXRELERROR=0;
int L=0, BOUNDARY=0, DC=0, DRX=0, NXG=0, NYG=0, IDX=1, IDY=1, CHECKPTREAD=0, CHECKPTWRITE=0, FDORDER=0, FDORDER_TIME=0, MAXRELERROR=0;
int RUN_MULTIPLE_SHOTS=0; /* Added for multiple shots */
char SNAP_FILE[STRING_SIZE]="", SOURCE_FILE[STRING_SIZE]="", SIGNAL_FILE[STRING_SIZE]="";
char MFILE[STRING_SIZE]="", REC_FILE[STRING_SIZE]="", CHECKPTFILE[STRING_SIZE]="";
......
This diff is collapsed.
......@@ -86,11 +86,11 @@ float *holbergcoeff() {
if (MYID == 0) {
if ((FDORDER!=2) && (FDORDER!=4) && (FDORDER!=6) && (FDORDER!=8) && (FDORDER!=10) && (FDORDER!=12)) {
err(" Error in selection of FD coefficients: wrong FDORDER! ");
declare_error(" Error in selection of FD coefficients: wrong FDORDER! ");
}
if ((MAXRELERROR<0) || (MAXRELERROR>4)) {
err(" Error in selection of FD coefficients: wrong choice of maximum relative error! ");
declare_error(" Error in selection of FD coefficients: wrong choice of maximum relative error! ");
}
}
......
......@@ -33,11 +33,11 @@ void initproc(void) {
if ((NPROC != NP) && (MYID==0)) {
fprintf(FP,"You specified NPROC = %d (in parameter file) and NP = %d (command line) \n",NPROC,NP);
err("NP and NPROC differ !");
declare_error("NP and NPROC differ !");
}
/*if (NPROC != NP)
err("Number of processors specified in the parameter file \n and at command line (NP) differ !");*/
declare_error("Number of processors specified in the parameter file \n and at command line (NP) differ !");*/
/*C-- determine the length of the subarray on this processor*/
......@@ -47,9 +47,9 @@ void initproc(void) {
/* POS(1) indicates x POSition of the processor in the
logical 3D processor array*/
if ((NX%NPROCX)>0)
err(" NX%NPROX (modulus) must be zero !");
declare_error(" NX%NPROX (modulus) must be zero !");
if ((NY%NPROCY)>0)
err(" NY%NPROY (modulus) must be zero !");
declare_error(" NY%NPROY (modulus) must be zero !");
if (MYID==0){
......
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.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.