A practice in int/float handling and structs
This commit is contained in:
37
EmpiricalMass/main.cpp
Normal file
37
EmpiricalMass/main.cpp
Normal file
@ -0,0 +1,37 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user