23 int nP,
int nN, doublereal spin) : m_np(nP),
24 m_nn(nN), m_spin(spin),
37 return (
int)(2*m_spin) + 1;
42 std::string symbol() {
47 if (m_np == b.m_np && m_nn == b.m_nn) {
59 return (m_spin - std::floor(m_spin) < 0.001);
71 inline Nucleus* HydrogenNucleus()
73 return new Nucleus(
"H", 1, 0, 0.5);
75 inline Nucleus* DeuteriumNucleus()
77 return new Nucleus(
"D", 1, 1, 1.0);
79 inline Nucleus* TritiumNucleus()
81 return new Nucleus(
"T", 1, 2, 0.5);
83 inline Nucleus* He3Nucleus()
85 return new Nucleus(
"He3", 2, 1, 0.5);
87 inline Nucleus* He4Nucleus()
89 return new Nucleus(
"He3", 2, 2, 0.0);
91 inline Nucleus* C12nucleus()
93 return new Nucleus(
"C12", 6, 6, 0.0);
95 inline Nucleus* C13nucleus()
97 return new Nucleus(
"C13", 6, 7, 0.5);
99 inline Nucleus* N14nucleus()
101 return new Nucleus(
"N14", 7, 7, 1.0);
103 inline Nucleus* N15nucleus()
105 return new Nucleus(
"N15", 7, 8, 0.5);
107 inline Nucleus* O16nucleus()
109 return new Nucleus(
"O16", 8, 8, 0.0);
111 inline Nucleus* O17nucleus()
113 return new Nucleus(
"O17", 8, 9, 2.5);
115 inline Nucleus* O18nucleus()
117 return new Nucleus(
"O18", 8, 10, 0.0);
119 inline Nucleus* F19nucleus()
121 return new Nucleus(
"F19", 9, 10, 0.5);