Bug 38618 - internal compiler error: in gfc_add_modify
Summary: internal compiler error: in gfc_add_modify
Status: RESOLVED DUPLICATE of bug 34026
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-12-24 12:39 UTC by ajs1
Modified: 2008-12-24 16:46 UTC (History)
6 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments
Fortran subroutine (4.28 KB, text/plain)
2008-12-24 15:20 UTC, ajs1
Details

Note You need to log in before you can comment on or make changes to this bug.
Description ajs1 2008-12-24 12:39:23 UTC
The command line and the resulting error messages:
gfortran -I../include -Wall -save-temps -DVAR_G77 -DSYS_LINUX -DVAR_MFDS -DVAR_SPLITFILES -D'INSTALL_WRKMEM=20000000' -D'INSTALL_BASDIR="/Users/ajs1/Dalton-2.0/basis/"' -O2 -std=legacy -ffast-math -fexpensive-optimizations -funroll-loops -c abavrml.F
abavrml.F: In function 'mkvrs1':
abavrml.F:384: internal compiler error: in gfc_add_modify, at fortran/trans.c:159

gcc -v gives:
Using built-in specs.
Target: i386-apple-darwin9.4.0
Configured with: ../gcc-4.4-20080801/configure --enable-languages=fortran,c++
Thread model: posix
gcc version 4.4.0 20080801 (experimental) (GCC) 

The preprocessed fortran file, generated using cpp with the flags from the gfortran command line, follows:
# 1 "abavrml.F"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "abavrml.F"
C
C... Copyright (c) 2005 by the authors of Dalton (see below).
C... All Rights Reserved.
C...
C... The source code in this file is part of
C... "Dalton, a molecular electronic structure program, Release 2.0
C... (2005), written by C. Angeli, K. L. Bak, V. Bakken,
C... O. Christiansen, R. Cimiraglia, S. Coriani, P. Dahle,
C... E. K. Dalskov, T. Enevoldsen, B. Fernandez, C. Haettig,
C... K. Hald, A. Halkier, H. Heiberg, T. Helgaker, H. Hettema,
C... H. J. Aa. Jensen, D. Jonsson, P. Joergensen, S. Kirpekar,
C... W. Klopper, R.Kobayashi, H. Koch, O. B. Lutnaes, K. V. Mikkelsen,
C... P. Norman, J.Olsen, M. J. Packer, T. B. Pedersen, Z. Rinkevicius,
C... E. Rudberg, T. A. Ruden, K. Ruud, P. Salek, A. Sanchez de Meras,
C... T. Saue, S. P. A. Sauer, B. Schimmelpfennig, K. O. Sylvester-Hvid,
C... P. R. Taylor, O. Vahtras, D. J. Wilson, H. Agren.
C... This source code is provided under a written licence and may be
C... used, copied, transmitted, or stored only in accord with that
C... written licence.
C...
C... In particular, no part of the source code or compiled modules may
C... be distributed outside the research group of the licence holder.
C... This means also that persons (e.g. post-docs) leaving the research
C... group of the licence holder may not take any part of Dalton,
C... including modified files, with him/her, unless that person has
C... obtained his/her own licence.
C...
C... For questions concerning this copyright write to:
C... dalton-admin@kjemi.uio.no
C...
C... For information on how to get a licence see:
C... http:
C
# 1 "../include/single.h" 1
# 35 "abavrml.F" 2
C






C
      SUBROUTINE MKVRML(LAST, ATMARR, IEDIM, EVEC, EVC1, EVC2)
C
C Punch out geometry to VRML-file
C
# 1 "../include/implicit.h" 1



      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
# 48 "abavrml.F" 2
# 1 "../include/mxcent.h" 1
C
C file: mxcent.h
C
C MXCENT = max number of nuclei + point charges + ghost orbital centers
C
C IF you change MXCENT you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXCENT, MXCOOR
      PARAMETER (MXCENT = 120, MXCOOR = 3*MXCENT)
# 49 "abavrml.F" 2
# 1 "../include/maxorb.h" 1
C
C File: maxorb.h
C
C MXSHEL = maximum number of shells (insert shell definition here).
C MXPRIM = maximum number of primitives.
C MXCORB = maximum number of orbitals (possibly contracted).
C MAXOCC = maximum number of occupied orbitals
C
C IF you change any of these parameters you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXSHEL, MXPRIM, MXCORB, MXORBT, MAXOCC
      PARAMETER (MXSHEL = 750, MXPRIM = 4000, MXCORB = 1200,
     * MAXOCC = 400, MXORBT = MXCORB*(MXCORB + 1)/2)
# 50 "abavrml.F" 2
# 1 "../include/maxaqn.h" 1
      INTEGER MXQN, MXAQN
      PARAMETER (MXQN=7, MXAQN=MXQN*(MXQN+1)/2)
# 51 "abavrml.F" 2
# 1 "../include/nuclei.h" 1
      INTEGER NUCPRE, NUCNUM, NUCDEG, ISTBNU,
     & NUCIND, NUCDEP, NTRACO, ITRACO, NATOMS, NFLOAT,
     & NBASIS, NLARGE, NSMALL, NPBAS, NPLRG, NPSML,
     & NCHTOT, INCENT, INUNIQ, NDEGNM, ISOTOP, IZATOM,
     & NBASISAUX, NPBASAUX, NAUX, NPAUX



      DOUBLE PRECISION CHARGE, CORD, GNUEXP

      LOGICAL NOORBT,GAUNUC
      COMMON /NUCLEI/ CHARGE(MXCENT), CORD(3,MXCENT), GNUEXP(MXCENT),
     & GAUNUC, NOORBT(MXCENT), NUCPRE(MXCENT),
     & NUCNUM(MXCENT,8), NUCDEG(MXCENT), ISTBNU(MXCENT),
     & NDEGNM(MXCENT), NUCIND, NUCDEP, NTRACO, ITRACO(3),
     & NATOMS, NFLOAT, NBASIS, NLARGE, NSMALL, NPBAS,
     & NPLRG, NPSML, NCHTOT, INCENT(MXCENT),
     & INUNIQ(MXCENT), ISOTOP(MXCENT),IZATOM(MXCENT),
     & NBASISAUX, NPBASAUX, NAUX, NPAUX
      CHARACTER NAMEX*6, NAMDEP*6, NAMDPX*8, NAMN*4
      COMMON /NUCLEC/ NAMEX(MXCOOR), NAMDEP(MXCENT), NAMDPX(MXCOOR),
     & NAMN(MXCENT)
      INTEGER MULBSI
      COMMON /MULBAS/ MULBSI(MXCENT)
C MULBAS has been added for multiple basis sets (WK/UniKA/31-10-2002).
# 52 "abavrml.F" 2
# 1 "../include/molinp.h" 1
      PARAMETER (KMLINE = 2000)
      CHARACTER*80 MLINE
      COMMON /MOLINC/ MLINE(KMLINE)
      COMMON /MOLINP/ NMLINE,NCLINE(MXCENT),NMLAU
