SUBROUTINE READMO IMPLICIT DOUBLE PRECISION (A-H, O-Z) INCLUDE 'SIZES' C C MODULE TO READ IN GEOMETRY FILE, OUTPUT IT TO THE USER, C AND CHECK THE DATA TO SEE IF IT IS REASONABLE. C EXIT IF NECESSARY. C C C C ON EXIT NATOMS = NUMBER OF ATOMS PLUS DUMMY ATOMS (IF ANY). C KEYWRD = KEYWORDS TO CONTROL CALCULATION C KOMENT = COMMENT CARD C TITLE = TITLE CARD C LABELS = ARRAY OF ATOMIC LABELS INCLUDING DUMMY ATOMS. C GEO = ARRAY OF INTERNAL COORDINATES. C LOPT = FLAGS FOR OPTIMIZATION OF MOLECULE C NA = ARRAY OF LABELS OF ATOMS, BOND LENGTHS. C NB = ARRAY OF LABELS OF ATOMS, BOND ANGLES. C NC = ARRAY OF LABELS OF ATOMS, DIHEDRAL ANGLES. C LATOM = LABEL OF ATOM OF REACTION COORDINATE. C LPARAM = RC: 1 FOR LENGTH, 2 FOR ANGLE, AND 3 FOR DIHEDRAL C REACT(200)= REACTION COORDINATE PARAMETERS C LOC(1,I) = LABEL OF ATOM TO BE OPTIMIZED. C LOC(2,I) = 1 FOR LENGTH, 2 FOR ANGLE, AND 3 FOR DIHEDRAL. C NVAR = NUMBER OF PARAMETERS TO BE OPTIMIZED. C XPARAM = STARTING VALUE OF PARAMETERS TO BE OPTIMIZED. C ************************************************************************ C *** INPUT THE TRIAL GEOMETRY \IE. KGEOM=0\ C LABEL(I) = THE ATOMIC NUMBER OF ATOM\I\. C = 99, THEN THE I-TH ATOM IS A DUMMY ATOM USED ONLY TO C SIMPLIFY THE DEFINITION OF THE MOLECULAR GEOMETRY. C GEO(1,I) = THE INTERNUCLEAR SEPARATION \IN ANGSTROMS\ BETWEEN ATOMS C NA(I) AND (I). C GEO(2,I) = THE ANGLE NB(I):NA(I):(I) INPUT IN DEGREES; STORED IN C RADIANS. C GEO(3,I) = THE ANGLE BETWEEN THE VECTORS NC(I):NB(I) AND NA(I):(I) C INPUT IN DEGREES - STORED IN RADIANS. C LOPT(J,I) = -1 IF GEO(J,I) IS THE REACTION COORDINATE. C = +1 IF GEO(J,I) IS A PARAMETER TO BE OPTIMIZED C = 0 OTHERWISE. C *** NOTE: MUCH OF THIS DATA IS NOT INCLUDED FOR THE FIRST 3 ATOMS. C ATOM1 INPUT LABELS(1) ONLY. C ATOM2 INPUT LABELS(2) AND GEO(1,2) SEPARATION BETWEEN ATOMS 1+2 C ATOM3 INPUT LABELS(3), GEO(1,3) SEPARATION BETWEEN ATOMS 2+3 C AND GEO(2,3) ANGLE ATOM1 : ATOM2 : ATOM3 C ************************************************************************ C DIMENSION LOPT(3,NUMATM) CHARACTER KEYWRD*241, KOMENT*81, TITLE*81, BANNER*80, LINE*80 CHARACTER KEYS(80)*1, SPACE*1, SPACE2*2, CH*1, CH2*2 CHARACTER ELEMNT*2, IDATE*24, GETNAM*80 CHARACTER*50 CTYPE(100) COMMON /KEYWRD/ KEYWRD COMMON /TITLES/ KOMENT,TITLE COMMON /GEOVAR/ NVAR, LOC(2,MAXPAR), IDUMY, XPARAM(MAXPAR) COMMON /PATH / LATOM,LPARAM,REACT(200) COMMON /MESH / LATOM1, LPARA1, LATOM2, LPARA2 COMMON /ELEMTS/ ELEMNT(107) COMMON /OKMANY/ ISOK COMMON /ISTOPE/ AMS(107) COMMON /GEOM / GEO(3,NUMATM) COMMON /NUMCAL/ NUMCAL COMMON /GEOKST/ NATOMS,LABELS(NUMATM), 1NA(NUMATM),NB(NUMATM),NC(NUMATM) COMMON /GEOSYM/ NDEP, LOCPAR(MAXPAR), IDEPFN(MAXPAR), 1 LOCDEP(MAXPAR) COMMON /SURF / SURFCT,SURFACT(NUMATM),ATAR(NUMATM),ITYPE(NUMATM) LOGICAL INT, AIGEO, ISOK SAVE SPACE, SPACE2, IREACT, INT DIMENSION COORD(3,NUMATM),VALUE(40) EQUIVALENCE (KEYS(1),KEYWRD) DATA SPACE, SPACE2/' ',' '/ DATA CTYPE/'any CARBON or attached HYDROGEN ' 2 ,'HYDROGEN attached to a nitrogen ' 3 ,'HYDROGEN attached to an oxygen ' 4 ,'HYDROGEN attached to a sulfur ' 5 ,'sp3 or amide NITROGEN ' 6 ,'sp2 or sp or aromatic NITROGEN ' 7 ,'sp3 OXYGEN ' 8 ,'sp2 OXYGEN ' 9 ,'FLUORINE ATOM ' t ,'SULFUR ATOM ' 1 ,'CHLORINE ATOM ' 2 ,'BROMINE ATOM ' 3 ,'IODINE ATOM ' 4 ,87*' '/ SAVE C CONVTR=2.D0*ASIN(1.D0)/180.D0 AIGEO=.FALSE. 10 CONTINUE C CALL GETTXT IF(INDEX(KEYWRD,'ECHO').NE.0)THEN REWIND 5 ISOK=.FALSE. DO 50 I=1,1000 READ(5,'(A)',END=60)KEYWRD DO 20 J=80,2,-1 20 IF(KEYWRD(J:J).NE.' ')GOTO 30 J=1 30 DO 40 K=1,J 40 IF(ICHAR(KEYWRD(K:K)).LT.32)KEYWRD(K:K)='*' WRITE(6,'(1X,A)')KEYWRD(1:J) 50 CONTINUE 60 CONTINUE REWIND 5 CALL GETTXT ENDIF IF(INDEX(KEYWRD,'ECHO').NE.0)WRITE(6,'(''1'')') IF(KEYWRD(1:1) .NE. SPACE) THEN CH=KEYWRD(1:1) KEYWRD(1:1)=SPACE DO 70 I=2,239 CH2=KEYWRD(I:I) KEYWRD(I:I)=CH CH=CH2 IF(KEYWRD(I+1:I+2) .EQ. SPACE2) THEN KEYWRD(I+1:I+1)=CH GOTO 80 ENDIF 70 CONTINUE CH2=KEYWRD(240:240) KEYWRD(240:240)=CH KEYWRD(241:241)=CH2 80 CONTINUE ENDIF IF(KOMENT(1:1) .NE. SPACE) THEN CH=KOMENT(1:1) KOMENT(1:1)=SPACE DO 90 I=2,79 CH2=KOMENT(I:I) KOMENT(I:I)=CH CH=CH2 IF(KOMENT(I+1:I+2) .EQ. SPACE2) THEN KOMENT(I+1:I+1)=CH GOTO 100 ENDIF 90 CONTINUE CH2=KOMENT(80:80) KOMENT(80:80)=CH KOMENT(81:81)=CH2 100 CONTINUE ENDIF IF(TITLE(1:1) .NE. SPACE) THEN CH=TITLE(1:1) TITLE(1:1)=SPACE DO 110 I=2,79 CH2=TITLE(I:I) TITLE(I:I)=CH CH=CH2 IF(TITLE(I+1:I+2) .EQ. SPACE2) THEN TITLE(I+1:I+1)=CH GOTO 120 ENDIF 110 CONTINUE CH2=TITLE(80:80) TITLE(80:80)=CH TITLE(81:81)=CH2 120 CONTINUE ENDIF DO 121 I=1,200 121 REACT(I)=0.D0 LATOM=0 LPARAM=0 IF(INDEX(KEYWRD,'OLDGEO').EQ.0) THEN NVAR=0 NDEP=0 IF(AIGEO.OR.INDEX(KEYWRD,'AIGIN').NE.0)THEN CALL GETGEG(5,LABELS,GEO, NA,NB,NC,AMS,NATOMS,INT) IF(NVAR.EQ.0)THEN DO 122 J=1,3 DO 122 I=1,NATOMS 122 LOPT(J,I)=0 ENDIF ELSE CALL GETGEO(5,LABELS,GEO,LOPT,NA,NB,NC,AMS,NATOMS,INT) IF(NATOMS.LT.0)THEN REWIND 5 IF(NUMCAL.NE.1)THEN WRITE(6,'(//,A)')' GAUSSIAN INPUT REQUIRES STAND-ALO 1NE JOB' WRITE(6,'(/,A)')' OR KEYWORD "AIGIN"' STOP ENDIF AIGEO=.TRUE. GOTO 10 ENDIF ENDIF IF(NATOMS.EQ.0)STOP ELSE DEGREE=90.D0/ASIN(1.D0) IF(NA(1).EQ.99)THEN DO 128 I=1,NATOMS DO 128 J=1,3 LOPT(J,I)=1 128 COORD(J,I)=GEO(J,I) LOPT(1,1)=0 LOPT(2,1)=0 LOPT(3,1)=0 LOPT(2,2)=0 LOPT(3,2)=0 LOPT(3,3)=0 CALL XYZINT(COORD,NATOMS,NA,NB,NC,DEGREE,GEO) ELSE DO 130 I=1,NATOMS DO 130 J=2,3 130 GEO(J,I)=GEO(J,I)*DEGREE ENDIF ENDIF IF(INDEX(KEYWRD,'FORCE').NE.0 .AND. LABELS(NATOMS).EQ.107) THEN DO 131 I=1,NA(NATOMS) IF(LABELS(I).EQ.99)THEN WRITE(6,'(A)')' NO DUMMY ATOMS ALLOWED BEFORE TRANSLATION' WRITE(6,'(A)')' ATOM IN A FORCE CALCULATION' STOP ENDIF 131 CONTINUE ENDIF C C C OUTPUT FILE TO UNIT 6 C C WRITE HEADER IDATE=' ' CALL DATE(IDATE) WRITE(6,'(1X,15(''*****''),''****'')') C C CHANGE THE FOLLOWING LINE TO SUIT LOCAL ENVIRONMENT, IF DESIRED C BANNER=' ** FRANK J. SEILER RES. LAB., U.S. AIR FORCE '// 1'ACADEMY, COLO. SPGS., CO. 80840 **' WRITE(6,'(A)')BANNER C C THE BANNER DOES NOT APPEAR ANYWHERE ELSE. C WRITE(6,'(1X,79(''*''))') LINE=' MNDO' IF(INDEX(KEYWRD,'MINDO') .NE. 0) LINE='MINDO/3' IF(INDEX(KEYWRD,'AM1') .NE. 0) LINE=' AM1' IF(INDEX(KEYWRD,'PM3') .NE. 0) LINE=' PM3' WRITE(6,'(/29X,A,'' CALCULATION RESULTS'',28X,///1X,15(''*****'') 1,''****'' )')LINE(:7) WRITE(6,'('' *'',10X,''MOPAC: VERSION '',F5.2, 115X,''CALC''''D. '',A)') VERSON, IDATE C C CONVERT ANGLES TO RADIANS DO 140 J=2,3 C$DOIT VBEST DO 140 I=1,NATOMS GEO(J,I) = GEO(J,I) * CONVTR 140 CONTINUE C C CHECK DATA C DO 150 I=1,NATOMS IF (LABELS(I) .LE. 0 ) THEN WRITE(6,'('' ATOMIC NUMBER OF '',I3,'' ?'')') LABELS(I) IF(I.EQ.1) THEN WRITE(6,'(A)')' THIS WAS THE FIRST ATOM' ELSE WRITE(6,'(A)')' GEOMETRY UP TO, BUT NOT INCLUDING, THE 1'//' FAULTY ATOM' NATOMS=I-1 CALL GEOUT(6) ENDIF STOP ENDIF IF ( NA(I).GE.I.OR. NB(I).GE.I.OR. NC(I).GE.I 1 .OR. (NA(I).EQ.NB(I)) .AND. I.GT.1 2 .OR. (NA(I).EQ.NC(I).OR.NB(I).EQ.NC(I)) .AND. I.GT.2 3 .OR. NA(I)*NB(I)*NC(I).EQ.0 .AND. I.GT.3) THEN WRITE(6,'('' ATOM NUMBER '',I3,'' IS ILL-DEFINED'')') I IF(I.EQ.1)STOP WRITE(6,'(/,'' GEOMETRY READ IN'',/)') CALL GEOUT(6) STOP ENDIF 150 CONTINUE C C WRITE KEYWORDS BACK TO USER AS FEEDBACK CALL WRTKEY(KEYWRD) WRITE(6,'(1X,14(''*****''),''*'',I3.3,''BY'',I3.3)')MAXHEV,MAXLIT IF(INDEX(KEYWRD,'AQUO').NE.0) WRITE (6,86) 86 FORMAT(1X,"* AQUO - AM1-SM1 calculations will be performed") IF(INDEX(KEYWRD,'ENVAQ').NE.0) WRITE (6,88) 88 FORMAT(1X,"* ENVAQ - AM1-SM1a calculations will be performed") WRITE(6,'(1X,80(''*''))') C C C FILL IN GEO MATRIX IF NEEDED IF(INDEX(KEYWRD,'OLDGEO').EQ.0.AND.INDEX(KEYWRD,'SYM') .NE. 0 1.AND. NDEP.EQ.0) CALL GETSYM IF(NDEP.NE.0) CALL SYMTRY C C INITIALIZE FLAGS FOR OPTIMIZE AND PATH IFLAG = 0 LATOM = 0 NUMAT=0 IF(NVAR.NE.0)THEN NUMAT=NATOMS ELSE DO 180 I=1,NATOMS IF(LABELS(I).NE.99.AND.LABELS(I).NE.107)NUMAT=NUMAT+1 DO 180 J=1,3 IF (LOPT(J,I) ) 160, 180, 170 C FLAG FOR PATH 160 CONVRT=1.D0 IF ( IFLAG .NE. 0 ) THEN IF(INDEX(KEYWRD,'STEP1').NE.0)THEN LPARA1=LPARAM LATOM1=LATOM LPARA2=J LATOM2=I LATOM=0 IFLAG=0 GOTO 180 ELSE WRITE(6,'('' ONLY ONE REACTION COORDINATE PERMITTED 1'')') STOP ENDIF ENDIF LATOM = I LPARAM = J IF(J.GT.1) CONVRT=0.01745329252D00 REACT(1) = GEO(J,I) IREACT=1 IFLAG = 1 GO TO 180 C FLAG FOR OPTIMIZE 170 NVAR = NVAR + 1 LOC(1,NVAR) = I LOC(2,NVAR) = J XPARAM(NVAR) = GEO(J,I) 180 CONTINUE ENDIF C READ IN PATH VALUES IF(IFLAG.EQ.0) GO TO 220 IF(INDEX(KEYWRD,'NLLSQ').NE.0)THEN WRITE(6,'(A)')' NLLSQ USED WITH REACTION PATH; '// 1'THIS OPTION IS NOT ALLOWED' STOP ENDIF IF(INDEX(KEYWRD,'SIGMA').NE.0)THEN WRITE(6,'(A)')' SIGMA USED WITH REACTION PATH; '// 1'THIS OPTION IS NOT ALLOWED' STOP ENDIF IF(INDEX(KEYWRD,'STEP')+INDEX(KEYWRD,'POINTS').NE.0)THEN STEP=READA(KEYWRD,INDEX(KEYWRD,'STEP=')+5) NPTS=READA(KEYWRD,INDEX(KEYWRD,'POINT=')+6) IF(NPTS.GT.200)THEN WRITE(6,'(///,'' ONLY TWO HUNDRED POINTS ALLOWED IN REACT 1'',''ION COORDINATE'')') STOP ENDIF IF(LPARAM.EQ.1.AND.STEP.LE.0)THEN WRITE(6,'(///,'' STEP FOR BOND LENGTH SHOULD BE SET POSIT 1IVE '',''TO PREVENT TWO ATOMS COLLAPSE'')') STOP ENDIF GO TO 220 ENDIF 190 READ(5,'(A)',END=210) LINE CALL NUCHAR(LINE,VALUE,NREACT) IF(NREACT.EQ.0)GOTO 210 DO 200 I=1,NREACT IJ=IREACT+I IF(IJ.GT.200)THEN WRITE(6,'(///,'' ONLY TWO HUNDRED POINTS ALLOWED IN REACT 1ION'','' COORDINATE'')') STOP ENDIF REACT(IJ)=VALUE(I)*CONVRT IF(ABS(REACT(IJ)-REACT(IJ-1)).LT.1.D-5)THEN DUM1 = REACT(IJ)/CONVRT DUM2 = REACT(IJ-1)/CONVRT WRITE(6,'(///,'' TWO ADJACENT POINTS ARE IDENTICAL: '', 1 F7.3,2X,F7.3,/,'' THIS IS NOT ALLOWED IN A PATH CALCULATION'')') 2 DUM1,DUM2 STOP ENDIF 200 CONTINUE IREACT=IREACT+NREACT GO TO 190 210 CONTINUE DEGREE=1.D0 IF(LPARAM.GT.1)DEGREE=90.D0/ASIN(1.D0) IF(IREACT.LE.1) THEN WRITE(6,'(//10X,'' NO POINTS SUPPLIED FOR REACTION PATH'')') WRITE(6,'(//10X,'' GEOMETRY AS READ IN IS AS FOLLOWS'')') CALL GEOUT(1) STOP ELSE WRITE(6,'(//10X,'' POINTS ON REACTION COORDINATE'')') WRITE(6,'(10X,8F8.2)')(REACT(I)*DEGREE,I=1,IREACT) ENDIF IEND=IREACT+1 REACT(IEND)=-1.D12 C C READ IN ATOM/CHEMICAL ENVIRONMENT TYPE SURFACE CORRECTION TERM C IDENTIFIERS C 220 IF(INDEX(KEYWRD,'ENVAQ').EQ.0) GO TO 229 DO 221 IENV=1,NUMAT 221 READ(5,'(I3)')ITYPE(IENV) WRITE(6,'(/,"ENVIRONMENT SPECIFIC ATOM TYPES FOR AQUEOUS SOLVATION 1 ENERGY",//)') DO 222 I=1,NUMAT 222 WRITE(6,223)I,CTYPE(ITYPE(I)) 223 FORMAT(' ATOM #',I3,' ASSIGNED AS ',A50) C C OUTPUT GEOMETRY AS FEEDBACK C 229 CALL WRTTXT(6) IF(INDEX(KEYWRD,'NOLOG').EQ.0)THEN OPEN(UNIT=11, FORM='FORMATTED', STATUS='UNKNOWN', +FILE=GETNAM('FOR011')) CALL WRTTXT(11) ENDIF CALL GEOUT(1) CALL GMETRY(GEO,COORD) IF (INDEX(KEYWRD,'NOXYZ') .EQ. 0) THEN IF(INDEX(KEYWRD,'0SCF').NE.0)THEN C C WRITE OUT CARTESIAN COORDINATES FOR USE AS A DATA-SET C WRITE(6,'(A)')' GEOMETRY IN CARTESIAN COORDINATE FORMAT' CALL WRTTXT(6) J=0 DO 230 I=1,NATOMS IF(LABELS(I).NE.99)THEN J=J+1 WRITE(6,'(2X,A,3(F19.13,I3))') 1 ELEMNT(LABELS(I)),(COORD(K,J),1,K=1,3) ENDIF 230 CONTINUE ELSE WRITE(6,'(//10X,''CARTESIAN COORDINATES '',/)') WRITE(6,'(4X,''NO.'',7X,''ATOM'',9X,''X'', 1 9X,''Y'',9X,''Z'',/)') L=0 DO 240 I=1,NATOMS IF(LABELS(I) .EQ. 99.OR.LABELS(I).EQ.107) GOTO 240 L=L+1 WRITE(6,'(I6,8X,A2,4X,3F10.4)') 1 L,ELEMNT(LABELS(I)),(COORD(J,L),J=1,3) 240 CONTINUE ENDIF ENDIF IF( INDEX(KEYWRD,' XYZ') .NE. 0 )THEN IF( NVAR .NE. 0 .AND. 1 INT.AND.(NDEP .NE. 0 .OR. NVAR.LT.3*NUMAT-6)) THEN IF(NDEP.NE.0) 1WRITE(6,'(//10X,'' INTERNAL COORDINATES READ IN, AND SYMMETRY'' 2,/10X,'' SPECIFIED, BUT CALCULATION TO BE RUN IN CARTESIAN '' 3,''COORDINATES'')') IF(NVAR.LT.3*NUMAT-6) 1WRITE(6,'(//10X,'' INTERNAL COORDINATES READ IN, AND'', 2'' CALCULATION '',/10X,''TO BE RUN IN CARTESIAN COORDINATES, '', 3/10X,''BUT NOT ALL COORDINATES MARKED FOR OPTIMISATION'')') WRITE(6,'(//10X,'' THIS INVOLVES A LOGICALLLY ABSURD CHOICE' 1',/10X,'' SO THE CALCULATION IS TERMINATED AT THIS POINT'')') STOP ENDIF SUMX=0.D0 SUMY=0.D0 SUMZ=0.D0 DO 250 J=1,NUMAT SUMX=SUMX+COORD(1,J) SUMY=SUMY+COORD(2,J) 250 SUMZ=SUMZ+COORD(3,J) SUMX=SUMX/NUMAT SUMY=SUMY/NUMAT SUMZ=SUMZ/NUMAT DO 260 J=1,NUMAT GEO(1,J)=COORD(1,J)-SUMX GEO(2,J)=COORD(2,J)-SUMY 260 GEO(3,J)=COORD(3,J)-SUMZ NA(1)=99 J=0 NVAR=0 DO 280 I=1,NATOMS IF(LABELS(I).NE.99)THEN J=J+1 IF(J.EQ.1)THEN K=0 ELSEIF(J.LT.4)THEN K=MIN(3,I-1) ELSE K=3 ENDIF DO 270 L=1,K NVAR=NVAR+1 LOC(1,NVAR)=J LOC(2,NVAR)=L 270 XPARAM(NVAR)=GEO(L,J) LABELS(J)=LABELS(I) ENDIF 280 CONTINUE NATOMS=NUMAT ELSE IF(NVAR.EQ.0) RETURN IF( .NOT. INT.AND.(NDEP .NE. 0 .OR. NVAR.LT.3*NUMAT-6)) THEN IF(NDEP.NE.0) 1WRITE(6,'(//10X,'' CARTESIAN COORDINATES READ IN, AND SYMMETRY'' 2,/10X,'' SPECIFIED, BUT CALCULATION TO BE RUN IN INTERNAL '' 3,''COORDINATES'')') IF(NVAR.LT.3*NUMAT-6) 1WRITE(6,'(//10X,'' CARTESIAN COORDINATES READ IN, AND'', 2'' CALCULATION '',/10X,''TO BE RUN IN INTERNAL COORDINATES, '', 3/10X,''BUT NOT ALL COORDINATES MARKED FOR OPTIMISATION'')') WRITE(6,'(//10X,''MOPAC, BY DEFAULT, USES INTERNAL COORDINAT 1ES'',/10X,''TO SPECIFY CARTESIAN COORDINATES USE KEY-WORD :XYZ:'') 2') WRITE(6,'(10X,''YOUR CURRENT CHOICE OF KEY-WORDS INVOLVES'' 1,'' A LOGICALLLY'',/10X,''ABSURD CHOICE SO THE CALCULATION IS'', 2'' TERMINATED AT THIS POINT'')') STOP ENDIF ENDIF IF((INDEX(KEYWRD,'AQUO')+INDEX(KEYWRD,'ENVAQ')).EQ.0) GO TO 300 IF(INDEX(KEYWRD,'AM1').NE.0) GO TO 290 WRITE(6,'(//,"ONLY AM1 IS CURRENTLY SUPPLIED WITH SOLVENT CORRECTI 1ON TERMS.")') STOP 290 IF(INDEX(KEYWRD,'ANALYT').EQ.0) GO TO 295 WRITE(6,'(//,"ANALYTICAL DERIVATIVES MAY NOT BE USED FOR SOLVATION 1 CALCULATIONS.")') STOP 295 IF((INDEX(KEYWRD,'BIRADICAL')+INDEX(KEYWRD,'MECI')+INDEX(KEYWRD, 1'C.I.=')+INDEX(KEYWRD,'EXCITED')).EQ.0) GO TO 300 IF(INDEX(KEYWRD,'NOANCI').NE.0) GO TO 300 WRITE(6,'(//,"*NOANCI* MUST BE SPECIFIED FOR C.I. CALCULATIONS DON 1E WITH SOLVATION.")') STOP 300 RETURN END