C REVISE.FOR SUBROUTINE REVISE(I,FF,NFREQ,ALPHA1, & H0,H0MAX,H1,H0BEG, & NINC,NXVAL, & FLAG,AX,AY,SECD,SRD,HMAX,RMAX,NSECT,* ) C 9999 CHARACTER*5 ALPHA1(NOPT) REAL FLAG(NOPT,ICF), AX(NOPT,6), AY(NOPT,7) REAL SRD(NOPT,KSRD,2) REAL FF(*) REAL SECD(NOPT,3) DOUBLE PRECISION H0, H1, CC0, CC1 COMMON /AB/ BETA(-1:3), SCATT(2), C2S, CC0, CC1, C2 COMMON /CFIELD/ FLDRD(3), PULRD(3) COMMON /LUNIT/ LUPLP, LUPLT, LUPRT COMMON /MODSMP/ MSPH0, MODSED, MSPH1 COMMON /N/ MINMOD, MAXMOD, MODCUT, HBEAM, BPHVEL COMMON /PARA1/ NFF,MSP,NDEP,NOPT,ICF,KSRD 200 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' DEPTH INTERVAL SPECIFICATION NON IMPLEMENTED YET.') 220 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' UNCORRECT DEPTH INTERVAL SPECIFICATION.',/, & ' EXECUTION IS TERMINATED.') 240 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' THE INPUT SPECIFICATION OF THE DEPTH INTERVAL WILL BE', & ' IGNORED ',/,' FOR THIS OPTION. ALL SOURCE/RECEIVER DEPTHS', & ' NOT EXCEEDING ',/,' THE SEDIMENT DEPTH ARE ACCEPTABLE.') 260 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' MAX DEPTH IS REDUCED TO NOT EXCEED SEDIMENT DEPTH.') 280 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' DEFAULT RANGE AXIS SPECIFICATION IS NOT APPLICABLE', & ' FOR ONE RANGE POINT ONLY.',/,' EXECUTION IS TERMINATED.') 300 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' DEFAULT FREQUENCY AXIS SPECIFICATION IS NOT APPLICABLE', & ' FOR ONE FREQUENCY ONLY.',/,' EXECUTION IS TERMINATED.') 320 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' THE INPUT SPECIFICATION OF THE DEPTH INTERVAL IS', & ' MEANINGLESS ',/,' FOR THIS OPTION. ') 410 FORMAT(1H ,/,' EXECUTION TERMINATED BECAUSE OF ARRAY SIZE ', & 'LIMITATIONS.') 415 FORMAT(1H ,//,' REVISE THE "X" AXIS DEFINITION FOR OPTION "',A5, & '" :',/,' THE NUMBER OF SUBDIVISIONS CANNOT EXCEED', I3,' .') 420 FORMAT(1H ,//,' REVISE THE "Y" AXIS DEFINITION FOR OPTION "',A5, & '" :',/,' THE NUMBER OF SUBDIVISIONS CANNOT EXCEED', I3,' .') 440 FORMAT(1H ,//,' REVISE THE "X" AXIS DEFINITION FOR OPTION "',A5, & '" :',/,' EXECUTION IS TERMINATED. ') 710 FORMAT(1H ,///,' REVISE RMIN,RMAX AND/OR "X" AXIS INPUT ', & 'VALUES FOR OPTION ',A6,'.',//, & ' CALCULATION:',3X,'MINIMUM RANGE',2X,F11.2,2X,'MAXIMUM RANGE', & 3X,F11.2,/, & ' PLOT AXIS :',3X,'LEFT HAND VALUE',1X,F11.2,2X, & 'RIGHT HAND VALUE',1X,F11.2,/,' EXECUTION IS TERMINATED.',//) 720 FORMAT(1H ,///,' REVISE FREQUENCY AND/OR "X" AXIS INPUT VALUES', & ' FOR OPTION ',A6,'.',//, & ' CALCULATION:',3X,'MINIMUM FREQ ',2X,F11.2,2X,'MAXIMUM FREQ ', & 3X,F11.2,/, & ' "X" AXIS :',3X,'LEFT HAND VALUE',1X,F11.2,2X, & 'RIGHT HAND VALUE', & 1X,F11.2,/,' EXECUTION IS TERMINATED.',//) 730 FORMAT(1H ,///,' REVISE FREQUENCY AND/OR YAXIS INPUT VALUES FOR', & ' OPTION ',A6,'.',//, & ' CALCULATION:',3X,'MINIMUM FREQ ',2X,F11.2,2X,'MAXIMUM FREQ ', & 3X,F11.2,/, & ' "Y" AXIS :',3X,'MIN VALUE',6X,F11.2,3X,'MAX VALUE',7X,F11.2, & /,' EXECUTION IS TERMINATED.',//) 740 FORMAT(1X ,/,' WARNING FOR OPTION "',A5,'" :',/, & ' FREQUENCY VALUES ON LOG AXIS MUST BE GREATER THAN ZERO.',/, & ' EXECUTION IS TERMINATED.') C C FLAG(IOP,1) => Y/N FOR OPTION ALPHA1(IOP) C FLAG(IOP,2) => PRT C FLAG(IOP,3) => PLT C FLAG(IOP,4) => COH C FLAG(IOP,5) => INC C FLAG(IOP,6) => COL C MODSED=0 IF(FLAG(I,3) .GT. 0.) THEN C REVISING "X" AXIS C TLRAN GROUP TLAVR TLDEP TLAVF ANGLE PHASE CONDR CONFR C PROFL MODES CONDA HORWN PARAM FIELD PULSE CONSV GO TO(2001 ,2002 ,2001 ,2004 ,2005 ,2004 ,2004 ,2001 ,2001 , & 2010 ,2011 ,2001 ,2004 ,3000 ,3000 ,3000 ,2017),I 2001 CONTINUE IF(AX(I,5) .LT. 1.0) THEN IF(SECD(I,1) .NE. SECD(I,2)) THEN C TAKE DEFAULT ACTION AX(I,1)=SECD(I,1) AX(I,2)=SECD(I,2) AX(I,3)=ABS( (AX(I,2)-AX(I,1)) / AX(I,3) ) AX(I,4)=ABS(AX(I,2)-AX(I,1))/5. ELSE WRITE(LUPRT,280) ALPHA1(I) RETURN END IF ELSE AX(I,3)=ABS((AX(I,2)-AX(I,1))/AX(I,3)) IF(MAX(SECD(I,1),AX(I,1)) .LT. MIN(AX(I,2),SECD(I,2))) THEN IF(FLAG(I,2) .LE. 0.0) THEN SECD(I,1)=MAX(AX(I,1),SECD(I,1)) SECD(I,2)=MIN(AX(I,2),SECD(I,2)) END IF ELSE WRITE(LUPRT,710) ALPHA1(I),SECD(I,1),SECD(I,2),AX(I,1),AX(I,2) RETURN END IF END IF GO TO 3000 2002 CONTINUE IF(AX(I,5) .LT. 1.0) THEN IF(NFREQ .GT. 1) THEN AX(I,1)=FF(1) AX(I,2)=FF(NFREQ) AX(I,3)=ABS( (AX(I,2)-AX(I,1)) / AX(I,3) ) AX(I,4)=ABS( AX(I,2)-AX(I,1) )/5.0 ELSE WRITE(LUPRT,300) ALPHA1(I) RETURN END IF ELSE AX(I,3)=ABS((AX(I,2)-AX(I,1))/AX(I,3)) IF(MAX(FF(1),AX(I,1)) .GE. MIN(AX(I,2),FF(NFREQ))) THEN WRITE(LUPRT,720) ALPHA1(I),FF(1),FF(NFREQ),AX(I,1),AX(I,2) RETURN END IF END IF GO TO 3000 2004 CONTINUE AX(I,3)=ABS( (AX(I,2)-AX(I,1)) / AX(I,3) ) GO TO 3000 2005 CONTINUE IF(AX(I,5).LT. 1.0) THEN IF(NFREQ .GT. 1) THEN AX(I,1)=FF(1) AX(I,2)=FF(NFREQ) AX(I,3)=AX(I,3)/(LOG(AX(I,2)/AX(I,1))/LOG(2.0)) AX(I,4)=1.0 ELSE WRITE(LUPRT,300) ALPHA1(I) RETURN END IF ELSE IF(AX(I,1) .LE. 0.0) THEN WRITE(LUPRT,730) ALPHA1(I) RETURN ELSE AX(I,3)= AX(I,3)/(LOG(AX(I,2)/AX(I,1))/LOG(2.0)) NXVAL=ALOG(AX(I,2)/AX(I,1))/ALOG(2.0)*AX(I,4)+1 IF(NXVAL .GT. NINC) THEN WRITE(LUPRT,415) ALPHA1(I), NINC WRITE(LUPRT,410) RETURN END IF END IF END IF GO TO 3000 2010 CONTINUE IF(NSECT .GT. 1) THEN IF(AX(I,5) .LT. 1.0) THEN AX(I,1)= 0. AX(I,2)= RMAX AX(I,4)=ABS(AX(I,2)-AX(I,1))/5. ELSE IF( (AX(I,1) .GE. AX(I,2)) .OR. (AX(I,2) .LE. 0.0) ) THEN WRITE(LUPRT,440) ALPHA1(I) RETURN END IF END IF END IF GO TO 3000 2011 CONTINUE C MODES ARE PLOTTED IN GROUPS OF 6 AX(I,3)=ABS(6.0*(AX(I,2)-AX(I,1))/AX(I,3)) GO TO 3000 2017 CONTINUE IF(NSECT .GT. 1) THEN IF(AX(I,5) .LT. 1.0) THEN AX(I,1)= 0. AX(I,2)= RMAX AX(I,4)=ABS(AX(I,2)-AX(I,1))/5. ELSE IF( (AX(I,1) .GE. AX(I,2)) .OR. (AX(I,2) .LE. 0.0) ) THEN WRITE(LUPRT,440) ALPHA1(I) RETURN ELSE AX(I,3)=ABS( (AX(I,2)-AX(I,1)) / AX(I,3) ) END IF END IF END IF GO TO 3000 END IF 3000 CONTINUE C REVISING "Y" AXIS IF(FLAG(I,3) .LT. 1.) THEN C TLRAN GROUP TLAVR TLDEP TLAVF ANGLE PHASE CONDR CONFR C PROFL MODES CONDA HORWN PARAM FIELD PULSE CONSV GO TO(4000 ,4000 ,4000 ,1000 ,4000 ,4000 ,1000 ,1000 ,4000 , & 4000 ,1000 ,4000 ,4000 ,4000 ,4000 ,4000 ,1000),I END IF 1000 CONTINUE C TLRAN GROUP TLAVR TLDEP TLAVF ANGLE PHASE CONDR CONFR C PROFL MODES CONDA HORWN PARAM FIELD PULSE CONSV GO TO(3001 ,3001 ,3001 ,3004 ,3001 ,3001 ,3004 ,3004 ,3009 , & 3010 ,3011 ,3012 ,3013 ,4000 ,4000 ,4000 ,3004),I 3001 CONTINUE AY(I,3)=ABS((AY(I,2)-AY(I,1))/AY(I,3)) GO TO 4000 3004 CONTINUE IF(AY(I,5) .LE. 0.0) THEN C AY(I,6), AY(I,7) are used for controlling min-max C calculation interval over depth. IF(AY(I,7) .LE. 0.0) THEN AY(I,1)=0. AY(I,2)=HMAX AY(I,3)=ABS( (AY(I,2)-AY(I,1))/AY(I,3)) AY(I,4)=ABS(AY(I,2)-AY(I,1))/5.0 AY(I,5)= 1. CCC AY(I,6)= AY(I,1) CCC AY(I,7)= AY(I,2) ELSE CCC AY(I,6)= MAX(0.0, AY(I,6)) CCC AY(I,7)= MIN(HMAX, AY(I,7)) AY(I,1)= AY(I,6) AY(I,2)= AY(I,7) AY(I,3)=ABS( (AY(I,2)-AY(I,1))/AY(I,3)) AY(I,4)=ABS(AY(I,2)-AY(I,1))/5.0 AY(I,5)= 1.0 END IF ELSE AY(I,3)=ABS((AY(I,2)-AY(I,1))/AY(I,3)) IF(AY(I,2) .GT. H0BEG) MODSED=1 CCC IF(AY(I,7) .LE. 0.0) THEN CCC AY(I,6)= MAX(0.0, AY(I,1)) CCC AY(I,7)= MIN(HMAX, AY(I,2)) CCC END IF END IF GO TO 4000 3009 CONTINUE IF(AY(I,5) .LE. 0.0) THEN AY(I,1)=FF(1) AY(I,2)=FF(NFREQ) END IF GO TO 4000 3010 CONTINUE IF( NSECT .EQ. 1 ) THEN IF(AY(I,5) .LE. 0.0) THEN IF(AY(I,7) .LE. 0.0) THEN AY(I,1)=0. AY(I,2)=H0 AY(I,4)=ABS(AY(I,1)-AY(I,2))/5. END IF ELSE END IF GO TO 4000 ELSE IF(AY(I,5) .LE. 0.0) THEN IF(AY(I,7) .LE. 0.0) THEN AY(I,1)=0. AY(I,2)=H0MAX AY(I,4)=ABS(AY(I,1)-AY(I,2))/5. END IF ELSE END IF GO TO 4000 END IF 3011 CONTINUE IF(AY(I,5) .LE. 0.) THEN IF(AY(I,7) .LE. 0.0) THEN AY(I,1)=0. AY(I,2)=H0BEG AY(I,3)=ABS(AY(I,1)-AY(I,2))/12.0 AY(I,4)=ABS(AY(I,1)-AY(I,2))/5. END IF ELSE AY(I,3)=ABS((AY(I,2)-AY(I,1))/AY(I,3)) IF(AY(I,2) .GT. H0) MODSED=1 END IF GO TO 4000 3012 CONTINUE IF(AY(I,5) .LE. 0.0) THEN IF(NFREQ .GT. 1) THEN AY(I,1)=FF(1) AY(I,2)=FF(NFREQ) AY(I,3)=ABS((AY(I,1)-AY(I,2))/AY(I,3)) AY(I,4)=ABS(AY(I,2)-AY(I,1))/5.0 ELSE WRITE(LUPRT,300) ALPHA1(I) RETURN END IF ELSE YMIN=MIN(AY(I,1),AY(I,2)) YMAX=MAX(AY(I,1),AY(I,2)) IF(MAX(FF(1),YMIN) .GE. MIN(YMAX,FF(NFREQ))) THEN WRITE(LUPRT,740) ALPHA1(I),FF(1),FF(NFREQ),AY(I,1),AY(I,2) RETURN ELSE AY(I,3)=ABS((AY(I,1)-AY(I,2))/AY(I,3)) END IF END IF GO TO 4000 3013 CONTINUE GO TO 4000 4000 CONTINUE C REVISING "DEPTH OR FREQUENCY INTERVAL" C TLRAN GROUP TLAVR TLDEP TLAVF ANGLE PHASE CONDR CONFR C PROFL MODES CONDA HORWN PARAM FIELD PULSE CONSV GO TO(5001 ,5002 ,5003 ,5004 ,5003 ,5001 ,5004 ,5004 ,5009 , & 5004 ,5004 ,5003 ,9999 ,9999 ,5001 ,5001 ,5004),I C 5001 CONTINUE IF(AY(I,7) .GT. 0.0) WRITE(LUPRT,240) ALPHA1(I) AY(I,6)=0. AY(I,7)=0. GO TO 6000 5002 CONTINUE IF(AY(I,7) .GT. 0.0) WRITE(LUPRT,320) ALPHA1(I) AY(I,6)=0. AY(I,7)=0. GO TO 6000 5003 CONTINUE IF(AY(I,7) .GT. 0.0) WRITE(LUPRT,200) ALPHA1(I) AY(I,6)=0. AY(I,7)=H0 GO TO 6000 5004 CONTINUE IF(AY(I,7) .LE. 0.0) THEN CCC IF(AY(I,5) .GT. 0.0) THEN AY(I,6)= MAX(0.0, AY(I,1)) AY(I,7)= MIN(HMAX, AY(I,2)) CCC ELSE CCC AY(I,7)= HMAX CCC END IF ELSE IF(AY(I,7) .GT. HMAX) THEN WRITE(LUPRT,260) ALPHA1(I) AY(I,7)=HMAX MODSED=1 IF(AY(I,7) .LT. AY(I,6)) THEN WRITE(LUPRT,220) ALPHA1(I) RETURN END IF ELSE IF(AY(I,7) .GT. H0) MODSED=1 END IF END IF GO TO 6000 5009 CONTINUE 6000 CONTINUE IF( H1 .EQ. 0.0 ) THEN MODSED=0 RETURN 1 END IF IF(MODSED .LE. 0) THEN DO 8200 K=1,KSRD IF(SRD(I,K,1) .LE. 0) GO TO 8300 DO 8100 J=1,2 IF(SRD(I,K,J) .GT. H0BEG) THEN MODSED=1 GO TO 9999 END IF 8100 CONTINUE 8200 CONTINUE 8300 CONTINUE IF(FLDRD(2) .GT. H0) MODSED=1 IF(PULRD(2) .GT. H0) MODSED=1 END IF 9999 CONTINUE RETURN 1 END