C CHARAC.FOR SUBROUTINE CHARAC(EIGVAL,MH0I,MSEDI,DH0I,DSEDI,S2,NOVFL, & ADA) C_____________________________________________________________ C | C This routine calculates the value of the characteristiC | C equation of the matrix. | C_____________________________________________________________| DOUBLE PRECISION H0, H1, ROB, ROS DOUBLE PRECISION TWOPI, PI, OMEGA DOUBLE PRECISION DH0I, DSEDI, U1H0, U1SED, SEDK DOUBLE PRECISION EIGVAL, S0, S1, S2, STIFF DOUBLE PRECISION ADA( * ) DOUBLE PRECISION EIGREF, EIGMIN, EIGMAX, EIGX DOUBLE PRECISION CON1, CON2, CON3, CON4, CON5 COMMON /CONST/ CON1, CON2, CON3, CON4, CON5, SEDK COMMON /DENS/ R0, R1, R2 COMMON /DENS8/ ROB, ROS COMMON /EXPMAX/ TRESH, EPS, RRMAX, EPSDEF COMMON /G/ H0, H1 COMMON /GEN/ EIGREF, EIGMIN, EIGMAX, STIFF COMMON /TRIGON/ TWOPI, PI, OMEGA DATA SCFAC/1.0E-20/ C WATER LAYERS EIGX= EIGVAL NOVFL= 0 S0= 1.D0 S1= (EIGX-ADA(1))*S0 DO 1000 N= 2, MH0I-1 S2= (EIGX-ADA(N))*S1-S0 C IF( ABS(S2) .LT. TRESH ) THEN S0= S1 S1= S2 ELSE NOVFL= NOVFL + 1 S0= S1*SCFAC S1= S2*SCFAC END IF 1000 CONTINUE C SEDIMENT LAYERS IF(MSEDI .GT. 0) THEN C FICTITIOUS POINT FROM WATER TO SEDIMENT S2= (EIGX-ADA(MH0I))*S1 - S0 C DERIVATIVE AT S1 U1H0= (S2-S0)/(2.0*DH0I) U1SED= U1H0 C INTERFACE POINT AS SEEN FROM THE SEDIMENT S1= S1/ROS EIGX= EIGVAL*CON3 C SEDK=((OMEGA*DBLE(H1))/(DBLE(C11)*DFLOAT(MSEDI)))**2 C S2=(U1SED*2*DSEDI+2*S1-(SEDK-EIGX)*S1)/2.0 S2= U1SED*DSEDI - 0.5*(SEDK-EIGX-2.0D0)*S1 IF( ABS(S2) .LT. TRESH ) THEN S0= S1 S1= S2 ELSE NOVFL= NOVFL + 1 S0= S1*SCFAC S1= S2*SCFAC END IF DO 2000 N= MH0I+1, MH0I+MSEDI-1 S2= (EIGX-ADA(N))*S1-S0 IF( ABS(S2) .LT. TRESH ) THEN S0= S1 S1= S2 ELSE NOVFL= NOVFL + 1 S0= S1*SCFAC S1= S2*SCFAC END IF 2000 CONTINUE END IF C BOTTOM IF(EIGMIN .GT. EIGVAL) THEN S2= (EIGX-ADA(MH0I+MSEDI))*S1-2.D0*S0 ELSE S2= (EIGX-ADA(MH0I+MSEDI) + & 2.D0*SQRT(EIGVAL-EIGMIN)*CON5)*S1-2.D0*S0 END IF RETURN END