# 53 "abavrml.F" 2
# 1 "../include/optinf.h" 1
C
C File: optinf.h
C
C Information for geometry optimization
C controlled in abaopt.F, abaop2.F, and abarint.F
C
      PARAMETER (MAXPRE = 10)
      CHARACTER*80 SPBSTX, PREBTX
      LOGICAL GECONV, NOTRST, NOBRKS, BRKSYM, NWSYMM, DOSPE, DOPRE,
     & FINPRE, VRML, VRBOND, VREIGV, VRCORD, VRVIBA,
     & VRSYMM, VISUAL, BOFILL, INITHS, HSFILE, BFGSR1,
     & STEEPD, RANKON, PSB, DFP, BFGS, SCHLEG,
     & NEWTON, QUADSD, KEEPHE, BAKER, REDINT, CARTCO,
     & INRDHS, FSTORD, SNDORD, REJINI, GRDINI, MULTI,
     & CHGRDT, CONOPT, MODHES, INMDHS, FINDRE, TRSTRG,
     & RATFUN, GDIIS, DELINT, RSTARR, LNSRCH, SADDLE,
     & REBILD, CMBMOD, HFPROP, CONFRM, NOAUX, NODIHE,
     & LINDHD
      COMMON /OPTINF/ TRSTRA, TRSTIN, TRSTDE, RTENBD, RTENGD, RTRJMN,
     & RTRJMX, ENERGY, ERGOLD, ERGPRD, ERGPRO, STPNRM,
     & STPNRO, GRADNM, THRERG, GRDTHR, THRSTP, THRSYM,
     & EVLINI, DISPLA, STPDIA(8*MXCENT),
     & STPSYM(8*MXCENT), STPINT(8*MXCENT),
     & GRDDIA(8*MXCENT), EVAL(8*MXCENT),
     & EVALOL(8*MXCENT), GRDINT(8*MXCENT),
     & CRDIN1(8*MXCENT), CRDINT(8*MXCENT),
     & CNDHES(0:7), INDHES(0:7), INTCRD(8*MXCENT,6),
     & ICONF(0:5), ICNSTR(8*MXCENT), ISTBLZ,
     & IAUXRD, ITOTRJ, KEPTIT, NSPMOD, NCNSTP,
     & INDTOT, ITRNMR, ITRMAX, MAXREJ, IPRINT, NCRTOT,
     & NCART, NPROJ, NTMAT, IINTCR, IREDIC, ICRTCR,
     & ICONDI, ITRBRK, NUMPRE, IPRE, PREBTX(MAXPRE),
     & SPBSTX, GECONV, NOTRST, NOBRKS, BRKSYM, NWSYMM,
     & DOSPE, DOPRE, FINPRE, VRML, VRBOND, VREIGV,
     & VRCORD, VRVIBA, VRSYMM, VISUAL, INITHS, HSFILE,
     & BFGSR1, STEEPD, RANKON, PSB , DFP, BFGS,
     & SCHLEG, NEWTON, QUADSD, KEEPHE, BAKER, REDINT,
     & CARTCO, INRDHS, FSTORD, SNDORD, REJINI, GRDINI,
     & MULTI, CHGRDT, CONOPT, MODHES, INMDHS, FINDRE,
     & TRSTRG, RATFUN, GDIIS, DELINT, RSTARR, LNSRCH,
     & SADDLE, REBILD, BOFILL, CMBMOD, HFPROP, CONFRM,
     & NOAUX, NODIHE, LINDHD
# 54 "abavrml.F" 2
# 1 "../include/gnrinf.h" 1
c -*- mode: fortran; fortran-continuation-string: "&" -*-
c File: gnrinf.h -- general information for DALTON
c
      LOGICAL TESTIN, OPTWLK, RNHERM, RNSIRI, RNABAC, GEOCNV,
     & HRINPC, SRINPC, RDINPC, RDMLIN, PARCAL, DIRCAL,
     & WRINDX, WLKREJ, WALKIN, RNRESP, USRIPR, SEGBAS,
     & DOCCSD, OPTNEW, NEWSYM, NEWBAS, NEWPRP, RELCAL,
     & TOTSYM, NMWALK, DKTRAN, GEOALL, WESTA, SEGAUX
      COMMON /GNRINF/ GRADML, PANAS, TESTIN, OPTWLK, RNHERM,
     & RNSIRI, RNABAC, GEOCNV, HRINPC, SRINPC, RDINPC,
     & RDMLIN, PARCAL, DIRCAL, KCHARG, WRINDX,
     & WLKREJ, WALKIN, RNRESP, USRIPR, ITERNR,
     & ITERMX, IPRUSR, SEGBAS, DOCCSD, OPTNEW, NEWSYM,
     & LENBAS, NEWBAS, NEWPRP, RELCAL, TOTSYM, NMWALK,
     & DKTRAN, GEOALL, WESTA, SEGAUX

      INTEGER LBASDIR
      PARAMETER (LBASDIR = 600)
      CHARACTER*(LBASDIR) BASDIR
      COMMON /GNRCHR/ BASDIR
# 55 "abavrml.F" 2
# 1 "../include/cbiwlk.h" 1
      PARAMETER (MAXTMP = 20)
      LOGICAL WFPRED, REJECT, KEEPSY, VIBCNV,
     * START, DOREPW, IMAGE, STRICT, NOORTH, NATCON, V3CAL,
     * VIBAVE, NMODIF, ECKART, DOTEMP, DOCENT, REUSED
      COMMON /CBIWLK/ TOLST, TRUSTR, TRUSTI, TRUSTD,
     & REJMIN, REJMAX, RTRMIN, RTRGOD,
     & XMXNUC, ZERGRD, DISPLC,
     & STRMOM(3*MXCENT), ECKGEO(3,MXCOOR),
     & SCALCO(3,MXCENT), THRLDP, ANHFAC, TRUMAX,
     & ISTMOM(3*MXCENT), NSTMOM,
     & IPRWLK, IWKTYP, IWKIND, IMODE, ISCTYP,
     & IPART(MXCENT), DOREPW(0:7),
     & NZEROG, IZEROG(MXCOOR), START,
     & WFPRED, REJECT, KEEPSY, VIBCNV,
     & IMAGE, STRICT,
     & NOORTH, NATCON, V3CAL, VIBAVE, NMODIF,
     & ECKART, DOTEMP, DOCENT, TEMP(MAXTMP), NTEMP,
     & REUSED
# 56 "abavrml.F" 2
# 1 "../include/priunit.h" 1






C FILE: priunit.h
      INTEGER LUCMD, LUPRI, LUERR , LUW4, NINFO, NWARN, IPRERR
      COMMON /PRIUNT/ LUCMD, LUPRI, LUERR, LUW4, NINFO, NWARN, IPRERR
# 57 "abavrml.F" 2
# 1 "../include/symmet.h" 1
      INTEGER MAXREP, MAXOPR, MULT, ISYMAX, ISYMAO, NPARSU,
     & NAOS, NPARNU, IPTSYM, IPTCNT, NCRREP, IPTCOR,
     & NAXREP, IPTAX, IPTXYZ, IPTNUC, ISOP,
     & NROTS, NINVC, NREFL, IXVAL, NCOS, ICLASS, ICNTAO



      DOUBLE PRECISION FMULT, PT

      COMMON /SYMMET/ FMULT(0:7), PT(0:7), MAXREP, MAXOPR, MULT(0:7),
     & ISYMAX(3,2), ISYMAO(MXQN,MXAQN), NPARSU(8),
     & NAOS(8), NPARNU(8,8), IPTSYM(MXCORB,0:7),
     & IPTCNT(3*MXCENT,0:7,2), NCRREP(0:7,2),
     & IPTCOR(3*MXCENT,2), NAXREP(0:7,2), IPTAX(3,2),
     & IPTXYZ(3,0:7,2), IPTNUC(MXCENT,0:7),ISOP(0:7),
     & NROTS,NINVC,NREFL,IXVAL(0:7,0:7),NCOS(8,2),
     & ICLASS(MXCORB), ICNTAO(MXCORB)
# 58 "abavrml.F" 2
      LOGICAL LAST
      DIMENSION ATMARR(MXCENT,8), EVEC(IEDIM,IEDIM)
      DIMENSION EVC1(MXCOOR), EVC2(MXCOOR)
      CHARACTER*12 FILENM
# 1 "../include/ibtfun.h" 1

      IBTAND(I,J) = IAND(I,J)
      IBTOR(I,J) = IOR(I,J)
      IBTSHL(I,J) = ISHFT(I,J)
      IBTSHR(I,J) = ISHFT(I,-J)
      IBTXOR(I,J) = IEOR(I,J)
# 63 "abavrml.F" 2
C
C Initialize the ATMARR array. The first index runs over all
C atoms, the second marks the following properties:
C
C 1 - Element number
C 2 - X coordinate of atom
C 3 - Y coordinate of atom
C 4 - Z coordinate of atom
C 5 - Covalent radius
C
      CALL ATMINI(ATMARR,IATOM,.FALSE.)
C
C We proceed to open the output-file
C
      LUVRML = 0
      FILENM = 'first.wrl'
      IF (LAST) THEN
         LUVRML = 0
         FILENM = 'last.wrl'
      END IF
      CALL VRINI(LUVRML,FILENM)
C
C We create all the atoms
C
      INDX = 1
      CALL DRWATM(LUVRML,INDX,IATOM,.FALSE.,ATMARR)
