C NEWMOD.FOR SUBROUTINE NEWMOD( *, RMARCH, & Z0L,C0L,Z1L,C1L,Z0R,C0R,Z1R,C1R, & ND0LR, Z0LR, CE0L, CE0R, & ND1LR, Z1LR, CE1L, CE1R, & Z0,C0,Z1,C1,Z0NRM,Z1NRM, & EK, ISO, MY, MAXMSH, MODEN, & ADA, SPEED, ZZ) INTEGER FIXDZ, EXTPOL DOUBLE PRECISION H0, H1, H0T, H1T, H0TH1T DOUBLE PRECISION H0L, H0R, H1L, H1R DOUBLE PRECISION CC0, CC1, CMIN DOUBLE PRECISION RATIOX DOUBLE PRECISION Z0(*), C0(*), Z1(*), C1(*), & Z0NRM(*), Z1NRM(*) DOUBLE PRECISION Z0L(*), C0L(*), Z1L(*), C1L(*) DOUBLE PRECISION Z0R(*), C0R(*), Z1R(*), C1R(*) DOUBLE PRECISION Z0LR(*), CE0L(*), CE0R(*) DOUBLE PRECISION Z1LR(*), CE1L(*), CE1R(*) DOUBLE PRECISION EK(MODEN) DOUBLE PRECISION ADA(*), SPEED(*) DOUBLE PRECISION ISO(*), MY(MAXMSH,MODEN) DOUBLE PRECISION ZZ(*) COMMON /AB/ BETA(-1:3), SCATT(2), C2S, CC0, CC1, C2 COMMON /DENS/ R0, R1, R2 COMMON /FLAGG/ PLANE, NOVOL, NOLOSS, NOCYL, LARGE, SUMPL COMMON /FLAGPL/ FIRST, FLAGP, FLAGPU, EXTPOL, CORREC COMMON /G/ H0, H1 COMMON /LEFT/ RKML, BETAL(3), SCATTL(2), R1L, R2L, & C2L, C2SL, H0L, H1L, ND0L, ND1L COMMON /LUNIT/ LUPLP, LUPLT, LUPRT COMMON /MESH/ DZH0, DZH1, INPDZ, FIXDZ COMMON /MSHIST/ MH0(8), MSED(8), ICOUNT, USEOLD COMMON /N/ MINMOD, MAXMOD, MODCUT, HBEAM, BPHVEL COMMON /NA/ ND0, ND1, CMIN COMMON /PARAM1/ IRANGE, IFREQ, JUMP, MODQTY COMMON /RIGHT/ RKMR, BETAR(3), SCATTR(2), R1R, R2R, C2R, & C2SR, H0R, H1R, ND0R, ND1R COMMON /RNGPRF/ NSECT, RKM COMMON /TIMING/ CPEIGV, CPEIGF, CPNEWP, CPFILE 370 FORMAT(1X,'NEWMOD, RKM,H0,H1,H0+H1', 3(F11.2,1X)) 400 FORMAT(1X,/,' *** ENTERING NEW REGION:',F9.3,' - ',F9.3,' km') C &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& C &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& IF(LARGE .LE. 0.0) THEN FLAGPU= 1.0 JUMP= 1 END IF C PRINT *,'NEWMOD, rkml,RMARCH, RKMR ',RKML,RMARCH, RKMR IF(RMARCH .GT. RKMR) THEN C Define new region (get new environment) RKM= RMARCH CALL NEWENV( Z0, C0, Z1, C1, Z0L, C0L, C1L, & Z1L, Z0R, C0R, Z1R, C1R) C PRINT 400, RKMR, RKM C *********************************************************************** C WATER COLUMN CALL PROFEQ(ND0L,Z0L,C0L,ND0R,Z0R,C0R,ND0LR,Z0LR,CE0L,CE0R) C SEDIMENT LAYER CALL PROFEQ(ND1L,Z1L,C1L,ND1R,Z1R,C1R,ND1LR,Z1LR,CE1L,CE1R) C *********************************************************************** END IF C &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& C &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& IRANGE= IRANGE + 1 RATIOX=(RMARCH - RKML)/ ( RKMR - RKML ) RKM=RMARCH H0T= H0L + RATIOX * (H0R - H0L) H1T= H1L + RATIOX * (H1R - H1L) H0TH1T= H0T + H1T C PRINT *, ' NEWMOD, H0L, H1L, H0L+H1L ', C & SNGL(H0L),SNGL(H1L),SNGL(H0L+H1L) C PRINT *, ' NEWMOD, H0R, H1R, H0R+H1R ', C & SNGL(H0R),SNGL(H1R),SNGL(H0R+H1R) C PRINT *, ' NEWMOD, H0T, H1T, H0T+H1T ', C & SNGL(H0T), SNGL(H1T), SNGL(H0TH1T) C PRINT *,' SUB NEWMOD, RMARCH, RATIOX ',RMARCH,RATIOX C WATER COLUMN C*** C WATER DEPTH AND SEDIMENT DEPTH MAY BE ADJUSTED TO BE AN INTEGER M C OF THE MODE SAMPLING STEP DEFINED AT THE SOURCE RANGE (DZH0). IF( FIXDZ .EQ. 0 ) THEN H0= H0T DZH0= 0.0 ELSE NH0= NINT(H0T/DZH0) H0= NH0 * DZH0 END IF C Z0(ND0)= H0 C*** C PRINT *,' H0L, H0, H0R ', SNGL(H0L), SNGL(H0), SNGL(H0R) C PRINT *,' DZH0, NH0, H0 ',DZH0,NH0,SNGL(H0) C PRINT *,' ND0LR ',ND0LR CALL PROFIN(ND0,Z0,C0,ND0LR,Z0LR,CE0L,CE0R,RATIOX,H0,CC0) C DENSITY IN THE WATER LAYER R0=1.0 614 FORMAT(1X,E11.4,1X,3(A16,2X)) C SEDIMENT LAYER C PRINT *, ' H1L, H1T, H1R ', C & SNGL(H1L),SNGL(H1T),SNGL(H1R) C PRINT *,' H0R + H1R ', H0R _ H1R C*** IF( FIXDZ .EQ. 0 ) THEN H1= H1T DZH1= 0.0 ELSE IF( H1T .GT. 0.0 ) THEN H1T= H0TH1T - H0 IF( H1T .GT. 0.0 ) THEN NH1= NINT(H1T/DZH1) H1= NH1* DZH1 END IF END IF END IF IF( H1 .GT. 0.0 ) THEN C DENSITY AND ATTENUATION IF( (H1L .GT. 0.0) .AND. (H1R .GT. 0.0) ) THEN R1= R1L + RATIOX*(R1R-R1L) BETA(1)= BETAL(1) + RATIOX*(BETAR(1)-BETAL(1)) ELSE IF(H1R .GT. 0.0) THEN R1= R1R BETA(1)= BETAR(1) ELSE IF(H1L .GT. 0.0) THEN R1= R1L BETA(1)= BETAL(1) END IF C PRINT *, ' H1L, H1 , H1R ', C & SNGL(H1L), SNGL(H1), SNGL(H1R) C*** CALL PROFIN(ND1,Z1,C1,ND1LR,Z1LR,CE1L,CE1R,RATIOX,H1,CC1) ELSE H1= 0.0 R1= 0.0 BETA(1)= 0.0 END IF C PRINT *, ' FINAL H0, H1, H0+H1 : ', C & SNGL(H0), SNGL(H1), SNGL(H0+H1) C COMPRESSIONAL AND SHEAR SPEED IN BOTTOM LAYER C2= C2L + RATIOX*(C2R-C2L) C2S=C2SL + RATIOX*(C2SR-C2SL) C CORRECTING FOR POSSIBLE ROUND-OFF ERRORS IN DETERMINING CC1 IF( H1. GT. 0.) CC1= MIN(SNGL(CC1),C2) C SCATTER COEFF SCATT(1)=SCATTL(1) + RATIOX*(SCATTR(1)-SCATTL(1)) SCATT(2)=SCATTL(2) + RATIOX*(SCATTR(2)-SCATTL(2)) C ATTENUATION COEFFS BETA(2)= BETAL(2) + RATIOX*(BETAR(2)-BETAL(2)) BETA(3)= BETAL(3) + RATIOX*(BETAR(3)-BETAL(3)) C DENSITY IN BOTTOM LAYER R2= R2L + RATIOX*(R2R-R2L) MINMOD= 1 MAXMOD=MIN(MAXMOD,MODEN-2) C WRITE(LUPRT,370) RKM, H0, H1, H0+H1 ICOUNT=0 USEOLD=0 C CPOLD= CPEIGV IF(RMARCH .EQ. RKMR) THEN FLAGPU= 0.0 JUMP= 0 END IF CALL MODE(*9999, & EK, C0, Z0, C1, Z1, ISO, & MY, MAXMSH, MODEN, & ADA, SPEED, & ZZ, Z0NRM, Z1NRM) C call orthog( EK ) IF(LARGE .LE. 0.0) THEN FLAGPU= 1.0 JUMP= 1 END IF C WRITE(LUPRT,*) ' NEWMOD, TIME FOR MODES AT RANGE: ', C & RKM, CPEIGV - CPOLD 4000 CONTINUE RETURN 9999 RETURN 1 END