Subject: Symmetry the summary

From: <[email-masked]>
Date: Wed, 30 Mar 1994 11:39:18 +0200

Dear netters,

As a friend pointed to me a forgot to summarize to the list the answers
I got from my request which was the following :

Dear CClers

Is there an easy way (even complicated will do) to find the principal axes
of symmetry of a given molecule knowing only the atoms coordinates, it is not
only to be able to build internal coordinates (as MOPAC or other packages do)
but to be of general use, (I think Spartan does it).
Sorry if it is a FAQ.

--------------------------------------------------------------
Francois Savary

Department of Physical Chemistry
University of Geneva
30, quai Ernest-Ansermet
CH-1211 Geneva 4

phone  : +4122 702 65 32
fax    : +4122 702 65 18
e-mail : [email-masked]
--------------------------------------------------------------

Here are the answers, thanx for your precious help :

=====================================================================
From:	IN%"[email-masked]" 14-FEB-1994 18:57:01.28

	Try the appende code to see if it does what you want.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                           FREDERIC A. VAN-CATLEDGE

Scientific Computing Division         ||   Office: (302) 695-1187 or 529-2076
Central Research & Development Dept.  ||          
The DuPont Company                    ||      FAX: (302) 695-9658
P. O. Box 80320                       ||
Wilmington DE 19880-0320              || Internet: [email-masked] 
--------------------------------------------------------------------------------
Opinions expressed in this electronic message should ***> NOT <*** be taken to 
represent the official position(s) of the DuPont Company.  

*****> ANY OPINIONS EXPRESSED ARE THE PERSONAL VIEWS OF THE AUTHOR ONLY. <*****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

      PROGRAM MOMENTS
C&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
C VERSION 3: FOR .XYZ FILES, NOT .CON FILES
C*************************************************************************
      IMPLICIT REAL*8 (A-H,O-Z)
C
      PARAMETER (NQ=253)
      PARAMETER (NMAX = NQ - 3)
C
      LOGICAL BOHR
C
      CHARACTER IDENT*80, DCLCMD*80, INNAME*30, NEWFIL*40, SP*2
C
      DIMENSION  XIQ(3), QCOM(3), A(3,3), B(3), XMOM(3), V(3,3), SQ(3)
      DIMENSION IZ(NQ), Q(3,NQ), JCON(NQ), JATTCH(NQ,9), W(NQ), 
     &          QS(3,NQ)
C
      REAL*8 MHZ(3)
C
      CHARACTER*4 AXIS(3)
      DATA AXIS / 'I(x)', 'I(y)', 'I(z)'/
      CHARACTER*1 CONS(3)
      DATA CONS/ 'A', 'B', 'C'/
      
      COMMON/PASS/QV(3,3)
C
      DIMENSION ATWT(86)
      COMMON/ATMDAT/AN, ATWT
C
      DATA CAU /0.5291771E+00/
      DATA HP, KHP, C0, KC0 /6.6254, -27, 2.997928, 10/
      DATA SP/', '/
C
      PI = 4.D0 * DATAN(1.0D+00)
      HZF = HP/(8. * PI * PI)
      KHZF = KHP
C&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
C        GET INTIAL COORDINATES
C***********************************************************************
C-----GET FILE NAME
    1 WRITE(6,9999)
 9999 FORMAT(/'$INPUT STRUCTURE NAME (CTRL/Z TO QUIT): ')
      READ(5,'(A)',END=1000)INNAME
      LL = INDEX(INNAME, ' ') - 1
      NEWFIL = INNAME(1:LL)//'.XYZ'
      OPEN(UNIT=15,NAME=NEWFIL,TYPE='OLD',READONLY)
C-----HOUSEKEEPING
      DO 2 I = 1,NQ
        DO 2 J = 1, 3
          Q(J,I) = 0.
          SQ(J) = 0.
    2 CONTINUE
C-----READ IN DATA FOR WORKING STRUCTURE
      READ(15,'(A)')IDENT
      READ(15,*)N, ICHG, MULT, IANG
      IF (N.GT.NMAX) THEN
        WRITE(6,6999)N,NMAX
        STOP
      END IF
 6999 FORMAT('0',I3,' ATOMS IS TOO MANY. LIMIT IS ',I3)
      NP = N + 3
      BOHR = (IANG .EQ. 0)
      DO 5 K = 1, N
        READ ( 15, * ) IZ(K), (Q(I,K), I = 1, 3), NUM, JCON(K),
     &                    (JATTCH(K,L), L = 1, JCON(K))
        IF (IZ(K) .LE. 86) THEN
          W(K)=ATWT(IZ(K))
        ELSE
          WRITE(6,9998) K, IZ(K)
          CLOSE(UNIT=15)
          STOP
        END IF
        IF (BOHR) THEN
          DO 4 J = 1, 3
            Q(J,K) = Q(J,K) * CAU
    4     CONTINUE
        END IF
    5 CONTINUE
 9998 FORMAT(//'NO ATOMIC MASS FOR ATOM' ,I3,', ATOMIC # = ',I3)
C
      CLOSE(UNIT=15)
C***********************************************************************
C                   CENTER OF MASS XFORMATION
C***********************************************************************
C
C-----FORM MASS-WEIGHTED SUMS
C
      DO 10 I = 1, N
        SW=SW+W(I)
        DO 9 J = 1, 3
          SQ(J)=SQ(J)+W(I)*Q(J,I)
    9   CONTINUE
   10 CONTINUE
C
C-----XFORM ORIGIN TO COM
      DO 11 K = 1, 3
        QCOM(K) = SQ(K)/SW
   11 CONTINUE
      DO 15 L = 1, N
        DO 14 K = 1, 3
          Q(K,L) = Q(K,L) - QCOM(K)
   14   CONTINUE
   15 CONTINUE
C
C-----ADD UNIT VECTORS TO COORDINATES
      DO 16 J = 1, 3
        Q(J,N+J) = 1.
   16 CONTINUE
C***********************************************************************
C                CALC. MOMENTS OF INERTIA
C***********************************************************************
      DO 20 I = 1, 3
        DO 20 J = 1, 3
           A(I,J)=0.
   20 CONTINUE
C
C-----FORM MOMENTS MATRIX
      DO 25 K = 1, N
        A(1,1)=A(1,1)+W(K)*(Q(2,K)**2+Q(3,K)**2)
        A(1,2)=A(1,2)-W(K)*Q(1,K)*Q(2,K)
        A(2,2)=A(2,2)+W(K)*(Q(1,K)**2+Q(3,K)**2)
        A(1,3)=A(1,3)-W(K)*Q(1,K)*Q(3,K)
        A(2,3)=A(2,3)-W(K)*Q(2,K)*Q(3,K)
        A(3,3)=A(3,3)+W(K)*(Q(1,K)**2+Q(2,K)**2)
   25 CONTINUE
        A(2,1) = A(1,2)
        A(3,1) = A(1,3)
        A(3,2) = A(2,3)
C
C-----DIAGONALIZE MOMENTS MATRIX [IMSL V1.0 ROUTINE]
      CALL DE2CSF(3,A,3,XMOM,V,3,B)
      PI = DE2ISF(3,3,A,3,XMOM,V,3,B)
      WRITE(6,1111) PI
 1111 FORMAT('0***** DIAGONALIZATION PERFORMANCE INDEX: ',F7.3,' *****')
C
C-----NORMALIZE EIGENVECTORS (2-NORM)
      DO 29 I = 1,3
        S = 0.
        DO 27 J = 1, 3
          S = S + V(J,I)**2
   27   CONTINUE
        S = DSQRT(S)
        DO 28 J = 1, 3
          V(J,I) = V(J,I)/S
   28   CONTINUE
   29 CONTINUE
C
C-----TRANSFORM COORDINATES
      DO 34 I = 1, NP
        DO 33 J = 1, 3
C          QS(J,I)=V(1,J)*Q(1,I)+V(2,J)*Q(2,I)+V(3,J)*Q(3,I)
          SUM = 0.
          DO 32 K = 1, 3
            SUM = SUM + V(K,J)*Q(K,I)
   32     CONTINUE
          QS(J,I) = SUM
   33   CONTINUE
   34 CONTINUE
C
C-----SCALE MOMENTS TO CGS SYSTEM
      KXIQ = -39
      KMHZ = KHP - KXIQ - 6
      DO 35 K = 1, 3
        XIQ(K)=XMOM(K)/AN
        MHZ(K) = (HZF/XIQ(K)) * (10.**KMHZ)
   35 CONTINUE
C***********************************************************************
C
C>>>>>CHECK FOR ENANTIOMERIZATION
C***********************************************************************
      DO 150 I = 1, 3
        DO 150 J = 1,3
          QV(J,I) = QS(J,I+N)
  150 CONTINUE
C
      CALL ORIENT
C
      CHECK = QV(2,2)
      WRITE(6,5999) CHECK
 5999 FORMAT('0 ENANTIOMERIC CHECK = ',F10.5)
      IF (CHECK.LT.0.0) THEN
        WRITE(6,5998)
 5998   FORMAT(' ENANTIOMER OF STARTING STRUCTURE.  DOING A REFLECTION'
     &         /' THROUGH THE X-Z PLANE......'/)
C
        DO 38 I = 1, N
          QS(2,I) = -QS(2,I)
   38   CONTINUE
      END IF
C
C***********************************************************************
C
C>>>>>DO SCREEN DUMP
C***********************************************************************
C
      XMX=QS(1,1)
      XMN=XMX
      YMX=QS(2,1)
      YMN=YMX
      ZMX=QS(3,1)
      ZMN=ZMX
C
      DO 40 I = 2, N
        XMX=DMAX1(XMX,QS(1,I))
        XMN=DMIN1(XMN,QS(1,I))
        YMX=DMAX1(YMX,QS(2,I))
        YMN=DMIN1(YMN,QS(2,I))
        ZMX=DMAX1(ZMX,QS(3,I))
        ZMN=DMIN1(ZMN,QS(3,I))
   40 CONTINUE
C
C***********************************************************************
C     WRITE XFORMED COORDINATES IN .XYZ_COM FILE
C***********************************************************************
      NEWFIL = INNAME(1:LL)//'.XYZ_COM'
      OPEN(UNIT=16,NAME=NEWFIL,TYPE='NEW',CARRIAGECONTROL='LIST')
      NEWFIL = INNAME(1:LL)//'.ROTCONS'
      OPEN(UNIT=6,NAME=NEWFIL,TYPE='NEW')
      DCLCMD = '$ TYPE/PAGE '//NEWFIL
C
C-----WRITE NEW .XYZ FILE IN CENTER-OF-MASS COORDINATES
      IF (BOHR) THEN
        DO 600 I = 1, N
          DO 590 L = 1, 3
            QS(L,I) = QS(L,I)/CAU
  590     CONTINUE
  600   CONTINUE
      END IF
C
      WRITE ( 16, 9160 )  IDENT
 9160 FORMAT(A80)
      WRITE ( 16, 9170 ) N,SP,ICHG,SP,MULT,SP,IANG
 9170 FORMAT(I3,A2,I2,A2,I1,A2,I1)
      IF (JCON(I) .NE. 0) THEN
        DO 945 I = 1, N
          WRITE(16,9180)IZ(I),SP,((QS(J,I),SP),J=1,3),I,SP,
     &                  JCON(I),SP,((JATTCH(I,K),SP),K=1,JCON(I))
 9180     FORMAT(I3,A2,3(F15.10,A2),I3,A2,I1,A2,9(I3,A2))
  945   CONTINUE
      ELSE
        DO 950 I = 1, N
          WRITE(16,9185) IZ(I),SP,((QS(J,I),SP),J=1,3),I,SP
 9185     FORMAT(I3,A2,3(F15.10,A2),I3,A2,I1,A2)
  950   CONTINUE
      END IF
C
      WRITE(6,7999)
      WRITE(16,7999)
 7999 FORMAT(/6X,'<-- (MOMENTS OF INERTIA) * 1.0E+39 [gm*(cm**2)]'
     &       /6X,'(ROTATIONAL CONSTANTS) [MHz] -->'/)
c
      DO 39 I = 1, 3
        WRITE(6,7990) AXIS(I), XIQ(I), CONS(I), MHZ(I)
        WRITE(16,7990) AXIS(I), XIQ(I), CONS(I), MHZ(I)
   39 CONTINUE
 7990 FORMAT(1X,A4,' = ',G20.10,5X,A1,' = ',G20.10)
C
      WRITE(6,4999) SW
      WRITE(16,4999) SW
 4999 FORMAT(//5X,'PARTICLE MASS IN A.M.U = ',F15.5)
C
      WRITE(6,7997)
      WRITE(16,7997)
 7997 FORMAT(/13X,'MAXIMUM'7X,'MINIMUM')
C
      WRITE(6,7996)XMX,XMN,YMX,YMN,ZMX,ZMN
      WRITE(16,7996)XMX,XMN,YMX,YMN,ZMX,ZMN
 7996 FORMAT(3X,'X:',2F15.5/3X,'Y:',2F15.5/3X,'Z:',2F15.5)
C
      CLOSE(UNIT=16)
      CLOSE(UNIT=6)
C
C.....TYPE SUMMARY FILE
      WRITE(6,1999) DCLCMD
 1999 FORMAT(' ',A80)
      ISTAT = LIB$SPAWN(DCLCMD)
      IF (.NOT.ISTAT) CALL LIB$STOP(%VAL(ISTAT))

C***********************************************************************
      GO TO 1
C
 1000 STOP
      END
C
      SUBROUTINE ORIENT
C*************************************************************************
      IMPLICIT REAL*8 (A-H,O-Z)
      DIMENSION A(3,3), TMP(3)
C
      COMMON/PASS/Q(3,3)
C
C
C     QV - CARTESIAN COORDINATES STORED COLUMN WISE
C     A  - A TRANSFORMATION MATRIX
C     TMP - A TEMPORARY ARRAY
C     EPS  - A LOWER BOUNDS FOR COMPUTATION
C
      DATA EPS/1.0E-06/
C
C*************************************************************************
C
C ROTATE VECTOR 3 INTO XZ PLANE [(X3,Y3,Z3) -> (X3',0,Y3)]
C
      ASSIGN 10 TO IZERO
      GO TO 500
C
   10 CONTINUE
      R = DSQRT(Q(1,3)**2 + Q(2,3)**2)
      IF (R.LT.EPS) GO TO 19
      CT = Q(1,3)/R
      ST = Q(2,3)/R
      A(1,1) = CT
      A(2,2) = CT
      A(1,2) = ST
      A(2,1) = -ST
      A(3,3) = 1.
C
      ASSIGN 19 TO IXFORM
      GO TO 600
C
C*************************************************************************
C
C     ROTATE VECTOR 3 INTO Z AXIS [(X3',0,Z3) -> (0,0,Z3)]
C
   19 ASSIGN 20 TO IZERO
      GO TO 500
C
   20 CONTINUE
      R = DSQRT(Q(1,3)**2 + Q(3,3)**2)
      IF (R.LT.EPS) GO TO 29
      CT = Q(3,3)/R
      ST = Q(1,3)/R
      A(1,1) = CT
      A(3,3) = CT
      A(1,3) = -ST
      A(3,1) = ST
      A(2,2) = 1.
C
      ASSIGN 29 TO IXFORM
      GO TO 600
C
C*************************************************************************
C
C     ROTATE VECTOR 1 INTO XZ PLANE [(X1,Y1,Z1) -> (X1',0,Z1)]
C     {Z1 SHOULD BE ZERO. SEE NEXT SECTION.}
C
   29 ASSIGN 30 TO IZERO
      GO TO 500
C
   30 CONTINUE
      R = DSQRT(Q(1,1)**2 + Q(2,1)**2)
      IF (R.LT.EPS) GO TO 39
      CT = Q(1,1)/R
      ST = Q(2,1)/R
      A(1,1) = CT
      A(2,2) = CT
      A(1,2) = ST
      A(2,1) = -ST
      A(3,3) = 1.
C
      ASSIGN 39 TO IXFORM
      GO TO 600
C
C*************************************************************************
C
C     ROTATE VECTOR 1 ONTO X PLANE [(X1',0,Z1) -> (R1,0,0)]
C     {Z1 SHOULD BE ZERO. THIS SHOULD BE A NULL OPERATION}
C
   39 IF (DABS(Q(3,1)).LT.EPS) GO TO 700
      WRITE(6,9999)EPS
 9999 FORMAT('0>>>>> WARNING!! |Z-COMPONENT| OF X-VECTOR .GT. ',G12.6)
      WRITE(6,9998)(Q(J,1),J=1,3)
 9998 FORMAT(' ',5X,'X-VECTOR:',3G16.8/)
C
      ASSIGN 40 TO IZERO
      GO TO 500
C
   40 CONTINUE
      R = DSQRT(Q(1,1)**2 + Q(3,1)**2)
      IF (R.LT.EPS) GO TO 49
      CT = Q(1,1)/R
      ST = Q(3,1)/R
      A(1,1) = CT
      A(3,3) = CT
      A(1,3) = ST
      A(3,1) = -ST
      A(2,2) = 1.
C
      ASSIGN 49 TO IXFORM
      GO TO 600
C
   49 GO TO 700
C
C***************************************************************************
  500 CONTINUE
C
C     ZERO OUT =A=
C
      DO 510 I = 1,3
        DO 510 J = 1, 3
  510     A(I,J) = 0.
C
      GO TO IZERO
C
C***************************************************************************
  600 CONTINUE
C
C     TRANSFORM =Q=
C
      DO 625 IC = 1,3
C
        DO 605 KK = 1,3
          TMP(KK) = 0.
  605   CONTINUE
C
        DO 615 IR = 1, 3
          DO 610 L = 1,3
            TMP(IR) = TMP(IR) + A(IR,L)*Q(L,IC)
  610     CONTINUE
  615   CONTINUE
C
        DO 620 IR = 1, 3
          Q(IR,IC) = TMP(IR)
  620   CONTINUE
C
  625 CONTINUE
C
      GO TO IXFORM
C
C***************************************************************************
  700 RETURN
      END
C
      BLOCK DATA ATOMS
      IMPLICIT REAL*8 (A-H,O-Z)
C
      DIMENSION ATWT(86)
      COMMON/ATMDAT/AN, ATWT
C
      DATA ATWT/
     & 1.00797, 4.0026, 6.939, 9.0122, 10.811,
     & 12.01115, 14.0067, 15.9994, 18.9984, 20.183,
     & 22.9898, 24.312, 26.9815, 28.086, 30.9738,
     & 32.064, 35.453, 39.948, 39.102, 40.08,
     & 44.956, 47.90, 50.942, 51.996, 54.938,
     & 55.847, 58.933, 58.71, 63.54, 65.37,
     & 69.72, 72.59, 74.922, 78.96, 79.909,
     & 83.80, 85.47, 87.62, 88.905, 91.22,
     & 92.906, 95.94, 98., 101.07, 102.905,
     & 106.4, 107.870, 112.40, 114.82, 118.69,
     & 121.75, 127.60, 126.904, 131.30, 132.905,
     & 137.34, 138.91, 140.12, 140.907, 144.24,
     & 147., 150.35, 151.96, 157.25, 158.924,
     & 162.50, 164.930, 167.26, 168.934, 173.04,
     & 174.97, 178.49, 180.948, 183.85, 186.2,
     & 190.2, 192.2, 195.09, 196.967, 200.59,
     & 204.37, 207.19, 208.98, 210., 210.,
     & 222./
C
      DATA AN/6.02252/
C
      END
=====================================================================

From:	IN%"[email-masked]"  " (Dr. James Stewart)" 14-FEB-1994 19:09:34.10

Please feel free to use the symmetry codes in MOPAC 7, the public-domain
program.  The routine SYMTRZ plus its dependent routines, can identify most
symmetry axes.  It fails on C60 and some other high-symmetry species.

Jimmy Stewart

=====================================================================
From:   IN%"[email-masked]"  "Dipl.-Ing. Karl NEDWED"

Dear Dr. Savary,

there is a fairly easy way to determine the principal axes of a molecule,
indeed. In fact, each symmetry element (or operation) can be described by a
single axis. For proper or improper rotations it is of course the axis itself, `
for mirror planes the normal axis to the plane.
I am currently programming a software packet named "SYMAPPS for Windows" that  `
determines the point group of a molecule automatically, once the atomic
coordinates have been defined (if via absolute Cartesian or internal does not  `
matter, the program converts internal to absolute coordinates anyway).
To find the point group, all principal axes (and all the other defining axes
too) have to be determined, so I developed a suitable algorithm.
I will send you the preprint of a paper which is due to be published soon.
If you are interested in the software (a beta demo version is available),
just send me a mail.

Yours very truly

     Karl NEDWED

Institute for Physical and Theoretical Chemistry
Graz Institute of Technology
Rechbauerstr. 12
A-8010 Graz
Austria

phone: +316 873 8231
e-mail: [email-masked]
=====================================================================
Note I have personaly contact Karl Nedwed and I have received a copy of his program SYMAPPS 2.0, although it is now at the stage of a late beta version it works fine
As we discussed it with each other, Karl has put a demo version to the net. Also
he should publish a paper soon.
=====================================================================

Dear netters,

Within the last few years there have piled up requests how to determine point
groups of molecules automatically, i.e. with a computer. A number of methods
have been developed, but they all lack either applicability to a computer or
suitability to determine all existing point groups. A computer program is
needed that
* determines the point group of molecules automatically in a reasonable time,
* lets point group determinations pe performed, even of distorted
  molecules(!),
* lets multiple point group determinations of the same molecule be performed,
  each one with a different allowance of distortion.

We have been working on this problem for a year now and are proud to present
a software that will do ALL THIS for you and and a lot more.
The computer program is called SYMAPPS for Windows and runs on IBM PC or
compatible systems under MS Windows(R).
The main features are:
* Input of molecular data via absolute (Cartesian) coordinates.
* Input of molecular data via internal (Z-matrix) coordinates.
* Automatic point group determinations of any molecule. Neither the size of
  the molecule nor the detected point group is subject to any restrictions
  (apart from computer memory). The extent of distortion can be gauged by a
  so-called uncertainty parameter T, which can be chosen from 0 to about 0.7.
  The greater T, the greater the distortion of the molecule may be in order
  to still find an idealized point group of high symmetry. For example, if a
  particular compound shows a Jahn-Teller-Effect, with a small value of T the
  point group D4h will be found, while for larger values of T the group Oh
  will occur. It is the user's task to decide, if in his computations the
  distortion is too large to use Oh or not. In any case, the extent of
  distortion can be gauged by the absolute value of T.
* Visualization of molecules in a three-dimensional, perspective outline
  mode on screen. Only bonds and atom identifiers are displayed in this mode.
  Real time rotating and resizing is possible.
* Visualization of molecules in the three-dimensional perspective spacefill
  mode on screen, where atoms assume spherical shapes.
* Display of the character tables of arbitrary point groups (not restricted
  to the 32 crystallographic ones).
* Reduction of reducible representations into their irreducible components.

SYMAPPS for Windows will be of great use to chemists physicists and
crystallographers, involved in both research and teaching.
For a demo version, please contact

***Karl NEDWED
***Institute for Physical and Theoretical Chemistry
***Graz Institute of Technology
***A-8010 Graz
***Austria
***E-mail address: [email-masked]

or simply ftp it from

***server: ftp.tu-graz.ac.at
***login: anonymous
***password: your E-mail address
***directory: pub\msdos\symapps

The full version will be available soon. A single user edition will be US$100
(excl. 20% VAT and delivery), for site licenses please contact us.

We hope that SYMAPPS for Windows will simplify a lot of time-consuming
computations and determinations in laboratories.

=====================================================================

From:	IN%"[email-masked]"  "wendy chen" 14-FEB-1994 21:36:12.26

you can simply calculate the moments of inertial tensor with mass=1 for
every atom. the eigenvectors of the tensor matrix are the
corresponding principle axes.

hope this helpful!

wendy chen

=====================================================================
From:	IN%"[email-masked]"  "CBAS25 ::P_BLADON ::CBAS25" 15-FEB-1994 00:14:05.30

Dear Francois,
	I have made an addition to MOPAC-6 which may do what you want.
I puts out the Cartesian coordinates of the molecule in a coordinate
frame defined by the principal axes.  It also allows the output of
the  moments of inertia and the dipole moment's components in the 
same frame.

Yours sincerely,

Peter Bladon

=====================================================================

From:	IN%"[email-masked]" 15-FEB-1994 10:25:42.98

Salut,
       j'ai recu la bibliographie:  les 2 premiers me semblent interessants.
As-tu recu des reponses ?

a bientot,  ciao

Andre

>L4   ANSWER 1 OF 5  CA  COPYRIGHT 1994 ACS
>AN   CA113(11):96655t  CA
>   Correction of: CA112(23):215706b
>TI   Computer perception of constitutional (topological)   ***symmetry***
>     :  TOPSYM, a fast algorithm for partitioning atoms and pairwise
>     relations among atoms into equivalence classes
>AU   Ruecker, Gerta; Ruecker, Christoph
>CS   Inst. Org. Chem. Biochem., Univ. Freiburg
>LO   Freiburg D-7800, Fed. Rep. Ger.
>SO   J. Chem. Inf. Comput. Sci., 30(2), 187-91
>SC   20-5 (History, Education, and Documentation)
>DT   J
>CO   JCISD8
>IS   0095-2338
>PY   1990
>LA   Eng
>OS   CJACS
>AB   An algorithm for the perception of constitutional symmetry in mols.
>     (graphs) is presented that partitions not only atoms (vertices) but
>     also all pairwise relations among skeleton atoms into equivalence
>     classes. The method works without canonical numbering, essentially
>     by raising the connectivity matrix of the arbitrarily numbered mol.
>     (graph) to its 2nd, 3rd, etc., power and evaluating the entries in
>     these higher order matrixes.
>
>L4   ANSWER 2 OF 5  CA  COPYRIGHT 1994 ACS
>AN   CA112(23):215706b  CA
>TI   Computer perception of constitutional (topological)   ***symmetry***
>     :  TOPSYM, a fast algorithm for partitioning atoms and pairwise
>     relations among atoms into equivalence classes
>AU   Ruecker, Gerta; Ruecker, Christoph
>CS   Inst. Org. Chem. Biochem., Univ. Freiburg
>LO   Freiburg D-7800, Fed. Rep. Ger.
>SO   J. Chem. Inf. Comput. Sci., 30(2), 187-91
>SC   20-5 (History, Education, and Documentation)
>DT   J
>CO   JCISD8
>IS   0095-2338
>PY   1990
>LA   Eng
>OS   CJACS
>AB   An algorithm for the perception of constitutional symmetry in mols.
>     (graphs) is presented that partitions not only atoms (vertices) but
>     also all pairwise relations among skeleton atoms into equivalence
>     classes. The method does not require canonical numbering by raising
>     the connectivity matrix of the arbitrarily numbered mol. (graph) to
>     its 2nd, 3rd, etc., power and evaluating the entries in these higher
>     ordered matrixes. The computer program based on this algorithm
>     (TOPSYM), written in FORTRAN, is described and used to depict mol.
>     structures from the constitutional formula of the compd. as the only
>     input.
>
>L4   ANSWER 3 OF 5  CA  COPYRIGHT 1994 ACS
>AN   CA112(10):88800a  CA
>TI   CRYST - a system to display 3D images of crystal structure,
>     ***symmetry***   operations and crystal forms
>AU   Sakurai, Tosio; Kobayashi, Kimiko; Horiki, Tsuyoshi; Furukawa,
>     Masao; Naitou, Kimitoshi
>CS   Fac. Educ., Shinshu Univ.
>LO   Nagano 380, Japan
>SO   J. Appl. Crystallogr., 22(6), 633-9
>SC   75-10 (Crystallography and Liquid Crystals)
>DT   J
>CO   JACGAR
>IS   0021-8898
>PY   1989
>LA   Eng
>AB   CRYST is a 3D computer graphics program to help the understanding of
>     crystallog. procedures. The 3-dimensional image of a crystal
>     structure is displayed, together with the arrangement of the
>     symmetry elements in the unit cell. The symmetry-related atoms can
>     be generated successively on a graphics screen by designating
>     symmetry elements with a pen and tablet. Changes in morphol. of a
>     growing crystal may also be drawn by computer. Several applications
>     of the system are described.
>
>L4   ANSWER 4 OF 5  CA  COPYRIGHT 1994 ACS
>AN   CA107(13):111717m  CA
>TI     ***Symmetry***   control in reactions in molecular cavities
>AU   Guarino, A.
>CS   Ist. Chim. Nucl., CNR
>LO   Rome 00036, Italy
>SO   J. Mol. Graphics, 5(1), 22-4, 28
>SC   7-4 (Enzymes)
>DT   J
>CO   JMGRDV
>IS   0263-7855
>PY   1987
>LA   Eng
>AB   Multistep reaction processes which occur in mol. cavities, like
>     those involved in host-guest inclusion compds., have been found to
>     depend on the fulfilment of certain symmetry requirements;
>     similarly, a symmetry control is obsd. whenever mol. cavities are
>     formed by the active sites of specific enzyme-substrate complexes.
>     It seems reasonable to suggest that, if the enzymic structures are
>     known, a careful use of these simple symmetry considerations may
>     contribute to a better interpretation of the reactivity-structure
>     correlations obtained by computer aided mol. graphic models of these
>     enzymic complexes.
>
>=> s
>
======================================================================
Adresse:                    Telephone:          E-mail:               

Andre DELOFF                702 64 70           [email-masked] 
Services Informatiques      702 65 77           [email-masked]
Universite de Geneve
Sciences II, b. 459
30, Quai Ernest Ansermet
1211 Geneve 4
=====================================================================

=====================================================================
From:	IN%"[email-masked]"  "J63C002" 15-FEB-1994 17:31:54.39

Dear netters

There exists a program recognizing molecular orbital symmetries
which can determine the principal axes of an arbitrary molecule, too.
This is the program No. 484, available at QCPE (Quantum Chemistry
Program Exchange).
You can find the description of this program in the QCPE Bulletin
4(4), 107(1984) and Comp. & Chem. 9, 179(1985).
The program is well documented and very simple to use.
For determination the molecular symmetry you have to write into the
input file the cartesian coordinates of the molecule.

=====================================================================

From:	IN%"[email-masked]"  " (Joerg Hill)" 16-FEB-1994 01:37:36.58

Since a direct answer does not work:

Knowing only the atomic coordinates there is no way to find the prinicipal
axes of symmetry. You need at least still the information which atoms are
the same (in sense of symmetry). You can take atomic symbols, masses, atomic
charges or something like that.
With this information it is very easy to obtain the desired information.
All physical properties of the molecule have to be invariant to the application
of a symmetry operation. That means if you calculate e. g. the principal axes
of inertia of your molecule (where you need the masses for), the principial
axis of symmetry must be one of these axes (the other symmetry elements you can
obtain in this way, too).
There is a variety of programmes which does this. I know Gaussian and Turbo-
mole.

Joerg-R. Hill

=====================================================================

From:	IN%"[email-masked]"  " (Joerg Hill)" 16-FEB-1994 20:39:19.61

Since there is obviously an interest in learning something about how to
determine point groups with a computer programme here my DM 0.034 (=$0.02):

All physical properties of a molecule have to be invariant to the application
of a symmetry operation. If we consider an easy to calculate property such
as the inertia tensor of the molecule we see first that all symmetry elements
must pass the centre of gravity. If we diagonalize the inertia tensor we get
three moments of inertia (eigenvalues) and three principal axes of inertia
(eigenvectors). Now we can distinguish some cases:
1) one moment of inertia is zero, the others not
   --> the molecule is linear, possible point groups C*v or D*h (the * stands
   for infinite), check by comparing the atoms
2) all three moments of inertia are different (asymmetric top molecules)
   --> no axes of order greater than 2 are possible, point groups D2h, D2,
   C2v, C2h, C2, Ci, Cs, and C1, if at least one of the principal axes is C2
   you have either D2h (all principal axes are C2 and an inverson centre
   exists), D2 (as D2h, but no inverson centre), C2v, C2h, or C2; otherwise
   you have Ci, Cs, or C1.
3) two moments of inertia are the same, the third is different (symmetric top
   molecules)
   --> all axial point groups except the cubic ones (T, Td, Th, O, Oh, I, Ih)
   are possible, your unique principal axis of inertia is one rotation axis and
   you can further distinguish by comparing sets of atoms.
4) all three moments of inertia are the same (spherical top molecules)
   --> possible point groups T, Td, Th, O, Oh, I, Ih and you have a problem !
   It is not possible to obtain a rotation axis from the inertia tensor (where
   is top or bottom of a sphere ?) But you can check sets of atoms. Since each
   symmetry element has to pass through the centre of gravity you can calculate
   the distance atom from the centre of gravity and if you find a set of atoms
   of the same element with the same distances from the centre of gravity you
   have found a rotation axis.
   Note: There are a few cases of so-called accidiental spherical top molecules
   which do not belong to a cubic point group. These are hard to handle, but
   rare, too.

OK, that's the basic algorithm. Literature for this is rare. Most textbooks
only deal with symmetry operations, point groups etc., but not with how to get
this into a running programme. I only remember an anchient spectroscopy
textbook, which explained somewhat of this algorithm, but I can't cite it.
Available codes are basically Turbomole, which uses all this stuff to speed
up calculations, since you can reduce the computional effort by the order of
the point group.

Joerg-R. Hill

=====================================================================

From:	IN%"[email-masked]"  "R.G.A.Bone" 17-FEB-1994 00:35:33.67

Concerning the various perspectives on deducing the geometric
symmetry of a molecule from its nuclear coordinates:

i)  The Gaussian package readily does this, (one of its more irritating
    features I should add), though you can turn symmetry off with a whole
    manner of flags at the various levels of calculation, you know, dep-
    ending on how you want to "fix" your result (cf. 'symmetry-broken'
    solutions in UHF).

ii) Philosophically (regrettably) given that assemblies of nuclei (i.e.,
    molecules) are not static - there are continuous vibrations, etc., the
    only molecules which will have any geometric symmetry at all, at any
    instant, are triatomics (a plane of symmetry) and diatomics.  The latter
    will have the infinite-fold rotation axis (and a whole "bunch" of others
    if homonuclear).  Thus, only if two nuclei have symmetry-related coordinates
    (to some arbitrary level of precision) is geometric symmetry present.
    Of course, one could specify this level of precision to be the dimension of
    a nucleus (typically femtometres).  But, being chemists, with an under-
    standing of spectroscopy, we know a little better and assume that, for
    all intents and purposes point-symmetry operations commute with the
    vibronic Hamiltonian so this issue does not arise and the 'time-averaged'
    position of the nuclei, or the geometry at the well in the potential is
    what counts.

iii) But, if you are a computer, to examine a number of nuclear coordinates
    and determine symmetric-relationships between them requires some intell
    igent decision concerning what is "near-symmetry" and what is "exact-
    symmetry".  Suppose there are small rounding errors in the data:
    e.g., 2 nuclear positions:
    1.00000000   0.50000000    2.34567890
    1.00000000   0.50000000   -2.34567889
    Are these 2 nuclei symmetrically-related?  Well, surely yes, although
    their z-coordinates differ by a trivial amount.  The algorithm must
    contain a threshold-cutoff which copes with cases like this.

iv) In response to the comment that you need to know the nuclear identity
    as well as the coordinates in order to deduce symmetry.  Well, except
    for the trivial case of diatomics, I challenge anybody to find 2 nuclei
    in a molecule which are NOT identical but which are in exactly-symmetry-
    related coordinates, to say 10^-6 Angstrom precision.  Of course, there may
    be circumstances under which it is desirable to label (for example iso-
    topic)  substituents as symmetrically-equivalent, and cases where it is
    not.  But that's moving the goal-posts.  It also depends on the source
    of the data: is it an experimental or theoretical geometry for the
    isotopomer?  (i.e., have zero-point effects been included or not ?)

Basically, this matter of deducing the point group from a set of coordinates
does have a slight algorithmic difficulty, which is perhaps why it has not
been widely implemented.   Arguably also, let's face it: almost all molecules
on this planet don't have any symmetry at all; (theoretical) chemists' obsession
with symmetry comes from 1) the small size of molecules they are accustomed
to dealing with (symmetry is more preponderent in small molecules),  2) the
fact that, even for small molecules, use of symmetry can make a big calculation
more practical.  Furthermore, there are hardly any molecules for which the
point group can't be deduced "by inspection", unless there happens to be a
potential confusion between "near-symmetry" and actual-symmetry.  One might
argue that that difficulty increases as molecules increase in size, but then
the amount of symmetry typically decreases in the same way (crystal-lattice
unit-cells, excepted).  

Richard Bone

=====================================================================
R. G. A. Bone.
Molecular Research Institute,
845 Page Mill Road,
Palo Alto,
CA 94304-1011,
U.S.A.

Tel. +1 (415) 424 9924 x110
FAX  +1 (415) 424 9501

E-mail  [email-masked]

-------------------------------------------------------------------------------
--------------------- Every Theory has its "Grassy Knoll" --------------------- 
-------------------------------------------------------------------------------
=====================================================================