CCL:G: Wavefunction file for GAMESS



On Sun, Apr 19, 2015 at 09:54:13AM +0530, Kaushik Hatua
 kaushikhatua[]yahoo.in wrote:
 > G09 has straight forward keyword for generation .wfn file.
 > Can anybody know similar keyword for GAMESS
 > or FIREFLY
 Kaushik,
 1) I had never heard from firefly (or I don't remember it)
 2) Obtaining and studying the wfn is the speciality of my
    research group. Let me provide examples for gamess and gaussian.
 3) Other freeware code for academic purposes: orca
 4) Let me attach some extract scripts I have written to examine the
    long outputs of gaussian or gamess and provide a short table of
    the most interesting properties. Notice that programmers may introduce
    small changes from version to version and my extractors must be
    adapted to your version (and I don't have time to help, before august)
 Best regards,
             Dr. Víctor Luaña
 #################### gaussian ##########################################
 $RunGauss
 %NoSave
 %Chk=c5h4.chk
 %NProc=1
 #P b3lyp/6-31G(d,p) density=current opt=tight IOP(6/7=3)
 output=wfn scf=tight gfinput
 C5H4 spiropentadiene
 0 1
  C
  C  1 dCC1
  C  2 dCC2   1 aCCC3
  C  1 dCC1   3 aCCC2   2 bCCC1
  C  4 dCC2   1 aCCC3   3 bCCC2
  H  2 dCH    1 aHCC    3 bHCCC
  H  3 dCH    1 aHCC    2 bHCCC
  H  4 dCH    1 aHCC    5 bHCCC
  H  5 dCH    1 aHCC    4 bHCCC
  dCC1  =   2.320
  dCC2  =   2.186
  dCH   =   1.475
  aCCC2 = 143.73
  aCCC3 =  63.89
  aHCC  = 149.16
  bCCC1 = 131.93
  bCCC2 = 131.93
  bHCCC = 180.00
 c5h4.wfn
 ########################################################################
 ################## gamess ##############################################
 H2O2
 !$contrl runtyp=optimize exetyp=run coord=zmt aimpac=.true. $end
  $contrl exetyp=run coord=zmt aimpac=.true. $end
 !$contrl exetyp=check coord=zmt aimpac=.true. $end
  $data
     Molecula de H2O2. Geometria experimental.
     cn  2
     O
     O   1 rOO
     H   1 rOH   2 alfa
     H   2 rOH   1 alfa   3 beta 0
     rOO=1.452
     rOH=0.965
     alfa=100.0
     beta=119.1
  $end
  $BASIS GBASIS=N311 NGAUSS=6 diffsp=.true. ndfunc=2 $END
 ########################################################################
 
#! /usr/bin/awk -f
 #
 # Analysis of the Gamess output
 # Final geometry of an optimization and report of distances and angles
 #
 function PrintAngle(i1, i2, i3){
    x21 = atxc[i2,ng] - atxc[i1,ng]
    y21 = atyc[i2,ng] - atyc[i1,ng]
    z21 = atzc[i2,ng] - atzc[i1,ng]
    r21 = sqrt(x21*x21 + y21*y21 + z21*z21)
    x23 = atxc[i2,ng] - atxc[i3,ng]
    y23 = atyc[i2,ng] - atyc[i3,ng]
    z23 = atzc[i2,ng] - atzc[i3,ng]
    r23 = sqrt(x23*x23 + y23*y23 + z23*z23)
    pesc = (x21*x23 + y21*y23 + z21*z23)
    x123 = y21*z23 - y23*z21
    y123 = z21*x23 - z23*x21
    z123 = x21*y23 - x23*y21
    pvec = sqrt(x123^2 + y123^2 + z123^2)
    angle = atan2(pvec,pesc)
    angle = 45 * angle / atan2(1,1)
    lbl0 = sprintf("%s-", atname[i1,ng])
    lbl0 = lbl0 sprintf("%s-", atname[i2,ng])
    lbl0 = lbl0 sprintf("%s", atname[i3,ng])
    lbl1 = sprintf("%s(%d)-", atname[i1,ng], i1)
    lbl1 = lbl1 sprintf("%s(%d)-", atname[i2,ng], i2)
    lbl1 = lbl1 sprintf("%s(%d)", atname[i3,ng], i3)
    printf "ANGLE %12.6f %-12s %s\n", angle, lbl0, lbl1
    }
 function PrintDihed(i1, i2, i3, i4){
    # The vectorial products 12x23 and 23x34 will provide
    # the normal vectors of the two intersecting planes:
    x1 = atxc[i2,ng]-atxc[i1,ng]
    y1 = atyc[i2,ng]-atyc[i1,ng]
    z1 = atzc[i2,ng]-atzc[i1,ng]
    x2 = atxc[i3,ng]-atxc[i2,ng]
    y2 = atyc[i3,ng]-atyc[i2,ng]
    z2 = atzc[i3,ng]-atzc[i2,ng]
    ux1 = y1*z2-z1*y2
    uy1 = z1*x2-x1*z2
    uz1 = x1*y2-y1*x2
    x3 = atxc[i4,ng]-atxc[i3,ng]
    y3 = atyc[i4,ng]-atyc[i3,ng]
    z3 = atzc[i4,ng]-atzc[i3,ng]
    ux2 = z3*y2-y3*z2
    uy2 = x3*z2-z3*x2
    uz2 = y3*x2-x3*y2
    u1 = ux1*ux1+uy1*uy1+uz1*uz1
    u2 = ux2*ux2+uy2*uy2+uz2*uz2
    u = sqrt(u1*u2)
    if (u!=0.0) {
       cosa = (ux1*ux2+uy1*uy2+uz1*uz2) / u
       ux12 = uy1*uz2-uz1*uy2
       uy12 = uz1*ux2-ux1*uz2
       uz12 = ux1*uy2-uy1*ux2
       sina = sqrt(ux12^2 + uy12^2 + uz12^2) / u
       dihedr = 45 * atan2(sina,cosa) / atan2(1,1)
       }
    else { dihedr = -720 }    # error!!!
    lbl0 = sprintf("%s-", atname[i1,ng])
    lbl0 = lbl0 sprintf("%s-", atname[i2,ng])
    lbl0 = lbl0 sprintf("%s-", atname[i3,ng])
    lbl0 = lbl0 sprintf("%s", atname[i4,ng])
    lbl1 = sprintf("%s(%d)-", atname[i1,ng], i1)
    lbl1 = lbl1 sprintf("%s(%d)-", atname[i2,ng], i2)
    lbl1 = lbl1 sprintf("%s(%d)-", atname[i3,ng], i3)
    lbl1 = lbl1 sprintf("%s(%d)", atname[i4,ng], i4)
    printf "DIHEDRAL %12.6f %-14s %s\n", dihedr, lbl0, lbl1
    }
 BEGIN{
    bondmax = 1.15
    atomicnumber["H" ] =   1;    rcov[  1] =  53;
    atomicnumber["HE"] =   2;    rcov[  2] =  70;
    atomicnumber["LI"] =   3;    rcov[  3] =  68;
    atomicnumber["BE"] =   4;    rcov[  4] =  35;
    atomicnumber["B" ] =   5;    rcov[  5] =  83;
    atomicnumber["C" ] =   6;    rcov[  6] =  68;
    atomicnumber["N" ] =   7;    rcov[  7] =  68;
    atomicnumber["O" ] =   8;    rcov[  8] =  68;
    atomicnumber["F" ] =   9;    rcov[  9] =  64;
    atomicnumber["NE"] =  10;    rcov[ 10] =  70;
    atomicnumber["NA"] =  11;    rcov[ 11] =  97;
    atomicnumber["MG"] =  12;    rcov[ 12] = 110;
    atomicnumber["AL"] =  13;    rcov[ 13] = 135;
    atomicnumber["SI"] =  14;    rcov[ 14] = 120;
    atomicnumber["P" ] =  15;    rcov[ 15] = 105;
    atomicnumber["S" ] =  16;    rcov[ 16] = 102;
    atomicnumber["CL"] =  17;    rcov[ 17] =  99;
    atomicnumber["AR"] =  18;    rcov[ 18] =  70;
    atomicnumber["K" ] =  19;    rcov[ 19] = 133;
    atomicnumber["CA"] =  20;    rcov[ 20] =  99;
    atomicnumber["SC"] =  21;    rcov[ 21] = 144;
    atomicnumber["TI"] =  22;    rcov[ 22] = 147;
    atomicnumber["V" ] =  23;    rcov[ 23] = 133;
    atomicnumber["CR"] =  24;    rcov[ 24] = 135;
    atomicnumber["MN"] =  25;    rcov[ 25] = 135;
    atomicnumber["FE"] =  26;    rcov[ 26] = 134;
    atomicnumber["CO"] =  27;    rcov[ 27] = 133;
    atomicnumber["NI"] =  28;    rcov[ 28] = 150;
    atomicnumber["CU"] =  29;    rcov[ 29] = 152;
    atomicnumber["ZN"] =  30;    rcov[ 30] = 145;
    atomicnumber["GA"] =  31;    rcov[ 31] = 122;
    atomicnumber["GE"] =  32;    rcov[ 32] = 117;
    atomicnumber["AS"] =  33;    rcov[ 33] = 121;
    atomicnumber["SE"] =  34;    rcov[ 34] = 122;
    atomicnumber["BR"] =  35;    rcov[ 35] = 121;
    atomicnumber["KR"] =  36;    rcov[ 36] = 191;
    atomicnumber["RB"] =  37;    rcov[ 37] = 147;
    atomicnumber["SR"] =  38;    rcov[ 38] = 112;
    atomicnumber["Y" ] =  39;    rcov[ 39] = 178;
    atomicnumber["ZR"] =  40;    rcov[ 40] = 157;
    atomicnumber["NB"] =  41;    rcov[ 41] = 148;
    atomicnumber["MO"] =  42;    rcov[ 42] = 147;
    atomicnumber["TC"] =  43;    rcov[ 43] = 135;
    atomicnumber["RU"] =  44;    rcov[ 44] = 140;
    atomicnumber["RH"] =  45;    rcov[ 45] = 145;
    atomicnumber["PD"] =  46;    rcov[ 46] = 150;
    atomicnumber["AG"] =  47;    rcov[ 47] = 159;
    atomicnumber["CD"] =  48;    rcov[ 48] = 169;
    atomicnumber["IN"] =  49;    rcov[ 49] = 163;
    atomicnumber["SN"] =  50;    rcov[ 50] = 146;
    atomicnumber["SB"] =  51;    rcov[ 51] = 146;
    atomicnumber["TE"] =  52;    rcov[ 52] = 147;
    atomicnumber["I" ] =  53;    rcov[ 53] = 140;
    atomicnumber["XE"] =  54;    rcov[ 54] = 198;
    atomicnumber["CS"] =  55;    rcov[ 55] = 167;
    atomicnumber["BA"] =  56;    rcov[ 56] = 134;
    atomicnumber["LA"] =  57;    rcov[ 57] = 187;
    atomicnumber["CE"] =  58;    rcov[ 58] = 183;
    atomicnumber["PR"] =  59;    rcov[ 59] = 182;
    atomicnumber["ND"] =  60;    rcov[ 60] = 181;
    atomicnumber["PM"] =  61;    rcov[ 61] = 180;
    atomicnumber["SM"] =  62;    rcov[ 62] = 180;
    atomicnumber["EU"] =  63;    rcov[ 63] = 199;
    atomicnumber["GD"] =  64;    rcov[ 64] = 179;
    atomicnumber["TB"] =  65;    rcov[ 65] = 176;
    atomicnumber["DY"] =  66;    rcov[ 66] = 175;
    atomicnumber["HO"] =  67;    rcov[ 67] = 174;
    atomicnumber["ER"] =  68;    rcov[ 68] = 173;
    atomicnumber["TM"] =  69;    rcov[ 69] = 172;
    atomicnumber["YB"] =  70;    rcov[ 70] = 194;
    atomicnumber["LU"] =  71;    rcov[ 71] = 172;
    atomicnumber["HF"] =  72;    rcov[ 72] = 157;
    atomicnumber["TA"] =  73;    rcov[ 73] = 143;
    atomicnumber["W" ] =  74;    rcov[ 74] = 137;
    atomicnumber["RE"] =  75;    rcov[ 75] = 135;
    atomicnumber["OS"] =  76;    rcov[ 76] = 137;
    atomicnumber["IR"] =  77;    rcov[ 77] = 132;
    atomicnumber["PT"] =  78;    rcov[ 78] = 150;
    atomicnumber["AU"] =  79;    rcov[ 79] = 150;
    atomicnumber["HG"] =  80;    rcov[ 80] = 170;
    atomicnumber["TL"] =  81;    rcov[ 81] = 155;
    atomicnumber["PB"] =  82;    rcov[ 82] = 154;
    atomicnumber["BI"] =  83;    rcov[ 83] = 154;
    atomicnumber["PO"] =  84;    rcov[ 84] = 168;
    atomicnumber["AT"] =  85;    rcov[ 85] = 170;
    atomicnumber["RN"] =  86;    rcov[ 86] = 240;
    atomicnumber["FR"] =  87;    rcov[ 87] = 200;
    atomicnumber["RA"] =  88;    rcov[ 88] = 190;
    atomicnumber["AC"] =  89;    rcov[ 89] = 188;
    atomicnumber["TH"] =  90;    rcov[ 90] = 179;
    atomicnumber["PA"] =  91;    rcov[ 91] = 161;
    atomicnumber["U" ] =  92;    rcov[ 92] = 158;
    atomicnumber["NP"] =  93;    rcov[ 93] = 155;
    atomicnumber["PU"] =  94;    rcov[ 94] = 153;
    atomicnumber["AM"] =  95;    rcov[ 95] = 151;
    atomicnumber["CM"] =  96;    rcov[ 96] = 151;
    atomicnumber["BK"] =  97;    rcov[ 97] = 151;
    atomicnumber["CF"] =  98;    rcov[ 98] = 151;
    atomicnumber["ES"] =  99;    rcov[ 99] = 151;
    atomicnumber["FM"] = 100;    rcov[100] = 151;
    atomicnumber["MD"] = 101;    rcov[101] = 151;
    atomicnumber["NO"] = 102;    rcov[102] = 151;
    atomicnumber["LW"] = 103;    rcov[103] = 151;
    }
 /RUN TITLE/ {
   getline
   getline
   gsub("^ *", "")
   gsub(" *$", "")
   runtitle = $0
   }
 /STEP CPU/ { cpu = $10 }
 /TOTAL WALL CLOCK/ { cpuutil = $10 }
 /ATOM *ATOMIC *COORDINATES \(BOHR\)/,/^ *$/ {
    if (NF==5 && $2+0>0) {
       ng = 0
       atn[ng]++
       i = atn[ng]
       atname[i,ng] = $1
       atZ[i,ng]    = int($2)
       atxc[i,ng]   = $3
       atyc[i,ng]   = $4
       atzc[i,ng]   = $5
       }
    }
 /FINAL ENERGY/ {
    ng++
    energy[ng] = $4
    atn[ng] = 0
    }
 /E\(MP2\)=/ {
    emp2 = $2
    }
 /COORDINATES OF ALL ATOMS ARE/,/^$/ {
    if (NF==5 && $2+0>0) {
       atn[ng]++
       i = atn[ng]
       atname[i,ng] = $1
       atZ[i,ng]    = int($2)
       atxc[i,ng]   = $3
       atyc[i,ng]   = $4
       atzc[i,ng]   = $5
       }
    }
 END {
    printf "%s\n\n", runtitle
    printf "Final energy (hartree)  : %18.10f\n", energy[ng]
    if (emp2 < 0.0) {
       printf "MP2 energy   (hartree)  : %18.10f\n", emp2
       }
    printf "Number of geometries    : %d\n", ng
    printf "Analyzed file name      : %s\n", FILENAME
    printf "gamess cpu time & usage : %d s (%s)\n", cpu, cpuutil
    printf "\n"
    printf "    Atom  number       x              y              z\n"
    for (i=1; i<=atn[ng]; i++) {
       printf "%3d %-6s%4d  %15.10f%15.10f%15.10f\n", i, atname[i,ng],
              atZ[i,ng], atxc[i,ng], atyc[i,ng], atzc[i,ng]
       }
    printf "\n"
    for (i=1; i<=atn[ng]; i++) {
       atrc[i] = sqrt(atxc[i,ng]^2 + atyc[i,ng]^2 + atzc[i,ng]^2)
       }
    # Determine bonded atoms and print bond distances
    for (i=1; i<=atn[ng]; i++) {
       for (j=1; j<i; j++) {
          xx = atxc[i,ng] - atxc[j,ng]
          yy = atyc[i,ng] - atyc[j,ng]
          zz = atzc[i,ng] - atzc[j,ng]
          dij = sqrt(xx*xx + yy*yy + zz*zz)
          dcov = (rcov[atZ[i,ng]] + rcov[atZ[j,ng]]) / 100
          bond[i,j] = (dij <= bondmax * dcov)
          bond[j,i] = bond[i,j]
          if (bond[i,j]) {
             i1 = i; i2 = j
             lbl0 = sprintf("%s-", atname[i1,ng])
             lbl0 = lbl0 sprintf("%s", atname[i2,ng])
             lbl1 = sprintf("%s(%d)-", atname[i1,ng], i1)
             lbl1 = lbl1 sprintf("%s(%d)", atname[i2,ng], i2)
             printf "BOND %12.6f %-9s %s\n", dij, lbl0, lbl1
             }
          }
       }
    printf "\n"
    # Print significative bond angles
    for (i=1; i<=atn[ng]; i++) {
       for (j=1; j<i; j++) {
          for (k=1; k<j; k++) {
             if (bond[i,j] && bond[j,k]) { PrintAngle(i,j,k) }
             if (bond[i,k] && bond[k,j]) { PrintAngle(i,k,j) }
             if (bond[j,i] && bond[i,k]) { PrintAngle(j,i,k) }
             }
          }
       }
    printf "\n"
    # Print significative dihedral angles
    for (i=1; i<=atn[ng]; i++) {
       for (j=1; j<i; j++) {
          for (k=1; k<j; k++) {
             for (l=1; l<k; l++) {
                # Possible connections:
                # kijl, lijk,   jikl, likj,   jilk, kilj
                # ijkl, ljki,   ijlk, kjli,   iklj, jkli
                if (bond[k,i] && bond[i,j] && bond[j,l]) {
 PrintDihed(k,i,j,l) }
                if (bond[l,i] && bond[i,j] && bond[j,k]) {
 PrintDihed(l,i,j,k) }
                if (bond[j,i] && bond[i,k] && bond[k,l]) {
 PrintDihed(j,i,k,l) }
                if (bond[l,i] && bond[i,k] && bond[k,j]) {
 PrintDihed(l,i,k,j) }
                if (bond[j,i] && bond[i,l] && bond[l,k]) {
 PrintDihed(j,i,l,k) }
                if (bond[k,i] && bond[i,l] && bond[l,j]) {
 PrintDihed(k,i,l,j) }
                if (bond[i,j] && bond[j,k] && bond[k,l]) {
 PrintDihed(i,j,k,l) }
                if (bond[l,j] && bond[j,k] && bond[k,i]) {
 PrintDihed(l,j,k,i) }
                if (bond[i,j] && bond[j,l] && bond[l,k]) {
 PrintDihed(i,j,l,k) }
                if (bond[k,j] && bond[j,l] && bond[l,i]) {
 PrintDihed(k,j,l,i) }
                if (bond[i,k] && bond[k,l] && bond[l,j]) {
 PrintDihed(i,k,l,j) }
                if (bond[j,k] && bond[k,l] && bond[l,i]) {
 PrintDihed(j,k,l,i) }
                }
             }
          }
       }
    }
 
#! /usr/bin/awk -f
 #
 # Analysis of the Gamess hessian output
 # Report of frequencies and thermochemical results
 #
 function PrintAngle(i1, i2, i3){
    x21 = atxc[i2] - atxc[i1]
    y21 = atyc[i2] - atyc[i1]
    z21 = atzc[i2] - atzc[i1]
    r21 = sqrt(x21*x21 + y21*y21 + z21*z21)
    x23 = atxc[i2] - atxc[i3]
    y23 = atyc[i2] - atyc[i3]
    z23 = atzc[i2] - atzc[i3]
    r23 = sqrt(x23*x23 + y23*y23 + z23*z23)
    pesc = (x21*x23 + y21*y23 + z21*z23)
    x123 = y21*z23 - y23*z21
    y123 = z21*x23 - z23*x21
    z123 = x21*y23 - x23*y21
    pvec = sqrt(x123^2 + y123^2 + z123^2)
    angle = atan2(pvec,pesc)
    angle = 45 * angle / atan2(1,1)
    lbl0 = sprintf("%s-", atname[i1])
    lbl0 = lbl0 sprintf("%s-", atname[i2])
    lbl0 = lbl0 sprintf("%s", atname[i3])
    lbl1 = sprintf("%s(%d)-", atname[i1], i1)
    lbl1 = lbl1 sprintf("%s(%d)-", atname[i2], i2)
    lbl1 = lbl1 sprintf("%s(%d)", atname[i3], i3)
    printf "ANGLE %12.6f %-12s %s\n", angle, lbl0, lbl1
    }
 BEGIN{
    bondmax = 1.15
    atomicnumber["H" ] =   1;    rcov[  1] =  53;
    atomicnumber["HE"] =   2;    rcov[  2] =  70;
    atomicnumber["LI"] =   3;    rcov[  3] =  68;
    atomicnumber["BE"] =   4;    rcov[  4] =  35;
    atomicnumber["B" ] =   5;    rcov[  5] =  83;
    atomicnumber["C" ] =   6;    rcov[  6] =  68;
    atomicnumber["N" ] =   7;    rcov[  7] =  68;
    atomicnumber["O" ] =   8;    rcov[  8] =  68;
    atomicnumber["F" ] =   9;    rcov[  9] =  64;
    atomicnumber["NE"] =  10;    rcov[ 10] =  70;
    atomicnumber["NA"] =  11;    rcov[ 11] =  97;
    atomicnumber["MG"] =  12;    rcov[ 12] = 110;
    atomicnumber["AL"] =  13;    rcov[ 13] = 135;
    atomicnumber["SI"] =  14;    rcov[ 14] = 120;
    atomicnumber["P" ] =  15;    rcov[ 15] = 105;
    atomicnumber["S" ] =  16;    rcov[ 16] = 102;
    atomicnumber["CL"] =  17;    rcov[ 17] =  99;
    atomicnumber["AR"] =  18;    rcov[ 18] =  70;
    atomicnumber["K" ] =  19;    rcov[ 19] = 133;
    atomicnumber["CA"] =  20;    rcov[ 20] =  99;
    atomicnumber["SC"] =  21;    rcov[ 21] = 144;
    atomicnumber["TI"] =  22;    rcov[ 22] = 147;
    atomicnumber["V" ] =  23;    rcov[ 23] = 133;
    atomicnumber["CR"] =  24;    rcov[ 24] = 135;
    atomicnumber["MN"] =  25;    rcov[ 25] = 135;
    atomicnumber["FE"] =  26;    rcov[ 26] = 134;
    atomicnumber["CO"] =  27;    rcov[ 27] = 133;
    atomicnumber["NI"] =  28;    rcov[ 28] = 150;
    atomicnumber["CU"] =  29;    rcov[ 29] = 152;
    atomicnumber["ZN"] =  30;    rcov[ 30] = 145;
    atomicnumber["GA"] =  31;    rcov[ 31] = 122;
    atomicnumber["GE"] =  32;    rcov[ 32] = 117;
    atomicnumber["AS"] =  33;    rcov[ 33] = 121;
    atomicnumber["SE"] =  34;    rcov[ 34] = 122;
    atomicnumber["BR"] =  35;    rcov[ 35] = 121;
    atomicnumber["KR"] =  36;    rcov[ 36] = 191;
    atomicnumber["RB"] =  37;    rcov[ 37] = 147;
    atomicnumber["SR"] =  38;    rcov[ 38] = 112;
    atomicnumber["Y" ] =  39;    rcov[ 39] = 178;
    atomicnumber["ZR"] =  40;    rcov[ 40] = 157;
    atomicnumber["NB"] =  41;    rcov[ 41] = 148;
    atomicnumber["MO"] =  42;    rcov[ 42] = 147;
    atomicnumber["TC"] =  43;    rcov[ 43] = 135;
    atomicnumber["RU"] =  44;    rcov[ 44] = 140;
    atomicnumber["RH"] =  45;    rcov[ 45] = 145;
    atomicnumber["PD"] =  46;    rcov[ 46] = 150;
    atomicnumber["AG"] =  47;    rcov[ 47] = 159;
    atomicnumber["CD"] =  48;    rcov[ 48] = 169;
    atomicnumber["IN"] =  49;    rcov[ 49] = 163;
    atomicnumber["SN"] =  50;    rcov[ 50] = 146;
    atomicnumber["SB"] =  51;    rcov[ 51] = 146;
    atomicnumber["TE"] =  52;    rcov[ 52] = 147;
    atomicnumber["I" ] =  53;    rcov[ 53] = 140;
    atomicnumber["XE"] =  54;    rcov[ 54] = 198;
    atomicnumber["CS"] =  55;    rcov[ 55] = 167;
    atomicnumber["BA"] =  56;    rcov[ 56] = 134;
    atomicnumber["LA"] =  57;    rcov[ 57] = 187;
    atomicnumber["CE"] =  58;    rcov[ 58] = 183;
    atomicnumber["PR"] =  59;    rcov[ 59] = 182;
    atomicnumber["ND"] =  60;    rcov[ 59] = 181;
    atomicnumber["PM"] =  61;    rcov[ 61] = 180;
    atomicnumber["SM"] =  62;    rcov[ 62] = 180;
    atomicnumber["EU"] =  63;    rcov[ 63] = 199;
    atomicnumber["GD"] =  64;    rcov[ 64] = 179;
    atomicnumber["TB"] =  65;    rcov[ 65] = 176;
    atomicnumber["DY"] =  66;    rcov[ 66] = 175;
    atomicnumber["HO"] =  67;    rcov[ 67] = 174;
    atomicnumber["ER"] =  68;    rcov[ 68] = 173;
    atomicnumber["TM"] =  69;    rcov[ 69] = 172;
    atomicnumber["YB"] =  70;    rcov[ 70] = 194;
    atomicnumber["LU"] =  71;    rcov[ 71] = 172;
    atomicnumber["HF"] =  72;    rcov[ 72] = 157;
    atomicnumber["TA"] =  73;    rcov[ 73] = 143;
    atomicnumber["W" ] =  74;    rcov[ 74] = 137;
    atomicnumber["RE"] =  75;    rcov[ 75] = 135;
    atomicnumber["OS"] =  76;    rcov[ 76] = 137;
    atomicnumber["IR"] =  77;    rcov[ 77] = 132;
    atomicnumber["PT"] =  78;    rcov[ 78] = 150;
    atomicnumber["AU"] =  79;    rcov[ 79] = 150;
    atomicnumber["HG"] =  80;    rcov[ 80] = 170;
    atomicnumber["TL"] =  81;    rcov[ 81] = 155;
    atomicnumber["PB"] =  82;    rcov[ 82] = 154;
    atomicnumber["BI"] =  83;    rcov[ 83] = 154;
    atomicnumber["PO"] =  84;    rcov[ 84] = 168;
    atomicnumber["AT"] =  85;    rcov[ 85] = 170;
    atomicnumber["RN"] =  86;    rcov[ 86] = 240;
    atomicnumber["FR"] =  87;    rcov[ 87] = 200;
    atomicnumber["RA"] =  88;    rcov[ 88] = 190;
    atomicnumber["AC"] =  89;    rcov[ 89] = 188;
    atomicnumber["TH"] =  90;    rcov[ 90] = 179;
    atomicnumber["PA"] =  91;    rcov[ 91] = 161;
    atomicnumber["U" ] =  92;    rcov[ 92] = 158;
    atomicnumber["NP"] =  93;    rcov[ 93] = 155;
    atomicnumber["PU"] =  94;    rcov[ 94] = 153;
    atomicnumber["AM"] =  95;    rcov[ 95] = 151;
    atomicnumber["CM"] =  96;    rcov[ 96] = 151;
    atomicnumber["BK"] =  97;    rcov[ 97] = 151;
    atomicnumber["CF"] =  98;    rcov[ 98] = 151;
    atomicnumber["ES"] =  99;    rcov[ 99] = 151;
    atomicnumber["FM"] = 100;    rcov[100] = 151;
    atomicnumber["MD"] = 101;    rcov[101] = 151;
    atomicnumber["NO"] = 102;    rcov[102] = 151;
    atomicnumber["LW"] = 103;    rcov[103] = 151;
    }
 /RUN TITLE/ {
   getline
   getline
   gsub("^ *", "")
   gsub(" *$", "")
   runtitle = $0
   }
 /STEP CPU/ { cpu = $10 }
 /TOTAL WALL CLOCK/ { cpuutil = $10 }
 /FINAL ENERGY/ {
    ng++
    energy = $4
    }
 /ATOM *ATOMIC *COORDINATES \(BOHR\)/,/^ *$/ {
    if (NF==5 && $2+0>0) {
       atn++
       i = atn
       atname[i] = $1
       atZ[i]    = int($2)
       atxc[i]   = $3 * 0.5291771
       atyc[i]   = $4 * 0.5291771
       atzc[i]   = $5 * 0.5291771
       }
    }
 /FREQUENCY:/ {
    for (i=2; i<=NF; i++) {
       nfreq++
       freq[nfreq] = $i
       }
    }
 /INTENSITY:/ {
    for (i=2; i<=NF; i++) {
       ninten++
       inten[ninten] = $i
       }
    }
 /ARE TAKEN AS ROTATIONS AND TRANSLATIONS/ {
    nrt0 = $2
    nrt1 = $4
    }
 /THERMOCHEMISTRY AT T=/ { Temp = $4 }
 /ROTATIONAL SYMMETRY NUMBER/ { RotSigma = $6 }
 /ROTATIONAL CONSTANTS/ {
    getline
    RotConst[1] = $1    # GHz
    RotConst[2] = $2
    RotConst[3] = $3
    }
 /HARMONIC ZERO POINT/ {
    getline
    getline
    HZeroPoint = $1   # kcal/mol
    }
 $1=="E" && $2=="H" && $3=="G" {
    getline
    getline
    getline
    getline
    getline
    getline
    Est  = $2  # kcal/mol
    Hst  = $3
    Gst  = $4
    Cvst = $5  # cal/mol K
    Cpst = $6
    Sst  = $7
    }
 END {
    printf "# %s\n\n", runtitle
    printf "# Final energy (hartree)  : %18.10f\n", energy
    printf "# Number of geometries    : %d\n", ng
    printf "# Analyzed file name      : %s\n", FILENAME
    printf "# gamess cpu time & usage : %d s (%s)\n", cpu, cpuutil
    printf "\n"
    printf "#     Atom  number       x              y              z\n"
    for (i=1; i<=atn; i++) {
       printf "# %3d %-6s%4d  %15.10f%15.10f%15.10f\n", i, atname[i],
              atZ[i], atxc[i], atyc[i], atzc[i]
       }
    printf "\n"
    printf "# Rotational constants   (GHz): "
    printf "%12.5f %12.5f %12.5f\n", RotConst[1], RotConst[2],
 RotConst[3]
    printf "# Rotational  symmetry  number: %4d\n", RotSigma
    printf "# Rotation & translation modes: %4d TO %4d\n", nrt0,
 nrt1
    printf "# Point zero energy (kcal/mol): %15.6f\n", HZeroPoint
    printf "\n"
    printf "# Mode  Frequency  Intensity\n"
    for (i=1; i<=nfreq; i++) {
       printf "  %4d %10.2f %10.5f %4d\n", i, freq[i], inten[i],
 (i>nrt1)
       }
    printf "\n"
    printf "# Trans. Rot. & Vib. contributions to the thermochemical
 properties\n"
    printf "# Temperature (K): %15.6f\n", Temp
    printf "# E    (kcal/mol): %15.6f\n", Est
    printf "# H    (kcal/mol): %15.6f\n", Hst
    printf "# G    (kcal/mol): %15.6f\n", Gst
    printf "# Cv  (cal/mol K): %15.6f\n", Cvst
    printf "# Cp  (cal/mol K): %15.6f\n", Cpst
    printf "# S   (cal/mol K): %15.6f\n", Sst
    printf "\n"
    for (i=1; i<=atn; i++) {
       atrc[i] = sqrt(atxc[i]^2 + atyc[i]^2 + atzc[i]^2)
       }
    # Determine bonded atoms and print bond distances
    for (i=1; i<=atn; i++) {
       for (j=1; j<i; j++) {
          xx = atxc[i] - atxc[j]
          yy = atyc[i] - atyc[j]
          zz = atzc[i] - atzc[j]
          dij = sqrt(xx*xx + yy*yy + zz*zz)
          dcov = (rcov[atZ[i]] + rcov[atZ[j]]) / 100
          bond[i,j] = (dij <= bondmax * dcov)
          bond[j,i] = bond[i,j]
 #DBG#    print "DBG(1) i,j,dij,dcov,bnd", i, j, dij, dcov, bnd
          if (bond[i,j]) {
             i1 = i; i2 = j
             lbl0 = sprintf("%s-", atname[i1])
             lbl0 = lbl0 sprintf("%s", atname[i2])
             lbl1 = sprintf("%s(%d)-", atname[i1], i1)
             lbl1 = lbl1 sprintf("%s(%d)", atname[i2], i2)
             printf "BOND %12.6f %-9s %s\n", dij, lbl0, lbl1
             }
          }
       }
    printf "\n"
    # Print significative bond angles
    for (i=1; i<=atn; i++) {
       for (j=1; j<i; j++) {
          for (k=1; k<j; k++) {
             if (bond[i,j] && bond[j,k]) {
                PrintAngle(i,j,k)
                }
             if (bond[i,k] && bond[k,j]) {
                PrintAngle(i,k,j)
                }
             if (bond[j,i] && bond[i,k]) {
                PrintAngle(j,i,k)
                }
             }
          }
       }
    printf "\n"
    }