C FNDVEC.FOR SUBROUTINE FNDVEC( MODQTY, DH0, DSED, MY, ZZ ) C Saving data for final computation of the eigenvector INCLUDE 'param.inc' INCLUDE 'acommon.inc' DOUBLE PRECISION MY(MAXMSH,MODEN) DOUBLE PRECISION H0, H1, CC0, CC1 DOUBLE PRECISION DH0(8), DSED(8) DOUBLE PRECISION ZZ(NPOINT) COMMON /AB/ BETA(-1:3), SCATT(2), C2S, CC0, CC1, C2 COMMON /DENS/ R0, R1, R2 COMMON /G/ H0, H1 COMMON /LUNIT/ LUPLP, LUPLT, LUPRT COMMON /MSHIST/ MH0(8), MSED(8), ICOUNT, USEOLD COMMON /N/ MINMOD, MAXMOD, MODCUT, HBEAM, BPHVEL COMMON /PARAM4/ MESHI, MESHN 640 FORMAT(1X,/,' *** ERROR DETECTED IN SUB FNDVEC ***',/, & ' **** TOO MANY DATA POINTS FOR ARRAY ZZ. *** ',/, & ' **** either select DZH0 > (H0+H1)/',I4,' or increase', & ' the array size.',/, & ' Required number of data points : ',I4,/, & ' Max allowed number of data points : ',I4,/, & ' H0 = ', F10.3,' m',/, & ' H1 = ', F10.3,' m',/, & ' allowed DZH0 > ', F10.3,' m',/, & ' **** EXECUTION IS TERMINATED ***** ') LTOT= MH0(MESHI) + MSED(MESHI) C NTOT= MAX( LTOT + 1, 100, 2*(MAXMOD-MINMOD)+1 ) AH0(ARIGHT)= H0 AH1(ARIGHT)= H1 AMH0(ARIGHT)= MH0(MESHI) + 1 AMSED(ARIGHT)= MSED(MESHI) IF(H1 .LE. 0.0) THEN NMEDIA = 1 ELSE NMEDIA = 2 AR1(ARIGHT)= R1 END IF C ********************************************************************* ANMED(ARIGHT)= NMEDIA ALTOT(ARIGHT)= LTOT + 1 AMINM(ARIGHT)= MINMOD AC2(ARIGHT)= C2 AC2S(ARIGHT)= C2S AR2(ARIGHT)= R2 AH0H1(ARIGHT)= SNGL(H0+H1) C ********************************************************************* IF(LTOT+1 .LE. NPOINT) THEN ZZ( 1 ) = 0.0 DO 1200 IZ= 1, MH0(MESHI) ZZ( IZ + 1 )= DH0( MESHI ) * IZ * H0 1200 CONTINUE ISTART = MH0( MESHI ) + 1 DO 1400 IZ= 1, MSED(MESHI) ZZ( ISTART + IZ )= DSED( MESHI ) * IZ * H0 + H0 1400 CONTINUE ELSE WRITE(LUPRT,640) NPOINT,LTOT+1, NPOINT, & H0, H1, (H0+H1)/(NPOINT-1) PRINT 640, NPOINT, LTOT+1, NPOINT, & H0, H1, (H0+H1)/(NPOINT-1) STOP END IF C ********************************************************************* MAXMOD=0 C IFIN= MH0( MESHI ) + MSED ( MESHI ) ADH0(ARIGHT)= DH0(MESHI) ADSED(ARIGHT)= DSED(MESHI) DO 2400 M=1,MODQTY EIGVL(M)= MY(MESHI,M) IF(MAXMOD .GT. 0) GO TO 2600 2400 CONTINUE MAXMOD=MINMOD+MODQTY-1 2600 CONTINUE C ********************************************************************* AMQTY( ARIGHT )= MODQTY C ********************************************************************* RETURN END