gbasis = "N311 NGAUSS=6 NDFUNC=1 NPFUNC=1"
end
end
-
+
+ # Count non-dummy atoms
+ natoms = 0
+ each_atom { |ap|
+ natoms += 1 if ap.atomic_number != 0
+ }
+
File.open(fname, "wb") { |fp|
fp.print "! GAMESS input\n"
fp.print "! Generated by Molby at #{now}\n"
fp.print " DFTTYP=#{dfttyp}\n"
end
if hash["use_internal"] != 0 && hash["runtype"] == 2
- nzvar = self.natoms * 3 - 6 # TODO: 3N-5 for linear molecules
+ nzvar = natoms * 3 - 6 # TODO: 3N-5 for linear molecules
fp.print " NZVAR=#{nzvar}\n"
else
nzvar = 0
fp.print " $DATA\n#{basename}\nC1 0\n"
secondary = []
each_atom { |ap|
+ next if ap.atomic_number == 0
fp.printf "%-6s %4d %10.6f %10.6f %10.6f\n", ap.name, ap.atomic_number, ap.r.x, ap.r.y, ap.r.z
if use_2nd && element2.include?(ap.element)
secondary[ap.index] = true
fp.print " $ECP\n"
each_atom { |ap|
an = ap.atomic_number
+ next if an == 0
ecpp = (secondary[ap.index] ? ecp2 : ecp)
e = ecp_ary[an] || (ecpp && ecpp[an])
if e
C1
end_of_header
each_atom { |ap|
+ next if ap.atomic_number == 0
fp.printf " %-6s %4d %10.6f %10.6f %10.6f\n", ap.name, ap.atomic_number, ap.r.x, ap.r.y, ap.r.z
}
fp.print " $END\n"
0 1
end_of_header
each_atom { |ap|
+ next if ap.atomic_number == 0
fp.printf "%-6s %10.6f %10.6f %10.6f\n", ap.element, ap.r.x, ap.r.y, ap.r.z
}
fp.print "\n"