CCL:G: Wavefunction file for GAMESS
- From: Víctor Luaña Cabal <victor ~~
fluor.quimica.uniovi.es>
- Subject: CCL:G: Wavefunction file for GAMESS
- Date: Sun, 19 Apr 2015 11:43:31 +0200
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"
}