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