sfmpidfwi (2.0-git)
index
user/zhiguang/Mmpidfwi.c
Variable-density acoustic Forward Modeling, FWI, and RTM

 
Synopsis
        sfmpidfwi Fvel=Fv.rsf Fd=Fd.rsf Fwavelet=Fw.rsf output=Fdat.rsf output=Finv.rsf Ferr=Ferr.rsf Fmod=Fmod.rsf Fgrad=Fgrad.rsf output=Fimg.rsf function=2 para_type=1 verb=n nb=20 coef=5. acqui_type=1 ns= ds= s0= sz=3 nr=acpar->nx dr=acpar->dx r0=acpar->x0 rz=3 interval=1 fhi=0.5/acpar->dt flo=0. frectx=2 frectz=2 onlygrad=n grad_type=1 rfwi=0 wt1=acpar->t0 wt2=acpar->t0+(acpar->nt-1)*acpar->dt woff1=acpar->r0 woff2=acpar->r0+(acpar->nr-1)*acpar->dr v0=1.5 t0=-1. gain=1 waterz=51 grectx=3 grectz=3 v1=0. v2=10. den1=0. den2=10. niter= conv_error= npair=20 nls=20 factor=10 repeat=5

 
Parameters
       
 
file Fd=
auxiliary input file name
 
file Ferr=
auxiliary output file name
 
file Fgrad=
auxiliary output file name
 
file Fmod=
auxiliary output file name
 
file Fvel=
auxiliary input file name
 
file Fwavelet=
auxiliary input file name
 
int acqui_type=1
if 1, fixed acquisition; if 2, marine acquisition; if 3, symmetric acquisition
 
float coef=5.
maximum velocity of the medium
 
float conv_error=
final convergence error
 
float den1=0.
lower limit of estimated density or impedance
 
float den2=10.
upper limit of estimated density or impedance
 
float dr=acpar->dx
receiver interval
 
float ds=
shot interval
 
float factor=10
step length increase factor
 
float fhi=0.5/acpar->dt
high frequency in band, default is Nyquist
 
float flo=0.
low frequency in band, default is zero
 
int frectx=2
source smoothing in x
 
int frectz=2
source smoothing in z
 
int function=2
if 1, forward modeling; if 2, FWI; if 3, RTM
 
float gain=1
vertical gain power of data residual
 
int grad_type=1
if 1, velocity; if 2, impedance or density
 
int grectx=3
gradient smoothing radius in x
 
int grectz=3
gradient smoothing radius in z
 
int interval=1
wavefield storing interval
 
int nb=20
PML boundary width
 
int niter=
iteration number
 
int nls=20
line search number
 
int npair=20
number of l-BFGS pairs
 
int nr=acpar->nx
number of receiver
 
int ns=
shot number
 
bool onlygrad=n [y/n]
only calculate gradident or not
 
file output=
auxiliary output file name
 
int para_type=1
if 1, velocity and density; if 2, velocity and impedance
 
float r0=acpar->x0
receiver origin
 
int repeat=5
after how many iterations the step length goes back to 1
 
int rfwi=0
if 0, fwi gradient; if 1, rfwi gradient with Vp-Ip scale separation
 
int rz=3
receiver depth
 
float s0=
shot origin
 
int sz=3
source depth
 
float t0=-1.
starting time for cutting direct wave
 
float v0=1.5
surface velocity for cutting direct wave
 
float v1=0.
lower limit of estimated velocity
 
float v2=10.
upper limit of estimated velocity
 
bool verb=n [y/n]
verbosity flag
 
int waterz=51
water layer depth
 
float woff1=acpar->r0
window data residual: rmin
 
float woff2=acpar->r0+(acpar->nr-1)*acpar->dr
window data residual: rmax
 
float wt1=acpar->t0
window data residual: tmin
 
float wt2=acpar->t0+(acpar->nt-1)*acpar->dt
window data residual: tmax