sfawesg (2.0-git)
index
user/cwp/Mawesg.c
Acoustic staggered-gridded time-domain FD modeling,

 
Synopsis
        sfawesg < Fwav.rsf bulk=Fbulk.rsf den=Fden.rsf sou=Fsou.rsf rec=Frec.rsf wfl=Fwfl.rsf > Fdat.rsf ompchunk=1 ompnth=0 verb=n snap=n free=n abc=n pml=n debug=n jdata=1 jsnap=nt nqz=sf_n(az) nqx=sf_n(ax) oqz=sf_o(az) oqx=sf_o(ax) nqz=sf_n(az) nqx=sf_n(ax) nqy=sf_n(ay) oqz=sf_o(az) oqx=sf_o(ax) oqy=sf_o(ay)
automatically determines whether or not to use 3D or 2D.

Acoustic wave equation finite difference modeling in both 2D and 3D, using an explicit time-domain solver.

*** Please see the SConstruct in book/tutorial/ewe for a SConstruct that demonstrates how to use
predefined functions for using this program. ***

This program solves a system of first-order PDE's for pressure and particle velocity using a staggered-grid approach.
The model parameters are incompressibility (K: bulk modulus) and density.

The program is parallelized using OpenMP, so be sure to use a compatible compiler to take
advantage of the performance boost

============= STAGGERED-GRID ========================

o -- x -- o -- x -- o -- x -- o
| | | | | | |
x -- x -- x -- x -- x -- x -- x
| | | | | | |
o -- x -- o -- x -- o -- x -- o

The "o"'s are the points where the pressures at computed (integer grid). The "x"'s
are the points where the particle velocities are computed (half grid).

============= FILE DESCRIPTIONS ========================

Fdat.rsf - An RSF file containing your data in the following format:
axis 1 - source location
axis 2 - wavefield component (z,x,y) order
axis 3 - Time

Fwav.rsf - An RSF file containing your VOLUME DENSITY INJECTION RATE AND DENSITY OF FORCE
wavelet information. The sampling interval, origin time,
and number of time samples will be used as the defaults for the modeling code.
i.e. your wavelet needs to have the same length and parameters that you want to model with!
The first axis is the number of source locations.
The second axis contains [fz, fx, (fy,) q],respectively. If the file is 1D then the source is assumed
to be a isotropic pressure source.
The third axis is time.
The code check the dimensions of the model and the dimensions of the wavelt file; for 2D modeling, the wavelet
file may have n2=1 or n2=3, for 3D modeling, n2=1 or n2=4. An error is returned if the dimensions don't match.

Fbulk.rsf - An N dimensional RSF file that contains the values for the incompressibility (bulk modulus K) at every point in the computational domain.

Fden.rsf - An N dimensional RSF file that contains the values for density at every point in the computational domain.

Fsou.rsf, Frec.rsf - The source and receiver RSF files respectively.
The 1st axis contains the locations for the points like so:
[x,y,z]
The second axis is a concatenated list of all points in the list.
So, for an array of receivers, it would look like:
[x1,y1,z1]
[x2,y2,z2]
[x3,y3,z3]
[x4,y4,z4]

Fwfl.rsf - The name of the file to save the PRESSURE wavefield snapshots to. This will be an N+2
dimensional file. The file will be organized as follows:
1-2(3) axes, spatial coordinates
3(4) axis, wavefield value
4(5) axis, time, sequential snapshots
***The parentheses indicate what the axes will be for 3D models.

Fdat.rsf - The name of the file to save the receiver data to. The data has the format of:
spatial coordinates, then value of the wavefield. Lastly, time.

======= PARAMETERS ========

free = y/[n] - Free surface boundary condition (the free surface is for PRESSURE).

abc = y/[n] - Absorbing Boundary Conditions (PML).

nb - thickness of the absorbing boundary

verb = y/[n] - verbosity flag



======= TIPS ========

If the simulation seems to slow down as it's running, its a pretty
good indication that the simulation has become unstable and is overflowing
with NaNs.

 
Parameters
       
 
bool abc=n [y/n]
ABC if the abcpml=n: spongeABC
 
file bulk=
auxiliary input file name
 
bool debug=n [y/n]
debug
 
file den=
auxiliary input file name
 
bool free=n [y/n]
free surface flag
 
int jdata=1

 
int jsnap=nt
save wavefield every *jsnap* time steps
 
int nqx=sf_n(ax)

 
int nqy=sf_n(ay)

 
int nqz=sf_n(az)

 
int ompchunk=1
OpenMP data chunk size
 
int ompnth=0
OpenMP available threads
 
float oqx=sf_o(ax)

 
float oqy=sf_o(ay)

 
float oqz=sf_o(az)

 
bool pml=n [y/n]
"PML ABC"
 
file rec=
auxiliary input file name
 
bool snap=n [y/n]
wavefield snapshots flag
 
file sou=
auxiliary input file name
 
bool verb=n [y/n]
verbosity flag
 
file wfl=
auxiliary output file name