C PROF_EQV.FOR C SUBROUTINE PROFEQ(NDL,ZIL,CIL,NDR,ZIR,CIR,NDLR,ZLR,CL,CR) C C a) Given two SVPs, extending at different depths, new data points C obtained from the deepest SVP are added to the shallowest one C to make it cover the max depth between them.. C The new points maintain the slope they have in the deepest SVP C but are adjusted to match the last point in the shallowest SVP. C b) The two SVPs are modified as necessary to contain C SVP data points at exactly the same depth coordinates. C The purpose here is to speed up subsequent interpolations. C C INPUT: C NDL = NUMBER OF DATA POINTS IN FIRST SVP (left) C ZIL = DEPTH IN FIRST SVP (left) C CIL = SOUND SPEED IN FIRST SVP (left) C NDR = NUMBER OF DATA POINTS IN SECOND SVP (right) C ZIR = DEPTH IN SECOND SVP (right) C CIR = SOUND SPEED IN SECOND SVP (right) C C OUTPUT : C NDLR = NUMBER OF DATA POINTS IN FINAL SVPs C ZLR = DEPTH IN FINAL SVPs C CL = SOUND SPEED IN FINAL SVP (left) C CR = SOUND SPEED IN FINAL SVP (right) DOUBLE PRECISION DELTAC, CINT1, CINT2 DOUBLE PRECISION ZIL(1), CIL(1), ZIR(1), CIR(1) DOUBLE PRECISION ZLR(1), CL(1), CR(1) NMAX=NDL C EXTEND shallowest SVP (STEP a) IF(NDL.EQ.0) THEN IF(NDR.EQ.0) THEN NDLR=0 RETURN ELSE NDLR=NDR DO 1000 I=1,NDR ZLR(I)=ZIR(I) CL(I)=CIR(I) CR(I)=CIR(I) 1000 CONTINUE RETURN END IF ELSE IF(NDR.EQ.0) THEN NDLR=NDL DO 2000 I=1,NDL ZLR(I)=ZIL(I) CR(I)=CIL(I) CL(I)=CIL(I) 2000 CONTINUE RETURN ELSE IF(ZIL(NDL) .LT. ZIR(NDR)) THEN DO 2400 I2=1,NDR IF(ZIL(NDL) .LT. ZIR(I2)) THEN CINT2= CIR(I2-1) + & (CIR(I2)-CIR(I2-1)) * ( (ZIL(NDL)-ZIR(I2-1)) / & (ZIR(I2)-ZIR(I2-1)) ) DELTAC=CINT2-CIL(NDL) DO 2200 I1=I2,NDR NMAX= NMAX + 1 ZIL(NMAX)=ZIR(I1) 2200 CIL(NMAX)=CIR(I1)-DELTAC GO TO 3000 END IF 2400 CONTINUE ELSE IF(ZIR(NDR) .LT. ZIL(NDL)) THEN DO 2800 I1=1,NDL IF(ZIR(NDR) .LT. ZIL(I1)) THEN CINT1= CIL(I1-1) + & (CIL(I1)-CIL(I1-1)) * ( (ZIR(NDR)-ZIL(I1-1)) / & (ZIL(I1)-ZIL(I1-1)) ) DELTAC=CINT1-CIR(NDR) DO 2600 I2=I1,NDL INDEX=NDR+I2-I1+1 ZIR(INDEX)=ZIL(I2) 2600 CIR(INDEX)=CIL(I2)-DELTAC GO TO 3000 END IF 2800 CONTINUE END IF 3000 CONTINUE END IF END IF C SUBTABULATE FINAL SVPs AT SAME DEPTH COORDINATES C THE ALGORYTHM USES ZIL AS REFERENCE ZLR(1)=0.0 CL(1)=CIL(1) CR(1)=CIR(1) NDLR=1 I2=2 DO 4400 I1=2,NMAX 4200 NDLR=NDLR+1 IF(ZIL(I1) .LT. ZIR(I2)) THEN ZLR(NDLR)=ZIL(I1) CL(NDLR)=CIL(I1) CR(NDLR)=CIR(I2-1)+(CIR(I2)-CIR(I2-1))*(ZIL(I1)-ZIR(I2-1))/ & (ZIR(I2)-ZIR(I2-1)) ELSE IF(ZIL(I1) .EQ. ZIR(I2)) THEN ZLR(NDLR)=ZIL(I1) CL(NDLR)=CIL(I1) CR(NDLR)=CIR(I2) I2=I2+1 ELSE ZLR(NDLR)=ZIR(I2) CL(NDLR)=CIL(I1-1)+(CIL(I1)-CIL(I1-1))*(ZIR(I2)-ZIL(I1-1))/ & (ZIL(I1)-ZIL(I1-1)) CR(NDLR)=CIR(I2) I2=I2+1 GO TO 4200 END IF 4400 CONTINUE RETURN END