C
C Then we draw bonds between the atoms if this is requested.
C
      IF (VRBOND) CALL DRWBND(LUVRML,INDX,IATOM,.FALSE.,ATMARR)
C
C If the coordinate axes are requested they're drawn
C
      IF (VRCORD) CALL DRWAXS(LUVRML,INDX,IATOM,ATMARR,EVEC)
      CALL VREND(LUVRML)
C
C Finally all eigenvectors are visualized
C
      IF (VREIGV) THEN
         LUVRML = 0
         IEIG = 1
         IEVEC = 1
         IF (IPRINT .GT. 0) THEN
            WRITE(LUPRI,*)
            CALL HEADER('VRML Visualization of Eigenvectors',-1)
            WRITE(LUPRI,'(A)')
     & ' Eig.Vec.     Filename      Symmetry      Eig.Value '
            WRITE(LUPRI,'(A)')
     & '----------------------------------------------------'
         END IF
C
C We loop over all symmetries...
C
         DO 30 IREP = 0, MAXREP
            IF (DOREPW(IREP)) THEN
               II = 0
               NCR = NCRREP(IREP,1)
               DO 35 I = 0, IREP - 1
                  II = II + NCRREP(I,1)
 35 CONTINUE
C
C ... and all vectors in each symmetry
C
               DO 40 IVEC = 1, NCR
C
C Only eigenvectors with a non-zero eigenvalue is visualized,
C that is only the eigenvectors associated with.
C
                  IF (EVAL(IEVEC+IVEC-1) .GT. 1.0D-3) THEN
                     DO 50 I = 1, NCR
                        EVC1(I) = EVEC(II+I,II+IVEC)
 50 CONTINUE
                     INDX = 1
                     FILENM = 'eigv_XXX.wrl'
                     WRITE(FILENM(6:8),'(I3)') IEIG
                     IF (IEIG .LT. 100) WRITE(FILENM(6:6),'(A1)') '0'
                     IF (IEIG .LT. 10) WRITE(FILENM(7:7),'(A1)') '0'
                     CALL VRINI(LUVRML,FILENM)
                     CALL DRWATM(LUVRML,INDX,IATOM,.TRUE.,ATMARR)
                     IF (VRBOND)
     & CALL DRWBND(LUVRML,INDX,IATOM,.TRUE.,ATMARR)
                     CALL DRWEIG(LUVRML,INDX,ATMARR,EVC1,EVC2,IREP,NCR)
                     CALL VREND(LUVRML)
                     IF (IPRINT .GT. 0) THEN
                        WRITE(LUPRI,'(I5,A,A12,A,I1,A,F16.6)')
     & IEIG,'       ',FILENM,'       ',
     & IREP,'   ',EVAL(IEVEC+IVEC-1)
                     END IF
                     IEIG = IEIG + 1
                  END IF
 40 CONTINUE
            END IF
            IEVEC = IEVEC + NCRREP(IREP,1)
 30 CONTINUE
      END IF
      RETURN
      END

C
      SUBROUTINE MKVRVB(NCORD,IATOM,GVEC,EVEC,ATCHRG,
     & MODENR,FREQ,WORK,LWORK)
C
C Make VRML representation of symmetry elements.
C
# 1 "../include/implicit.h" 1



      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
# 168 "abavrml.F" 2
# 1 "../include/mxcent.h" 1
C
C file: mxcent.h
C
C MXCENT = max number of nuclei + point charges + ghost orbital centers
C
C IF you change MXCENT you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXCENT, MXCOOR
      PARAMETER (MXCENT = 120, MXCOOR = 3*MXCENT)
# 169 "abavrml.F" 2
# 1 "../include/maxorb.h" 1
C
C File: maxorb.h
C
C MXSHEL = maximum number of shells (insert shell definition here).
C MXPRIM = maximum number of primitives.
C MXCORB = maximum number of orbitals (possibly contracted).
C MAXOCC = maximum number of occupied orbitals
C
C IF you change any of these parameters you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXSHEL, MXPRIM, MXCORB, MXORBT, MAXOCC
      PARAMETER (MXSHEL = 750, MXPRIM = 4000, MXCORB = 1200,
     * MAXOCC = 400, MXORBT = MXCORB*(MXCORB + 1)/2)
# 170 "abavrml.F" 2
# 1 "../include/priunit.h" 1






C FILE: priunit.h
      INTEGER LUCMD, LUPRI, LUERR , LUW4, NINFO, NWARN, IPRERR
      COMMON /PRIUNT/ LUCMD, LUPRI, LUERR, LUW4, NINFO, NWARN, IPRERR
# 171 "abavrml.F" 2
      DIMENSION GVEC(NCORD), EVEC(NCORD), ATCHRG(NCORD), WORK(LWORK)
      KATMAR = 1
      KLAST = KATMAR + 8*MXCENT
      IF (KLAST .GT. LWORK) CALL STOPIT('MKVRVB',' ',KLAST,LWORK)
      CALL MKVRV1(NCORD,IATOM,GVEC,EVEC,ATCHRG,MODENR,FREQ,
     & WORK(KATMAR))
      RETURN
      END

C
      SUBROUTINE MKVRV1(NCORD,IATOM,GVEC,EVEC,ATCHRG,
     & MODENR,FREQ,ATMARR)
C
C Punch out geometry to VRML-file
C
# 1 "../include/implicit.h" 1



      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
# 187 "abavrml.F" 2
# 1 "../include/mxcent.h" 1
C
C file: mxcent.h
C
C MXCENT = max number of nuclei + point charges + ghost orbital centers
C
C IF you change MXCENT you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXCENT, MXCOOR
      PARAMETER (MXCENT = 120, MXCOOR = 3*MXCENT)
# 188 "abavrml.F" 2
# 1 "../include/maxorb.h" 1
C
C File: maxorb.h
C
C MXSHEL = maximum number of shells (insert shell definition here).
C MXPRIM = maximum number of primitives.
C MXCORB = maximum number of orbitals (possibly contracted).
C MAXOCC = maximum number of occupied orbitals
C
C IF you change any of these parameters you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXSHEL, MXPRIM, MXCORB, MXORBT, MAXOCC
      PARAMETER (MXSHEL = 750, MXPRIM = 4000, MXCORB = 1200,
     * MAXOCC = 400, MXORBT = MXCORB*(MXCORB + 1)/2)
# 189 "abavrml.F" 2
# 1 "../include/maxaqn.h" 1
      INTEGER MXQN, MXAQN
      PARAMETER (MXQN=7, MXAQN=MXQN*(MXQN+1)/2)
# 190 "abavrml.F" 2
# 1 "../include/nuclei.h" 1
      INTEGER NUCPRE, NUCNUM, NUCDEG, ISTBNU,
     & NUCIND, NUCDEP, NTRACO, ITRACO, NATOMS, NFLOAT,
     & NBASIS, NLARGE, NSMALL, NPBAS, NPLRG, NPSML,
     & NCHTOT, INCENT, INUNIQ, NDEGNM, ISOTOP, IZATOM,
     & NBASISAUX, NPBASAUX, NAUX, NPAUX



      DOUBLE PRECISION CHARGE, CORD, GNUEXP

      LOGICAL NOORBT,GAUNUC
      COMMON /NUCLEI/ CHARGE(MXCENT), CORD(3,MXCENT), GNUEXP(MXCENT),
     & GAUNUC, NOORBT(MXCENT), NUCPRE(MXCENT),
     & NUCNUM(MXCENT,8), NUCDEG(MXCENT), ISTBNU(MXCENT),
     & NDEGNM(MXCENT), NUCIND, NUCDEP, NTRACO, ITRACO(3),
     & NATOMS, NFLOAT, NBASIS, NLARGE, NSMALL, NPBAS,
     & NPLRG, NPSML, NCHTOT, INCENT(MXCENT),
     & INUNIQ(MXCENT), ISOTOP(MXCENT),IZATOM(MXCENT),
     & NBASISAUX, NPBASAUX, NAUX, NPAUX
      CHARACTER NAMEX*6, NAMDEP*6, NAMDPX*8, NAMN*4
      COMMON /NUCLEC/ NAMEX(MXCOOR), NAMDEP(MXCENT), NAMDPX(MXCOOR),
     & NAMN(MXCENT)
      INTEGER MULBSI
      COMMON /MULBAS/ MULBSI(MXCENT)
