3.8. Utilities¶
Presented here is a small set of useful utility tools that can come handy in various contexts in your scripts. They are simple, standalone objects always present in the main namespace.
What is characteristic for objects described below is that they are meant to be used in a bit different way than all other PLAMS classes.
Usually one takes a class (like DiracJob
), creates an instance of it (myjob = DiracJob(...)
) and executes some of its methods (r = myjob.run()
).
In contrast, utility classes are designed in a way similar to so called singleton design pattern.
That means it is not possible to create any instances of these classes.
The class itself serves for “one and only instance” and all methods should be called using the class as the calling object:
>>> x = PeriodicTable()
PTError: Instances of PeriodicTable cannot be created
>>> s = PeriodicTable.get_symbol(20)
>>> print(s)
Ca
3.8.1. Periodic Table¶
-
class
PeriodicTable
[source]¶ A singleton class for the periodic table of elements.
For each element the following properties are stores: atomic symbol, atomic mass, atomic radius and number of connectors.
Atomic mass is, strictly speaking, atomic weight, as present in Mathematica’s ElementData function.
Atomic radius and number of connectors are used by
guess_bonds()
. Note that values of radii are neither atomic radii nor covalent radii. They are somewhat “emprically optimized” for the bond guessing algorithm.Note
This class is visible in the main namespace as both
PeriodicTable
andPT
.
3.8.2. Units¶
-
class
Units
[source]¶ A singleton class for unit converter.
All values are based on 2014 CODATA recommended values.
The following constants and units are supported:
- constants:
speed_of_light
(alsoc
)electron_charge
(alsoe
)Avogadro_constant
(alsoNA
)Bohr_radius
- distance:
Angstrom
,A
Bohr
,au
,a.u.
nm
pm
- reciprocal distance:
1/Angstrom
,1/A
,Angstrom^-1
,A^-1
,1/Bohr
,Bohr^-1
- angle:
degree
,deg
,radian
,rad
,grad
circle
- energy:
au
,a.u.
,Hartree
eV
kcal/mol
kJ/mol
cm^-1
,cm-1
- dipole moment:
au
,a.u.
Cm
Debye
,D
Example:
>>> print(Units.constants['speed_of_light']) 299792458 >>> print(Units.constants['e']) 1.6021766208e-19 >>> print(Units.convert(123, 'angstrom', 'bohr')) 232.436313431 >>> print(Units.convert([23.32, 145.0, -34.7], 'kJ/mol', 'kcal/mol')) [5.573613766730401, 34.655831739961755, -8.293499043977056] >>> print(Units.conversion_ratio('kcal/mol', 'kJ/mol')) 4.184
-
classmethod
convert
(value, inp, out)[source]¶ Convert value from unit inp to out.
value can be a single number or a container (list, tuple, numpy.array etc.). In the latter case a container of the same type and length is returned. Conversion happens recursively, so this method can be used to convert, for example, a list of lists of numbers, or any other hierarchical container structure. Conversion is applied on all levels, to all values that are numbers (also numpy number types). All other values (strings, bools etc.) remain unchanged.
- constants: