Program sfawesg | 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)
[COMMENTS]
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
[DIRECTORY]
user/cwp