C MULBAS has been added for multiple basis sets (WK/UniKA/31-10-2002).
# 191 "abavrml.F" 2
# 1 "../include/molinp.h" 1
      PARAMETER (KMLINE = 2000)
      CHARACTER*80 MLINE
      COMMON /MOLINC/ MLINE(KMLINE)
      COMMON /MOLINP/ NMLINE,NCLINE(MXCENT),NMLAU
# 192 "abavrml.F" 2
# 1 "../include/optinf.h" 1
C
C File: optinf.h
C
C Information for geometry optimization
C controlled in abaopt.F, abaop2.F, and abarint.F
C
      PARAMETER (MAXPRE = 10)
      CHARACTER*80 SPBSTX, PREBTX
      LOGICAL GECONV, NOTRST, NOBRKS, BRKSYM, NWSYMM, DOSPE, DOPRE,
     & FINPRE, VRML, VRBOND, VREIGV, VRCORD, VRVIBA,
     & VRSYMM, VISUAL, BOFILL, INITHS, HSFILE, BFGSR1,
     & STEEPD, RANKON, PSB, DFP, BFGS, SCHLEG,
     & NEWTON, QUADSD, KEEPHE, BAKER, REDINT, CARTCO,
     & INRDHS, FSTORD, SNDORD, REJINI, GRDINI, MULTI,
     & CHGRDT, CONOPT, MODHES, INMDHS, FINDRE, TRSTRG,
     & RATFUN, GDIIS, DELINT, RSTARR, LNSRCH, SADDLE,
     & REBILD, CMBMOD, HFPROP, CONFRM, NOAUX, NODIHE,
     & LINDHD
      COMMON /OPTINF/ TRSTRA, TRSTIN, TRSTDE, RTENBD, RTENGD, RTRJMN,
     & RTRJMX, ENERGY, ERGOLD, ERGPRD, ERGPRO, STPNRM,
     & STPNRO, GRADNM, THRERG, GRDTHR, THRSTP, THRSYM,
     & EVLINI, DISPLA, STPDIA(8*MXCENT),
     & STPSYM(8*MXCENT), STPINT(8*MXCENT),
     & GRDDIA(8*MXCENT), EVAL(8*MXCENT),
     & EVALOL(8*MXCENT), GRDINT(8*MXCENT),
     & CRDIN1(8*MXCENT), CRDINT(8*MXCENT),
     & CNDHES(0:7), INDHES(0:7), INTCRD(8*MXCENT,6),
     & ICONF(0:5), ICNSTR(8*MXCENT), ISTBLZ,
     & IAUXRD, ITOTRJ, KEPTIT, NSPMOD, NCNSTP,
     & INDTOT, ITRNMR, ITRMAX, MAXREJ, IPRINT, NCRTOT,
     & NCART, NPROJ, NTMAT, IINTCR, IREDIC, ICRTCR,
     & ICONDI, ITRBRK, NUMPRE, IPRE, PREBTX(MAXPRE),
     & SPBSTX, GECONV, NOTRST, NOBRKS, BRKSYM, NWSYMM,
     & DOSPE, DOPRE, FINPRE, VRML, VRBOND, VREIGV,
     & VRCORD, VRVIBA, VRSYMM, VISUAL, INITHS, HSFILE,
     & BFGSR1, STEEPD, RANKON, PSB , DFP, BFGS,
     & SCHLEG, NEWTON, QUADSD, KEEPHE, BAKER, REDINT,
     & CARTCO, INRDHS, FSTORD, SNDORD, REJINI, GRDINI,
     & MULTI, CHGRDT, CONOPT, MODHES, INMDHS, FINDRE,
     & TRSTRG, RATFUN, GDIIS, DELINT, RSTARR, LNSRCH,
     & SADDLE, REBILD, BOFILL, CMBMOD, HFPROP, CONFRM,
     & NOAUX, NODIHE, LINDHD
# 193 "abavrml.F" 2
# 1 "../include/gnrinf.h" 1
c -*- mode: fortran; fortran-continuation-string: "&" -*-
c File: gnrinf.h -- general information for DALTON
c
      LOGICAL TESTIN, OPTWLK, RNHERM, RNSIRI, RNABAC, GEOCNV,
     & HRINPC, SRINPC, RDINPC, RDMLIN, PARCAL, DIRCAL,
     & WRINDX, WLKREJ, WALKIN, RNRESP, USRIPR, SEGBAS,
     & DOCCSD, OPTNEW, NEWSYM, NEWBAS, NEWPRP, RELCAL,
     & TOTSYM, NMWALK, DKTRAN, GEOALL, WESTA, SEGAUX
      COMMON /GNRINF/ GRADML, PANAS, TESTIN, OPTWLK, RNHERM,
     & RNSIRI, RNABAC, GEOCNV, HRINPC, SRINPC, RDINPC,
     & RDMLIN, PARCAL, DIRCAL, KCHARG, WRINDX,
     & WLKREJ, WALKIN, RNRESP, USRIPR, ITERNR,
     & ITERMX, IPRUSR, SEGBAS, DOCCSD, OPTNEW, NEWSYM,
     & LENBAS, NEWBAS, NEWPRP, RELCAL, TOTSYM, NMWALK,
     & DKTRAN, GEOALL, WESTA, SEGAUX

      INTEGER LBASDIR
      PARAMETER (LBASDIR = 600)
      CHARACTER*(LBASDIR) BASDIR
      COMMON /GNRCHR/ BASDIR
# 194 "abavrml.F" 2
# 1 "../include/cbiwlk.h" 1
      PARAMETER (MAXTMP = 20)
      LOGICAL WFPRED, REJECT, KEEPSY, VIBCNV,
     * START, DOREPW, IMAGE, STRICT, NOORTH, NATCON, V3CAL,
     * VIBAVE, NMODIF, ECKART, DOTEMP, DOCENT, REUSED
      COMMON /CBIWLK/ TOLST, TRUSTR, TRUSTI, TRUSTD,
     & REJMIN, REJMAX, RTRMIN, RTRGOD,
     & XMXNUC, ZERGRD, DISPLC,
     & STRMOM(3*MXCENT), ECKGEO(3,MXCOOR),
     & SCALCO(3,MXCENT), THRLDP, ANHFAC, TRUMAX,
     & ISTMOM(3*MXCENT), NSTMOM,
     & IPRWLK, IWKTYP, IWKIND, IMODE, ISCTYP,
     & IPART(MXCENT), DOREPW(0:7),
     & NZEROG, IZEROG(MXCOOR), START,
     & WFPRED, REJECT, KEEPSY, VIBCNV,
     & IMAGE, STRICT,
     & NOORTH, NATCON, V3CAL, VIBAVE, NMODIF,
     & ECKART, DOTEMP, DOCENT, TEMP(MAXTMP), NTEMP,
     & REUSED
# 195 "abavrml.F" 2
# 1 "../include/priunit.h" 1






C FILE: priunit.h
      INTEGER LUCMD, LUPRI, LUERR , LUW4, NINFO, NWARN, IPRERR
      COMMON /PRIUNT/ LUCMD, LUPRI, LUERR, LUW4, NINFO, NWARN, IPRERR
# 196 "abavrml.F" 2
# 1 "../include/symmet.h" 1
      INTEGER MAXREP, MAXOPR, MULT, ISYMAX, ISYMAO, NPARSU,
     & NAOS, NPARNU, IPTSYM, IPTCNT, NCRREP, IPTCOR,
     & NAXREP, IPTAX, IPTXYZ, IPTNUC, ISOP,
     & NROTS, NINVC, NREFL, IXVAL, NCOS, ICLASS, ICNTAO



      DOUBLE PRECISION FMULT, PT

      COMMON /SYMMET/ FMULT(0:7), PT(0:7), MAXREP, MAXOPR, MULT(0:7),
     & ISYMAX(3,2), ISYMAO(MXQN,MXAQN), NPARSU(8),
     & NAOS(8), NPARNU(8,8), IPTSYM(MXCORB,0:7),
     & IPTCNT(3*MXCENT,0:7,2), NCRREP(0:7,2),
     & IPTCOR(3*MXCENT,2), NAXREP(0:7,2), IPTAX(3,2),
     & IPTXYZ(3,0:7,2), IPTNUC(MXCENT,0:7),ISOP(0:7),
     & NROTS,NINVC,NREFL,IXVAL(0:7,0:7),NCOS(8,2),
     & ICLASS(MXCORB), ICNTAO(MXCORB)
