Files
learning-cpp/EmpiricalMass/main.cpp
2025-11-03 16:17:47 +01:00

38 lines
742 B
C++

#include <iostream>
#include <cmath>
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;
}