ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
Loading...
Searching...
No Matches
NuclearData.hpp
1#pragma once
2#include <cmath>
3#include <optional>
4#include <vector>
5
8namespace Nuclear {
9
10// skin-thickness. Always same?
11constexpr double default_t = 2.30;
12
13constexpr auto FourLn3 = 4.0 * 1.098612289;
14// 4.0 * std::log(3.0); // std::log not constepr
15constexpr auto Pi2 = M_PI * M_PI;
16
18struct Isotope {
20 int Z;
22 int A;
24 std::optional<double> r_rms{};
26 std::optional<double> I_N{};
27 std::optional<int> parity{};
29 std::optional<double> mu{};
31 std::optional<double> q{};
32};
33
34//==============================================================================
36Isotope findIsotopeData(int z, int a);
38std::vector<Isotope> findIsotopeList(int z);
40double find_rrms(int z, int a);
42double find_mu(int z, int a);
44int find_parity(int z, int a);
46double find_spin(int z, int a);
47
48//==============================================================================
50double c_hdr_formula_rrms_t(double rrms, double t = default_t);
52double rrms_formula_c_t(double c, double t = default_t);
53
55double approximate_r_rms(int a, int z);
56
58double deformation_effective_t(double c, double t, double beta);
59
61double approximate_t_skin(int a);
62
63} // namespace Nuclear
Data and useful functions for nuclear properties and potentials. Radii all in Fermi (fm,...
Definition nuclear_data_table.hpp:21
double c_hdr_formula_rrms_t(double rrms, double t)
Calculates c from rrms and t.
Definition NuclearData.cpp:73
double rrms_formula_c_t(double c, double t)
Calculates rrms from c and t.
Definition NuclearData.cpp:87
int find_parity(int z, int a)
As above, for parity.
Definition NuclearData.cpp:35
double approximate_t_skin(int)
just returns 2.3
Definition NuclearData.cpp:107
double find_mu(int z, int a)
As above, for dipole moment.
Definition NuclearData.cpp:30
Isotope findIsotopeData(int z, int a)
Looks up + returns an isotope from the list. If not in list, partially blank.
Definition NuclearData.cpp:6
double find_rrms(int z, int a)
Looks up default value of r_rms for given isotope. Returns 0 if not found.
Definition NuclearData.cpp:25
double deformation_effective_t(double c, double t, double beta)
Calculates effective skin thickness due to quadrupole deformation [See Eq. 8 of https://doi....
Definition NuclearData.cpp:96
double approximate_r_rms(int A, int Z)
Approximate rms radius from a for to Angeli data.
Definition NuclearData.cpp:46
double find_spin(int z, int a)
As above, for nuclear spin. Returns -1 if not found.
Definition NuclearData.cpp:40
std::vector< Isotope > findIsotopeList(int z)
Returns all known isotopes of given atom.
Definition NuclearData.cpp:16
Isotope data: Z, A, r_rms/fm, I, pi, mu, Q.
Definition NuclearData.hpp:18
std::optional< double > I_N
Nuclear spin (in hbar)
Definition NuclearData.hpp:26
std::optional< double > r_rms
root-mean-square charge radius, in Fermi (fm, e-15m)
Definition NuclearData.hpp:24
std::optional< double > q
Magnetic quadrupole moment, in barns.
Definition NuclearData.hpp:31
int A
Atomic mass number (A = Z + N)
Definition NuclearData.hpp:22
int Z
Atomic charge.
Definition NuclearData.hpp:20
std::optional< double > mu
Magnetic dipole moment, in nuclear magnetons.
Definition NuclearData.hpp:29