# 197 "abavrml.F" 2
# 1 "../include/codata.h" 1
C
C codata.h revised 1999/04/29 and combined with units.h
C
C
C From
C "CODATA Recommended Values of the Fundamental Physical Constants: 1998"
C Peter J. Mohr and Barry N. Taylor
C Journal of Physical and Chemical Reference Data, Vol. 28, No. 6, 1999
C
C -- Fundamental constants, atomic units, Avogadro''s constant







      DOUBLE PRECISION CVEL, ALPHAC, ALPHA2
      DOUBLE PRECISION XTANG,XFAMU,ECHARGE,HBAR,XFMOL
      DOUBLE PRECISION XTJ,XTKAYS,XTHZ,XTEV,XKJMOL,XKCMOL,XTKJML,
     & XTKCML,XTNM,XAJOUL,XTANGM10,XPRTMAS
      DOUBLE PRECISION XFSEC,XTKMML,TESLA,AUTK,DEBYE,PMASS,EMASS,CCM

# 1 "../include/pi.h" 1
# 9 "../include/pi.h"
      DOUBLE PRECISION PI, SQRTPI, R2PI52

      PARAMETER (PI = 3.14159265358979323846D00,
     & SQRTPI = 1.77245385090551602730D00,
     & R2PI52 = 5.91496717279561287782D00)
C R2PI52 = sqrt(2 * sqrt(PI^5) ) -- used in calc. of 2-el. integrals
# 25 "../include/codata.h" 2
C
      PARAMETER ( XTANG = 0.5291772083D0, XFAMU = 1822.88848D0,
     & ECHARGE = 1.602176462D-19, HBAR = 1.054571596D-34)
      PARAMETER ( XFMOL = 6.02214199D23 )
      PARAMETER ( XTANGM10 = XTANG*1.0D-10)
C
      PARAMETER ( PMASS = 1.007276470D0, EMASS = 9.10938188D-31)
C
# 1 "../include/alphac.h" 1
C
C Fine structure constant
C
      PARAMETER (CCM = 299792458.0D0)
      PARAMETER (CVEL = CCM*XTANGM10*EMASS/(HBAR))
      PARAMETER (ALPHAC = 1.0D0/CVEL, ALPHA2 = ALPHAC*ALPHAC)
# 34 "../include/codata.h" 2
C -- conversion from hartree (au) to:
      PARAMETER ( XTJ = HBAR**2/(XTANGM10*XTANGM10*EMASS),
     & XTHZ = HBAR/(2.0D0*PI*XTANGM10*XTANGM10*EMASS),
     & XTKAYS = 1.0D-2*XTHZ/CCM,
     & XTEV = XTJ/ECHARGE,
     & XKJMOL = XTJ*XFMOL*1.D-3, XKCMOL = XKJMOL/4.184D0,
     & XTKJML = XKJMOL, XTKCML = XKCMOL,
     & XTNM = 1.D7/XTKAYS, XAJOUL = 1.0D18*XTJ)
C
C -- other
      PARAMETER ( XFSEC = HBAR/XTJ)
      PARAMETER ( XTKMML = 974.864D0)
      PARAMETER ( TESLA=(XTANG*XTANG*ECHARGE/HBAR)*1.D-20 )
      PARAMETER ( AUTK = 3.1577465D5 )
      PARAMETER ( DEBYE = ECHARGE*XTANG*CCM*1.D11 )
      PARAMETER ( XPRTMAS = 1836.1526675D0 )
C
# 198 "abavrml.F" 2
      DIMENSION GVEC(NCORD), EVEC(NCORD), ATCHRG(NCORD)
      DIMENSION ATMARR(MXCENT,8)
      CHARACTER*12 FILENM
# 1 "../include/ibtfun.h" 1

      IBTAND(I,J) = IAND(I,J)
      IBTOR(I,J) = IOR(I,J)
      IBTSHL(I,J) = ISHFT(I,J)
      IBTSHR(I,J) = ISHFT(I,-J)
      IBTXOR(I,J) = IEOR(I,J)
# 202 "abavrml.F" 2
C
C This factor is a humble attempt to give the vectors a nice length
C
      FAC = 0.5D0*SQRT(1.0D0*NUCDEP)
      FAC = 0.25D0*NUCDEP
C
C Initialize the ATMARR array. The first index runs over all
C atoms, the second marks the following properties:
C
C 1 - Element number
C 2 - X coordinate of atom
C 3 - Y coordinate of atom
C 4 - Z coordinate of atom
C 5 - Covalent radius
C 6 - X-component of normal mode vector
C 7 - Y-component of normal mode vector
C 8 - Z-component of normal mode vector
C
      DO 10 I = 1, IATOM
         ATMARR(I,1) = ATCHRG(I)
         DO 12 J = 1, 3
            ATMARR(I,J+1) = XTANG*GVEC((I-1)*3+J)
            ATMARR(I,J+5) = FAC*EVEC((I-1)*3+J)
 12 CONTINUE
         ATMARR(I,5) = RADIUS(NINT(ATMARR(I,1)))
 10 CONTINUE
C
C We proceed to open the output-file
C
      LUVRML = 0
      FILENM = 'norm_XXX.wrl'
      WRITE(FILENM(6:8),'(I3)') MODENR
      IF (MODENR .LT. 100) WRITE(FILENM(6:6),'(A1)') '0'
      IF (MODENR .LT. 10) WRITE(FILENM(7:7),'(A1)') '0'
      CALL VRINI(LUVRML,FILENM)
C
C We create all the atoms
C
      INDX = 1
      CALL DRWATM(LUVRML,INDX,IATOM,.TRUE.,ATMARR)
C
C Then we draw bonds between the atoms if this is requested.
C
      IF (VRBOND) CALL DRWBND(LUVRML,INDX,IATOM,.TRUE.,ATMARR)
C
C Finally all the vectors are drawn
C
      IF ((MODENR .EQ. 1) .AND. (IPRINT .GT. 0)) THEN
            CALL HEADER('VRML Visualization of Normal Modes',-1)
            WRITE(LUPRI,'(A)')
     & ' Nrm.Mode     Filename      Frequency (cm-1)'
            WRITE(LUPRI,'(A)')
     & '--------------------------------------------'
      END IF
      IF (IPRINT .GT. 0) THEN
         WRITE(LUPRI,'(I5,A,A12,A,F16.6)')
     & MODENR,'       ',FILENM,'       ',FREQ
      END IF
C
C We draw all the white vectors
C
      CALL DRWVEC(LUVRML,INDX,IATOM,ATMARR,1)
C
C ... then we turn all the vectors before we draw the black ones.
C
      DO 20 I = 1, IATOM
         ATMARR(I,6) = -ATMARR(I,6)
         ATMARR(I,7) = -ATMARR(I,7)
         ATMARR(I,8) = -ATMARR(I,8)
 20 CONTINUE
      CALL DRWVEC(LUVRML,INDX,IATOM,ATMARR,0)
      CALL VREND(LUVRML)
      RETURN
      END

C
      SUBROUTINE MKVRSY(ATM,DRTAXS,MAXAXS,DMRPLN,MAXMIR,WORK,LWORK)
C
C Make VRML representation of symmetry elements.
C
# 1 "../include/implicit.h" 1



      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
# 283 "abavrml.F" 2
# 1 "../include/mxcent.h" 1
C
C file: mxcent.h
C
C MXCENT = max number of nuclei + point charges + ghost orbital centers
C
C IF you change MXCENT you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXCENT, MXCOOR
      PARAMETER (MXCENT = 120, MXCOOR = 3*MXCENT)
