TkN 2.3
Toolkit for Nuclei
Loading...
Searching...
No Matches
nucleus

To access any nuclear property, a tknucleus needs to be created. it can be created using its symbol, or its proton and mass number:

tknucleus nuc("235U");
tknucleus nuc2(92,235);

A nucleus can also be create only using it's element name or charge number. In such case, the most stable isotope will be returned, and the most abundant in case of multiple stable nuclei:

tknucleus nuc("U");
tknucleus nuc2(92);

The main properties of a nucleus can be printed with:

tknucleus nuc1("12C");
nuc1.print()
[ INFO ] 12C (Z=6, N=6) properties:
[ INFO ] Ground state configuration: 0+
[ INFO ] Stable nucleus, abundance: 98.93 %
tknucleus nuc2("U");
nuc2.print()
[ INFO ] 238U (Z=92, N=146) properties:
[ INFO ] Ground state configuration: 0+
[ INFO ] Radioactive nucleus:
[ INFO ] lifetime = 4e+09 (6e+06) y
[ INFO ] Decay: [A;100][SF;5.4e-05]

For each element, the following properties can be available:

  • charge
  • symbol
  • elemen_name
  • group block
  • standard state
  • atomic mass (u)
  • electronic configuration
  • atomic radius (van der Waals) (pm)
  • ionization energy (eV)
  • melting point (K)
  • boiling point (K)
  • density (g/cm³)
  • year discovered
  • list of X-rays (keV)

Then, for each isotope, the following properties can be available from the databases (see (see the data sources section)):

  • abundance (%)
  • decay mode (returned as a string)
  • charge radius (fm)
  • electric quadrupole (barn)
  • magnetic dipole (μN)
  • mass excess (keV)
  • lifetime
  • spin-parity
  • quadrupole deformation ß²
  • fission yields:
    • thermal neutron-induced fission yields for 235-Uranium
    • fast neutron-induced fission yields for 238-Uranium
    • thermal neutron-induced fission yields for 239-Plutonium
    • thermal neutron-induced fission yields for 241-Plutonium
    • spontaneous fission yields for 252-Californium
  • cumulative fission yields:
    • availaible for each independant fission yield cited above
  • year of discovery of the isotope

From the mass excess values, the following properties are calculated in TkN:

  • binding energy per nucleon (keV)
  • pairing gap (keV)
  • Q-values (keV):
    • α
    • ∆α: 0.5 x ( Qα(Z+2,N+2) - Qα(Z,N) )
    • ß⁻
    • double ß⁻
    • ß⁺
    • electron capture
    • double electron capture
    • ß⁻ delayed neutron emission
    • ß⁻ delayed double neutron emission
    • electron capture followed by proton emission
  • separation energies(keV):
    • neutron separation energy
    • two neutron separation energy
    • proton separation energy
    • two proton separation energy

to see the available properties for a given nucleus, use the tknucleus::list_properties() method:

tknucleus nuc("12C")
nuc.list_properties()
[ INFO ] nucleus properties:
[ INFO ] Qalpha -7366.587870 keV [FLOAT]
[ INFO ] QbetaMinus -17338.068000 keV [FLOAT]
[ INFO ] QbetaMinusOneNeutronEmission -32436.962060 keV [FLOAT]
[ INFO ] QbetaMinusTwoNeutronEmission -54942.663120 keV [FLOAT]
[ INFO ] QdeltaAlpha 102.334915 keV [FLOAT]
[ INFO ] QdoubleBetaMinus -32013.335000 keV [FLOAT]
[ INFO ] QdoubleElectronCapture -25077.761000 keV [FLOAT]
[ INFO ] QelectronCapture -13369.398000 keV [FLOAT]
[ INFO ] QelectronCaptureOneProtonEmission -27466.140064 keV [FLOAT]
[ INFO ] QpositronEmission -14391.395900 keV [FLOAT]
[ INFO ] XRay_Kalpha1 0.277000 keV [FLOAT]
[ INFO ] abundance 98.930000 % [FLOAT]
[ INFO ] atomic_mass 12.011000 u [FLOAT]
[ INFO ] atomic_radius_van_der_Waals 170.000000 pm [FLOAT]
[ INFO ] binding_energy_ldm_fit_overA -210.980700 keV [FLOAT]
[ INFO ] binding_energy_overA 7680.144562 keV [FLOAT]
[ INFO ] boiling_point 4098.000000 K [FLOAT]
[ INFO ] charge 6 [TEXT]
[ INFO ] decay_modes [TEXT]
[ INFO ] density 2.267000 [FLOAT]
[ INFO ] electric_quadrupole 0.060000 barn [FLOAT]
[ INFO ] electronic_configuration [He]2s2 2p2 [TEXT]
[ INFO ] group_block Nonmetal [TEXT]
[ INFO ] ionization_energy 11.260000 eV [FLOAT]
[ INFO ] isotope_year_discovered 1919 [TEXT]
[ INFO ] lifetime STABLE [FLOAT]
[ INFO ] mass_excess 0.000000 keV [FLOAT]
[ INFO ] melting_point 3823.000000 K [FLOAT]
[ INFO ] name Carbon [TEXT]
[ INFO ] neutronSeparationEnergy 18720.715060 keV [FLOAT]
[ INFO ] pairingGap 6887.203165 keV [FLOAT]
[ INFO ] protonSeparationEnergy 15956.679064 keV [FLOAT]
[ INFO ] quadrupoleDeformation 0.576601 [FLOAT]
[ INFO ] radius 2.470200 fm [FLOAT]
[ INFO ] spin_parity 0+ [TEXT]
[ INFO ] state Solid [TEXT]
[ INFO ] symbol C [TEXT]
[ INFO ] twoNeutronSeparationEnergy 31841.309120 keV [FLOAT]
[ INFO ] twoProtonSeparationEnergy 27185.429128 keV [FLOAT]
[ INFO ] year_discovered Ancient [TEXT]

