mirror of
https://github.com/nwchemgit/nwchem.git
synced 2026-07-29 06:35:39 -04:00
HvD: While checking the dispersion corrections in the DFT I noticed that
the bond lengths in H2O in different orientations agreed only in 8 digits. This seemed like there was a REAL*8 -> REAL -> REAL*8 conversion going on somewhere some place to do with geometries. In response I have: - eliminated all implicit typing - replaced all hardwired definitions of Pi with computing Pi to machine precision when needed - ensured that all definitions of Bohr are the same and are the one that lives in util_params.fh Unfortunately this did not fix the discrepancy I was seeing but it cleans things up a bit anyway.
This commit is contained in:
parent
0223efa190
commit
68257ae8a7
4 changed files with 476 additions and 212 deletions
|
|
@ -2885,7 +2885,7 @@ c
|
|||
c
|
||||
if (.not. geom_tag_to_element(tag, symbol, element, atn)) then
|
||||
c
|
||||
c Is not an atom. Try removing Bq or X.
|
||||
c Is not an atom. Try removing Bq or X.
|
||||
c
|
||||
if (inp_compare(.false., tag(1:1), 'x')) then
|
||||
ttag = tag(2:)
|
||||
|
|
@ -2894,8 +2894,25 @@ c
|
|||
else
|
||||
return ! Nothing recognizable
|
||||
endif
|
||||
if (.not. geom_tag_to_element(ttag, symbol, element, atn))
|
||||
$ return
|
||||
if (.not. geom_tag_to_element(ttag, symbol, element, atn)) then
|
||||
c
|
||||
c We found a "Bq" or "X" but it is not labeled with an element
|
||||
c (e.g. "XH" or "BqN") so we cannot associate any atomic
|
||||
c properties.
|
||||
c
|
||||
geom_tag_to_covalent_radius = .false.
|
||||
return
|
||||
else
|
||||
c
|
||||
c We found a "Bq" or "X" with an atomic type indication and
|
||||
c we now have the atomic number indicated, so we will go
|
||||
c with that.
|
||||
c
|
||||
endif
|
||||
else
|
||||
c
|
||||
c We found an atom and now know its atomic number
|
||||
c
|
||||
endif
|
||||
c
|
||||
c atn should be set to something sensible
|
||||
|
|
@ -3598,6 +3615,7 @@ c
|
|||
C> \return Return .true. if successfull, and .false. otherwise.
|
||||
c
|
||||
logical function geom_nuc_charge(geom, total_charge)
|
||||
implicit none
|
||||
#include "nwc_const.fh"
|
||||
#include "geomP.fh"
|
||||
integer geom !< [Input] the geometry handle
|
||||
|
|
@ -3729,6 +3747,7 @@ C> \return Return .true. if the system type was found successfully, and
|
|||
C> .false. otherwise.
|
||||
c
|
||||
logical function geom_systype_get(geom, itype)
|
||||
implicit none
|
||||
#include "nwc_const.fh"
|
||||
#include "geomP.fh"
|
||||
integer geom !< [Input] the geometry handle
|
||||
|
|
@ -3865,7 +3884,7 @@ c
|
|||
c
|
||||
integer geom,i,j ! [input]
|
||||
double precision lattice(6) ! [output]
|
||||
real*8 rad,scale
|
||||
double precision rad,scale
|
||||
logical geom_check_handle,geom_get_user_scale
|
||||
external geom_check_handle,geom_get_user_scale
|
||||
|
||||
|
|
@ -4140,11 +4159,11 @@ c
|
|||
end
|
||||
subroutine xlattice_abc_abg(a,b,c,alpha,beta,gamma,lattice_unita)
|
||||
implicit none
|
||||
real*8 a,b,c
|
||||
real*8 alpha,beta,gamma,lattice_unita(3,3)
|
||||
double precision a,b,c
|
||||
double precision alpha,beta,gamma,lattice_unita(3,3)
|
||||
|
||||
* *** local variables ****
|
||||
real*8 d2,pi
|
||||
double precision d2,pi
|
||||
|
||||
* **** determine a,b,c,alpha,beta,gmma ***
|
||||
pi = 4.0d0*datan(1.0d0)
|
||||
|
|
|
|||
|
|
@ -101,31 +101,37 @@ c
|
|||
c
|
||||
end
|
||||
SUBROUTINE HND_BMAT(GEOM,NZVAR,NCART,B,ZMAT,IZMAT,NZMAT,C)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "global.fh"
|
||||
#include "mafdecls.fh"
|
||||
#include "stdio.fh"
|
||||
#include "geom.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
C
|
||||
C ----- CONSTRUCT THE B MATRIX -----
|
||||
C
|
||||
integer na,nzvar,ncart,nzmat
|
||||
PARAMETER ( NA=10 )
|
||||
LOGICAL DBUG
|
||||
LOGICAL OUT
|
||||
LOGICAL GEOM_ZMT_GET_IZMAT
|
||||
LOGICAL GEOM_ZMT_GET_NIZMAT
|
||||
CHARACTER*8 ERRMSG
|
||||
DIMENSION B(NCART,*)
|
||||
DIMENSION ZMAT(*),IZMAT(*)
|
||||
DIMENSION A(3,NA)
|
||||
DIMENSION C(3,*)
|
||||
double precision B(NCART,*)
|
||||
double precision ZMAT(*)
|
||||
integer IZMAT(*)
|
||||
double precision A(3,NA)
|
||||
double precision C(3,*)
|
||||
DIMENSION ERRMSG(3)
|
||||
double precision eqval,pi2,degree,bohr,zero,four,pi,pio2,rtod
|
||||
integer iw,iadd,i,itype,izvar,j,ndum
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','- BMAT -'/
|
||||
DATA PI2 /6.28318530717958D+00/
|
||||
c DATA PI2 /6.28318530717958D+00/
|
||||
DATA DEGREE /360.0D+00/
|
||||
DATA BOHR /0.52917715D+00/
|
||||
DATA BOHR /cau2ang/
|
||||
DATA ZERO /0.0D+00/
|
||||
DATA FOUR /4.0D+00/
|
||||
C
|
||||
|
|
@ -134,6 +140,8 @@ C
|
|||
OUT =.FALSE.
|
||||
OUT =OUT.OR.DBUG
|
||||
C
|
||||
pi =acos(-1.0d0)
|
||||
pi2 =2.0d0*pi
|
||||
PIO2 =PI2/FOUR
|
||||
RTOD =PI2/DEGREE
|
||||
C
|
||||
|
|
@ -472,13 +480,19 @@ c
|
|||
c
|
||||
END
|
||||
SUBROUTINE HND_BSTR(EQVAL,NOINT,I,J,C,B,NCART,BOHR)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
C
|
||||
C -----THIS ROUTINE COMPUTES THE B MATRIX ELEMENTS FOR A
|
||||
C BOND STRETCH AS DEFINED BY WILSON (SEE WDC P.55) -----
|
||||
C
|
||||
DIMENSION C(3,1),B(NCART,1)
|
||||
DIMENSION RIJ(3)
|
||||
double precision eqval,bohr
|
||||
integer noint,i,j,ncart
|
||||
double precision C(3,1),B(NCART,1)
|
||||
integer nocol1,nocol2,m
|
||||
double precision dijsq
|
||||
double precision RIJ(3)
|
||||
double precision ZERO
|
||||
DATA ZERO /0.0D+00/
|
||||
DIJSQ = ZERO
|
||||
DO 100 M = 1,3
|
||||
|
|
@ -493,7 +507,8 @@ C
|
|||
RETURN
|
||||
END
|
||||
SUBROUTINE HND_BEND(EQVAL,NOINT,I,J,K,C,B,NCART,RTOD,BOHR)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
C
|
||||
C -----THIS ROUTINE COMPUTES THE B MATRIX ELEMENTS OF A
|
||||
|
|
@ -503,8 +518,15 @@ C
|
|||
C -----I AND K ARE THE NUMBERS OF THE END ATOMS. J IS THE
|
||||
C NUMBER OF THE CENTRAL ATOM -----
|
||||
C
|
||||
DIMENSION C(3,1),B(NCART,1)
|
||||
DIMENSION RJI(3),RJK(3),EJI(3),EJK(3)
|
||||
double precision eqval,rtod,bohr
|
||||
integer noint,i,j,k,ncart
|
||||
integer m,nocol1,nocol2,nocol3
|
||||
double precision C(3,1),B(NCART,1)
|
||||
double precision RJI(3),RJK(3),EJI(3),EJK(3)
|
||||
double precision zero,one,tol,pideg
|
||||
double precision djisq,djksq
|
||||
double precision dotj,dji,djk,dot
|
||||
double precision sinj
|
||||
DATA ZERO,ONE /0.0D+00,1.0D+00/
|
||||
DATA TOL,PIDEG /5.0D-05,180.00D+00/
|
||||
C
|
||||
|
|
@ -547,7 +569,8 @@ C
|
|||
RETURN
|
||||
END
|
||||
SUBROUTINE HND_TORS(EQVAL,NOINT,I,J,K,L,C,B,NCART,RTOD,BOHR)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
C
|
||||
C ----- THIS ROUTINE COMPUTES THE B MATRIX ELEMENTS FOR THE
|
||||
C TORSION AS DEFINED BY WILSON. SEE WDC P60.
|
||||
|
|
@ -560,12 +583,19 @@ C ALONG THE VECTOR J-->K WITH J NEARER THE OBSERVER, THEN
|
|||
C THE CLOCKWISE ROTATION OF J-->I WHICH SUPERPOSES J--> I
|
||||
C WITH K-->L IS A NEGATIVE TORSION ANGLE.
|
||||
C
|
||||
double precision eqval,rtod,bohr
|
||||
integer noint,i,j,k,l,ncart
|
||||
CHARACTER*8 ERRMSG
|
||||
DIMENSION C(3,1),B(NCART,1)
|
||||
DIMENSION RIJ(3),RJK(3),RKL(3)
|
||||
DIMENSION EIJ(3),EJK(3),EKL(3)
|
||||
DIMENSION CR1(3),CR2(3),D(3)
|
||||
double precision C(3,1),B(NCART,1)
|
||||
double precision RIJ(3),RJK(3),RKL(3)
|
||||
double precision EIJ(3),EJK(3),EKL(3)
|
||||
double precision CR1(3),CR2(3),D(3)
|
||||
double precision DKLSQ,DKL,DIJ,DIJSQ,DJKSQ,DJK,DOTPK,DOT
|
||||
double precision DOTPJ,F2,F1,SML
|
||||
double precision SINPJ,SMI,SINPK,SMJ
|
||||
integer iw,nocol1,nocol2,nocol3,nocol4,m
|
||||
DIMENSION ERRMSG(3)
|
||||
double precision ZERO,ONE,TOLRD,TOL,PIDEG
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','-TORS -'/
|
||||
DATA ZERO,ONE /0.0D+00,1.0D+00/
|
||||
DATA TOLRD /1.0001D+00/
|
||||
|
|
@ -694,7 +724,8 @@ cedo CALL HND_HNDERR(3,ERRMSG)
|
|||
1 I3,' - ',I3,' - ',I3,' - ',I3,'. RUN STOPPED.')
|
||||
END
|
||||
SUBROUTINE HND_OPLA(EQVAL,NOINT,I,J,K,L,C,B,NCART,RTOD,PIO2,BOHR)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
C
|
||||
C -----THIS ROUTINE COMPUTES THE B MATRIX ELEMENTS FOR AN
|
||||
|
|
@ -703,10 +734,16 @@ C SEE WDC P58. -----
|
|||
C -----I IS THE END ATOM, J IS THE APEX ATOM, AND
|
||||
C K AND L ARE THE ANCHOR ATOMS -----
|
||||
C
|
||||
DIMENSION B(NCART,1),C(3,1)
|
||||
DIMENSION RJI(3),RJK(3),RJL(3)
|
||||
DIMENSION EJI(3),EJK(3),EJL(3)
|
||||
DIMENSION C1(3),C2(3),C3(3)
|
||||
double precision eqval,rtod,pio2,bohr
|
||||
integer noint,i,j,k,l,ncart
|
||||
double precision B(NCART,1),C(3,1)
|
||||
double precision RJI(3),RJK(3),RJL(3)
|
||||
double precision EJI(3),EJK(3),EJL(3)
|
||||
double precision C1(3),C2(3),C3(3)
|
||||
double precision zero,one,tol,pideg
|
||||
double precision DJISQ,DJKSQ,DJLSQ,DJI,DJK,DJL,DET,COST,DOTI,DOT
|
||||
double precision SMK,SINI,SMI,SINT,TANT,SML,THETA
|
||||
integer m,nocol1,nocol2,nocol3,nocol4
|
||||
DATA ZERO,ONE /0.0D+00,1.0D+00/
|
||||
DATA TOL,PIDEG /5.0D-05,180.00D+00/
|
||||
C
|
||||
|
|
@ -780,7 +817,8 @@ C
|
|||
RETURN
|
||||
END
|
||||
SUBROUTINE HND_LIBE(EQVAL,NOINT,I,J,K,L,C,B,NCART,RTOD,AA,NA,BOHR)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
C
|
||||
C ----- THIS ROUTINE COMPUTES THE B MATRIX ELEMENTS FOR A
|
||||
C PAIR OF PERPENDICULAR LINEAR BENDING COORDINATES. SEE
|
||||
|
|
@ -797,17 +835,23 @@ C PLANE AND THE SECOND IN A PLANE PERPENDICULAR TO THE FIRST
|
|||
C THROUGH POINTS I,J, AND K -----
|
||||
C
|
||||
#include "stdio.fh"
|
||||
double precision eqval,rtod,bohr
|
||||
integer noint,i,j,k,l,ncart,na
|
||||
CHARACTER*8 ERRMSG
|
||||
DIMENSION B(NCART,1),C(3,1)
|
||||
DIMENSION AA(3,1),A(3)
|
||||
DIMENSION RJI(3),RJK(3)
|
||||
DIMENSION UNIT(3),UP(3),UN(3)
|
||||
DIMENSION EJI(3),EJK(3)
|
||||
double precision B(NCART,1),C(3,1)
|
||||
double precision AA(3,1),A(3)
|
||||
double precision RJI(3),RJK(3)
|
||||
double precision UNIT(3),UP(3),UN(3)
|
||||
double precision EJI(3),EJK(3)
|
||||
DIMENSION ERRMSG(3)
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','-LIBE -'/
|
||||
double precision zero,one,tol,pideg,pt0001
|
||||
DATA ZERO,ONE /0.0D+00,1.0D+00/
|
||||
DATA TOL,PIDEG /5.0D-05,180.00D+00/
|
||||
DATA PT0001 /0.0001D+00/
|
||||
integer iw,m,nocol1,nocol2,nocol3,no2
|
||||
double precision DJISQ,DJKSQ,DAJSQ,DJI,DJK,DAJ,DOTJ,DOTP,TEST
|
||||
double precision DUM
|
||||
c
|
||||
IW = LuOut
|
||||
C
|
||||
|
|
@ -899,15 +943,23 @@ C
|
|||
END
|
||||
SUBROUTINE HND_DIHPLA(DIHANG,NOINT,IZMAT,CARTC,BMAT,NCART,
|
||||
1 DTORAD)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "stdio.fh"
|
||||
double precision dihang,dtorad
|
||||
integer noint,ncart
|
||||
CHARACTER*8 ERRMSG
|
||||
DIMENSION IZMAT(5), CARTC(3,1), BMAT(NCART,1),
|
||||
integer IZMAT(5)
|
||||
double precision CARTC(3,1), BMAT(NCART,1),
|
||||
1 A(3), B(3), C(3), D(3), E1(3), E2(3), E3(3)
|
||||
DIMENSION ERRMSG(3)
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','-DIHPLA-'/
|
||||
double precision zero,one,tol
|
||||
DATA ZERO,ONE /0.0D+00,1.0D+00/
|
||||
DATA TOL /1.0D-06/
|
||||
integer i,j,k,l,m,n,iw,iatom,jatom,katom,latom,matom,ixyz
|
||||
double precision b1,b2,b3,b4,b5,ADOTE2,F1,F2,F4,F5,E1DE2,CDOTE1
|
||||
double precision E2MAG,E1MAGI,E1MAG,E2MAGI,SINDI
|
||||
C
|
||||
C
|
||||
C COMPUTE THE B MATRIX AND DIHEDRAL ANGLE BETWEEN 5 ATOMS
|
||||
|
|
@ -1058,7 +1110,8 @@ C
|
|||
1 'INTERNAL COORDINATE',I4,' USES ATOMS',5I4)
|
||||
END
|
||||
logical function geom_zmtmak(rtdb, geom, oprint)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "stdio.fh"
|
||||
#include "global.fh"
|
||||
|
|
@ -1067,8 +1120,11 @@ C
|
|||
#include "util.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "rtdb.fh"
|
||||
#include "util_params.fh"
|
||||
integer rtdb
|
||||
integer geom
|
||||
logical oprint
|
||||
integer max_zcoord
|
||||
parameter (max_zcoord=160)
|
||||
c
|
||||
c Make a Z-matrix for the current geometry. If successful store
|
||||
|
|
@ -1077,7 +1133,10 @@ c
|
|||
c This version does not use the old HONDO common blocks so
|
||||
c it may be called without preamble or fear of side-effects.
|
||||
c
|
||||
parameter (toangs=0.52917724924d+00)
|
||||
double precision toangs
|
||||
integer mxatom,mxcart,mxzmat,mxcoor,mxizmt,mxbond,mxbnds
|
||||
integer mxangs,mxtors,mxoopa,mxlinb,mxlnba,mxseg
|
||||
parameter (toangs=cau2ang)
|
||||
parameter (mxatom=nw_max_atom)
|
||||
parameter (mxcart=3*mxatom)
|
||||
parameter (mxzmat=nw_max_zmat)
|
||||
|
|
@ -1154,17 +1213,25 @@ c
|
|||
dimension endatm(mxatom)
|
||||
dimension endmod(mxatom)
|
||||
dimension idone(mxatom)
|
||||
dimension iatseg(mxatom,mxseg)
|
||||
dimension namseg( mxseg)
|
||||
dimension lenseg( mxseg)
|
||||
integer iatseg(mxatom,mxseg)
|
||||
integer namseg( mxseg)
|
||||
integer lenseg( mxseg)
|
||||
c
|
||||
character*8 zvarname(mxcoor)
|
||||
double precision zvarsign(mxcoor)
|
||||
c
|
||||
double precision zero
|
||||
parameter (zero = 0.0d0)
|
||||
c
|
||||
integer iat,jat,kat,nseg,iadd,i,j,k,l,lcon,ianchr,ii,iatom,jatom
|
||||
integer ipass,itype,izvar,icon,jcon,kcon
|
||||
integer m,mlnba,mbond,mangs,max_tor_per_bond,mbnds,mlinb,ncvrpass
|
||||
integer moopa,mseg,mtors,mxconn
|
||||
integer nbnds,npass,nlnba,numang,nuconn,numods,numbnd,numlnb
|
||||
integer numijxtra,numtor,numoop,nuser
|
||||
double precision dist,cvr_scaling,cvfac,rij,rcv,radius
|
||||
c
|
||||
dist(iat,jat)=sqrt((c(1,iat)-c(1,jat))**2+
|
||||
dist(iat,jat)=dsqrt((c(1,iat)-c(1,jat))**2+
|
||||
1 (c(2,iat)-c(2,jat))**2+
|
||||
2 (c(3,iat)-c(3,jat))**2) * toangs
|
||||
c
|
||||
|
|
@ -1949,9 +2016,15 @@ c
|
|||
3 ijklop,numoop,
|
||||
4 ijklnb,numlnb,xyzlnb,
|
||||
$ max_tor_per_bond, oprint)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
#include "stdio.fh"
|
||||
#include "nwc_const.fh"
|
||||
integer nzvar,nizmat,mxizmt
|
||||
integer nat,nbnds,numbnd,numang,numtor,numoop,numlnb
|
||||
integer max_tor_per_bond
|
||||
integer i
|
||||
integer mxatom,mxbnds,mxangs,mxtors,mxoopa,mxlinb
|
||||
parameter (mxatom=nw_max_atom)
|
||||
parameter (mxbnds= 8*mxatom)
|
||||
parameter (mxangs= 8*mxatom)
|
||||
|
|
@ -1963,13 +2036,14 @@ c
|
|||
logical zdone, oprint
|
||||
logical dolinb
|
||||
integer iw
|
||||
dimension c(3,*)
|
||||
dimension izmat(*)
|
||||
dimension ijbnds(2,*)
|
||||
dimension iibnds( *)
|
||||
dimension nibnds( *)
|
||||
dimension ijkang(3,*),ijklto(4,*),ijklop(4,*)
|
||||
dimension ijklnb(4,*),xyzlnb(3,*)
|
||||
double precision c(3,*)
|
||||
integer izmat(*)
|
||||
integer ijbnds(2,*)
|
||||
integer iibnds( *)
|
||||
integer nibnds( *)
|
||||
integer ijkang(3,*),ijklto(4,*),ijklop(4,*)
|
||||
integer ijklnb(4,*)
|
||||
double precision xyzlnb(3,*)
|
||||
c
|
||||
iw=luout
|
||||
dbug=.false.
|
||||
|
|
@ -2121,22 +2195,25 @@ c
|
|||
end
|
||||
subroutine hnd_zmtyp1(nzvar,nizmat,izmat,mxizmt,
|
||||
1 nat,nbnds,ijbnds,iibnds,nibnds,numbnd)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "stdio.fh"
|
||||
#include "nwc_const.fh"
|
||||
integer nzvar,nizmat,mxizmt,nat,nbnds,numbnd
|
||||
integer ione,mxatom,mxbnds
|
||||
parameter (ione=1)
|
||||
parameter (mxatom=nw_max_atom)
|
||||
parameter (mxbnds= 8*mxatom)
|
||||
logical dbug
|
||||
integer iw
|
||||
dimension izmat(*)
|
||||
dimension ijbond(2,mxbnds)
|
||||
dimension iibond( mxatom)
|
||||
dimension nibond( mxatom)
|
||||
dimension ijbnds(2,*)
|
||||
dimension iibnds( *)
|
||||
dimension nibnds( *)
|
||||
integer iw,ij,iat,i,ii,ji,jj,ibnd,jbnd,ijbnd,nbnd,nbond
|
||||
integer izmat(*)
|
||||
integer ijbond(2,mxbnds)
|
||||
integer iibond( mxatom)
|
||||
integer nibond( mxatom)
|
||||
integer ijbnds(2,*)
|
||||
integer iibnds( *)
|
||||
integer nibnds( *)
|
||||
c
|
||||
iw=luout
|
||||
dbug=.false.
|
||||
|
|
@ -2204,10 +2281,13 @@ c
|
|||
subroutine hnd_zmtyp2(nzvar,nizmat,izmat,mxizmt,c,
|
||||
1 nat,nbnds,ijbnds,iibnds,nibnds,ijkang,numang,
|
||||
2 dolinb, zdone, oprint)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "stdio.fh"
|
||||
#include "nwc_const.fh"
|
||||
integer nzvar,nizmat,nat,nbnds,numang,mxizmt
|
||||
integer itwo,mxatom,mxbnds,mxangs
|
||||
parameter (itwo=2)
|
||||
parameter (mxatom=nw_max_atom)
|
||||
parameter (mxbnds= 8*mxatom)
|
||||
|
|
@ -2218,18 +2298,25 @@ c
|
|||
logical linbnd
|
||||
logical oprint
|
||||
integer iw
|
||||
dimension c(3,*)
|
||||
dimension izmat(*)
|
||||
dimension ijkang(3,*)
|
||||
dimension ijbond(2,mxbnds)
|
||||
dimension iibond( mxatom)
|
||||
dimension nibond( mxatom)
|
||||
dimension ijbnds(2,*)
|
||||
dimension iibnds( *)
|
||||
dimension nibnds( *)
|
||||
double precision c(3,*)
|
||||
integer izmat(*)
|
||||
integer ijkang(3,*)
|
||||
integer ijbond(2,mxbnds)
|
||||
integer iibond( mxatom)
|
||||
integer nibond( mxatom)
|
||||
integer ijbnds(2,*)
|
||||
integer iibnds( *)
|
||||
integer nibnds( *)
|
||||
double precision tol,two
|
||||
data tol /1.0d-01/ ! 5.7 degrees
|
||||
* data tol /1.0d-08/
|
||||
data two /2.0d+00/
|
||||
integer iat,jat,kat,nbond,ii,jk,i,icon,iang,ij
|
||||
integer ijbnd,ik,jcon,jang,jj,ji,klbnd,kcon,jkbnd,lmbnd,lat,mat
|
||||
integer mang,nang,nfound,nuser_specified
|
||||
double precision cosb,rijsq,rij,rik,riksq,rjksq,rilsq,rjk,rklsq
|
||||
double precision rkl
|
||||
double precision distsq,dotprd
|
||||
c
|
||||
distsq(iat,jat)=(c(1,iat)-c(1,jat))**2+
|
||||
1 (c(2,iat)-c(2,jat))**2+
|
||||
|
|
@ -2482,10 +2569,13 @@ c
|
|||
subroutine hnd_zmtyp3(nzvar,nizmat,izmat,mxizmt,c,
|
||||
1 numatom,nbnds,ijbnds,iibnds,nibnds, ! note rename nat -> numatom
|
||||
2 ijklto,numtor, max_tor_per_bond, zdone, oprint)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "stdio.fh"
|
||||
#include "nwc_const.fh"
|
||||
integer nzvar,nizmat,numatom,nbnds,numtor, max_tor_per_bond
|
||||
integer ithree,mxatom,mxbnds,mxtors,mxizmt
|
||||
parameter (ithree=3)
|
||||
parameter (mxatom=nw_max_atom)
|
||||
parameter (mxbnds= 8*mxatom)
|
||||
|
|
@ -2496,20 +2586,29 @@ c
|
|||
logical zdone, oprint, oopb, oi3d, oj3d
|
||||
logical geom_add_tor, bonds_span3d
|
||||
integer iw
|
||||
dimension c(3,*)
|
||||
dimension izmat(*)
|
||||
dimension ijklto(4,*)
|
||||
dimension ijbond(2,mxbnds)
|
||||
dimension iibond( mxatom)
|
||||
dimension nibond( mxatom)
|
||||
dimension ijbnds(2,*)
|
||||
dimension iibnds( *)
|
||||
dimension nibnds( *)
|
||||
double precision c(3,*)
|
||||
integer izmat(*)
|
||||
integer ijklto(4,*)
|
||||
integer ijbond(2,mxbnds)
|
||||
integer iibond( mxatom)
|
||||
integer nibond( mxatom)
|
||||
integer ijbnds(2,*)
|
||||
integer iibnds( *)
|
||||
integer nibnds( *)
|
||||
double precision tol,two
|
||||
data tol /1.0d-01/ ! sin(5.7 degrees) = 0.1
|
||||
* data tol /1.0d-08/
|
||||
c$$$ data zero /0.0d+00/
|
||||
c$$$ data one /1.0d+00/
|
||||
data two /2.0d+00/
|
||||
integer iat,jat,kat
|
||||
double precision distsq,dotprd
|
||||
double precision cosbk,cosbj,rjksq,rik,rijsq,rij,rjk,riksq
|
||||
double precision rjl,rjlsq,rklsq,rkl
|
||||
integer i,ii,ij,ijbnd,ik,il,jtor,jj,itor,ji,jk,jkbnd,jlbnd,jl
|
||||
integer lat,klbnd,lmbnd,mat,mnbnd,mtor,nat,nbond,ntornonlin
|
||||
integer ntor_for_ij,ntor
|
||||
|
||||
c
|
||||
distsq(iat,jat)=(c(1,iat)-c(1,jat))**2+
|
||||
1 (c(2,iat)-c(2,jat))**2+
|
||||
|
|
@ -3154,7 +3253,9 @@ c$$$ 9992 FORMAT(' NO LINEAR-BENDS FOUND ')
|
|||
c$$$ 9991 FORMAT(' LINEAR-BENDS NOT SET UP CURRENTLY . STOP . ')
|
||||
c$$$ END
|
||||
subroutine hnd_dparsc(a,la,c,lc)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
integer la,lc,ic
|
||||
character*(*) a
|
||||
character*(*) c
|
||||
character*1 blk
|
||||
|
|
@ -3170,7 +3271,9 @@ c$$$ END
|
|||
return
|
||||
end
|
||||
subroutine hnd_dparsi(a,la,n)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
integer la,i1,i2,isign,n,ia,ib,i
|
||||
character*(*) a
|
||||
character*1 char(12)
|
||||
data char /'0','1','2','3','4','5','6','7','8','9',
|
||||
|
|
@ -3191,7 +3294,7 @@ c
|
|||
else
|
||||
isign= 1
|
||||
endif
|
||||
na=i2-i1+1
|
||||
c na=i2-i1+1
|
||||
c
|
||||
n=0
|
||||
do ia=i1,i2
|
||||
|
|
@ -3207,7 +3310,10 @@ c
|
|||
return
|
||||
end
|
||||
subroutine hnd_dparsr(a,la,x)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
integer la,i1,i2,isign,ie1,ie2,ie,iexp,itmp,i,j
|
||||
double precision dum,zero,ten,x
|
||||
logical rep
|
||||
character*(*) a
|
||||
character*1 char(17)
|
||||
|
|
@ -3288,9 +3394,11 @@ c
|
|||
return
|
||||
end
|
||||
SUBROUTINE HND_HNDERR(LERR,ERRMSG)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "stdio.fh"
|
||||
integer lerr,iw
|
||||
CHARACTER*8 ERRMSG
|
||||
DIMENSION ERRMSG(LERR)
|
||||
c
|
||||
|
|
@ -3306,8 +3414,10 @@ C
|
|||
9997 FORMAT(/,1X,72(1H-))
|
||||
END
|
||||
SUBROUTINE HND_GEOCLS(NFT)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "stdio.fh"
|
||||
integer nft,iw
|
||||
CHARACTER*8 ERRMSG
|
||||
DIMENSION ERRMSG(3)
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','-GEOCLS-'/
|
||||
|
|
@ -3320,8 +3430,10 @@ C
|
|||
9999 FORMAT(/,' ----- ERROR CLOSING UNIT ',I3,' IN -GEOCLS- . STOP .')
|
||||
END
|
||||
SUBROUTINE HND_GEOOPN(NFT,GEOFIL)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "stdio.fh"
|
||||
integer nft,iw
|
||||
CHARACTER*80 GEOFIL
|
||||
CHARACTER*8 ERRMSG
|
||||
DIMENSION ERRMSG(3)
|
||||
|
|
@ -3341,7 +3453,8 @@ C
|
|||
2 NUMVAR,PRSVAR,VARCHR,FRZVAR,FRZVAL,LST,
|
||||
3 IZMAT,IZ,IZFRZ,MXIZMT,NZMOD,DBUG,
|
||||
$ zvarname, zvarsign)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
C
|
||||
C THIS ROUTINE TAKES THE CHARACTER STRING VALUES FOR THE
|
||||
C -Z- MATRIX INPUT FOR THE INDICES, AND THE VALUES AND TRANSFORMS
|
||||
|
|
@ -3378,47 +3491,46 @@ C S. CHIN: 11/08/90 - IBM KINGSTON, NY
|
|||
C
|
||||
#include "stdio.fh"
|
||||
#include "nwc_const.fh"
|
||||
integer IAT,NAT,NVAR,NZMOD,IZ
|
||||
integer MXATOM,MAXGEO,MAXZMT,MAXVAR,MXIZMT
|
||||
PARAMETER (MXATOM=nw_max_atom)
|
||||
PARAMETER (MAXGEO=MXATOM+1,MAXZMT=40,MAXVAR=nw_max_zmat)
|
||||
LOGICAL DBUG
|
||||
LOGICAL LST
|
||||
LOGICAL READY
|
||||
INTEGER FLGZMT
|
||||
CHARACTER*80 PRSZMT
|
||||
INTEGER ZMTCHR
|
||||
CHARACTER*80 PRSVAR
|
||||
INTEGER VARCHR
|
||||
INTEGER ZMT
|
||||
LOGICAL FRZVAL
|
||||
LOGICAL FRZVAR
|
||||
LOGICAL CART
|
||||
LOGICAL IZFRZ
|
||||
CHARACTER*8 ATNAME
|
||||
CHARACTER*1 PLUS
|
||||
CHARACTER*1 MINUS
|
||||
CHARACTER*8 ERRMSG
|
||||
double precision xx,yy,zz,atnum
|
||||
COMMON/HND_XYZGEO/XX(MAXGEO),YY(MAXGEO),ZZ(MAXGEO),
|
||||
1 ATNAME(MAXGEO),ATNUM(MAXGEO),CART(MAXGEO)
|
||||
DIMENSION ERRMSG(3)
|
||||
DIMENSION NUMZMT( MAXGEO)
|
||||
DIMENSION PRSZMT(MAXZMT,MAXGEO)
|
||||
DIMENSION FLGZMT(MAXZMT,MAXGEO)
|
||||
DIMENSION ZMTCHR(MAXZMT,MAXGEO)
|
||||
DIMENSION PRSVAR(MAXZMT,MAXVAR)
|
||||
DIMENSION VARCHR(MAXZMT,MAXVAR)
|
||||
DIMENSION FRZVAR( MAXVAR)
|
||||
DIMENSION NUMVAR( MAXVAR)
|
||||
DIMENSION FRZVAL( 3,MAXGEO)
|
||||
DIMENSION ZVAL( 3,MAXGEO)
|
||||
DIMENSION ZMT( 5,MAXGEO)
|
||||
DIMENSION ZLST( 3,MAXGEO)
|
||||
DIMENSION IZMAT(MXIZMT)
|
||||
DIMENSION IZFRZ(MXIZMT)
|
||||
DIMENSION ERRMSG(3)
|
||||
integer NUMZMT( MAXGEO)
|
||||
DIMENSION PRSZMT(MAXZMT,MAXGEO)
|
||||
integer FLGZMT(MAXZMT,MAXGEO)
|
||||
integer ZMTCHR(MAXZMT,MAXGEO)
|
||||
DIMENSION PRSVAR(MAXZMT,MAXVAR)
|
||||
integer VARCHR(MAXZMT,MAXVAR)
|
||||
logical FRZVAR( MAXVAR)
|
||||
integer NUMVAR( MAXVAR)
|
||||
logical FRZVAL( 3,MAXGEO)
|
||||
double precision ZVAL( 3,MAXGEO)
|
||||
integer ZMT( 5,MAXGEO)
|
||||
double precision ZLST( 3,MAXGEO)
|
||||
integer IZMAT(MXIZMT)
|
||||
logical IZFRZ(MXIZMT)
|
||||
|
||||
integer i,j,k,JVAR,JAT
|
||||
character*(*) zvarname(*)
|
||||
double precision zvarsign(*)
|
||||
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','- ZDAT -'/
|
||||
double precision ZERO,TWO,PIDEG
|
||||
integer iw
|
||||
DATA ZERO /0.0D+00/
|
||||
DATA TWO /2.0D+00/
|
||||
DATA PIDEG /180.0D+00/
|
||||
|
|
@ -3917,7 +4029,8 @@ C
|
|||
9983 FORMAT(' SAME ATOM REFERRED TO MORE THAN ONCE ON THIS LINE')
|
||||
END
|
||||
SUBROUTINE HND_ZXYZ(NAT,NZMT,ZVAL)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
C
|
||||
C ROUTINE COMPUTES :
|
||||
C
|
||||
|
|
@ -3939,26 +4052,35 @@ C =3 ATOMS B-C-D ARE COLLINEAR
|
|||
C
|
||||
#include "stdio.fh"
|
||||
#include "nwc_const.fh"
|
||||
integer nat
|
||||
integer MXATOM,MAXGEO,MAXWRD,MAXVAR
|
||||
PARAMETER (MXATOM=nw_max_atom)
|
||||
PARAMETER (MAXGEO=MXATOM+1,MAXWRD=40,MAXVAR=nw_max_zmat)
|
||||
LOGICAL DBUG
|
||||
LOGICAL CART
|
||||
CHARACTER*8 ATNAME
|
||||
CHARACTER*8 ERRMSG
|
||||
double precision xx,yy,zz,atnum
|
||||
COMMON/HND_XYZGEO/XX(MAXGEO),YY(MAXGEO),ZZ(MAXGEO),
|
||||
1 ATNAME(MAXGEO),ATNUM(MAXGEO),CART(MAXGEO)
|
||||
DIMENSION NZMT(5,MAXGEO)
|
||||
DIMENSION ZVAL(3,MAXGEO)
|
||||
integer NZMT(5,MAXGEO)
|
||||
double precision ZVAL(3,MAXGEO)
|
||||
DIMENSION ERRMSG(3)
|
||||
double precision numd
|
||||
double precision numd,zero,one,two,three,rcd,ccosp,ssinp
|
||||
double precision costd,sintd,ccos,ssin,ccost,ssint
|
||||
integer iw,na,nb,nc,nd,iat
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','- ZXYZ -'/
|
||||
DATA ZERO,ONE /0.0D+00,1.0D+00/
|
||||
DATA TWO,THREE /2.0D+00,3.0D+00/
|
||||
double precision t11,t12,t13,t21,t22,t23,t31,t32,t33
|
||||
double precision phi,bet,alp,gam,dum,dot,rca,pifac,rab,rcb
|
||||
double precision theta,thbcd
|
||||
double precision xa,xb,xxd,yyd,zzd,ya,yb,za,zb
|
||||
C
|
||||
DBUG=.FALSE.
|
||||
IW = luout
|
||||
C
|
||||
PIFAC=3.1415926536D+00/180.0D+00
|
||||
PIFAC=acos(-1.0d0)/180.0D+00
|
||||
COSTD=-ONE/THREE
|
||||
SINTD= TWO/THREE* SQRT(TWO)
|
||||
NA =0
|
||||
|
|
@ -4174,14 +4296,19 @@ C
|
|||
9997 FORMAT(' IAT = ',I4,' IS ALREADY SPECIFIED IN CARTESIAN SPACE.')
|
||||
END
|
||||
SUBROUTINE HND_PRSQ(V,M,N,NDIM)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "stdio.fh"
|
||||
C
|
||||
C ----- PRINT OUT A SQUARE MATRIX -----
|
||||
C
|
||||
*** COMMON/HND_LISTNG/LIST
|
||||
DIMENSION V(NDIM,1)
|
||||
DIMENSION IC(5),C(5)
|
||||
integer m,n,ndim
|
||||
double precision V(NDIM,1)
|
||||
integer IC(5)
|
||||
double precision C(5)
|
||||
double precision vtol
|
||||
integer icmax,iw,list,imax,imin,i,j,ii,idum,max
|
||||
DATA VTOL /1.5D-01/
|
||||
DATA ICMAX /5/
|
||||
c
|
||||
|
|
@ -4242,16 +4369,22 @@ C
|
|||
9348 FORMAT(5(I5,F11.5))
|
||||
END
|
||||
SUBROUTINE HND_PREV(V,E,M,N,NDIM)
|
||||
IMPLICIT REAL*8 (A-H,O-Z)
|
||||
c IMPLICIT REAL*8 (A-H,O-Z)
|
||||
implicit none
|
||||
#include "stdio.fh"
|
||||
C
|
||||
C ----- PRINT OUT E AND V-MATRICES
|
||||
C
|
||||
*** COMMON/HND_LISTNG/LIST
|
||||
DIMENSION V(NDIM,1),E(1)
|
||||
DIMENSION IC(5),C(5)
|
||||
integer m,n,ndim
|
||||
double precision V(NDIM,1),E(1)
|
||||
integer IC(5)
|
||||
double precision C(5)
|
||||
double precision vtol
|
||||
integer icmax
|
||||
DATA VTOL /1.5D-01/
|
||||
DATA ICMAX /5/
|
||||
integer iw,list,imax,imin,max,i,j,ii,idum
|
||||
C
|
||||
IW = LuOut
|
||||
LIST=1
|
||||
|
|
@ -4316,13 +4449,15 @@ C
|
|||
9348 FORMAT(5(I5,F11.5))
|
||||
END
|
||||
SUBROUTINE HND_PRTR(D,N)
|
||||
IMPLICIT REAL*8 (A-H,O-Z)
|
||||
c IMPLICIT REAL*8 (A-H,O-Z)
|
||||
implicit none
|
||||
#include "stdio.fh"
|
||||
C
|
||||
C ----- PRINT OUT A TRIANGULAR MATRIX -----
|
||||
C
|
||||
*** COMMON/HND_LISTNG/LIST
|
||||
DIMENSION D(1),DD(10)
|
||||
integer n,iw,list,max,imax,imin,i,j,k,ii,jj,ij
|
||||
double precision D(1),DD(10)
|
||||
C
|
||||
IW = LuOut
|
||||
LIST=1
|
||||
|
|
@ -4362,11 +4497,18 @@ C
|
|||
9248 FORMAT(I5,1X,7E15.8)
|
||||
END
|
||||
SUBROUTINE HND_TFTR(H,F,Q,T,IA,M,N,NDIM)
|
||||
IMPLICIT REAL*8 (A-H,O-Z)
|
||||
c IMPLICIT REAL*8 (A-H,O-Z)
|
||||
implicit none
|
||||
C
|
||||
C ----- H(M,M) = Q(DAGGER)(N,M) * F(N,N) * Q(N,M) -----
|
||||
C
|
||||
DIMENSION H(1),F(1),Q(NDIM,1),T(1),IA(1)
|
||||
integer m,n,ndim
|
||||
double precision H(1),F(1),Q(NDIM,1),T(1)
|
||||
integer IA(1)
|
||||
integer ij,j,ik,max,i,k
|
||||
double precision small,zero,dum,qij,hij
|
||||
double precision ddot
|
||||
external ddot
|
||||
DATA SMALL /1.0D-11/
|
||||
DATA ZERO /0.0D+00/
|
||||
IJ = 0
|
||||
|
|
@ -4395,7 +4537,8 @@ C
|
|||
RETURN
|
||||
END
|
||||
SUBROUTINE HND_DIAGIV(A,VVEC,EIG,IA,NVEC,N,NDIM)
|
||||
IMPLICIT REAL*8 (A-H,O-Z)
|
||||
c IMPLICIT REAL*8 (A-H,O-Z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "stdio.fh"
|
||||
C
|
||||
|
|
@ -4405,7 +4548,10 @@ C
|
|||
#include "mafdecls.fh"
|
||||
#include "global.fh"
|
||||
logical status
|
||||
DIMENSION A(1),VVEC(NDIM,1),EIG(1),IA(1)
|
||||
integer nvec,n,ndim
|
||||
double precision A(1),VVEC(NDIM,1),EIG(1)
|
||||
integer IA(1)
|
||||
integer i_idbl,idbl,i_iint,k_iint,iw
|
||||
c
|
||||
c ----- memory -----
|
||||
c
|
||||
|
|
@ -4438,13 +4584,22 @@ c
|
|||
END
|
||||
SUBROUTINE HND_GIVDIA(A,VEC,EIG,IA,N,NDIM,
|
||||
1 w,gamma,beta,betasq,p,q,iposv,ivpos,iord)
|
||||
IMPLICIT REAL*8 (A-H,O-Z)
|
||||
c IMPLICIT REAL*8 (A-H,O-Z)
|
||||
implicit none
|
||||
C ----- A GIVENS HOUSHOLDER MATRIX DIAGONALIZATION -----
|
||||
C ----- ROUTINE SAME AS EIGEN BUT WORKS WITH A -----
|
||||
C ----- LINEAR ARRAY. -----
|
||||
DIMENSION A(1),VEC(NDIM,1),EIG(1),IA(1)
|
||||
DIMENSION W(*),GAMMA(*),BETA(*),BETASQ(*)
|
||||
DIMENSION P(*),Q(*),IPOSV(*),IVPOS(*),IORD(*)
|
||||
integer n,ndim,n1,n2,nr,ik
|
||||
integer IA(1)
|
||||
integer IPOSV(*),IVPOS(*),IORD(*)
|
||||
double precision A(1),VEC(NDIM,1),EIG(1)
|
||||
double precision W(*),GAMMA(*),BETA(*),BETASQ(*)
|
||||
double precision P(*),Q(*)
|
||||
double precision zero,pt5,one,two,rhosq
|
||||
double precision b,s,sum,sgn,temp,d,sqrts,g,a2,cosa,COSAP,DIF
|
||||
double precision DIA,QJ,PPBR,PP,PPBS,SINA2,SINA,R1,R2,R12,SHIFT
|
||||
double precision U,WTAW,WJ
|
||||
integer i1,i,il,ij,ii,j,itemp,jj,k,lv,l,m,nrr,np,npas,nv,nt
|
||||
DATA ZERO,PT5,ONE,TWO /0.0D+00,0.5D+00,1.0D+00,2.0D+00/
|
||||
DATA RHOSQ /1.0D-22/
|
||||
C
|
||||
|
|
|
|||
|
|
@ -1833,15 +1833,17 @@ c
|
|||
c
|
||||
end
|
||||
subroutine geom_autoz_input(geom,oprint)
|
||||
implicit double precision (a-h,o-z)
|
||||
c implicit double precision (a-h,o-z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "geomP.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
logical oprint
|
||||
logical geom_get_user_scale
|
||||
double precision scale, bohr
|
||||
parameter (bohr=0.52917715d+00) !!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
parameter (bohr=cau2ang)
|
||||
c
|
||||
if (.not. geom_get_user_scale(geom, scale))
|
||||
$ call errquit('geom_autoz_input: scale?',0, GEOM_ERR)
|
||||
|
|
@ -2258,6 +2260,7 @@ c
|
|||
#include "nwc_const.fh"
|
||||
#include "geomP.fh"
|
||||
#include "stdio.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
double precision zmat(*) ! [output] nzvar of these
|
||||
c
|
||||
|
|
@ -2266,10 +2269,10 @@ c them in zmat.
|
|||
c
|
||||
double precision b(3*max_cent) ! scratch dummy zmatrix
|
||||
double precision a(3*10)
|
||||
double precision pi2, degree, bohr, zero, four, pio2, rtod
|
||||
parameter (pi2=6.28318530717958d+00)
|
||||
double precision pi2, degree, bohr, zero, four, pio2, rtod,pi
|
||||
c parameter (pi2=6.28318530717958d+00)
|
||||
parameter (degree=360.0d+00)
|
||||
parameter (bohr=0.52917715d+00) ! !!!!!!!!!!!!!!!!!!!!!!!!
|
||||
parameter (bohr=cau2ang)
|
||||
parameter (zero=0.0d+00)
|
||||
parameter (four=4.0d+00)
|
||||
c
|
||||
|
|
@ -2282,6 +2285,8 @@ c
|
|||
geom_compute_zmatrix = geom_check_handle(geom,'compute zmat')
|
||||
if (.not. geom_compute_zmatrix) return
|
||||
c
|
||||
pi = dacos(-1.0d0)
|
||||
pi2 = 2.0d0*pi
|
||||
pio2 =pi2/four
|
||||
rtod =pi2/degree
|
||||
c
|
||||
|
|
@ -2899,7 +2904,8 @@ c
|
|||
1 IZ,IZMAT,NZMOD,ICFRZ,NCFRZ,
|
||||
2 UNITS,zvarname,zvarsign,
|
||||
3 found_cart)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
C
|
||||
C ----- PARAMETERS DEFINING MAXIMUM VALUES -----
|
||||
|
|
@ -2924,12 +2930,15 @@ C ZVAL = DISTANCE, ANGLE AND TORSION ANGLE VALUE
|
|||
C ZMT = I, J, K, L INDICES
|
||||
C
|
||||
#include "nwc_const.fh"
|
||||
integer MXATOM,MXCOOR,MAXGEO,MAXWRD,MAXVAR,MAXPRM,MXIZMT,MAXLST
|
||||
PARAMETER (MXATOM=nw_max_atom)
|
||||
PARAMETER (MXCOOR=nw_max_coor)
|
||||
PARAMETER (MAXGEO=MXATOM+1,MAXWRD=40,MAXVAR=nw_max_zmat)
|
||||
PARAMETER (MAXPRM=100)
|
||||
PARAMETER (MXIZMT=nw_max_izmat)
|
||||
PARAMETER (MAXLST=10+1)
|
||||
integer ncenter,iz,izmat,nzmod,icfrz,ncfrz
|
||||
double precision units
|
||||
CHARACTER*16 TAGS
|
||||
LOGICAL GEOM_LST_PUT_COORD
|
||||
EXTERNAL GEOM_LST_PUT_COORD
|
||||
|
|
@ -2990,32 +2999,36 @@ C
|
|||
CHARACTER*10 WR2VAR
|
||||
CHARACTER*10 WR1CON
|
||||
CHARACTER*10 WR2CON
|
||||
integer ir,iw
|
||||
double precision atnum
|
||||
integer numchr,numwrd
|
||||
double precision xx,yy,zz
|
||||
COMMON/HND_IOFILE/IR,IW
|
||||
COMMON/HND_FREERD/PRSWRD(40),NUMCHR(40),FLGWRD(40),NUMWRD
|
||||
COMMON/HND_XYZGEO/XX(MAXGEO),YY(MAXGEO),ZZ(MAXGEO),
|
||||
1 ATNAME(MAXGEO),ATNUM(MAXGEO),CART(MAXGEO)
|
||||
DIMENSION COORDS(3,*)
|
||||
DIMENSION CHARGE( *)
|
||||
double precision COORDS(3,*)
|
||||
double precision CHARGE( *)
|
||||
DIMENSION TAGS( *)
|
||||
DIMENSION IZMAT( *)
|
||||
DIMENSION ICFRZ( *)
|
||||
DIMENSION IZFRZ(MXCOOR)
|
||||
DIMENSION CART0(MAXGEO)
|
||||
DIMENSION XXLST(MAXGEO, 2)
|
||||
DIMENSION YYLST(MAXGEO, 2)
|
||||
DIMENSION ZZLST(MAXGEO, 2)
|
||||
double precision XXLST(MAXGEO, 2)
|
||||
double precision YYLST(MAXGEO, 2)
|
||||
double precision ZZLST(MAXGEO, 2)
|
||||
DIMENSION GHOST( MAXGEO)
|
||||
DIMENSION NUMZMT( MAXGEO)
|
||||
integer NUMZMT( MAXGEO)
|
||||
DIMENSION PRSZMT(MAXWRD,MAXGEO)
|
||||
DIMENSION FLGZMT(MAXWRD,MAXGEO)
|
||||
DIMENSION ZMTCHR(MAXWRD,MAXGEO)
|
||||
DIMENSION FRZVAL( 3,MAXGEO)
|
||||
DIMENSION ZVAL( 3,MAXGEO)
|
||||
double precision ZVAL( 3,MAXGEO)
|
||||
DIMENSION ZMT( 5,MAXGEO)
|
||||
DIMENSION ZLST( 3,MAXGEO)
|
||||
DIMENSION ZSTP( 3,MAXGEO)
|
||||
double precision ZLST( 3,MAXGEO)
|
||||
double precision ZSTP( 3,MAXGEO)
|
||||
DIMENSION FRZVAR( MAXVAR)
|
||||
DIMENSION NUMVAR( MAXVAR)
|
||||
integer NUMVAR( MAXVAR)
|
||||
DIMENSION PRSVAR(MAXWRD,MAXVAR)
|
||||
DIMENSION FLGVAR(MAXWRD,MAXVAR)
|
||||
DIMENSION VARCHR(MAXWRD,MAXVAR)
|
||||
|
|
@ -3025,8 +3038,12 @@ C
|
|||
DIMENSION BLK(80)
|
||||
DIMENSION GH(4)
|
||||
DIMENSION ERRMSG(3)
|
||||
integer i,iat,icenter,ilst,ilen,iflg,idigit,ierr,isymbl,irsav,ivar
|
||||
integer iwrd,j,izmod,nvar,nat,nchr
|
||||
external inp_compare
|
||||
logical inp_compare
|
||||
double precision zero
|
||||
double precision xxiat,yyiat,zziat
|
||||
EQUIVALENCE (BLNK80,BLK(1))
|
||||
EQUIVALENCE (CHREND,WRDEND)
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','- ZGEO -'/
|
||||
|
|
@ -4046,29 +4063,37 @@ c
|
|||
c
|
||||
end
|
||||
SUBROUTINE HND_AUTSYM(ODONE,RTDB,THREQUIV,groupname,geom)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "nwc_const.fh"
|
||||
INTEGER RTDB
|
||||
integer geom
|
||||
double precision THREQUIV
|
||||
LOGICAL ODONE
|
||||
integer MXATOM,MXSYM
|
||||
PARAMETER (MXATOM=nw_max_atom)
|
||||
PARAMETER (MXSYM =120)
|
||||
CHARACTER*8 groupname
|
||||
LOGICAL SOME
|
||||
LOGICAL OUT
|
||||
LOGICAL DBUG
|
||||
integer ir,iw
|
||||
double precision c,zan,v
|
||||
integer nat
|
||||
integer invt,nt,ntmax,ntwd,nosym
|
||||
COMMON/HND_IOFILE/IR,IW
|
||||
COMMON/HND_MOLXYZ/C(3,MXATOM),ZAN(MXATOM),V(3,MXATOM),NAT
|
||||
COMMON/HND_SYMTRY/INVT(MXSYM),NT,NTMAX,NTWD,NOSYM
|
||||
DIMENSION CI(3),AI(3,3)
|
||||
DIMENSION C1(3,MXATOM)
|
||||
DIMENSION C2(3,MXATOM)
|
||||
DIMENSION C3(3,MXATOM)
|
||||
DIMENSION V2(3,MXATOM)
|
||||
DIMENSION V3(3,MXATOM)
|
||||
DIMENSION AXS(3,3),EIG(3)
|
||||
DIMENSION RT(3,3)
|
||||
DIMENSION TR(3)
|
||||
double precision CI(3),AI(3,3)
|
||||
double precision C1(3,MXATOM)
|
||||
double precision C2(3,MXATOM)
|
||||
double precision C3(3,MXATOM)
|
||||
double precision V2(3,MXATOM)
|
||||
double precision V3(3,MXATOM)
|
||||
double precision AXS(3,3),EIG(3)
|
||||
double precision RT(3,3)
|
||||
double precision TR(3)
|
||||
integer iat,i
|
||||
C
|
||||
DBUG=.FALSE.
|
||||
OUT =.FALSE.
|
||||
|
|
@ -4149,7 +4174,8 @@ C
|
|||
END
|
||||
SUBROUTINE HND_MOLOPS(C,C1,C2,C3,NAT,AXS,EIG,RT,TR,ODONE,
|
||||
$ THREQUIV,groupname,geom,V,V2,V3)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "errquit.fh"
|
||||
C
|
||||
C ----- ROUTINE DETECTS MOLECULAR SYMMETRY OPERATIONS -----
|
||||
|
|
@ -4161,11 +4187,13 @@ C
|
|||
#include "util.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "stdio.fh"
|
||||
integer nat
|
||||
integer geom
|
||||
LOGICAL ODONE
|
||||
integer mxordr, mxatom
|
||||
PARAMETER (MXORDR=24)
|
||||
PARAMETER (MXATOM=nw_max_atom)
|
||||
CHARACTER*8 ERRMSG,groupname
|
||||
CHARACTER*8 groupname
|
||||
LOGICAL MUCH
|
||||
LOGICAL DBUG
|
||||
LOGICAL OUT
|
||||
|
|
@ -4174,9 +4202,7 @@ C
|
|||
LOGICAL GOTX,GOTY,GOTZ
|
||||
LOGICAL GOTONE
|
||||
LOGICAL NOSYM
|
||||
LOGICAL PROPER
|
||||
LOGICAL PRPAXS
|
||||
LOGICAL IMPROP
|
||||
LOGICAL IMPAXS
|
||||
LOGICAL SYMINV
|
||||
LOGICAL INVERS
|
||||
|
|
@ -4192,11 +4218,8 @@ C
|
|||
LOGICAL DEGNR3
|
||||
LOGICAL CUBIC
|
||||
LOGICAL C2ROT
|
||||
LOGICAL C2AXS
|
||||
LOGICAL C4ROT
|
||||
LOGICAL C4AXS
|
||||
LOGICAL S4ROT
|
||||
LOGICAL S4AXS
|
||||
LOGICAL GRPOH
|
||||
LOGICAL GRPTH
|
||||
LOGICAL GRPTD
|
||||
|
|
@ -4205,44 +4228,60 @@ C
|
|||
logical stopordrx
|
||||
logical stopordry
|
||||
logical stopordrz
|
||||
INTEGER AXORDR
|
||||
COMPLEX*16 QX,QY,QZ
|
||||
COMPLEX*16 QZERO
|
||||
COMPLEX*16 QDUMX,QDUMY,QDUMZ
|
||||
COMPLEX*16 QDUMI,QDUMJ
|
||||
double COMPLEX QZERO
|
||||
double COMPLEX QDUMX,QDUMY,QDUMZ
|
||||
double COMPLEX QDUMI,QDUMJ
|
||||
character*16 atmlab
|
||||
integer ir,iw
|
||||
integer nuc
|
||||
COMMON/HND_IOFILE/IR,IW
|
||||
COMMON/HND_MOLNUC/NUC(MXATOM)
|
||||
common/hnd_mollab/atmlab(mxatom)
|
||||
DIMENSION IEQU(MXATOM)
|
||||
DIMENSION QX(MXORDR), QY(MXORDR), QZ(MXORDR)
|
||||
DIMENSION XMAG(MXORDR),YMAG(MXORDR),ZMAG(MXORDR)
|
||||
DIMENSION PROPER(3)
|
||||
DIMENSION IMPROP(3)
|
||||
DIMENSION AXORDR(3)
|
||||
DIMENSION NEWAXS(3)
|
||||
DIMENSION NUORDR(3)
|
||||
DIMENSION AXS(3,3),EIG(3)
|
||||
DIMENSION RT(3,3), TR(3)
|
||||
DIMENSION PRM(3,3)
|
||||
DIMENSION C(3,*)
|
||||
DIMENSION C1(3,*)
|
||||
DIMENSION C2(3,*)
|
||||
DIMENSION C3(3,*)
|
||||
DIMENSION V(3,*)
|
||||
DIMENSION V2(3,*)
|
||||
DIMENSION V3(3,*)
|
||||
DIMENSION CM(3),AM(3,3)
|
||||
DIMENSION AXM(3,3)
|
||||
DIMENSION C2AXS(3)
|
||||
DIMENSION C4AXS(3)
|
||||
DIMENSION S4AXS(3)
|
||||
DIMENSION ERRMSG(3)
|
||||
double precision big,deter3
|
||||
external deter3
|
||||
integer IEQU(MXATOM)
|
||||
double complex QX(MXORDR), QY(MXORDR), QZ(MXORDR)
|
||||
double precision XMAG(MXORDR),YMAG(MXORDR),ZMAG(MXORDR)
|
||||
double precision fulltheta
|
||||
logical PROPER(3)
|
||||
logical IMPROP(3)
|
||||
integer AXORDR(3)
|
||||
integer NEWAXS(3)
|
||||
integer NUORDR(3)
|
||||
integer kat,k,JJC4,JJS4,jjc2,j,i
|
||||
integer kaxis,jaxis,isteps,istep,iordr,iaxis
|
||||
integer iiat,jjat,iaxm
|
||||
double precision AXS(3,3),EIG(3)
|
||||
double precision RT(3,3), TR(3)
|
||||
double precision PRM(3,3)
|
||||
double precision C(3,*)
|
||||
double precision C1(3,*)
|
||||
double precision C2(3,*)
|
||||
double precision C3(3,*)
|
||||
double precision V(3,*)
|
||||
double precision V2(3,*)
|
||||
double precision V3(3,*)
|
||||
double precision CM(3),AM(3,3)
|
||||
double precision AXM(3,3)
|
||||
logical C2AXS(3)
|
||||
logical C4AXS(3)
|
||||
logical S4AXS(3)
|
||||
character*8 ERRMSG
|
||||
dimension ERRMSG(3)
|
||||
integer naxm,nsteps
|
||||
double precision tmp,twopi,theta,tenm05,tenm04,three,four
|
||||
double precision temp,two,step,rr,one
|
||||
double precision pi,pi2,pi4
|
||||
double precision dx,dy,dz,dirx,diry,dirz,dd
|
||||
double precision d2,degree,d1,d3
|
||||
double precision ethresh,dum,eps,disti,distj
|
||||
double precision big,deter3,dlamch
|
||||
integer nzer
|
||||
external deter3,dlamch
|
||||
logical sameatm,ngotax(3)
|
||||
complex*16 geom_powcmpl
|
||||
double complex geom_powcmpl
|
||||
external geom_powcmpl
|
||||
double precision xx,yy,zz,zero
|
||||
double precision THREQUIV
|
||||
integer iat,jat
|
||||
EQUIVALENCE (DEGNR3,CUBIC)
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','-MOLOPS-'/
|
||||
DATA ZERO /0.0D+00/
|
||||
|
|
@ -5548,7 +5587,8 @@ c
|
|||
2 PROPRX,PROPRY,PROPRZ,
|
||||
3 CUBIC,GRPOH,GRPTH,GRPTD,GRPT,GRPO,
|
||||
4 AXORDR,TR,RT,ODONE,groupname)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
#include "util.fh"
|
||||
LOGICAL ODONE
|
||||
LOGICAL DBUG
|
||||
|
|
@ -5591,10 +5631,16 @@ c
|
|||
LOGICAL MIRRYZ
|
||||
LOGICAL MIRRZX
|
||||
LOGICAL MIRRXY
|
||||
integer ir,iw
|
||||
integer igroup,naxis,linear
|
||||
double precision complx,cmxsav
|
||||
double precision dlamch
|
||||
integer igrsav,naxsav,linsav
|
||||
integer i,j
|
||||
COMMON/HND_IOFILE/IR,IW
|
||||
COMMON/HND_SYMMOL/COMPLX,IGROUP,NAXIS,LINEAR
|
||||
COMMON/HND_SYMNAM/GROUP
|
||||
DIMENSION TR(3),RT(3,3)
|
||||
double precision TR(3),RT(3,3)
|
||||
DATA BLANK /' '/
|
||||
DATA B /' '/
|
||||
DATA S /'S'/
|
||||
|
|
@ -5866,16 +5912,22 @@ C
|
|||
4 ' ',3F10.5)
|
||||
END
|
||||
SUBROUTINE HND_MOLAXS(A,VEC,EIG,NVEC,N,NDIM)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
C
|
||||
C ----- ROUTINE TO SUBSTITUTE DIAGIV FOR DIAGONALIZATION -----
|
||||
C OF SYMMETRIC 3X3 MATRIX A IN TRIANGULAR FORM
|
||||
C
|
||||
CHARACTER*8 ERRMSG
|
||||
integer ir,iw,n,ndim,nvec
|
||||
COMMON/HND_IOFILE/IR,IW
|
||||
DIMENSION A(3,3),VEC(3,3),EIG(3)
|
||||
DIMENSION AA(6),IA(3)
|
||||
double precision A(3,3),VEC(3,3),EIG(3)
|
||||
double precision AA(6)
|
||||
integer IA(3)
|
||||
DIMENSION ERRMSG(3)
|
||||
double precision zero,one,conv
|
||||
double precision test,t
|
||||
integer i,j
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','-MOLAXS-'/
|
||||
DATA ZERO /0.0D+00/
|
||||
DATA ONE /1.0D+00/
|
||||
|
|
@ -5942,7 +5994,13 @@ C
|
|||
END
|
||||
SUBROUTINE HND_MOLGRP(XPT0,YPT0,ZPT0,XPT1,YPT1,ZPT1,
|
||||
1 XPT2,YPT2,ZPT2,XPT3,YPT3,ZPT3)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
double precision XPT0,YPT0,ZPT0,XPT1,YPT1,ZPT1
|
||||
double precision XPT2,YPT2,ZPT2,XPT3,YPT3,ZPT3
|
||||
integer mxsym
|
||||
integer mxsymt
|
||||
integer mxioda
|
||||
PARAMETER (MXSYM =120)
|
||||
PARAMETER (MXSYMT=120*9)
|
||||
PARAMETER (MXIODA=255)
|
||||
|
|
@ -5955,6 +6013,17 @@ C
|
|||
CHARACTER*8 CHRGRP
|
||||
CHARACTER*8 CHRDIR
|
||||
CHARACTER*8 CHRBLK
|
||||
double precision GRP
|
||||
double precision DRC,direct,blank,conv
|
||||
integer ir, iw
|
||||
integer idaf, nav, ioda
|
||||
integer invt, nt, ntmax, ntwd, nosym
|
||||
double precision XSMAL,YSMAL,ZSMAL,XNEW,YNEW,ZNEW,XP,YP,ZP
|
||||
double precision U1,U2,U3,V1,V2,V3,W1,W2,W3,X0,Y0,Z0
|
||||
double precision complx
|
||||
integer IGROUP,NAXIS,LINEAR
|
||||
double precision group
|
||||
double precision t
|
||||
COMMON/HND_IOFILE/IR,IW
|
||||
COMMON/HND_DAFILE/IDAF,NAV,IODA(MXIODA)
|
||||
COMMON/HND_SYMTRY/INVT(MXSYM),NT,NTMAX,NTWD,NOSYM
|
||||
|
|
@ -5969,11 +6038,19 @@ C
|
|||
DIMENSION GRP(19)
|
||||
DIMENSION DRC(2)
|
||||
DIMENSION ERRMSG(3)
|
||||
double precision pi2,zero,pt5,one,three,pi
|
||||
integer i,j
|
||||
double precision rho
|
||||
double precision z1,z2,z3,z02,y1,y2,y3,y02,x1,x2,x3,x02,ww
|
||||
double precision uu,u,test,sina,sinb,sign,dum,cosa,cosb
|
||||
double precision beta,alpha,alph
|
||||
integer n1,n2,n,itr,it,nn,ii
|
||||
EQUIVALENCE (CHRGRP,GROUP )
|
||||
EQUIVALENCE (CHRDIR,DIRECT)
|
||||
EQUIVALENCE (CHRBLK,BLANK)
|
||||
EQUIVALENCE (GRP(1),GRPCHR(1))
|
||||
EQUIVALENCE (DRC(1),DRCCHR(1))
|
||||
double precision tol
|
||||
DATA ERRMSG /'PROGRAM ','STOP IN ','- PTGRP-'/
|
||||
DATA GRPCHR /'C1 ','CS ','CI ',
|
||||
1 'CN ','S2N ','CNH ',
|
||||
|
|
@ -5985,7 +6062,7 @@ C
|
|||
DATA CHRBLK /' '/
|
||||
DATA DRCCHR /'NORMAL ','PARALLEL'/
|
||||
DATA TOL /1.0D-10/
|
||||
DATA PI2 /6.28318530717958D+00/
|
||||
c DATA PI2 /6.28318530717958D+00/
|
||||
DATA ZERO /0.0D+00/
|
||||
DATA PT5 /0.5D+00/
|
||||
DATA ONE /1.0D+00/
|
||||
|
|
@ -5997,6 +6074,8 @@ C
|
|||
C
|
||||
C ----- GROUP INFO -----
|
||||
C
|
||||
pi = acos(-1.0d0)
|
||||
pi2 = 2.0d0*pi
|
||||
LINEAR=0
|
||||
C
|
||||
IGROUP=20
|
||||
|
|
@ -6571,15 +6650,23 @@ C
|
|||
9978 FORMAT(' THE MOLECULE IS LINEAR ')
|
||||
END
|
||||
SUBROUTINE HND_PRTSYM(N1,N2)
|
||||
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
c IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
||||
implicit none
|
||||
integer n1,n2
|
||||
integer MXSYM, MXSYMT, MXIODA
|
||||
PARAMETER (MXSYM =120)
|
||||
PARAMETER (MXSYMT=120*9)
|
||||
PARAMETER (MXIODA=255)
|
||||
integer IR,IW
|
||||
integer IDAF,NAV,IODA
|
||||
integer INVT,NT,NTMAX,NTWD,NOSYM
|
||||
double precision t
|
||||
COMMON/HND_IOFILE/IR,IW
|
||||
COMMON/HND_DAFILE/IDAF,NAV,IODA(MXIODA)
|
||||
COMMON/HND_SYMTRY/INVT(MXSYM),NT,NTMAX,NTWD,NOSYM
|
||||
COMMON/HND_SYMMAT/T(MXSYMT)
|
||||
DIMENSION NN(MXSYM)
|
||||
integer NN(MXSYM)
|
||||
integer imax,imin,j,i,ni,nj
|
||||
IMAX=N1-1
|
||||
100 IMIN=IMAX+1
|
||||
IMAX=IMAX+4
|
||||
|
|
@ -6607,6 +6694,7 @@ C
|
|||
#include "global.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "stdio.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
double precision alpha, ds(*)
|
||||
double precision err ! [output] Returns the error
|
||||
|
|
@ -6652,8 +6740,8 @@ c
|
|||
c
|
||||
c Form the target internals in bohr & degrees
|
||||
c
|
||||
bohr = 0.52917715d0
|
||||
deg = 0.52917715d0*180d0/(4d0*atan(1d0))
|
||||
bohr = cau2ang
|
||||
deg = bohr*180d0/(4d0*atan(1d0))
|
||||
if (.not. geom_compute_zmatrix(geom, q))
|
||||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
call geom_zmat_ico_scale(geom, dq, bohr, deg)
|
||||
|
|
@ -6785,6 +6873,7 @@ c
|
|||
#include "global.fh"
|
||||
#include "nwc_const.fh"
|
||||
#include "stdio.fh"
|
||||
#include "util_params.fh"
|
||||
integer geom
|
||||
external impose_constraints
|
||||
c
|
||||
|
|
@ -6822,8 +6911,8 @@ c
|
|||
$ call errquit('driver_u_c_f_i: geom?',0, GEOM_ERR)
|
||||
ncart = nat * 3
|
||||
c
|
||||
bohr = 0.52917715d0
|
||||
deg = 0.52917715d0*180d0/(4d0*atan(1d0))
|
||||
bohr = cau2ang
|
||||
deg = bohr*180d0/(4d0*atan(1d0))
|
||||
c
|
||||
if (.not. ma_push_get(mt_dbl,ncart*nzvar,'mem bi',l_bi,k_bi))
|
||||
$ call errquit('opt_int_to_cart: ma', ncart*nzvar, MA_ERR)
|
||||
|
|
@ -7176,7 +7265,7 @@ c
|
|||
double precision theta, c2(3,nat)
|
||||
double precision pi, rr, dd, dz
|
||||
double precision threquiv
|
||||
COMPLEX*16 QDUMI, QDUMJ,ctheta
|
||||
double COMPLEX QDUMI, QDUMJ,ctheta
|
||||
c
|
||||
#ifdef DEBUG
|
||||
some = .false.
|
||||
|
|
@ -7260,7 +7349,7 @@ c
|
|||
enddo
|
||||
c
|
||||
end
|
||||
complex*16 function geom_powcmpl(c,s,n,big)
|
||||
double complex function geom_powcmpl(c,s,n,big)
|
||||
implicit none
|
||||
double precision c,s,big
|
||||
integer n
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
subroutine geom_print_rtdb_ecce(rtdb)
|
||||
implicit none
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue