mirror of
https://github.com/nwchemgit/nwchem.git
synced 2026-07-27 05:35:37 -04:00
523 lines
14 KiB
Python
523 lines
14 KiB
Python
'''
|
|
testing pydoc
|
|
'''
|
|
import re
|
|
import string
|
|
import sys
|
|
|
|
class AtomParams():
|
|
'''
|
|
Stores static information about atoms
|
|
such as their full name (e.g. Hydrogen)
|
|
Van der Waals radius, covalent radius, and weights.
|
|
Private dictionaries are used.
|
|
Also includes helper function to get element name from atom name. e.g. to infer that
|
|
3HW or 3hW is actually is H.
|
|
'''
|
|
@staticmethod
|
|
def genProperty(a,d):
|
|
'''
|
|
Helper function to assist accessing atom
|
|
dictionaries by digesting "nonstandard" atom name
|
|
such O2 or 3HW through succession of steps
|
|
1. converting into all caps (h -> H)
|
|
2. removing all digits (1HW -> HW)
|
|
3. stripping to just the first found letter (1HW -> H)
|
|
'''
|
|
|
|
a0 = string.upper(a)
|
|
try:
|
|
return d[a0.strip()],a0
|
|
except KeyError:
|
|
pass
|
|
|
|
s1=re.match(r" *[0-9]*([A-Z]+) *", a0)
|
|
try:
|
|
return d[s1.group(1)],s1.group(1)
|
|
except KeyError:
|
|
pass
|
|
|
|
s1=re.match(r" *[0-9]*([A-Z] *)", a0)
|
|
try:
|
|
return d[s1.group(1)],s1.group(1)
|
|
except KeyError:
|
|
print("Cannot match name", a)
|
|
sys.exit(1)
|
|
|
|
@staticmethod
|
|
def fullName(s):
|
|
return AtomParams.genProperty(s, AtomParams.__fulename)[0]
|
|
|
|
@staticmethod
|
|
def elementName(s):
|
|
return AtomParams.genProperty(s, AtomParams.__fulename)[1]
|
|
|
|
@staticmethod
|
|
def vdwRadius(s):
|
|
return AtomParams.genProperty(s, AtomParams.__vdw)[0]
|
|
|
|
@staticmethod
|
|
def covRadius(s):
|
|
return AtomParams.genProperty(s, AtomParams.__rc)[0]
|
|
|
|
@staticmethod
|
|
def weight(s):
|
|
return AtomParams.genProperty(s, AtomParams.__weight)[0]
|
|
|
|
|
|
|
|
__weight = {}
|
|
__weight['H']=1.008000
|
|
__weight['He']=4.003000
|
|
__weight['Li']=6.941000
|
|
__weight['Be']=9.012000
|
|
__weight['B']=10.811000
|
|
__weight['C']=12.011000
|
|
__weight['N']=14.007000
|
|
__weight['O']=15.999000
|
|
__weight['F']=18.998000
|
|
__weight['Ne']=20.180000
|
|
__weight['Na']=22.991000
|
|
__weight['Mg']=24.305000
|
|
__weight['Al']=26.982000
|
|
__weight['Si']=28.086000
|
|
__weight['P']=30.974000
|
|
__weight['S']=32.066000
|
|
__weight['Cl']=35.453000
|
|
__weight['Ar']=39.948000
|
|
__weight['K']=39.098000
|
|
__weight['Ca']=40.078000
|
|
__weight['Sc']=44.956000
|
|
__weight['Ti']=47.867000
|
|
__weight['V']=50.942000
|
|
__weight['Cr']=51.996000
|
|
__weight['Mn']=54.938000
|
|
__weight['Fe']=55.845000
|
|
__weight['Co']=58.933000
|
|
__weight['Ni']=58.693000
|
|
__weight['Cu']=63.546000
|
|
__weight['Zn']=65.390000
|
|
__weight['Ga']=69.723000
|
|
__weight['Ge']=72.610000
|
|
__weight['As']=74.922000
|
|
__weight['Se']=78.960000
|
|
__weight['Br']=79.904000
|
|
__weight['Kr']=83.800000
|
|
__weight['Rb']=85.468000
|
|
__weight['Sr']=87.620000
|
|
__weight['Y']=88.906000
|
|
__weight['Zr']=91.224000
|
|
__weight['Nb']=92.906000
|
|
__weight['Mo']=95.940000
|
|
__weight['Tc']=0.000000
|
|
__weight['Ru']=101.070000
|
|
__weight['Rh']=102.906000
|
|
__weight['Pd']=106.420000
|
|
__weight['Ag']=107.868000
|
|
__weight['Cd']=112.411000
|
|
__weight['In']=114.818000
|
|
__weight['Sn']=118.710000
|
|
__weight['Sb']=121.760000
|
|
__weight['Te']=127.600000
|
|
__weight['I']=126.904000
|
|
__weight['Xe']=131.290000
|
|
__weight['Cs']=132.905000
|
|
__weight['Ba']=137.327000
|
|
__weight['Lu']=174.967000
|
|
__weight['Hf']=178.490000
|
|
__weight['Ta']=180.948000
|
|
__weight['W']=183.840000
|
|
__weight['Re']=186.207000
|
|
__weight['Os']=190.230000
|
|
__weight['Ir']=192.217000
|
|
__weight['Pt']=195.078000
|
|
__weight['Au']=196.967000
|
|
__weight['Hg']=200.590000
|
|
__weight['Tl']=204.383000
|
|
__weight['Pb']=207.200000
|
|
__weight['Bi']=208.980000
|
|
__weight['Po']=0.000000
|
|
__weight['At']=0.000000
|
|
__weight['Rn']=0.000000
|
|
__weight['Ce']=140.116000
|
|
__weight['Dy']=162.500000
|
|
__weight['Er']=167.260000
|
|
__weight['Eu']=151.964000
|
|
__weight['Gd']=157.250000
|
|
__weight['Ho']=164.930000
|
|
__weight['La']=138.906000
|
|
__weight['Nd']=144.240000
|
|
__weight['Pm']=0.000000
|
|
__weight['Pr']=140.908000
|
|
__weight['Sm']=150.360000
|
|
__weight['Tb']=158.925000
|
|
__weight['Tm']=168.934000
|
|
__weight['Yb']=173.040000
|
|
__weight['Fr']=0.000000
|
|
__weight['Ra']=0.000000
|
|
__weight['Lr']=0.000000
|
|
__weight['Rf']=0.000000
|
|
__weight['Db']=0.000000
|
|
__weight['Sg']=0.000000
|
|
__weight['Bh']=0.000000
|
|
__weight['Hs']=0.000000
|
|
__weight['Mt']=0.000000
|
|
__weight['Ds']=0.000000
|
|
__weight['Ac']=0.000000
|
|
__weight['Am']=0.000000
|
|
__weight['Bk']=0.000000
|
|
__weight['Cf']=0.000000
|
|
__weight['Cm']=0.000000
|
|
__weight['Es']=0.000000
|
|
__weight['Fm']=0.000000
|
|
__weight['Md']=0.000000
|
|
__weight['No']=0.000000
|
|
__weight['Np']=0.000000
|
|
__weight['Pa']=231.036000
|
|
__weight['Pu']=0.000000
|
|
__weight['Th']=232.038000
|
|
__weight['U']=238.029000
|
|
|
|
__rc = {}
|
|
__rc['H']=0.370000
|
|
__rc['He']=1.500000
|
|
__rc['Li']=1.280000
|
|
__rc['Be']=0.960000
|
|
__rc['B']=0.830000
|
|
__rc['C']=0.680000
|
|
__rc['N']=0.680000
|
|
__rc['O']=0.680000
|
|
__rc['F']=0.640000
|
|
__rc['Ne']=1.500000
|
|
__rc['Na']=1.660000
|
|
__rc['Mg']=1.410000
|
|
__rc['Al']=1.210000
|
|
__rc['Si']=1.200000
|
|
__rc['P']=1.050000
|
|
__rc['S']=1.020000
|
|
__rc['Cl']=0.990000
|
|
__rc['Ar']=1.510000
|
|
__rc['K']=2.030000
|
|
__rc['Ca']=1.760000
|
|
__rc['Sc']=1.700000
|
|
__rc['Ti']=1.600000
|
|
__rc['V']=1.530000
|
|
__rc['Cr']=1.390000
|
|
__rc['Mn']=1.610000
|
|
__rc['Fe']=1.520000
|
|
__rc['Co']=1.260000
|
|
__rc['Ni']=1.240000
|
|
__rc['Cu']=1.320000
|
|
__rc['Zn']=1.220000
|
|
__rc['Ga']=1.220000
|
|
__rc['Ge']=1.170000
|
|
__rc['As']=1.210000
|
|
__rc['Se']=1.220000
|
|
__rc['Br']=1.210000
|
|
__rc['Kr']=1.500000
|
|
__rc['Rb']=2.200000
|
|
__rc['Sr']=1.950000
|
|
__rc['Y']=1.900000
|
|
__rc['Zr']=1.750000
|
|
__rc['Nb']=1.640000
|
|
__rc['Mo']=1.540000
|
|
__rc['Tc']=1.470000
|
|
__rc['Ru']=1.460000
|
|
__rc['Rh']=1.450000
|
|
__rc['Pd']=1.390000
|
|
__rc['Ag']=1.450000
|
|
__rc['Cd']=1.440000
|
|
__rc['In']=1.420000
|
|
__rc['Sn']=1.390000
|
|
__rc['Sb']=1.390000
|
|
__rc['Te']=1.470000
|
|
__rc['I']=1.400000
|
|
__rc['Xe']=1.500000
|
|
__rc['Cs']=2.440000
|
|
__rc['Ba']=2.150000
|
|
__rc['Lu']=1.870000
|
|
__rc['Hf']=1.750000
|
|
__rc['Ta']=1.700000
|
|
__rc['W']=1.620000
|
|
__rc['Re']=1.510000
|
|
__rc['Os']=1.440000
|
|
__rc['Ir']=1.410000
|
|
__rc['Pt']=1.360000
|
|
__rc['Au']=1.500000
|
|
__rc['Hg']=1.320000
|
|
__rc['Tl']=1.450000
|
|
__rc['Pb']=1.460000
|
|
__rc['Bi']=1.480000
|
|
__rc['Po']=1.400000
|
|
__rc['At']=1.210000
|
|
__rc['Rn']=1.500000
|
|
__rc['Ce']=2.040000
|
|
__rc['Dy']=1.920000
|
|
__rc['Er']=1.890000
|
|
__rc['Eu']=1.980000
|
|
__rc['Gd']=1.960000
|
|
__rc['Ho']=1.920000
|
|
__rc['La']=2.070000
|
|
__rc['Nd']=2.010000
|
|
__rc['Pm']=1.990000
|
|
__rc['Pr']=2.030000
|
|
__rc['Sm']=1.980000
|
|
__rc['Tb']=1.940000
|
|
__rc['Tm']=1.900000
|
|
__rc['Yb']=1.870000
|
|
__rc['Fr']=2.600000
|
|
__rc['Ra']=2.210000
|
|
__rc['Lr']=1.500000
|
|
__rc['Rf']=1.500000
|
|
__rc['Db']=1.500000
|
|
__rc['Sg']=1.500000
|
|
__rc['Bh']=1.500000
|
|
__rc['Hs']=1.500000
|
|
__rc['Mt']=1.500000
|
|
__rc['Ds']=1.500000
|
|
__rc['Ac']=2.150000
|
|
__rc['Am']=1.800000
|
|
__rc['Bk']=1.540000
|
|
__rc['Cf']=1.830000
|
|
__rc['Cm']=1.690000
|
|
__rc['Es']=1.500000
|
|
__rc['Fm']=1.500000
|
|
__rc['Md']=1.500000
|
|
__rc['No']=1.500000
|
|
__rc['Np']=1.900000
|
|
__rc['Pa']=2.000000
|
|
__rc['Pu']=1.870000
|
|
__rc['Th']=2.060000
|
|
__rc['U']=1.960000
|
|
|
|
__fulename = {}
|
|
__fulename['H']='Hydrogen'
|
|
__fulename['He']='Helium'
|
|
__fulename['Li']='Lithium'
|
|
__fulename['Be']='Beryllium'
|
|
__fulename['B']='Boron'
|
|
__fulename['C']='Carbon'
|
|
__fulename['N']='Nitrogen'
|
|
__fulename['O']='Oxygen'
|
|
__fulename['F']='Fluorine'
|
|
__fulename['Ne']='Neon'
|
|
__fulename['Na']='Sodium'
|
|
__fulename['Mg']='Magnesium'
|
|
__fulename['Al']='Aluminium'
|
|
__fulename['Si']='Silicon'
|
|
__fulename['P']='Phosphorus'
|
|
__fulename['S']='Sulphur'
|
|
__fulename['Cl']='Chlorine'
|
|
__fulename['Ar']='Argon'
|
|
__fulename['K']='Potassium'
|
|
__fulename['Ca']='Calcium'
|
|
__fulename['Sc']='Scandium'
|
|
__fulename['Ti']='Titanium'
|
|
__fulename['V']='Vanadium'
|
|
__fulename['Cr']='Chromium'
|
|
__fulename['Mn']='Manganese'
|
|
__fulename['Fe']='Iron'
|
|
__fulename['Co']='Cobalt'
|
|
__fulename['Ni']='Nickel'
|
|
__fulename['Cu']='Copper'
|
|
__fulename['Zn']='Zinc'
|
|
__fulename['Ga']='Gallium'
|
|
__fulename['Ge']='Germanium'
|
|
__fulename['As']='Arsenic'
|
|
__fulename['Se']='Selenium'
|
|
__fulename['Br']='Bromine'
|
|
__fulename['Kr']='Krypton'
|
|
__fulename['Rb']='Rubidium'
|
|
__fulename['Sr']='Strontium'
|
|
__fulename['Y']='Yttrium'
|
|
__fulename['Zr']='Zirconium'
|
|
__fulename['Nb']='Niobium'
|
|
__fulename['Mo']='Molybdenum'
|
|
__fulename['Tc']='Technetium'
|
|
__fulename['Ru']='Ruthenium'
|
|
__fulename['Rh']='Rhodium'
|
|
__fulename['Pd']='Palladium'
|
|
__fulename['Ag']='Silver'
|
|
__fulename['Cd']='Cadmium'
|
|
__fulename['In']='Indium'
|
|
__fulename['Sn']='Tin'
|
|
__fulename['Sb']='Antimony'
|
|
__fulename['Te']='Tellurium'
|
|
__fulename['I']='Iodine'
|
|
__fulename['Xe']='Xenon'
|
|
__fulename['Cs']='Caesium'
|
|
__fulename['Ba']='Barium'
|
|
__fulename['Lu']='Lutetium'
|
|
__fulename['Hf']='Hafnium'
|
|
__fulename['Ta']='Tantalum'
|
|
__fulename['W']='Tungsten'
|
|
__fulename['Re']='Rhenium'
|
|
__fulename['Os']='Osmium'
|
|
__fulename['Ir']='Iridium'
|
|
__fulename['Pt']='Platinum'
|
|
__fulename['Au']='Gold'
|
|
__fulename['Hg']='Mercury'
|
|
__fulename['Tl']='Thallium'
|
|
__fulename['Pb']='Lead'
|
|
__fulename['Bi']='Bismuth'
|
|
__fulename['Po']='Polonium'
|
|
__fulename['At']='Astatine'
|
|
__fulename['Rn']='Radon'
|
|
__fulename['Ce']='Cerium'
|
|
__fulename['Dy']='Dysprosium'
|
|
__fulename['Er']='Erbium'
|
|
__fulename['Eu']='Europium'
|
|
__fulename['Gd']='Gadolinium'
|
|
__fulename['Ho']='Holmium'
|
|
__fulename['La']='Lanthanum'
|
|
__fulename['Nd']='Neodymium'
|
|
__fulename['Pm']='Promethium'
|
|
__fulename['Pr']='Praseodymium'
|
|
__fulename['Sm']='Samarium'
|
|
__fulename['Tb']='Terbium'
|
|
__fulename['Tm']='Thulium'
|
|
__fulename['Yb']='Ytterbium'
|
|
__fulename['Fr']='Francium'
|
|
__fulename['Ra']='Radium'
|
|
__fulename['Lr']='Lawrencium'
|
|
__fulename['Rf']='Rutherfordium'
|
|
__fulename['Db']='Dubnium'
|
|
__fulename['Sg']='Seaborgium'
|
|
__fulename['Bh']='Bohrium'
|
|
__fulename['Hs']='Hassium'
|
|
__fulename['Mt']='Meitnerium'
|
|
__fulename['Ds']='Darmstadtium'
|
|
__fulename['Ac']='Actinium'
|
|
__fulename['Am']='Americium'
|
|
__fulename['Bk']='Berkelium'
|
|
__fulename['Cf']='Californium'
|
|
__fulename['Cm']='Curium'
|
|
__fulename['Es']='Einsteinium'
|
|
__fulename['Fm']='Fermium'
|
|
__fulename['Md']='Mendelevium'
|
|
__fulename['No']='Nobelium'
|
|
__fulename['Np']='Neptunium'
|
|
__fulename['Pa']='Protactinium'
|
|
__fulename['Pu']='Plutonium'
|
|
__fulename['Th']='Thorium'
|
|
__fulename['U']='Uranium'
|
|
|
|
__vdw={}
|
|
__vdw['H']=1.090000
|
|
__vdw['He']=1.400000
|
|
__vdw['Li']=1.820000
|
|
__vdw['Be']=2.000000
|
|
__vdw['B']=2.000000
|
|
__vdw['C']=1.700000
|
|
__vdw['N']=1.550000
|
|
__vdw['O']=1.520000
|
|
__vdw['F']=1.470000
|
|
__vdw['Ne']=1.540000
|
|
__vdw['Na']=2.270000
|
|
__vdw['Mg']=1.730000
|
|
__vdw['Al']=2.000000
|
|
__vdw['Si']=2.100000
|
|
__vdw['P']=1.800000
|
|
__vdw['S']=1.800000
|
|
__vdw['Cl']=1.750000
|
|
__vdw['Ar']=1.880000
|
|
__vdw['K']=2.750000
|
|
__vdw['Ca']=2.000000
|
|
__vdw['Sc']=2.000000
|
|
__vdw['Ti']=2.000000
|
|
__vdw['V']=2.000000
|
|
__vdw['Cr']=2.000000
|
|
__vdw['Mn']=2.000000
|
|
__vdw['Fe']=2.000000
|
|
__vdw['Co']=2.000000
|
|
__vdw['Ni']=1.630000
|
|
__vdw['Cu']=1.400000
|
|
__vdw['Zn']=1.390000
|
|
__vdw['Ga']=1.870000
|
|
__vdw['Ge']=2.000000
|
|
__vdw['As']=1.850000
|
|
__vdw['Se']=1.900000
|
|
__vdw['Br']=1.850000
|
|
__vdw['Kr']=2.020000
|
|
__vdw['Rb']=2.000000
|
|
__vdw['Sr']=2.000000
|
|
__vdw['Y']=2.000000
|
|
__vdw['Zr']=2.000000
|
|
__vdw['Nb']=2.000000
|
|
__vdw['Mo']=2.000000
|
|
__vdw['Tc']=2.000000
|
|
__vdw['Ru']=2.000000
|
|
__vdw['Rh']=2.000000
|
|
__vdw['Pd']=1.630000
|
|
__vdw['Ag']=1.720000
|
|
__vdw['Cd']=1.580000
|
|
__vdw['In']=1.930000
|
|
__vdw['Sn']=2.170000
|
|
__vdw['Sb']=2.000000
|
|
__vdw['Te']=2.060000
|
|
__vdw['I']=1.980000
|
|
__vdw['Xe']=2.160000
|
|
__vdw['Cs']=2.000000
|
|
__vdw['Ba']=2.000000
|
|
__vdw['Lu']=2.000000
|
|
__vdw['Hf']=2.000000
|
|
__vdw['Ta']=2.000000
|
|
__vdw['W']=2.000000
|
|
__vdw['Re']=2.000000
|
|
__vdw['Os']=2.000000
|
|
__vdw['Ir']=2.000000
|
|
__vdw['Pt']=1.720000
|
|
__vdw['Au']=1.660000
|
|
__vdw['Hg']=1.550000
|
|
__vdw['Tl']=1.960000
|
|
__vdw['Pb']=2.020000
|
|
__vdw['Bi']=2.000000
|
|
__vdw['Po']=2.000000
|
|
__vdw['At']=2.000000
|
|
__vdw['Rn']=2.000000
|
|
__vdw['Ce']=2.000000
|
|
__vdw['Dy']=2.000000
|
|
__vdw['Er']=2.000000
|
|
__vdw['Eu']=2.000000
|
|
__vdw['Gd']=2.000000
|
|
__vdw['Ho']=2.000000
|
|
__vdw['La']=2.000000
|
|
__vdw['Nd']=2.000000
|
|
__vdw['Pm']=2.000000
|
|
__vdw['Pr']=2.000000
|
|
__vdw['Sm']=2.000000
|
|
__vdw['Tb']=2.000000
|
|
__vdw['Tm']=2.000000
|
|
__vdw['Yb']=2.000000
|
|
__vdw['Fr']=2.000000
|
|
__vdw['Ra']=2.000000
|
|
__vdw['Lr']=2.000000
|
|
__vdw['Rf']=2.000000
|
|
__vdw['Db']=2.000000
|
|
__vdw['Sg']=2.000000
|
|
__vdw['Bh']=2.000000
|
|
__vdw['Hs']=2.000000
|
|
__vdw['Mt']=2.000000
|
|
__vdw['Ds']=2.000000
|
|
__vdw['Ac']=2.000000
|
|
__vdw['Am']=2.000000
|
|
__vdw['Bk']=2.000000
|
|
__vdw['Cf']=2.000000
|
|
__vdw['Cm']=2.000000
|
|
__vdw['Es']=2.000000
|
|
__vdw['Fm']=2.000000
|
|
__vdw['Md']=2.000000
|
|
__vdw['No']=2.000000
|
|
__vdw['Np']=2.000000
|
|
__vdw['Pa']=2.000000
|
|
__vdw['Pu']=2.000000
|
|
__vdw['Th']=2.000000
|
|
__vdw['U']=1.860000
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print(AtomParams.fullName(' H1 '))
|
|
print(AtomParams.vdwRadius('h'))
|
|
|
|
|