SYNOPSIS
PERL PROGRAM NAME:
AUTHOR: Juan Lorenzo (Perl module only)
DATE:
DESCRIPTION:
Version:
USE
NOTES
Examples
SYNOPSIS
SEISMIC UNIX NOTES SUFCTANISMOD - Flux-Corrected Transport correction applied to the 2D
elastic wave equation for finite difference modeling in
anisotropic media
sufctanismod > outfile [optional parameters]
outfile is the final wavefield snapshot x-component
x-component of wavefield snapshot is in snapshotx.data
y-component of wavefield snapshot is in snapshoty.data
z-component of wavefield snapshot is in snapshotz.data
Optional Output Files:
reflxfile= reflection seismogram file name for x-component
no output produced if no name specified
reflyfile= reflection seismogram file name for y-component
no output produced if no name specified
reflzfile= reflection seismogram file name for z-component
no output produced if no name specified
vspxfile= VSP seismogram file name for x-component
no output produced if no name specified
vspyfile= VSP seismogram file name for y-component
no output produced if no name specified
vspzfile= VSP seismogram file name for z-component
no output produced if no name specified
suhead=1 To get SU-header output seismograms (else suhead=0)
New parameter:
Optional Parameters:
mt=1 number of time steps per output snapshot
dofct=1 1 do the FCT correction
0 do not do the FCT correction
FCT Related parameters:
eta0=0.03 diffusion coefficient
typical values ranging from 0.008 to 0.06
about 0.03 for the second-order method
about 0.012 for the fourth-order method
eta=0.04 anti-diffusion coefficient
typical values ranging from 0.008 to 0.06
about 0.04 for the second-order method
about 0.015 for the fourth-order method
fctxbeg=0 x coordinate to begin applying the FCT correction
fctzbeg=0 z coordinate to begin applying the FCT correction
fctxend=nx x coordinate to stop applying the FCT correction
fctzend=nz z coordinate to stop applying the FCT correction
deta0dx=0.0 gradient of eta0 in x-direction d(eta0)/dx
deta0dz=0.0 gradient of eta0 in z-direction d(eta0)/dz
detadx=0.0 gradient of eta in x-direction d(eta)/dx
detadz=0.0 gradient of eta in z-direction d(eta)/dz
General Parameters:
order=2 2 second-order finite-difference
4 fourth-order finite-difference
nt=200 number of time steps
dt=0.004 time step
nx=100 number of grid points in x-direction
nz=100 number of grid points in z-direction
dx=0.02 spatial step in x-direction
dz=0.02 spatial step in z-direction
sx=nx/2 source x-coordinate (in gridpoints)
sz=nz/2 source z-coordinate (in gridpoints)
fpeak=20 peak frequency of the wavelet
receiverdepth=sz depth of horizontal receivers (in gridpoints)
vspnx=sx x grid loc of vsp
verbose=0 silent operation
=1 for diagnostic messages, =2 for more
wavelet=1 1 AKB wavelet
2 Ricker wavelet
3 impulse
4 unity
isurf=2 1 absorbing surface condition
2 free surface condition
3 zero surface condition
source=1 1 point source
2 sources are located on a given refelector ",
(two horizontal and one dipping reflectors)
3 sources are located on a given dipping refelector ",
sfile= the name of input source file, if no name specified then
use default source location. (source=1 or 2)
Density and Elastic Parameters:
dfile= the name of input density file,
if no name specified then
assume a linear density profile with ...
rho00=2.0 density at (0, 0)
drhodx=0.0 density gradient in x-direction d(rho)/dx
drhodz=0.0 density gradient in z-direction d(rho)/dz
afile= name of input elastic param. (c11) aa file, if no name
specified then, assume a linear profile with ...
aa00=2.0 elastic parameter at (0, 0)
daadx=0.0 parameter gradient in x-direction d(aa)/dx
daadz=0.0 parameter gradient in z-direction d(aa)/dz
cfile= name of input elastic param. (c33) cc file, if no name
specified then, assume a linear profile with ...
cc00=2.0 elastic parameter at (0, 0)
dccdx=0.0 parameter gradient in x-direction d(cc)/dx
dccdz=0.0 parameter gradient in z-direction d(cc)/dz
ffile= name of input elastic param. (c13) ff file, if no name
specified then, assume a linear profile with ...
ff00=2.0 elastic parameter at (0, 0)
dffdx=0.0 parameter gradient in x-direction d(ff)/dx
dffdz=0.0 parameter gradient in z-direction d(ff)/dz
lfile= name of input elastic param. (c44) ll file, if no name
specified then, assume a linear profile with ...
ll00=2.0 elastic parameter at (0, 0)
dlldx=0.0 parameter gradient in x-direction d(ll)/dx
dlldz=0.0 parameter gradient in z-direction d(ll)/dz
nfile= name of input elastic param. (c66) nn file, if no name
specified then, assume a linear profile with ...
nn00=2.0 elastic parameter at (0, 0)
dnndx=0.0 parameter gradient in x-direction d(nn)/dx
dnndz=0.0 parameter gradient in z-direction d(nn)/dz
Optimizations:
The moving boundary option permits the user to restrict the computations
of the wavefield to be confined to a specific range of spatial coordinates.
The boundary of this restricted area moves with the wavefield
movebc=0 0 do not use moving boundary optimization
1 use moving boundaries
Author: Tong Fei, Center for Wave Phenomena,
Colorado School of Mines, Dec 1993
Some additional features by: Stig-Kyrre Foss, CWP
Colorado School of Mines, Oct 2001
New features (Oct 2001):
- setting receiver depth
- outputfiles with SU-headers
- additional commentary
Modifications (Mar 2010) Chris Liner, U Houston
- added snapshot mt param to parallel sufdmod2d functionality
- added verbose and some basic info echos
- error check that source loc is in grid
- dropped mbx1 etc from selfdoc (they were internally computed)
- moved default receiver depth to source depth
- added vspnx to selfdoc and moved default vspnx to source x
- changed sy in selfdoc to sz (typo)
- fixed bug in vsp file(s) allocation: was [nt,nx] now is [nt,nz]
Notes:
This program performs seismic modeling for elastic anisotropic
media with vertical axis of symmetry.
The finite-difference method with the FCT correction is used.
Stability condition: vmax*dt /(sqrt(2)*min(dx,dz)) < 1
Two major stages are used in the algorithm:
(1) conventional finite-difference wave extrapolation
(2) followed by an FCT correction
Additional notes:
The demos also use the following parameters
Using moving boundaries
mbx1=10
mbx2=900
mbz1=10
mbz2=90
Source information (index.direction of source)
indexux=0
indexuy=0
indexuz=1
indexdt =0 speeds up the operation
time=0.25
impulse is 1 is a single source
impulse=1
References:
The detailed algorithm description is given in the article
"Elimination of dispersion in finite-difference modeling
and migration" in CWP-137, project review, page 155-174.
Original reference to the FCT method:
Boris, J., and Book, D., 1973, Flux-corrected transport. I.
SHASTA, a fluid transport algorithm that works:
Journal of Computational Physics, vol. 11, p. 38-69.
User's notes
dx
Use dx to convert gridpoints to distances:
e.g. ,dx=3 nx =100
The maximim lateral reach of the model is 300 units ( i.e., m or ft)
nx
Changes the lateral reach of the model (in gridpoints)
nt
If nt is large enough, the seismograms will more clearly include later reflections
from the vertical edges of the model
Possible sources of error: Inconsistent value of variables betwen flows: e.g., nx =100 in ALL the files
suhead
If you want to manipulate the seismograms using Seismic Unix modules,
remember to set suhead=1
CHANGES and their DATES
Import packages
instantiation of packages
Encapsulated hash of private variables
sub Step
collects switches and assembles bash instructions by adding the program name
sub note
collects switches and assembles bash instructions by adding the program name
sub clear
sub aa00
sub afile
sub cc00
sub cfile
sub daadx
sub daadz
sub dccdx
sub dccdz
sub deta0dx
sub deta0dz
sub detadx
sub detadz
sub dffdx
sub dffdz
sub dfile
sub dlldx
sub dlldz
sub dnndx
sub dnndz
sub dofct
sub drhodx
sub drhodz
sub dt
sub dx
sub dz
sub eta
sub eta0
sub fctxbeg
sub fctxend
sub fctzbeg
sub fctzend
sub ff00
sub ffile
sub fpeak
sub impulse
sub indexdt
sub indexux
sub indexuy
sub indexuz
sub isurf
sub lfile
sub ll00
sub mbx1
sub mbx2
sub mbz1
sub mbz2
sub movebc
sub mt
sub nfile
sub nn00
sub nt
sub nx
sub nz
sub order
sub receiverdepth
sub reflxfile
sub reflyfile
sub reflzfile
sub rho00
sub sfile
sub source
sub suhead
sub sx
sub sz
sub time
sub verbose
sub vspnx
sub vspxfile
sub vspyfile
sub vspzfile
sub wavelet
sub get_max_index
max index = number of input variables -1