Notebooks · lib/skyrme/spherical
Skyrme Hartree-Fock of any spherical closed-shell nucleus
The solver of lib/skyrme/skyrme for any nucleus whose protons and neutrons each fill whole shells: oxygen-16 through lead-208, with the forces SLy4, SLy5, SIII and SkM*.
from skyrme.spherical import SLY5, nucleus_z, nucleus_n, solve
res = solve(0.1, 200, SLY5, nucleus_z("208Pb"), nucleus_n("208Pb"), 0.5, 1.0e-9, 300)
show res.e_per_a # E/A, MeV
Two things change from lib/skyrme/skyrme, which solves oxygen-16 only.
The occupied orbitals are chosen by energy. Each iteration diagonalizes every block up to , and the protons (or neutrons) go into the lowest orbitals across all blocks, to an orbital, until all (or ) are placed. A nucleus whose last orbital would be only partly filled is open-shell and is refused: a spherical solution with a partly filled shell needs pairing or a filling approximation, which this solver does not have. Inside a block the -th orbital is the -th eigenvalue, so calcium-40's is the second state of the block.
The force and the center-of-mass factor are arguments. A force is a Force record (SLY4, SLY5, SIII and SKMS are defined below), with a flag for the terms of and , which SLy5 and SIII keep and SLy4 and SkM* drop. The kinetic term carries for every force, as each was fitted.
For oxygen-16 with SLy5 the arithmetic is lib/skyrme/skyrme's, operation for operation, and gives its bits (the test at the end).
Used with import skyrme.spherical.
Look inside this program
- Atlas
The program’s map: every function and which calls which.
There’s no recorded run of this program yet.
This program declares a record type (Force), and records run only in compiled C for now, so the Run buttons here are off. Open it in the workbench and use its C tab to compile it.
Shift+Enter in a cell runs it and moves to the next. Running a cell runs every cell above it too, as one program.