File: remap.f

package info (click to toggle)
aces3 3.0.6-7
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 82,460 kB
  • sloc: fortran: 225,647; ansic: 20,413; cpp: 4,349; makefile: 953; sh: 137
file content (74 lines) | stat: -rw-r--r-- 2,685 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

C WARNING WARNING WARNING WARNING WARNING WARNING WARNING
C      This source file should not be edited.  Make
C      any necessary changes to the individual source
C      or include files.  This file has been produced
C      with 'make vmol2ja.f' from the original sources.
C      It is NOT the original source code itself.
C WARNING WARNING WARNING WARNING WARNING WARNING WARNING
      SUBROUTINE REMAP(CMPPGP,IORDGP,NATOMS,NORBCMP,COORD,
     &                 SCR,IMEMCMP,IPOPCMP,IMAP)
C:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
C $Id: remap.f,v 1.1.1.1 2003/04/02 19:21:47 aces Exp $
C:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
C NAME
C     remap -- determine the VMol -> ZMAT reordering vector
C
C SYNOPSIS
      CHARACTER*4 CMPPGP
      Integer IOrdGp, NAtoms, NOrbCmp
      Double precision COORD(3,NATOMS), SCR(3*(IOrdGp-1))
      Integer IMEMCMP(NATOMS),IPOPCMP(NORBCMP), IMAP(NATOMS)
C
C DESCRIPTION
C     THIS ROUTINE FORMS A POINTER VECTOR RELATING THE ATOMIC ORDERING
C     USED IMPLICITY BY VMOL TO THAT SPECIFIED IN THE Z-MATRIX.  THIS
C     IS RATHER EASILY CALCULATED FROM INFORMATION RESIDENT IN THE JOBARC
C     FILE.  UPON RETURN, THE INTEGER VECTOR IMAP CONTAINS THE 
C     Z-MATRIX POSITION OF THE ATOMS, AS INDEXED BY THE VMOL ORDERING.
C     FOR EXAMPLE, IF IMAP(3)=11, THIS MEANS THAT THE 3RD ATOM USED BY
C     VMOL IS ACTUALLY THE ELEVENTH ATOM IN THE Z-MATRIX.
C:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      Integer IOff, INumAtm, IAtom, IOrbit, IRefAtm, NGen, ICent,
     $   ILoc, IOff1, I, IPos
      LOGICAL QSAME
      CALL IZERO(IMAP,NATOMS)
C
C LOOP OVER ORBITS IN COMPUTATIONAL POINT GROUP
C
      IOFF=1
      IATOM=1
      DO 10 IORBIT=1,NORBCMP
C
C DETERMINE THE REFERENCE ATOM FOR THE ORBIT (THE ONE USED BY VMOL
C   TO GENERATE THE REDUNDANT CENTERS)
C 
       INUMATM=IPOPCMP(IORBIT)
       IREFATM=IMEMCMP(IOFF)
       IMAP(IATOM)=IREFATM
       IATOM=IATOM+1
C
C NOW USE THE ALGORITHM OF VMOL TO GENERATE THE REDUNDANT CENTERS
C   IN THE COMPUTATIONAL POINT GROUP.  THE VALUE OF NGEN IS THE
C   NUMBER OF DISTINCT REDUNDANT CENTERS RETURNED
C
       CALL VMLGEN(CMPPGP,IORDGP,COORD(1,IREFATM),SCR,NGEN)
C
C NOW LOOP OVER DISTINCT REDUNDANT CENTERS AND FIND THEIR 
C  POSITION IN THE Z-MATRIX ORDER
C
       DO 11 ICENT=1,NGEN
        ILOC=-1
        IOFF1=IOFF+1
        DO 20 I=1,INUMATM-1
         IPOS=IMEMCMP(IOFF1)
         IF(QSAME(SCR(1+(ICENT-1)*3),COORD(1,IPOS)))ILOC=IPOS
         IOFF1=IOFF1+1
20      CONTINUE
        IMAP(IATOM)=ILOC
        IATOM=IATOM+1
11     CONTINUE
       IOFF=IOFF+INUMATM
10    CONTINUE
      RETURN
      END