File: test_mass.py

package info (click to toggle)
python-periodictable 2.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,068 kB
  • sloc: python: 13,338; makefile: 103; sh: 92; javascript: 7
file content (44 lines) | stat: -rw-r--r-- 1,675 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import periodictable

def test():
    # Constants defined in the tables. These may be updated from time to time.
    Be_12_mass = 12.02692210
    Be_mass = 9.0121831
    Pb_206_abundance = 24.1
    Pb_209_abundance = 0
    Pb_mass = 207.2

    assert periodictable.Be[12].mass == Be_12_mass
    assert periodictable.Be.mass == Be_mass
    assert abs(periodictable.Be[12].ion[2].mass - (Be_12_mass - 2*periodictable.constants.electron_mass))<1e-12
    assert abs(periodictable.Be.ion[2].mass - (Be_mass - 2*periodictable.constants.electron_mass))<1e-12
    assert abs(periodictable.Pb[206].abundance - Pb_206_abundance) < 1e-14
    assert abs(periodictable.Pb[209].abundance - Pb_209_abundance) < 1e-14
    assert periodictable.Pb.mass == Pb_mass

    # Check abundance totals to 0% or 100%
    for el in periodictable.elements:
        abundance=0
        for iso in el:
            if iso.abundance == None:
                print("%s abundance=None"%iso)
            else:
                abundance += iso.abundance
        assert abs(abundance-100) < 1e-4 or abundance==0,\
            "total abundance for %s is %.15g%%"%(el.symbol,abundance)

    # Check average mass corresponds to abundance information
    for el in periodictable.elements:
        abundance=0
        mass=0
        for iso in el:
            if iso.abundance == None:
                print("%s abundance=None"%iso)
            else:
                abundance += iso.abundance
                mass += iso.mass*iso.abundance/100.
        assert abundance==0 or abs(mass - el.mass)  < el._mass_unc,\
            "avg mass for %s is %g != %g"%(el.symbol,el.mass,mass)


if __name__ == "__main__": test()