# 284 "abavrml.F" 2
# 1 "../include/maxorb.h" 1
C
C File: maxorb.h
C
C MXSHEL = maximum number of shells (insert shell definition here).
C MXPRIM = maximum number of primitives.
C MXCORB = maximum number of orbitals (possibly contracted).
C MAXOCC = maximum number of occupied orbitals
C
C IF you change any of these parameters you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXSHEL, MXPRIM, MXCORB, MXORBT, MAXOCC
      PARAMETER (MXSHEL = 750, MXPRIM = 4000, MXCORB = 1200,
     * MAXOCC = 400, MXORBT = MXCORB*(MXCORB + 1)/2)
# 285 "abavrml.F" 2
# 1 "../include/priunit.h" 1






C FILE: priunit.h
      INTEGER LUCMD, LUPRI, LUERR , LUW4, NINFO, NWARN, IPRERR
      COMMON /PRIUNT/ LUCMD, LUPRI, LUERR, LUW4, NINFO, NWARN, IPRERR
# 286 "abavrml.F" 2
      DIMENSION ATM(6,0:MXCENT)
      DIMENSION DRTAXS(5,0:MAXAXS), DMRPLN(5,0:MAXMIR)
      DIMENSION WORK(LWORK)
      KATMAR = 1
      KLAST = KATMAR + 8*MXCENT
      IF (KLAST .GT. LWORK) CALL STOPIT('MKVRSY',' ',KLAST,LWORK)
      CALL MKVRS1(ATM,DRTAXS,MAXAXS,DMRPLN,MAXMIR,
     & WORK(KATMAR))
      RETURN
      END

C
      SUBROUTINE MKVRS1(ATM,DRTAXS,MAXAXS,DMRPLN,MAXMIR,ATMARR)
C
C Punch out geometry to VRML-file
C
# 1 "../include/implicit.h" 1



      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
# 303 "abavrml.F" 2
# 1 "../include/mxcent.h" 1
C
C file: mxcent.h
C
C MXCENT = max number of nuclei + point charges + ghost orbital centers
C
C IF you change MXCENT you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXCENT, MXCOOR
      PARAMETER (MXCENT = 120, MXCOOR = 3*MXCENT)
# 304 "abavrml.F" 2
# 1 "../include/maxorb.h" 1
C
C File: maxorb.h
C
C MXSHEL = maximum number of shells (insert shell definition here).
C MXPRIM = maximum number of primitives.
C MXCORB = maximum number of orbitals (possibly contracted).
C MAXOCC = maximum number of occupied orbitals
C
C IF you change any of these parameters you should do a "make depend"
C and then rebuild the program using the command "make".
C
      INTEGER MXSHEL, MXPRIM, MXCORB, MXORBT, MAXOCC
      PARAMETER (MXSHEL = 750, MXPRIM = 4000, MXCORB = 1200,
     * MAXOCC = 400, MXORBT = MXCORB*(MXCORB + 1)/2)
# 305 "abavrml.F" 2
# 1 "../include/maxaqn.h" 1
      INTEGER MXQN, MXAQN
      PARAMETER (MXQN=7, MXAQN=MXQN*(MXQN+1)/2)
# 306 "abavrml.F" 2
# 1 "../include/nuclei.h" 1
      INTEGER NUCPRE, NUCNUM, NUCDEG, ISTBNU,
     & NUCIND, NUCDEP, NTRACO, ITRACO, NATOMS, NFLOAT,
     & NBASIS, NLARGE, NSMALL, NPBAS, NPLRG, NPSML,
     & NCHTOT, INCENT, INUNIQ, NDEGNM, ISOTOP, IZATOM,
     & NBASISAUX, NPBASAUX, NAUX, NPAUX



      DOUBLE PRECISION CHARGE, CORD, GNUEXP

      LOGICAL NOORBT,GAUNUC
      COMMON /NUCLEI/ CHARGE(MXCENT), CORD(3,MXCENT), GNUEXP(MXCENT),
     & GAUNUC, NOORBT(MXCENT), NUCPRE(MXCENT),
     & NUCNUM(MXCENT,8), NUCDEG(MXCENT), ISTBNU(MXCENT),
     & NDEGNM(MXCENT), NUCIND, NUCDEP, NTRACO, ITRACO(3),
     & NATOMS, NFLOAT, NBASIS, NLARGE, NSMALL, NPBAS,
     & NPLRG, NPSML, NCHTOT, INCENT(MXCENT),
     & INUNIQ(MXCENT), ISOTOP(MXCENT),IZATOM(MXCENT),
     & NBASISAUX, NPBASAUX, NAUX, NPAUX
      CHARACTER NAMEX*6, NAMDEP*6, NAMDPX*8, NAMN*4
      COMMON /NUCLEC/ NAMEX(MXCOOR), NAMDEP(MXCENT), NAMDPX(MXCOOR),
     & NAMN(MXCENT)
      INTEGER MULBSI
      COMMON /MULBAS/ MULBSI(MXCENT)
C MULBAS has been added for multiple basis sets (WK/UniKA/31-10-2002).
# 307 "abavrml.F" 2
# 1 "../include/molinp.h" 1
      PARAMETER (KMLINE = 2000)
      CHARACTER*80 MLINE
      COMMON /MOLINC/ MLINE(KMLINE)
      COMMON /MOLINP/ NMLINE,NCLINE(MXCENT),NMLAU
# 308 "abavrml.F" 2
# 1 "../include/optinf.h" 1
C
C File: optinf.h
C
C Information for geometry optimization
C controlled in abaopt.F, abaop2.F, and abarint.F
C
      PARAMETER (MAXPRE = 10)
      CHARACTER*80 SPBSTX, PREBTX
      LOGICAL GECONV, NOTRST, NOBRKS, BRKSYM, NWSYMM, DOSPE, DOPRE,
     & FINPRE, VRML, VRBOND, VREIGV, VRCORD, VRVIBA,
     & VRSYMM, VISUAL, BOFILL, INITHS, HSFILE, BFGSR1,
     & STEEPD, RANKON, PSB, DFP, BFGS, SCHLEG,
     & NEWTON, QUADSD, KEEPHE, BAKER, REDINT, CARTCO,
     & INRDHS, FSTORD, SNDORD, REJINI, GRDINI, MULTI,
     & CHGRDT, CONOPT, MODHES, INMDHS, FINDRE, TRSTRG,
     & RATFUN, GDIIS, DELINT, RSTARR, LNSRCH, SADDLE,
     & REBILD, CMBMOD, HFPROP, CONFRM, NOAUX, NODIHE,
     & LINDHD
      COMMON /OPTINF/ TRSTRA, TRSTIN, TRSTDE, RTENBD, RTENGD, RTRJMN,
     & RTRJMX, ENERGY, ERGOLD, ERGPRD, ERGPRO, STPNRM,
     & STPNRO, GRADNM, THRERG, GRDTHR, THRSTP, THRSYM,
     & EVLINI, DISPLA, STPDIA(8*MXCENT),
     & STPSYM(8*MXCENT), STPINT(8*MXCENT),
     & GRDDIA(8*MXCENT), EVAL(8*MXCENT),
     & EVALOL(8*MXCENT), GRDINT(8*MXCENT),
     & CRDIN1(8*MXCENT), CRDINT(8*MXCENT),
     & CNDHES(0:7), INDHES(0:7), INTCRD(8*MXCENT,6),
     & ICONF(0:5), ICNSTR(8*MXCENT), ISTBLZ,
     & IAUXRD, ITOTRJ, KEPTIT, NSPMOD, NCNSTP,
     & INDTOT, ITRNMR, ITRMAX, MAXREJ, IPRINT, NCRTOT,
     & NCART, NPROJ, NTMAT, IINTCR, IREDIC, ICRTCR,
     & ICONDI, ITRBRK, NUMPRE, IPRE, PREBTX(MAXPRE),
     & SPBSTX, GECONV, NOTRST, NOBRKS, BRKSYM, NWSYMM,
     & DOSPE, DOPRE, FINPRE, VRML, VRBOND, VREIGV,
     & VRCORD, VRVIBA, VRSYMM, VISUAL, INITHS, HSFILE,
     & BFGSR1, STEEPD, RANKON, PSB , DFP, BFGS,
     & SCHLEG, NEWTON, QUADSD, KEEPHE, BAKER, REDINT,
     & CARTCO, INRDHS, FSTORD, SNDORD, REJINI, GRDINI,
     & MULTI, CHGRDT, CONOPT, MODHES, INMDHS, FINDRE,
     & TRSTRG, RATFUN, GDIIS, DELINT, RSTARR, LNSRCH,
     & SADDLE, REBILD, BOFILL, CMBMOD, HFPROP, CONFRM,
     & NOAUX, NODIHE, LINDHD
