Go to the documentation of this file.
32 #include <o2scl/interp.h>
33 #include <o2scl/constants.h>
34 #include <o2scl/part.h>
35 #include <o2scl/eos_had_rmf.h>
36 #include <o2scl/table_units.h>
37 #include <o2scl/ode_rkck_gsl.h>
38 #include <o2scl/ode_funct.h>
40 #ifndef DOXYGEN_NO_O2NS
226 #ifndef DOXYGEN_INTERNAL
286 int run_nucleus(
int nucleus_Z,
int nucleus_N,
int unocc_Z,
int unocc_N);
299 void init_run(
int nucleus_Z,
int nucleus_N,
int unocc_Z,
int unocc_N);
302 int iterate(
int nucleus_Z,
int nucleus_N,
int unocc_Z,
int unocc_N,
303 int &iconverged,
int &dirac_converged,
int &meson_converged);
306 int post_converge(
int nucleus_Z,
int nucleus_N,
int unocc_Z,
int unocc_N);
503 #ifndef DOXYGEN_INTERNAL
566 double sigma_rhs(
double sig,
double ome,
double rho);
569 double omega_rhs(
double sig,
double ome,
double rho);
572 double rho_rhs(
double sig,
double ome,
double rho);
697 void pfold(
double x,
double &xrhof);
700 double xpform(
double x,
double xp,
double a);
703 void gauss(
double xmin,
double xmax,
double x,
double &xi);
706 double xrhop(
double x1);
724 int dirac(
int ilevel);
727 void dirac_step(
double &x,
double h,
double eigen,
748 double dirac_rk4(
double x,
double g1,
double f1,
double &funt,
749 double eigen,
double kappa,
ubvector &varr);
766 double x12[6], w12[6];
767 double x100[50], w100[50];
774 #ifndef DOXYGEN_NO_O2NS
void set_step(ode_step< ubvector, ubvector, ubvector, ode_funct > &step)
Set the stepper for the Dirac differential equation.
double stens
Surface tension (in )
void pfold(double x, double &xrhof)
Fold in proton form factor.
std::shared_ptr< table_units<> > get_chden()
The final charge densities.
double A0
Coulomb field at r=0.
double rnrms
Neutron RMS radius (in fm)
ubvector energy
Energy integrand.
thermo hb
thermo object for the EOS
void field(double x, double &s, double &v, ubvector &varr)
Compute the fields for the Dirac equations.
ode_rkck_gsl< ubvector, ubvector, ubvector, ode_funct > def_step
The default stepper.
void meson_iter(double ic)
Calculate meson and photon fields.
ubmatrix field0
Values of the fields from the last iteration.
double match_point
Matching radius (in fm)
Relativistic mean field theory EOS.
bool err_nonconv
If true, call the error handler if the routine does not converge or reach the desired tolerance (defa...
ubvector chden1
Charge density.
int dirac(int ilevel)
Solve the Dirac equations.
double sigma0
Scalar field at r=0.
int run_nucleus(int nucleus_Z, int nucleus_N, int unocc_Z, int unocc_N)
Computes the structure of a nucleus with the specified number of levels.
double rho_rhs(double sig, double ome, double rho)
Isubvector density RHS.
A convenient struct for the solution of the Dirac equations.
std::string state
Angular momentum-spin state .
ubvector chdenc
Charge density.
int nodes
Number of nodes in the wave function.
double rnrp
Skin thickness (in fm)
double energy
Energy eigenvalue.
int meson_solve()
Solve for the meson profiles.
std::shared_ptr< table_units<> > chden_table
The final charge densities.
int verbose
Control output (default 1)
double fermi_radius
The radius for which the fields are half their central value.
double a_proton
The parameter for the charge density of the proton (default is about 4.27073)
ubmatrix * fields
The meson fields.
void center_mass_corr(double atot)
Compute the center of mass correction.
int energy_radii(double xpro, double xnu, double e)
Calculate the energy profile.
std::vector< shell > unocc_levels
The unoccupied levels (protons first, then neutrons)
std::vector< shell > levels
The levels (protons first, then neutrons)
double dirac_tol2
Second tolerance for Dirac equations (default ).
ubmatrix xrho
The densities times radius squared.
Spherical closed-shell nuclei with a relativistic mean-field model in the Hartree approximation.
ubmatrix fields
The values of the fields.
static const int grid_size
The grid size.
void gauss(double xmin, double xmax, double x, double &xi)
Perform integrations for form factor.
double mnuc
The nucleon mass (automatically set in init_fun())
eos_had_rmf * rmf
The base EOS.
ubvector ode_y
ODE functions.
static const int n_internal_levels
The total number of shells stored internally.
bool generic_ode
If true, use the generic ODE solver instead of the internal 4th order Runge-Kutta.
void dirac_step(double &x, double h, double eigen, double kappa, ubvector &varr)
Take a step in the Dirac equations.
double kappa
Quantum number .
void init_meson_density()
Initialize the meson and photon fields, the densities, etc.
std::function< int(double, size_t, const boost::numeric::ublas::vector< double > &, boost::numeric::ublas::vector< double > &)> ode_funct
double sigma_rhs(double sig, double ome, double rho)
Scalar density RHS.
void set_verbose(int v)
Set output level.
initial_guess ig
Parameters for initial guess.
void init_run(int nucleus_Z, int nucleus_N, int unocc_Z, int unocc_N)
Initialize a run.
int set_eos(eos_had_rmf &r)
Set the base EOS to be used.
ubvector ode_yerr
ODE errors.
std::shared_ptr< table_units<> > profiles
The radial profiles.
ubvector xrhosp
The proton scalar density times radius squared.
A shell of nucleons for nucleus_rmf.
double step_size
The grid step size (default 0.04)
void meson_init()
Calculate meson and photon Green's functions gin and gout.
ubmatrix gout
The Green's functions outside.
shell proton_shells[n_internal_levels]
The starting proton levels.
interp_vec< ubvector > * gi
Interpolation object.
double rprms
Proton RMS radius (in fm)
double dirac_tol
Tolerance for Dirac equations (default ).
double omega_rhs(double sig, double ome, double rho)
Vector density RHS.
bool init_called
True if init() has been called.
std::vector< shell > * levp
A pointer to the current vector of levels (either levels or unocc_levels)
eos_had_rmf def_rmf
The default equation of state (default NL3)
double r_charge
Charge radius (in fm)
shell neutron_shells[n_internal_levels]
The starting neutron levels.
ubvector ode_dydx
ODE derivatives.
double xrhop(double x1)
Desc.
double rho0
Isubvector field at r=0.
double isospin
Isospin ( or .
ode_step< ubvector, ubvector, ubvector, ode_funct > * ostep
The ODE stepper.
int odefun(double x, size_t nv, const ubvector &y, ubvector &dydx, odparms &op)
The form of the Dirac equations for the ODE stepper.
double fermi_width
The "width" of the Fermi-Dirac function.
double meson_tol
Tolerance for meson field equations (default ).
int meson_itmax
Maximum number of iterations for solving the meson field equations (default 10000)
double r_charge_cm
Charge radius corrected by the center of mass (in fm)
int dirac_itmax
Maximum number of iterations for solving the Dirac equations (default 100)
ubvector arho
Baryon density.
double xpform(double x, double xp, double a)
Function representing proton form factor.
int itmax
Maximum number of total iterations (default 70)
double dirac_rk4(double x, double g1, double f1, double &funt, double eigen, double kappa, ubvector &varr)
Integrate the Dirac equations using a simple inline 4th order Runge-Kutta.
int surf_index
The grid index corresponding to the nuclear surface (computed by init_run())
ubvector xrhor
The isubvector field RHS.
std::shared_ptr< table_units<> > get_profiles()
Get the radial profiles.
int nlevels
The number of levels.
double omega0
Vector field at r=0.
ubvector xrhov
The vector field RHS.
ubvector xrhos
The scalar field RHS.
double etot
Total energy (in MeV)
int load_nl3(eos_had_rmf &r)
Load the default model NL3 into the given eos_had_rmf object.
int post_converge(int nucleus_Z, int nucleus_N, int unocc_Z, int unocc_N)
After convergence, make CM corrections, etc.
int nuolevels
The number of unoccupied levels (equal to unocc_Z + unocc_N)
ubmatrix gin
The Green's functions inside.
int iterate(int nucleus_Z, int nucleus_N, int unocc_Z, int unocc_N, int &iconverged, int &dirac_converged, int &meson_converged)
Perform an iteration.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).