diff --git a/EmpiricalMass/main.cpp b/EmpiricalMass/main.cpp new file mode 100644 index 0000000..36a32f4 --- /dev/null +++ b/EmpiricalMass/main.cpp @@ -0,0 +1,37 @@ +#include +#include + +using namespace std; + +struct Isotope +{ + int A{}; + int Z{}; +}; + +float empiricalMass(Isotope iso) { + int N = iso.A - iso.Z; + int delta = -1; + + if (iso.A % 2 != 0) { + delta = 0; // mixed parity + } else if (iso.Z % 2 == 0 && N % 2 == 0) { + delta = 1; // even-even parity + } + + float B = 15.75 * iso.A - 94.8 * pow((iso.A/2. - iso.Z), 2.) / iso.A + - 17.8 * pow(iso.A, 2./3.) - 0.71 * pow(iso.Z, 2.) * pow(iso.A, -1./3.) + + 34 * delta * pow(iso.A, -3./4.); + + return B/iso.A; +} + +int main() +{ + Isotope U235{ 235, 92 }; + float mass = empiricalMass(U235); + cout << "U235: "; + cout << mass; + cout << " MeV per nucleon\n"; + return 0; +}