38 lines
742 B
C++
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;
|
|
}
|