sfawesg (2.0-git)
Acoustic staggered-gridded time-domain FD modeling,

        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

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:
The second axis is a concatenated list of all points in the list.
So, for an array of receivers, it would look like:

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.

bool abc=n [y/n]
ABC if the abcpml=n: spongeABC
file bulk=
auxiliary input file name
bool debug=n [y/n]
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]
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