# 309 "abavrml.F" 2
# 1 "../include/gnrinf.h" 1
c -*- mode: fortran; fortran-continuation-string: "&" -*-
c File: gnrinf.h -- general information for DALTON
c
      LOGICAL TESTIN, OPTWLK, RNHERM, RNSIRI, RNABAC, GEOCNV,
     & HRINPC, SRINPC, RDINPC, RDMLIN, PARCAL, DIRCAL,
     & WRINDX, WLKREJ, WALKIN, RNRESP, USRIPR, SEGBAS,
     & DOCCSD, OPTNEW, NEWSYM, NEWBAS, NEWPRP, RELCAL,
     & TOTSYM, NMWALK, DKTRAN, GEOALL, WESTA, SEGAUX
      COMMON /GNRINF/ GRADML, PANAS, TESTIN, OPTWLK, RNHERM,
     & RNSIRI, RNABAC, GEOCNV, HRINPC, SRINPC, RDINPC,
     & RDMLIN, PARCAL, DIRCAL, KCHARG, WRINDX,
     & WLKREJ, WALKIN, RNRESP, USRIPR, ITERNR,
     & ITERMX, IPRUSR, SEGBAS, DOCCSD, OPTNEW, NEWSYM,
     & LENBAS, NEWBAS, NEWPRP, RELCAL, TOTSYM, NMWALK,
     & DKTRAN, GEOALL, WESTA, SEGAUX

      INTEGER LBASDIR
      PARAMETER (LBASDIR = 600)
      CHARACTER*(LBASDIR) BASDIR
      COMMON /GNRCHR/ BASDIR
# 310 "abavrml.F" 2
# 1 "../include/cbiwlk.h" 1
      PARAMETER (MAXTMP = 20)
      LOGICAL WFPRED, REJECT, KEEPSY, VIBCNV,
     * START, DOREPW, IMAGE, STRICT, NOORTH, NATCON, V3CAL,
     * VIBAVE, NMODIF, ECKART, DOTEMP, DOCENT, REUSED
      COMMON /CBIWLK/ TOLST, TRUSTR, TRUSTI, TRUSTD,
     & REJMIN, REJMAX, RTRMIN, RTRGOD,
     & XMXNUC, ZERGRD, DISPLC,
     & STRMOM(3*MXCENT), ECKGEO(3,MXCOOR),
     & SCALCO(3,MXCENT), THRLDP, ANHFAC, TRUMAX,
     & ISTMOM(3*MXCENT), NSTMOM,
     & IPRWLK, IWKTYP, IWKIND, IMODE, ISCTYP,
     & IPART(MXCENT), DOREPW(0:7),
     & NZEROG, IZEROG(MXCOOR), START,
     & WFPRED, REJECT, KEEPSY, VIBCNV,
     & IMAGE, STRICT,
     & NOORTH, NATCON, V3CAL, VIBAVE, NMODIF,
     & ECKART, DOTEMP, DOCENT, TEMP(MAXTMP), NTEMP,
     & REUSED
# 311 "abavrml.F" 2
# 1 "../include/priunit.h" 1






C FILE: priunit.h
      INTEGER LUCMD, LUPRI, LUERR , LUW4, NINFO, NWARN, IPRERR
      COMMON /PRIUNT/ LUCMD, LUPRI, LUERR, LUW4, NINFO, NWARN, IPRERR
# 312 "abavrml.F" 2
# 1 "../include/symmet.h" 1
      INTEGER MAXREP, MAXOPR, MULT, ISYMAX, ISYMAO, NPARSU,
     & NAOS, NPARNU, IPTSYM, IPTCNT, NCRREP, IPTCOR,
     & NAXREP, IPTAX, IPTXYZ, IPTNUC, ISOP,
     & NROTS, NINVC, NREFL, IXVAL, NCOS, ICLASS, ICNTAO



      DOUBLE PRECISION FMULT, PT

      COMMON /SYMMET/ FMULT(0:7), PT(0:7), MAXREP, MAXOPR, MULT(0:7),
     & ISYMAX(3,2), ISYMAO(MXQN,MXAQN), NPARSU(8),
     & NAOS(8), NPARNU(8,8), IPTSYM(MXCORB,0:7),
     & IPTCNT(3*MXCENT,0:7,2), NCRREP(0:7,2),
     & IPTCOR(3*MXCENT,2), NAXREP(0:7,2), IPTAX(3,2),
     & IPTXYZ(3,0:7,2), IPTNUC(MXCENT,0:7),ISOP(0:7),
     & NROTS,NINVC,NREFL,IXVAL(0:7,0:7),NCOS(8,2),
     & ICLASS(MXCORB), ICNTAO(MXCORB)
# 313 "abavrml.F" 2
# 1 "../include/codata.h" 1
C
C codata.h revised 1999/04/29 and combined with units.h
C
C
C From
C "CODATA Recommended Values of the Fundamental Physical Constants: 1998"
C Peter J. Mohr and Barry N. Taylor
C Journal of Physical and Chemical Reference Data, Vol. 28, No. 6, 1999
C
C -- Fundamental constants, atomic units, Avogadro''s constant







      DOUBLE PRECISION CVEL, ALPHAC, ALPHA2
      DOUBLE PRECISION XTANG,XFAMU,ECHARGE,HBAR,XFMOL
      DOUBLE PRECISION XTJ,XTKAYS,XTHZ,XTEV,XKJMOL,XKCMOL,XTKJML,
     & XTKCML,XTNM,XAJOUL,XTANGM10,XPRTMAS
      DOUBLE PRECISION XFSEC,XTKMML,TESLA,AUTK,DEBYE,PMASS,EMASS,CCM

# 1 "../include/pi.h" 1
# 9 "../include/pi.h"
      DOUBLE PRECISION PI, SQRTPI, R2PI52

      PARAMETER (PI = 3.14159265358979323846D00,
     & SQRTPI = 1.77245385090551602730D00,
     & R2PI52 = 5.91496717279561287782D00)
C R2PI52 = sqrt(2 * sqrt(PI^5) ) -- used in calc. of 2-el. integrals
# 25 "../include/codata.h" 2
C
      PARAMETER ( XTANG = 0.5291772083D0, XFAMU = 1822.88848D0,
     & ECHARGE = 1.602176462D-19, HBAR = 1.054571596D-34)
      PARAMETER ( XFMOL = 6.02214199D23 )
      PARAMETER ( XTANGM10 = XTANG*1.0D-10)
C
      PARAMETER ( PMASS = 1.007276470D0, EMASS = 9.10938188D-31)
C
# 1 "../include/alphac.h" 1
C
C Fine structure constant
C
      PARAMETER (CCM = 299792458.0D0)
      PARAMETER (CVEL = CCM*XTANGM10*EMASS/(HBAR))
      PARAMETER (ALPHAC = 1.0D0/CVEL, ALPHA2 = ALPHAC*ALPHAC)
# 34 "../include/codata.h" 2
C -- conversion from hartree (au) to:
      PARAMETER ( XTJ = HBAR**2/(XTANGM10*XTANGM10*EMASS),
     & XTHZ = HBAR/(2.0D0*PI*XTANGM10*XTANGM10*EMASS),
     & XTKAYS = 1.0D-2*XTHZ/CCM,
     & XTEV = XTJ/ECHARGE,
     & XKJMOL = XTJ*XFMOL*1.D-3, XKCMOL = XKJMOL/4.184D0,
     & XTKJML = XKJMOL, XTKCML = XKCMOL,
     & XTNM = 1.D7/XTKAYS, XAJOUL = 1.0D18*XTJ)
C
C -- other
      PARAMETER ( XFSEC = HBAR/XTJ)
      PARAMETER ( XTKMML = 974.864D0)
      PARAMETER ( TESLA=(XTANG*XTANG*ECHARGE/HBAR)*1.D-20 )
      PARAMETER ( AUTK = 3.1577465D5 )
      PARAMETER ( DEBYE = ECHARGE*XTANG*CCM*1.D11 )
      PARAMETER ( XPRTMAS = 1836.1526675D0 )
