C START.F SUBROUTINE START( IPROF, SD, RD, NSD, NRD, OPT, & CK, CKTAIL, EK, PHIS, PHIR, M, & ML, FREQ, & A, SUM2A, CPL, CPR, DELTAR, & ALFA, MODAVR, & ADA, SPEED, EIGF, & A3, B3, C3, EE, ZZ, SSOLD, EXCH) C ARRAY CPR : ANALYTICAL GAUSSIAN SOURCE FIELD C ARRAY PR0 : GAUSSIAN SOURCE FIELD AFTER MODAL DECOMPOSITION C OF CPR AND SUBSEQUENT RECOMPOSITION. C ARRAY CPL : PRESSURE ALONG FIRST INTERFACE PARAMETER ( MAXMED= 50 ) INCLUDE 'param.inc' INCLUDE 'acommon.inc' LOGICAL EXCH(*) INTEGER ISD( MAXNSD), IRD( MAXNRD ) REAL ALFA(*), MODAVR(*) REAL WSD( MAXNSD ), WRD( MAXNRD ) REAL RD(*), SUM2A(*) REAL PHIR(MODEN,*) C DOUBLE PRECISION SQ2PI, SQ2PIK DOUBLE PRECISION DZH0, DZH1 DOUBLE PRECISION CC0, CC1 DOUBLE PRECISION TWOPI, PI, OMEGA DOUBLE PRECISION DH0I, DSEDI DOUBLE PRECISION EK(*) DOUBLE PRECISION ADA(*), SPEED(*), EIGF(*) DOUBLE PRECISION A3(*), B3(*), C3(*) DOUBLE PRECISION EE(*), ZZ(*), SSOLD(*) DOUBLE PRECISION KVAL, FRQ COMPLEX*8 SUMH0, SUMH1, SUMTOT COMPLEX CPL(*), CPR(*) COMPLEX PHIS(*), PHIT( MAXNRD ), A(*), & CK(*), CKTAIL(*) COMPLEX KTOP2, KBOT2 CHARACTER MATER( MAXMED )*8 CHARACTER BCBOT * 1, BCTOP * 1 CHARACTER*4 OPT CHARACTER*80 TITLE COMMON /AB/ BETA(-1:3), SCATT(2), C2S, CC0, CC1, C2 COMMON /ACOEFF/ COLEFT, NSTART COMMON /CGAUSS/ GAUSS, TH1, TILT COMMON /FLAGG/ PLANE, NOVOL, NOLOSS, NOCYL, LARGE, SUMPL COMMON /FLAGS/ EK0, SQEK0 COMMON /LUNIT/ LUPLP, LUPLT, LUPRT COMMON /N/ MINMOD, MAXMOD, MODCUT, HBEAM, BPHVEL COMMON /REC1/ TITLE COMMON /STARTR/ MODST COMMON /TRIGON/ TWOPI, PI, OMEGA 100 FORMAT(1H ,I8.8,'.DAT ') 200 FORMAT(1X, 'Range ',F10.1,'m - Profile',I4,' read ',F10.1, & 'm - # modes=', I4) 300 FORMAT(1X,/,' WARNING: THE SOURCE IS ASSUMED TO BE IN THE', & ' SEDIMENT LAYER ',/,10X,' WITH DENSITY ',F8.2,' g/cm3 .',/ ) 310 FORMAT(1X,/,' WARNING: THE SOURCE IS ASSUMED TO BE IN THE', & ' SEDIMENT LAYER ',/,10X,' WITH DENSITY ',E10.2,' g/cm3 .',/ ) 400 FORMAT(1X,/,' WARNING: GAUSSIAN BEAM,', & ' HALF_BEAM AND TILT (deg): ', F10.2,2X,F10.2) 500 FORMAT(1X,/,' *** WARNING : MODAL STARTING FIELD SAVED IN', & ' FILE modst.mod .',/) 600 FORMAT(1X, A72) CURRNT= ARIGHT IF( COLEFT .EQ. 0.0 ) THEN C Initial definition of Source Field ( IPROF = 1 ) CALL GETHDR( SD, NSD, RD, NRD, & WSD, ISD, WRD, IRD, & ZL, ML, FREQ, & NL, NMAT, MATER, NMEDIA, & KTOP2, DEPTHT, BCTOP, & KBOT2, DEPTHB, BCBOT) M= MIN( M, ML ) DEPTTL= 0.0 DEPTBL= AH0H1(CURRNT) IF( SD .LE. AH0( CURRNT ) ) THEN DENS= 1.0 ELSE DENS= AR1( CURRNT ) IF (DENS .LE. 1000 ) THEN PRINT 300, DENS WRITE(LUPRT,300) DENS ELSE PRINT 310, DENS WRITE(LUPRT,310) DENS END IF END IF DO IZ= 1, NL CPL( IZ )= 0.0 END DO SQ2PIK= SQRT(TWOPI*EK0) SQ2PI= SQRT(TWOPI) FRQ= DBLE( FREQ ) MH0I= AMH0(CURRNT) - 1 MSEDI= AMSED(CURRNT) DH0I= ADH0(CURRNT) DSEDI= ADSED(CURRNT) DZH0= ADH0(CURRNT)*AH0(CURRNT) IF(MSEDI .GT. 0) DZH1= ADSED(CURRNT)*AH0(CURRNT) IF( SD .LE. AH0(CURRNT) ) THEN IND= NINT(SD/DZH0) + 1 ELSE IND= AMH0(CURRNT) + (SD-AH0(CURRNT))/DZH1 END IF IF( GAUSS .GT. 0.0 ) THEN C **************************************************** C **************************************************** ICURVE= 0 PRINT 400, TH1,TILT WRITE(LUPRT,400) TH1,TILT AVGK= (TWOPI*FRQ)/CC0 C PLT IS A FLAG TO TRIGGER THE PLOTTING OF THE SOURCE FIELD PLT= 0 CALL SOURCE(SD, ICURVE, TH1, TILT, AVGK, FREQ, AH0(CURRNT), & DZH0, DZH1, AMH0(CURRNT), MSEDI, CPR, ZZ, SSOLD, PLT) C NOTE: ARRAYS ZZ AND SSOLD ARE PASSED TO SUB SOURCE C AS SCRATCH WORKING SPACE DO IZ= 1, NL PR0(IZ)= 0.0 END DO C **************************************************** C **************************************************** END IF EIGF( 1 )= 0.0 C *** Compute the mode alplitudes *** DO 5000 MODE= 1, M CALL EIGVEC( MODE, MH0I, MSEDI, DH0I, DSEDI, & FRQ, ALFA(MODE), & MINMOD, MODAVR, & ADA, SPEED, EIGF(2), & A3, B3, C3, EE, ZZ, SSOLD, EXCH, & KVAL, EIGVL(MODE), EK(MODE) ) IF(NOLOSS .GT. 0) ALFA(MODE)= 0.0 CKTAIL(MODE)= CMPLX(SNGL(KVAL), -ALFA(MODE)) CK(MODE)= CMPLX(SNGL(EK(MODE)), -ALFA(MODE)) CALL GETONE( MODE, NL, WSD, ISD, WRD, IRD, & MATER, NMEDIA, EIGF, & KTOP2, DEPTHT, BCTOP, & KBOT2, DEPTHB, BCBOT, & SD, NSD, RD, NRD, CK, CKTAIL, PHIT, PHIS ) DO IZ= 1, NRD PHIR( MODE, IZ )= real(PHIT( IZ )) END DO IF( GAUSS .GT. 0.0 ) THEN C **************************************************** C **************************************************** SUMH0= 0.0 DO J= 2, AMH0(CURRNT)-1 SUMH0= SUMH0 + CPR(J) * EIGF(J) END DO SUMH0= SUMH0 + 0.5 * EIGF(AMH0(CURRNT))*CPR(AMH0(CURRNT)) SUMH0= SUMH0*DZH0 SUMH1= 0.0 IF( MSEDI .GT. 0 ) THEN SUMH1= 0.5 * EIGF(AMH0(CURRNT))*CPR(AMH0(CURRNT)) DO J= AMH0(CURRNT) + 1, NL-1 SUMH1= SUMH1 + CPR(J) * EIGF(J) END DO SUMH1= SUMH1 + 0.5 * EIGF(NL)*CPR(NL) SUMH1= SUMH1*DZH1/AR1(CURRNT) END IF SUMTOT= (SUMH0 + SUMH1) c warning : verify proper handling of density at source depth c 20/01/1998 fmc A(MODE)= SUMTOT C **************************************************** C **************************************************** ELSE IF ( OPT(1:1) .EQ. 'X' ) THEN C ------ 'X' Plane geometry C A( MODE )= SQRT( TWOPI ) * PHIS( MODE ) / CK( MODE ) A( MODE )= SQ2PIK * PHIS( MODE ) / CK( MODE ) ELSE C ------ 'R' Cylindrical coordinates A( MODE )= SQ2PI * PHIS( MODE ) / SQRT( CK( MODE ) ) ENDIF A( MODE )= A( MODE ) / DENS SUMTOT= A(MODE) END IF IF( (GAUSS .GT. 0) .OR. (MODST .GT. 0) ) THEN C Creation of modal source field by summing up modal C contributions DO IZ= 2, NL PR0( IZ )= PR0( IZ ) + SUMTOT * EIGF( IZ ) END DO END IF C CREATION OF PRESSURE ALONG FIRST INTERFACE CALL FIRSTP( DELTAR, NL, MODE, EIGF, & A, CK, CKTAIL, CPL, & BCTOP, KTOP2, & BCBOT, KBOT2 ) 5000 CONTINUE IF( GAUSS .GT. 0.0 ) THEN C **************************************************** C **************************************************** c write(luprt,*) ' field at range 0 and rd= 1000m' fld= -20*ALOG10( ABS(PR0(IND)) ) fldIN= -20*alog10(ABS(CPR(IND))) cfmc IF( IND .GT. AMH0(CURRNT) ) cfmc & PRINT *, ' WARNING, IND IN SEDIMENT !!!!!!' cfmc WRITE(88,*)' INITIAL FIELD at rd=SD :',SD,'m ,',fldIN,'dB' cfmc WRITE(88,*)' RECOMPOSED FIELD at rd=SD :',SD,'m ,',fld,'dB' PRINT *,' INITIAL FIELD at rd=SD :',SD,'m ,',fldIN,'dB' PRINT *,' RECOMPOSED FIELD at rd=SD :',SD,'m ,',fld,'dB' WRITE(LUPRT,*) & ' INITIAL FIELD at rd=SD :',SD,'m ,',fldIN,'dB' WRITE(LUPRT,*) & ' RECOMPOSED FIELD at rd=SD :',SD,'m ,',fld,'dB' C **************************************************** C **************************************************** END IF IF( MODST .GT. 0 ) THEN OPEN(UNIT= 92, FILE= 'modst.mod', STATUS= 'UNKNOWN', & FORM= 'FORMATTED') WRITE(92,600) TITLE(1:72) WRITE(92,*) ' Frequency (Hz) :', FREQ WRITE(92,*) ' Source depth (m) :', SD WRITE(92,*) ' NUMBER OF MODES IN THE PROBLEM :', M WRITE(92,*) ' Water depth (m) :', AH0(CURRNT) WRITE(92,*) ' Sediment depth (m) :', AH1(CURRNT) WRITE(92,*) ' Total depth (m) :', DEPTHB Write(92,*) ' Number of depth points (water + sed ) :', NL WRITE(92,*) ' DEPTH AND PRESSURE TABLE :' ZERO= 0.0 WRITE(92,*) ZERO, PR0(1) DO IZ= 2, AMH0(CURRNT) WRITE(92,*) SNGL(DZH0*(IZ-1)), PR0(IZ) END DO DO IZ= 1, AMSED(CURRNT) WRITE(92,*) SNGL(DZH1*IZ + AH0(CURRNT)), & PR0(IZ+AMH0(CURRNT)) END DO END IF IPROF= 1 SUM2A( IPROF )= 0.0 END IF RETURN END