b'\n \n \n
 
\n  
sfawesg (4.0)
index
user/cwp/Mawesg.c
\n Acoustic staggered-gridded time-domain FD modeling,\n

\n \n \n \n \n \n
 
\n 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.
\n
\nAcoustic wave equation finite difference modeling in both 2D and 3D, using an explicit time-domain solver.
\n
\n*** Please see the SConstruct in book/tutorial/ewe for a SConstruct that demonstrates how to use
\npredefined functions for using this program. ***
\n
\nThis program solves a system of first-order PDE\'s for pressure and particle velocity using a staggered-grid approach.
\nThe model parameters are incompressibility (K: bulk modulus) and density.
\n
\nThe program is parallelized using OpenMP, so be sure to use a compatible compiler to take
\nadvantage of the performance boost
\n
\n============= STAGGERED-GRID ========================
\n
\n\t\to -- x -- o -- x -- o -- x -- o
\n\t\t| | | | | | |
\n\t\tx -- x -- x -- x -- x -- x -- x
\n\t\t| | | | | | |
\n\t\to -- x -- o -- x -- o -- x -- o
\n
\nThe "o"\'s are the points where the pressures at computed (integer grid). The "x"\'s
\nare the points where the particle velocities are computed (half grid).
\n
\n============= FILE DESCRIPTIONS ========================
\n
\nFdat.rsf - An RSF file containing your data in the following format:
\naxis 1 - source location
\naxis 2 - wavefield component (z,x,y) order
\naxis 3 - Time
\n\t\t\t
\nFwav.rsf - An RSF file containing your VOLUME DENSITY INJECTION RATE AND DENSITY OF FORCE
\nwavelet information. The sampling interval, origin time,
\nand number of time samples will be used as the defaults for the modeling code.
\n\t i.e. your wavelet needs to have the same length and parameters that you want to model with!
\n\t The first axis is the number of source locations.
\n\t The second axis contains [fz, fx, (fy,) q],respectively. If the file is 1D then the source is assumed
\n\t to be a isotropic pressure source.
\n\t The third axis is time.
\n\t The code check the dimensions of the model and the dimensions of the wavelt file; for 2D modeling, the wavelet
\n\t 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.
\n\t\t
\nFbulk.rsf - An N dimensional RSF file that contains the values for the incompressibility (bulk modulus K) at every point in the computational domain.
\n\t\t
\nFden.rsf - An N dimensional RSF file that contains the values for density at every point in the computational domain.
\n
\nFsou.rsf, Frec.rsf - The source and receiver RSF files respectively.
\nThe 1st axis contains the locations for the points like so:
\n\t\t\t\t [x,y,z]
\nThe second axis is a concatenated list of all points in the list.
\n\t\t\t\t So, for an array of receivers, it would look like:
\n[x1,y1,z1]
\n[x2,y2,z2]
\n[x3,y3,z3]
\n[x4,y4,z4]
\n\t\t\t\t
\nFwfl.rsf - The name of the file to save the PRESSURE wavefield snapshots to. This will be an N+2
\ndimensional file. The file will be organized as follows:
\n1-2(3) axes, spatial coordinates
\n3(4) axis, wavefield value
\n4(5) axis, time, sequential snapshots
\n***The parentheses indicate what the axes will be for 3D models.
\n
\nFdat.rsf - The name of the file to save the receiver data to. The data has the format of:
\n\t spatial coordinates, then value of the wavefield. Lastly, time.
\n\t\t
\n======= PARAMETERS ========
\n
\nfree = y/[n] - Free surface boundary condition (the free surface is for PRESSURE).
\n
\nabc = y/[n] - Absorbing Boundary Conditions (PML).
\n
\nnb - thickness of the absorbing boundary
\n
\nverb = y/[n] - verbosity flag
\n
\n
\n\t\t \t\t
\n======= TIPS ========
\n
\nIf the simulation seems to slow down as it\'s running, its a pretty
\ngood indication that the simulation has become unstable and is overflowing
\nwith NaNs.
\n
\n\n

\n \n \n \n \n \n
 
\n Parameters
       \n \n \n
\n  
bool abc=n [y/n]
\tABC if the abcpml=n: spongeABC
\n
\n \n\n \n \n
\n  
file bulk=
\tauxiliary input file name
\n
\n \n\n \n \n
\n  
bool debug=n [y/n]
\tdebug
\n
\n \n\n \n \n
\n  
file den=
\tauxiliary input file name
\n
\n \n\n \n \n
\n  
bool free=n [y/n]
\tfree surface flag
\n
\n \n\n \n \n
\n  
int jdata=1
\t
\n
\n \n\n \n \n
\n  
int jsnap=nt
\tsave wavefield every *jsnap* time steps
\n
\n \n\n \n \n
\n  
int nqx=sf_n(ax)
\t
\n
\n \n\n \n \n
\n  
int nqy=sf_n(ay)
\t
\n
\n \n\n \n \n
\n  
int nqz=sf_n(az)
\t
\n
\n \n\n \n \n
\n  
int ompchunk=1
\tOpenMP data chunk size
\n
\n \n\n \n \n
\n  
int ompnth=0
\tOpenMP available threads
\n
\n \n\n \n \n
\n  
float oqx=sf_o(ax)
\t
\n
\n \n\n \n \n
\n  
float oqy=sf_o(ay)
\t
\n
\n \n\n \n \n
\n  
float oqz=sf_o(az)
\t
\n
\n \n\n \n \n
\n  
bool pml=n [y/n]
\t"PML ABC"
\n
\n \n\n \n \n
\n  
file rec=
\tauxiliary input file name
\n
\n \n\n \n \n
\n  
bool snap=n [y/n]
\twavefield snapshots flag
\n
\n \n\n \n \n
\n  
file sou=
\tauxiliary input file name
\n
\n \n\n \n \n
\n  
bool verb=n [y/n]
\tverbosity flag
\n
\n \n\n \n \n
\n  
file wfl=
\tauxiliary output file name
\n
\n \n
'