C
# 314 "abavrml.F" 2
      DIMENSION ATM(6,0:MXCENT)
      DIMENSION DRTAXS(5,0:MAXAXS), DMRPLN(5,0:MAXMIR)
      DIMENSION ATMARR(MXCENT,8)
      DIMENSION VEC(3)
      CHARACTER*12 FILENM
      LOGICAL TURN
# 1 "../include/ibtfun.h" 1

      IBTAND(I,J) = IAND(I,J)
      IBTOR(I,J) = IOR(I,J)
      IBTSHL(I,J) = ISHFT(I,J)
      IBTSHR(I,J) = ISHFT(I,-J)
      IBTXOR(I,J) = IEOR(I,J)
# 321 "abavrml.F" 2
C
C We copy the contents of ATM to ATMARR
C
      CALL DZERO(ATMARR,8*MXCENT)
      IATOM = NINT(ATM(1,0))
      NAXS = NINT(DRTAXS(1,0))
      NPLN = NINT(DMRPLN(1,0))
      DO 10 I = 1, IATOM
         DO 15 J = 1, 3
            ATMARR(I,J+1) = ATM(J,I)*XTANG
 15 CONTINUE
         ATMARR(I,1) = ATM(4,I)
         ATMARR(I,5) = RADIUS(NINT(ATMARR(I,1)))
 10 CONTINUE
C
C We find the largest coordinate
C
      CRDMX = 0.0D0
      DO 17 IAT = 1, IATOM
         IF (ABS(ATMARR(IAT,2)) .GT. CRDMX) CRDMX = ABS(ATMARR(IAT,2))
         IF (ABS(ATMARR(IAT,3)) .GT. CRDMX) CRDMX = ABS(ATMARR(IAT,3))
         IF (ABS(ATMARR(IAT,4)) .GT. CRDMX) CRDMX = ABS(ATMARR(IAT,4))
 17 CONTINUE
      CRDMX = CRDMX + MAX(0.20D0,MIN(1.0D0, 0.25D0*CRDMX))
C
C We proceed to open the output-file
C
      LUVRML = 0
      FILENM = 'firstsym.wrl'
      CALL VRINI(LUVRML,FILENM)
C
C We create all the atoms
C
      INDX = 1
      CALL DRWATM(LUVRML,INDX,IATOM,.FALSE.,ATMARR)
C
C Then we draw bonds between the atoms if this is requested.
C
      IF (VRBOND) CALL DRWBND(LUVRML,INDX,IATOM,.FALSE.,ATMARR)
C
C We draw all the rotational axes. The colour is determined by
C the order:
C 2 - Red
C 3 - Green
C 4 - Blue
C 5 - Orange
C 6 - Yellow
C 7 - Violet
C >7 - Black
C
      IF (NPLN .GT. 0) THEN
         CALL DZERO(ATMARR,8*MXCENT)
         DO 20 II = 1, NPLN
C
C The normalvector is scaled to reflect the size it should have.
C
            DO 25 I = 1, 3
               ATMARR(II,I+5) = CRDMX*DMRPLN(I,II)
 25 CONTINUE
 20 CONTINUE
         CALL DRWPLN(LUVRML,INDX,NPLN,ATMARR,.TRUE.)
      END IF
      IF (NAXS .GT. 0) THEN
         CRDMX = CRDMX + 0.25D0
         DO 30 IORD = NINT(DRTAXS(4,1)),2,-1
            CALL DZERO(ATMARR,8*MXCENT)
            NVEC = 0
            DO 32 II = 1, NAXS
               IF (DRTAXS(4,II) .EQ. IORD) THEN
                  NVEC = NVEC + 1
                  DO 34 I = 1, 3
                     VEC(I) = DRTAXS(I,II)
 34 CONTINUE
                  TURN = .FALSE.
C
C All vectors are turned appropriately
C
                  IF (VEC(1) .LT. 0.0D0) THEN
                     TURN = .TRUE.
                  ELSE IF (ABS(VEC(1)) .LT. 1.0D-10) THEN
                     IF (VEC(2) .LT. 0.0D0) THEN
                        TURN = .TRUE.
                     ELSE IF (ABS(VEC(2)) .LT. 1.0D-10) THEN
                        IF (VEC(3) .LT. 0.0D0) TURN = .TRUE.
                     END IF
                  END IF
                  IF (TURN) THEN
                     VEC(1) = -VEC(1)
                     VEC(2) = -VEC(2)
                     VEC(3) = -VEC(3)
                  END IF
                  DO 35 I = 1, 3
                     ATMARR(NVEC,I+1) = -CRDMX*VEC(I)
                     ATMARR(NVEC,I+5) = 2.0D0*CRDMX*VEC(I)
 35 CONTINUE
               END IF
 32 CONTINUE
            CALL DRWVEC(LUVRML,INDX,NVEC,ATMARR,IORD)
 30 CONTINUE
      END IF
      CALL VREND(LUVRML)
      RETURN
      END
Comment 1 Daniel Franke 2008-12-24 14:34:12 UTC
I have difficulties to reproduce. 

Could you please try an up-to-date version of gfortran and see if the problem persists? If yes, please attach a source file that triggers the compiler error and state the exact flags you used to compile the attached file.

For me
  $> gfortran-svn -fpreprocessed -fmax-errors=0 pr38618.f
gives an impressively long list of errors, but no ICE.

Thanks.
Comment 2 ajs1 2008-12-24 15:20:43 UTC
Created attachment 16982 [details]
Fortran subroutine

This is a simplified and cleaned-up version of the file, which still triggers the bug, with the command line
gfortran -O2 -c mkvrs1.f

The error message is now
mkvrs1.f: In function 'mkvrs1':
mkvrs1.f:304: internal compiler error: in gfc_add_modify, at fortran/trans.c:159
Please submit a full bug report,

"gfortran -v" gives
Using built-in specs.
Target: i386-apple-darwin8.10.1
Configured with: ../gcc-4.3-20070810/configure --enable-threads=posix --enable-languages=fortran
Thread model: posix
gcc version 4.3.0 20070810 (experimental)

This doesn't look very up-to-date, but I downloaded and installed it only a few weeks ago.
Comment 3 Daniel Franke 2008-12-24 15:32:01 UTC
Thanks for the quick response!

The attached file compiles fine for me with 4.3.2 and 4.4.0 on i686-pc-linux-gnu. Dominique, could you give the test a spin on darwin?

Btw, the binary packages have been updated only recently:
    http://gcc.gnu.org/wiki/GFortranBinaries
Maybe you are lucky and there is one for your platform?
Comment 4 Dominique d'Humieres 2008-12-24 15:36:18 UTC
Midair collision! I was about to send:

The test in comment#2 compiles fine for me on i686-apple-darwin9 with the options I have tried with gfortran 4.2.3, 4.3.2, and 4.4.0 (trunk).

One thing is strange is the config: --enable-languages=fortran,c++. What about c? It is the first time I notice a build of gfortran without C. Is it implied by c++?.
Comment 5 Andrew Pinski 2008-12-24 15:39:45 UTC
(In reply to comment #4)
> One thing is strange is the config: --enable-languages=fortran,c++. What about
> c? It is the first time I notice a build of gfortran without C. Is it implied
> by c++?.

C is always included :).  You cannot build GCC without building the C language.
Comment 6 Andrew Pinski 2008-12-24 15:44:50 UTC
Works for me also on i386-darwin8.11 with 4.3.3 and 4.4.0.
So closing as fixed.

Most likely it is caused by:
         DO 30 IORD = NINT(DRTAXS(4,1)),2,-1

Which means this is a dup of bug 34026.

*** This bug has been marked as a duplicate of 34026 ***
Comment 7 ajs1 2008-12-24 16:46:47 UTC
I have downloaded the latest version of gfortran from gcc.gnu.org/wiki/GFortran, and it seems to be working nicely. Previously I had followed the link from hpc.sourceforge.net, which I now see is at least a year out of date.

Thanks for the very prompt assistance.