Skip to content
Snippets Groups Projects
Atom.cpp 232 KiB
Newer Older
#include "MantidKernel/Atom.h"
#include "MantidKernel/NeutronAtom.h"
#include "MantidKernel/PhysicalConstants.h"

#include <algorithm>
#include <sstream>
#include <cmath>
#include <string>
namespace Mantid {
namespace PhysicalConstants {
Atom::Atom(const std::string &symbol, const uint16_t z, const uint16_t a,
           const double abundance, const double mass, const double density)
    : symbol(symbol), z_number(z), a_number(a), abundance(abundance),
      mass(mass), mass_density(density),
      number_density(density * N_A * 1.e-24 /
                     mass), // Convert from cm^-3 to Angstroms^-3
      neutron(
          getNeutronNoExceptions(z, a)) /// Get the corresponding neutronic atom
{}
Atom::Atom(const Atom &other)
    : symbol(other.symbol), z_number(other.z_number), a_number(other.a_number),
      abundance(other.abundance), mass(other.mass),
      mass_density(other.mass_density), number_density(other.number_density),
Peterson, Peter's avatar
Peterson, Peter committed
      neutron(getNeutronNoExceptions(other.neutron)) {}
Peterson, Peter's avatar
Peterson, Peter committed

Atom::Atom(const NeutronAtom &neutron)
Peterson, Peter's avatar
Peterson, Peter committed
    : symbol("user"), z_number(neutron.z_number), a_number(neutron.a_number),
      abundance(0), mass(0.), mass_density(0.), number_density(0.),
Peterson, Peter's avatar
Peterson, Peter committed
      neutron(getNeutronNoExceptions(neutron)) {}
// ---------- START DO NOT EDIT AREA----------
static const Atom H("H", 1, 0, 0.000000, 1.007940, 0.0708);
static const Atom H1("H", 1, 1, 99.988500, 1.007825, 0.070791924393);
static const Atom H2("H", 1, 2, 0.011500, 2.014102, 0.141475093639);
static const Atom H3("H", 1, 3, 0.000000, 3.016049, 0.21185416606);
static const Atom H4("H", 1, 4, 0.000000, 4.027830, 0.282923947854);
static const Atom H5("H", 1, 5, 0.000000, 5.039540, 0.353988761236);
static const Atom H6("H", 1, 6, 0.000000, 6.044940, 0.424610345854);
static const Atom He("He", 2, 0, 0.000000, 4.002602, 0.122);
static const Atom He3("He", 2, 3, 0.000137, 3.016029, 0.0919290940702);
static const Atom He4("He", 2, 4, 99.999863, 4.002603, 0.122000038091);
static const Atom He5("He", 2, 5, 0.000000, 5.012220, 0.152773330948);
static const Atom He6("He", 2, 6, 0.000000, 6.018888, 0.183456748435);
static const Atom He7("He", 2, 7, 0.000000, 7.028030, 0.214215567773);
static const Atom He8("He", 2, 8, 0.000000, 8.033922, 0.244875329598);
static const Atom He9("He", 2, 9, 0.000000, 9.043820, 0.275657194995);
static const Atom He10("He", 2, 10, 0.000000, 10.052400, 0.306398887524);
static const Atom Li("Li", 3, 0, 0.000000, 6.941000, 0.534);
static const Atom Li4("Li", 3, 4, 0.000000, 4.027180, 0.309827707823);
static const Atom Li5("Li", 3, 5, 0.000000, 5.012540, 0.385635551073);
static const Atom Li6("Li", 3, 6, 7.590000, 6.015122, 0.462768377496);
static const Atom Li7("Li", 3, 7, 92.410000, 7.016004, 0.539770369687);
static const Atom Li8("Li", 3, 8, 0.000000, 8.022487, 0.617203270105);
static const Atom Li9("Li", 3, 9, 0.000000, 9.026789, 0.694468430975);
static const Atom Li10("Li", 3, 10, 0.000000, 10.035481, 0.772071294338);
static const Atom Li11("Li", 3, 11, 0.000000, 11.043796, 0.849645161216);
static const Atom Li12("Li", 3, 12, 0.000000, 12.053780, 0.927347431206);
static const Atom Be("Be", 4, 0, 0.000000, 9.012182, 1.848);
static const Atom Be5("Be", 4, 5, 0.000000, 5.040790, 1.03364311995);
static const Atom Be6("Be", 4, 6, 0.000000, 6.019726, 1.23437960396);
static const Atom Be7("Be", 4, 7, 0.000000, 7.016929, 1.4388618829);
static const Atom Be8("Be", 4, 8, 0.000000, 8.005305, 1.64153407092);
static const Atom Be9("Be", 4, 9, 100.000000, 9.012182, 1.84800002051);
static const Atom Be10("Be", 4, 10, 0.000000, 10.013534, 2.05333295284);
static const Atom Be11("Be", 4, 11, 0.000000, 11.021658, 2.26005466645);
static const Atom Be12("Be", 4, 12, 0.000000, 12.026921, 2.46618965396);
static const Atom Be13("Be", 4, 13, 0.000000, 13.036130, 2.67313379157);
static const Atom Be14("Be", 4, 14, 0.000000, 14.042820, 2.87956139368);
static const Atom B("B", 5, 0, 0.000000, 10.811000, 2.34);
static const Atom B7("B", 5, 7, 0.000000, 7.029920, 1.52159955601);
static const Atom B8("B", 5, 8, 0.000000, 8.024607, 1.73689572454);
static const Atom B9("B", 5, 9, 0.000000, 9.013329, 1.95090087799);
static const Atom B10("B", 5, 10, 19.900000, 10.012937, 2.16726228656);
static const Atom B11("B", 5, 11, 80.100000, 11.009305, 2.38292247433);
static const Atom B12("B", 5, 12, 0.000000, 12.014352, 2.60046100398);
static const Atom B13("B", 5, 13, 0.000000, 13.017780, 2.81764923707);
static const Atom B14("B", 5, 14, 0.000000, 14.025404, 3.03574557025);
static const Atom B15("B", 5, 15, 0.000000, 15.031097, 3.25342401073);
static const Atom B16("B", 5, 16, 0.000000, 16.039810, 3.47175611877);
static const Atom B17("B", 5, 17, 0.000000, 17.046930, 3.68974342799);
static const Atom B18("B", 5, 18, 0.000000, 18.056170, 3.90818960318);
static const Atom B19("B", 5, 19, 0.000000, 19.063730, 4.12627214874);
static const Atom C("C", 6, 0, 0.000000, 12.010700, 2.1);
static const Atom C8("C", 6, 8, 0.000000, 8.037675, 1.40534003014);
static const Atom C9("C", 6, 9, 0.000000, 9.031040, 1.57902405438);
static const Atom C10("C", 6, 10, 0.000000, 10.016853, 1.75138763852);
static const Atom C11("C", 6, 11, 0.000000, 11.011434, 1.92528420325);
static const Atom C12("C", 6, 12, 98.930000, 12.000000, 2.09812916816);
static const Atom C13("C", 6, 13, 1.070000, 13.003355, 2.27355983909);
static const Atom C14("C", 6, 14, 0.000000, 14.003242, 2.44838420532);
static const Atom C15("C", 6, 15, 0.000000, 15.010599, 2.62451468524);
static const Atom C16("C", 6, 16, 0.000000, 16.014701, 2.80007594062);
static const Atom C17("C", 6, 17, 0.000000, 17.022584, 2.97629833399);
static const Atom C18("C", 6, 18, 0.000000, 18.026760, 3.15187258028);
static const Atom C19("C", 6, 19, 0.000000, 19.035250, 3.32820110402);
static const Atom C20("C", 6, 20, 0.000000, 20.040320, 3.50393166094);
static const Atom C21("C", 6, 21, 0.000000, 21.049340, 3.68035285204);
static const Atom C22("C", 6, 22, 0.000000, 22.056450, 3.85644009092);
static const Atom N("N", 7, 0, 0.000000, 14.006700, 0.808);
static const Atom N10("N", 7, 10, 0.000000, 10.042620, 0.57932539142);
static const Atom N11("N", 7, 11, 0.000000, 11.026800, 0.636099466684);
static const Atom N12("N", 7, 12, 0.000000, 12.018613, 0.693313875902);
static const Atom N13("N", 7, 13, 0.000000, 13.005739, 0.750257860355);
static const Atom N14("N", 7, 14, 99.632000, 14.003074, 0.807790828404);
static const Atom N15("N", 7, 15, 0.368000, 15.000109, 0.865306459759);
static const Atom N16("N", 7, 16, 0.000000, 16.006101, 0.923338825791);
static const Atom N17("N", 7, 17, 0.000000, 17.008450, 0.981160987242);
static const Atom N18("N", 7, 18, 0.000000, 18.014082, 1.03917255713);
static const Atom N19("N", 7, 19, 0.000000, 19.017027, 1.09702912292);
static const Atom N20("N", 7, 20, 0.000000, 20.023370, 1.15508170804);
static const Atom N21("N", 7, 21, 0.000000, 21.027090, 1.212982981);
static const Atom N22("N", 7, 22, 0.000000, 22.034440, 1.27109365661);
static const Atom N23("N", 7, 23, 0.000000, 23.040510, 1.32913049326);
static const Atom N24("N", 7, 24, 0.000000, 24.050500, 1.3873934617);
static const Atom O("O", 8, 0, 0.000000, 15.999400, 1.14);
static const Atom O12("O", 8, 12, 0.000000, 12.034405, 0.857483511882);
static const Atom O13("O", 8, 13, 0.000000, 13.024810, 0.928052514469);
static const Atom O14("O", 8, 14, 0.000000, 14.008595, 0.998149845032);
static const Atom O15("O", 8, 15, 0.000000, 15.003065, 1.06900849757);
static const Atom O16("O", 8, 16, 99.757000, 15.994915, 1.13968040484);
static const Atom O17("O", 8, 17, 0.038000, 16.999132, 1.21123354063);
static const Atom O18("O", 8, 18, 0.205000, 17.999160, 1.28248827181);
static const Atom O19("O", 8, 19, 0.000000, 19.003579, 1.35405578084);
static const Atom O20("O", 8, 20, 0.000000, 20.004076, 1.42534387965);
static const Atom O21("O", 8, 21, 0.000000, 21.008655, 1.49692280336);
static const Atom O22("O", 8, 22, 0.000000, 22.009970, 1.56826917259);
static const Atom O23("O", 8, 23, 0.000000, 23.015690, 1.63992940985);
static const Atom O24("O", 8, 24, 0.000000, 24.020370, 1.71151554433);
static const Atom O25("O", 8, 25, 0.000000, 25.029140, 1.78339310224);
static const Atom O26("O", 8, 26, 0.000000, 26.037750, 1.85525925972);
static const Atom F("F", 9, 0, 0.000000, 18.998403, 1.5);
static const Atom F14("F", 9, 14, 0.000000, 14.036080, 1.1082047148);
static const Atom F15("F", 9, 15, 0.000000, 15.018010, 1.18573201984);
static const Atom F16("F", 9, 16, 0.000000, 16.011466, 1.26416934872);
static const Atom F17("F", 9, 17, 0.000000, 17.002095, 1.34238349358);
static const Atom F18("F", 9, 18, 0.000000, 18.000938, 1.42124610504);
static const Atom F19("F", 9, 19, 100.000000, 18.998403, 1.5);
static const Atom F20("F", 9, 20, 0.000000, 19.999981, 1.57907860277);
static const Atom F21("F", 9, 21, 0.000000, 20.999949, 1.65803004697);
static const Atom F22("F", 9, 22, 0.000000, 22.002999, 1.73722486846);
static const Atom F23("F", 9, 23, 0.000000, 23.003570, 1.81622395507);
static const Atom F24("F", 9, 24, 0.000000, 24.008100, 1.89553562059);
static const Atom F25("F", 9, 25, 0.000000, 25.012090, 1.97480465095);
static const Atom F26("F", 9, 26, 0.000000, 26.019630, 2.05435396802);
static const Atom F27("F", 9, 27, 0.000000, 27.026890, 2.13388117797);
static const Atom F28("F", 9, 28, 0.000000, 28.035670, 2.21352839801);
static const Atom F29("F", 9, 29, 0.000000, 29.043260, 2.29308166278);
static const Atom Ne("Ne", 10, 0, 0.000000, 20.179700, 1.207);
static const Atom Ne32("Ne", 10, 32, 0.000000, 32.039910, 1.91638980609);
static const Atom Ne16("Ne", 10, 16, 0.000000, 16.025757, 0.958541935658);
static const Atom Ne17("Ne", 10, 17, 0.000000, 17.017700, 1.0178726096);
static const Atom Ne18("Ne", 10, 18, 0.000000, 18.005697, 1.07696726907);
static const Atom Ne19("Ne", 10, 19, 0.000000, 19.001880, 1.13655153043);
static const Atom Ne20("Ne", 10, 20, 90.480000, 19.992440, 1.19579950605);
static const Atom Ne21("Ne", 10, 21, 0.270000, 20.993847, 1.25569622022);
static const Atom Ne22("Ne", 10, 22, 9.250000, 21.991386, 1.31536159163);
static const Atom Ne23("Ne", 10, 23, 0.000000, 22.994467, 1.37535850778);
static const Atom Ne24("Ne", 10, 24, 0.000000, 23.993615, 1.43512011105);
static const Atom Ne25("Ne", 10, 25, 0.000000, 24.997790, 1.49518241252);
static const Atom Ne26("Ne", 10, 26, 0.000000, 26.000460, 1.55515469606);
static const Atom Ne27("Ne", 10, 27, 0.000000, 27.007620, 1.61539553809);
static const Atom Ne28("Ne", 10, 28, 0.000000, 28.012110, 1.67547668053);
static const Atom Ne29("Ne", 10, 29, 0.000000, 29.019350, 1.73572230757);
static const Atom Ne30("Ne", 10, 30, 0.000000, 30.023870, 1.79580524438);
static const Atom Ne31("Ne", 10, 31, 0.000000, 31.033110, 1.85617049659);
static const Atom Na("Na", 11, 0, 0.000000, 22.989770, 0.971);
static const Atom Na32("Na", 11, 32, 0.000000, 32.019650, 1.35238761197);
static const Atom Na33("Na", 11, 33, 0.000000, 33.027390, 1.3949506972);
static const Atom Na34("Na", 11, 34, 0.000000, 34.034900, 1.43750406811);
static const Atom Na35("Na", 11, 35, 0.000000, 35.044180, 1.48013219706);
static const Atom Na18("Na", 11, 18, 0.000000, 18.027180, 0.761399169283);
static const Atom Na19("Na", 11, 19, 0.000000, 19.013879, 0.803073563111);
static const Atom Na20("Na", 11, 20, 0.000000, 20.007348, 0.845033895859);
static const Atom Na21("Na", 11, 21, 0.000000, 20.997655, 0.886860682038);
static const Atom Na22("Na", 11, 22, 0.000000, 21.994437, 0.92896093057);
static const Atom Na23("Na", 11, 23, 100.000000, 22.989770, 0.970999986062);
static const Atom Na24("Na", 11, 24, 0.000000, 23.990963, 1.01328657892);
static const Atom Na25("Na", 11, 25, 0.000000, 24.989954, 1.05548014279);
static const Atom Na26("Na", 11, 26, 0.000000, 25.992590, 1.09782763768);
static const Atom Na27("Na", 11, 27, 0.000000, 26.994010, 1.14012379028);
static const Atom Na28("Na", 11, 28, 0.000000, 27.998890, 1.18256608004);
static const Atom Na29("Na", 11, 29, 0.000000, 29.002810, 1.22496782308);
static const Atom Na30("Na", 11, 30, 0.000000, 30.009230, 1.26747515656);
static const Atom Na31("Na", 11, 31, 0.000000, 31.013600, 1.30989590587);
static const Atom Mg("Mg", 12, 0, 0.000000, 24.305000, 1.738);
static const Atom Mg32("Mg", 12, 32, 0.000000, 31.999150, 2.28819266406);
static const Atom Mg33("Mg", 12, 33, 0.000000, 33.005590, 2.36016109525);
static const Atom Mg34("Mg", 12, 34, 0.000000, 34.009070, 2.43191786299);
static const Atom Mg35("Mg", 12, 35, 0.000000, 35.017490, 2.50402787986);
static const Atom Mg36("Mg", 12, 36, 0.000000, 36.022450, 2.57589047933);
static const Atom Mg37("Mg", 12, 37, 0.000000, 37.031240, 2.64802695412);
static const Atom Mg20("Mg", 12, 20, 0.000000, 20.018863, 1.43150725752);
static const Atom Mg21("Mg", 12, 21, 0.000000, 21.011714, 1.50250396758);
Loading
Loading full blame...