diff --git a/scripts/GenerateIniMOD.py b/scripts/GenerateIniMOD.py index 2fc776a..af79196 100644 --- a/scripts/GenerateIniMOD.py +++ b/scripts/GenerateIniMOD.py @@ -6,19 +6,20 @@ import numpy as np #parameters need to be changed #start -nx=18 -ny=18 -nz=8 +nx=75 +ny=96 +nz=17 minvel=0.8 velgrad=0.5 -dep1=np.array([0,0.2,0.4,0.6,0.8,1.1,1.4,1.8,2.5]) +dep1=1.5+np.array([-1.5, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0,10.0,11.0,13.0,16.0,20.0,30.0]) +vel1=np.loadtxt('mod.1d') #end vs1=np.zeros(nz) mod=np.zeros((nz*ny,nx)) for k in range(nz): for j in range(ny): for i in range(nx): - mod[k*ny+j,i]= minvel+dep1[k]*velgrad + mod[k*ny+j,i]= vel1[k]/1.75#minvel+dep1[k]*velgrad with open('MOD','w') as fp: for i in range(nz): fp.write('%5.1f' % dep1[i]) diff --git a/src/CalSurfG.f90 b/src/CalSurfG.f90 index 92e03d9..006eaf0 100644 --- a/src/CalSurfG.f90 +++ b/src/CalSurfG.f90 @@ -973,7 +973,7 @@ subroutine CalSurfG(nx,ny,nz,nparpi,vels,iw,rw,col,dsurf, & real vpz(nz),vsz(nz),rhoz(nz),depz(nz) - real*8 pvRc(nx*ny,kmaxRc),pvRg(nx*ny,kmaxRg),pvLc(nx*ny,kmaxLc),pvLg(nx*ny,kmaxLg) + real*8 pvRc(nx*ny,kmax),pvRg(nx*ny,kmaxRg),pvLc(nx*ny,kmax),pvLg(nx*ny,kmaxLg) real*8 sen_vsRc(nx*ny,kmaxRc,nz),sen_vpRc(nx*ny,kmaxRc,nz) real*8 sen_rhoRc(nx*ny,kmaxRc,nz) real*8 sen_vsRg(nx*ny,kmaxRg,nz),sen_vpRg(nx*ny,kmaxRg,nz) @@ -1076,8 +1076,9 @@ subroutine CalSurfG(nx,ny,nz,nparpi,vels,iw,rw,col,dsurf, & if(kmaxRg.gt.0) then iwave=2 igr=0 +! print*,kmax call caldespersion(nx,ny,nz,vels,pvRc, & - iwave,igr,kmaxRc,tRc,depz,minthk) + iwave,igr,kmax,tRg,depz,minthk) igr=1 call depthkernel(nx,ny,nz,vels,pvRg,sen_vsRg,sen_vpRg, & sen_rhoRg,iwave,igr,kmaxRg,tRg,depz,minthk) @@ -1087,14 +1088,14 @@ subroutine CalSurfG(nx,ny,nz,nparpi,vels,iw,rw,col,dsurf, & iwave=1 igr=0 call depthkernel(nx,ny,nz,vels,pvLc,sen_vsLc,sen_vpLc, & - sen_rhoLc,iwave,igr,kmaxLc,tLc,depz,minthk) + sen_rhoLc,iwave,igr,kmax,tLc,depz,minthk) endif if(kmaxLg.gt.0) then iwave=1 igr=0 call caldespersion(nx,ny,nz,vels,pvLc, & - iwave,igr,kmaxRc,tRc,depz,minthk) + iwave,igr,kmax,tLg,depz,minthk) igr=1 call depthkernel(nx,ny,nz,vels,pvLg,sen_vsLg,sen_vpLg, & sen_rhoLg,iwave,igr,kmaxLg,tLg,depz,minthk) @@ -1372,11 +1373,17 @@ subroutine CalSurfG(nx,ny,nz,nparpi,vels,iw,rw,col,dsurf, & enddo endif ! 'if' before rpath enddo + IF(asgr.EQ.1)THEN + DEALLOCATE (velnb, STAT=checkstat) + IF(checkstat > 0)THEN + WRITE(6,*)'Error with DEALLOCATE: PROGRAM fmmin2d: velnb' + ENDIF + ENDIF + IF(asgr.EQ.1)DEALLOCATE(ttnr,nstsr) enddo ! 'do' before gridder - IF(asgr.EQ.1)DEALLOCATE(ttnr,nstsr) IF(rbint.EQ.1)THEN WRITE(6,*)'Note that at least one two-point ray path' @@ -1386,12 +1393,6 @@ subroutine CalSurfG(nx,ny,nz,nparpi,vels,iw,rw,col,dsurf, & WRITE(6,*)'that you adjust the dimensions of your grid' WRITE(6,*)'to prevent this from occurring.' ENDIF - IF(asgr.EQ.1)THEN - DEALLOCATE (velnb, STAT=checkstat) - IF(checkstat > 0)THEN - WRITE(6,*)'Error with DEALLOCATE: PROGRAM fmmin2d: velnb' - ENDIF - ENDIF enddo enddo deallocate(fdm) diff --git a/src/DSurfTomo b/src/DSurfTomo index 666f79c..0ca3b40 100755 Binary files a/src/DSurfTomo and b/src/DSurfTomo differ diff --git a/src/main.f90 b/src/main.f90 index eb65be5..cc03306 100644 --- a/src/main.f90 +++ b/src/main.f90 @@ -498,7 +498,7 @@ program SurfTomo acond = 0.0 arnorm = 0.0 xnorm = 0.0 - localSize = n/4 + localSize = 10 call LSMR(m, n, leniw, lenrw,iw,rw,cbst, damp,& atol, btol, conlim, itnlim, localSize, nout,&