The results can be filtered using a regular expression:

tknucleus nuc("12C")
nuc.list_properties("Q*")
[ INFO ] nucleus properties:
[ INFO ] Qalpha -7366.587870 keV [FLOAT]
[ INFO ] QbetaMinus -17338.068000 keV [FLOAT]
[ INFO ] QbetaMinusOneNeutronEmission -32436.962060 keV [FLOAT]
[ INFO ] QbetaMinusTwoNeutronEmission -54942.663120 keV [FLOAT]
[ INFO ] QdeltaAlpha 102.334915 keV [FLOAT]
[ INFO ] QdoubleBetaMinus -32013.335000 keV [FLOAT]
[ INFO ] QdoubleElectronCapture -25077.761000 keV [FLOAT]
[ INFO ] QelectronCapture -13369.398000 keV [FLOAT]
[ INFO ] QelectronCaptureOneProtonEmission -27466.140064 keV [FLOAT]
[ INFO ] QpositronEmission -14391.395900 keV [FLOAT]

To test if a property is available, use the use the tknucleus::has_property() method:

  • If the requested property is available and is a measured property (with a value and an associated error) get it using: tkproperty_list::get()
    tknucleus nuc("12C");
    if(nuc.has_property("abundance")) {
    auto value = nuc.get("abundance");
    cout << nuc.get_symbol() << " abundance: " << value->get_value() << " +- " << value->get_error() << " " << value->get_unit() << endl;
    }
    12C abundance: 98.93 +- 0.08 %
    The returned value is a tkn::tkmeasure, see the dedicated section
  • If the requested property is available and is refering to a string value (e.g. drounf state spin parity), get it using tknucleus::get_property()
    tknucleus nuc("13C");
    value = nuc.get_property("spin_parity");
    cout << nuc.get_symbol() << " GS spin parity: " << value << endl;
    13C GS spin parity: 1/2-

For a faster access to the most used properties, few specific methods have been added to tknucleus objects:

method name description
get_a() nucleon number
get_n() neutron number
get_z() proton number
get_symbol() nucleus name (ex: 12C)
get_element_name() element name (ex: Carbon)
get_element_symbol() element symbol (ex: C)
is_z_magic() is Z a magic number
is_n_magic() is N a magic number
is_doubly_magic() is nucleus doubly magic
get_abundance() abundance for stable nuclei (in %)
get_binding_energy_over_a() binding energy per nucleon (MeV) (unit as parameter)
get_lifetime() ground state lifetime in seconds (unit as parameter)
get_mass_excess() mass excess (MeV) (unit as parameter)
get_jpi() ground state spin and parity as a string
get_xrays() vector of the known xray energies
get_decay_mode_str() decay modes as a string
get_decay_modes() decay modes as a vector of decay and branching ratio
get_ground_state() access the ground state tkn::tklevel
get_level_scheme() access the tkn::tklevel_scheme
get_fission_yield(tkstring _parent, bool _cumulative=false) get the fission yield of for a given fissioning nucleus (cumulative or not)

The above methods giving access to a measure (ex: get_lifetime() ), are directly returning the value as a double. Dedicated methods allows to access the tkn::tkmeasure to access to units, uncertainties... etc (see Measures and units).

For exemple, for the lifetime, the method get_lifetime_measure() returns the tkmeasure object.