29 #include <o2scl/test_mgr.h> 30 #include <o2scl/eos_had_skyrme.h> 31 #include <o2scl/fermion_nonrel.h> 32 #include <o2scl/nstar_cold.h> 33 #include <o2scl/format_float.h> 34 #include <o2scl/hdf_file.h> 35 #include <o2scl/hdf_io.h> 36 #include <o2scl/hdf_eos_io.h> 37 #include <o2scl/cli.h> 38 #include <o2scl/lib_settings.h> 41 using namespace o2scl;
197 file_prefix=
"skyrme_";
224 tneut2.
set_unit(
"pr_nstar",
"fm^-4");
226 for(
double nbt=0.06;nbt<0.9001;nbt+=0.02) {
229 int ret=sk.
calc_e(n,p,th);
230 double line[3]={nbt,th.
pr,0.0};
232 double line2[3]={th.
ed,th.
pr,0.0};
241 bool failed_once=
false;
247 for(
double nbt=0.005;nbt<0.1601 && failed_once==
false;nbt+=0.01) {
250 int ret=sk.
calc_e(n,p,th);
257 if (th.
ed-n.
n*n.
m<0.0) {
263 if (failed_once==
false) {
264 cout <<
"Pressure increases and energy of neutrons is positive.\n" 267 cout <<
"Pressure decreased or energy of neutrons is negative.\n" 277 double g_kf[4]={0.06,0.14,0.26,0.54};
278 double g_rat[4]={0.80,0.67,0.57,0.52};
282 if (verbose>0) cout <<
"Low density neutron matter: " << endl;
283 for(
double nbt=0.000003;nbt<0.0051;nbt*=1.2) {
286 int ret=sk.
calc_e(n,p,th);
295 cout << nbt <<
" " << epb <<
" " 296 << n.
kf <<
" " << fermi <<
" " << epb/fermi << endl;
298 double line[5]={nbt,epb,n.
kf,fermi,epb/fermi};
301 if (verbose>1) cout << endl;
312 for(
size_t i=0;i<4;i++) {
314 cout << g_kf[i] <<
" " << g_rat[i] <<
" " 315 << ln.
interp(
"kf",g_kf[i],
"rat") <<
" " 316 << ln.
interp(
"kf",g_kf[i],
"epb") << endl;
322 cout <<
"Quality: " << res.
neut_qual << endl;
345 cout <<
"{\"n0\":" << sk.
n0 <<
"," << endl;
348 cout <<
"\"msom\":" << sk.
msom <<
"," << endl;
350 cout <<
"\"S2\":" << res.
alt_S <<
"," << endl;
351 cout <<
"\"L\":" << res.
L <<
"}" << endl;
352 }
else if (verbose>0) {
353 cout <<
"Saturation: " << endl;
354 cout <<
"n_0=" << sk.
n0 <<
" fm^-3" << endl;
357 cout <<
"M^*/M=" << sk.
msom << endl;
359 cout <<
"S2=" << res.
alt_S <<
" MeV" << endl;
360 cout <<
"L=" << res.
L <<
" MeV" << endl;
368 if (fabs(sk.
n0-0.16)>0.013) {
381 cout <<
"Bad saturation." << endl;
393 cout <<
"EOS:" << endl;
396 for(
double nb=0.16;nb<=2.0001;nb+=0.001) {
402 if (n.
mu-p.
mu-me<0.0) {
408 cout <<
"Pure neutron matter after nb=" << nb_last << endl;
418 cout <<
"Neutron stars:" << endl;
425 string fn=file_prefix+res.
name+
"_eos.o2";
429 fn=file_prefix+res.
name+
"_mvsr.o2";
436 cout <<
"M_{max} = " << tr->max(
"gm") <<
" R_{max} = " 437 << tr->get(
"r",tr->lookup(
"gm",tr->max(
"gm")))
438 <<
" cent. density = " 439 << tr->get(
"nb",tr->lookup(
"gm",tr->max(
"gm"))) << endl;
441 << tr->get(
"r",tr->lookup(
"gm",1.4)) <<
" cent. density = " 442 << tr->get(
"nb",tr->lookup(
"gm",1.4)) << endl;
445 res.
m_max=tr->max(
"gm");
446 res.
r_max=tr->get(
"r",tr->lookup(
"gm",tr->max(
"gm")));
447 res.
nb_max=tr->get(
"nb",tr->lookup(
"gm",tr->max(
"gm")));
448 res.
r_14=tr->get(
"r",tr->lookup(
"gm",1.4));
449 res.
nb_14=tr->get(
"nb",tr->lookup(
"gm",1.4));
453 if (nbtop>2.0) nbtop=2.0;
454 if (nbtop<0.4) nbtop=0.7;
461 for(
double nb=0.1;nb<=nbtop;nb+=0.01) {
462 if (te->get(
"np",te->lookup(
"nb",nb))<1.0e-5) {
475 if (tr->max(
"gm")<1.6) {
484 nst.
pressure_dec<tr->get(
"nb",tr->lookup(
"gm",tr->max(
"gm")))) {
485 cout <<
"Pressure decreases in maximum mass star" << endl;
490 nst.
acausal<tr->get(
"nb",tr->lookup(
"gm",tr->max(
"gm")))) {
491 cout <<
"Acausal before central density of maximum mass star." << endl;
492 cout <<
"acausal: " << nst.
acausal << endl;
504 int json(vector<string> &sv,
bool itive_com) {
506 cout <<
"No model to summarize." << endl;
510 cout <<
"Model: " << sv[1] << endl;
511 cout <<
"-----------------------------------------------------" 512 <<
"-----------------------" << endl;
536 int summary(vector<string> &sv,
bool itive_com) {
538 cout <<
"No model to summarize." << endl;
542 cout <<
"Model: " << sv[1] << endl;
543 cout <<
"-----------------------------------------------------" 544 <<
"-----------------------" << endl;
564 compare_neut_nstar();
568 cout <<
"-----------------------------------------------------" 569 <<
"-----------------------" << endl;
575 int test(vector<string> &sv,
bool itive_com) {
579 bool of_old=output_files;
584 args.push_back(
"summary");
585 args.push_back(
"SLy4");
601 int store(vector<string> &sv,
bool itive_com) {
604 cout <<
"No filename specified in 'store'." << endl;
613 cout <<
"Wrote model '" << name <<
"' to file named '" 614 << sv[1] <<
"'." << endl;
621 int unedf(vector<string> &sv,
bool itive_com) {
630 double coups[13][3]={
631 {-706.382928878428856,-779.3730087208653,-650.796319465688839},
632 {240.049520427681131,287.722131583286796,291.664014339185485},
633 {868.871771539645351,891.47789044234969,768.32770588203357},
634 {-69.0518957481631617,-200.587774317884879,-283.187292227492492},
635 {-12.9172408208016112,-0.989915057807676746,9.78520558824309639},
636 {-45.1894169426759476,-33.6320970701835549,-23.3573612977035339},
637 {0.321955989588264435,0.2700180115027076,0.351455132555483607},
638 {-55.2606,-45.135131022237303,-46.8314091470605973},
639 {-55.6226,-145.382167908057,-113.163790795259004},
640 {-79.5308,-74.0263331764599,-64.3088624157838069},
641 {45.6302,-35.6582611147917,-38.6501946851355029},
642 {0.0,0.0,-54.4333635973721002},
643 {0.0,0.0,-65.9030310445938028}
649 for(
size_t i=0;i<3;i++) {
650 cout <<
"UNEDF" << i <<
":" << endl;
653 for(
size_t j=0;j<13;j++) {
659 sk.
alt_params_set(coups[0][i],coups[1][i],coups[2][i],coups[3][i],
660 coups[4][i],coups[5][i],coups[7][i],coups[8][i],
661 coups[9][i],coups[10][i],coups[6][i]);
669 t.
test_rel(sk.x0,0.00974375,1.0e-4,
"");
670 t.
test_rel(sk.x1,-1.77784395,1.0e-4,
"");
671 t.
test_rel(sk.x2,-1.67699035,1.0e-4,
"");
672 t.
test_rel(sk.x3,-0.38079041,1.0e-4,
"");
680 t.
test_rel(sk.x0,0.05375692,1.0e-4,
"");
681 t.
test_rel(sk.x1,-5.07723238,1.0e-4,
"");
682 t.
test_rel(sk.x2,-1.36650561,1.0e-4,
"");
683 t.
test_rel(sk.x3,-0.16249117,1.0e-4,
"");
692 coups[8][i],coups[9][i],coups[10][i]);
695 cout <<
"n0: " << sk.
n0 << endl;
704 cout <<
"alpha: " << sk.alpha << endl;
733 sk.
reference=((string)
"M. Kortelainen, T. Lesinski, ")+
734 "J. More, W. Nazarewicz, J. Sarich, N. Schunck, "+
735 "M. V. Stoitsov, and S. Wild, Phys. Rev. C 82, "+
738 sk.
reference=((string)
"M. Kortelainen, J. McDonnell, ")+
739 "W. Nazarewicz, P.-G. Reinhard, J. Sarich, N. Schunck, "+
740 "M. V. Stoitsov, and S. M. Wild, Phys. Rev. C 85, "+
743 sk.
reference=((string)
"M. Kortelainen, J. McDonnell, ")+
744 "W. Nazarewicz, E. Olsen, P.-G. Reinhard, J. Sarich, "+
745 "N. Schunck, S. M. Wild, D. Davesne, J. Erler, "+
746 "and A. Pastore, Phys. Rev. C 89, 054314 (2014)";
761 int load(vector<string> &sv,
bool itive_com) {
764 cout <<
"No model specified in 'load'." << endl;
772 cout <<
"Loaded model '" << name <<
"'." << endl;
779 int run_all(vector<string> &sv,
bool itive_com) {
782 std::string mlist[200], stemp;
785 ifstream fin(fname.c_str());
787 for(
size_t i=0;i<nmods;i++) {
792 ofstream fouu(
"table.csv");
793 fouu <<
"Name, n0, B, K, ";
794 fouu <<
"S, L, Mmax, ";
795 fouu <<
"Rmax, nB_cent_max, R1.4, ";
796 fouu <<
"nB_cent_14, acausal, pressure_dec, ";
797 fouu <<
"neut_qual, max_mass_ok, ";
798 fouu <<
"inc_pressure, pos_neut, good_sat, ";
799 fouu <<
"pure_neut, other, success" << endl;
801 ofstream fout(
"table.html");
802 fout <<
"<html><body>" << endl;
803 fout <<
"<table border=0 cellspacing=0><tr bgcolor=\"#bbbbbb\">" << endl;
804 fout <<
"<td>Name </td>" << endl;
805 fout <<
"<td>n<sub>0</sub> (fm<sup>-3</sup>)" 806 <<
" </td>" << endl;
807 fout <<
"<td>B (MeV) </td>" << endl;
808 fout <<
"<td>K (MeV) </td>" << endl;
809 fout <<
"<td>S (MeV) </td>" << endl;
810 fout <<
"<td>L (MeV) </td>" << endl;
811 fout <<
"<td>M<sub>max</sub> (M<sub>sun</sub>)" 812 <<
" </td>" << endl;
813 fout <<
"<td>R<sub>max</sub> </td>" << endl;
814 fout <<
"<td>n<sub>B,cent,max</sub> </td>" << endl;
815 fout <<
"<td>R<sub>1.4</sub> </td>" << endl;
816 fout <<
"<td>n<sub>B,cent,1.4</sub> </td>" << endl;
817 fout <<
"<td>acausal </td>" << endl;
818 fout <<
"<td>pressure_dec </td>" << endl;
819 fout <<
"<td>neut_qual </td>" << endl;
820 fout <<
"<td>max_mass_ok </td>" << endl;
821 fout <<
"<td>inc_pressure </td>" << endl;
822 fout <<
"<td>pos_neut </td>" << endl;
823 fout <<
"<td>good_sat </td>" << endl;
824 fout <<
"<td>pure_neut </td>" << endl;
825 fout <<
"<td>other </td>" << endl;
826 fout <<
"<td>success </td>" << endl;
827 fout <<
"</tr>" << endl;
832 static const size_t N=66;
833 int list[N]={0,100,101,102,103,109,110,113,114,115,121,122,123,124,
834 125,126,127,128,129,130,131,132,133,134,135,145,147,17,1,
835 25,26,27,28,29,3,40,41,42,43,44,4,51,53,54,5,
836 62,63,64,64,66,67,68,69,6,71,73,75,76,77,7,81,82,84,
839 for(
size_t j=0;j<N;j++) {
845 cout <<
"Running model: " << i << endl;
848 tmp.push_back(mlist[i]);
866 ofstream fx(
"jim.dat",ios::app);
867 fx.setf(ios::scientific);
868 fx.setf(ios::showpos);
870 fx << mlist[i] <<
" ";
871 fx << res.
S <<
" " << res.
alt_S <<
" " 874 fx << sk.t0 <<
" " << sk.t1 <<
" " << sk.t2 <<
" " << sk.t3 <<
" ";
875 fx << sk.x0 <<
" " << sk.x1 <<
" " << sk.x2 <<
" " << sk.x3 <<
" ";
896 cout << sk.t0 <<
" " << sk.t1 <<
" " << sk.t2 <<
" " << sk.t3 << endl;
897 cout << sk.x0 <<
" " << sk.x1 <<
" " << sk.x2 <<
" " << sk.x3 << endl;
900 fout <<
"<tr bgcolor=\"#dddddd\">";
906 fout <<
"<td><a href=\"http://o2scl.svn.sourceforge.net/viewvc/" 907 <<
"o2scl/trunk/data/o2scl/skdata/" << res.
name 908 <<
"\">" << res.
name <<
"</a></td>";
909 fout <<
"<td>" << fd.
convert(res.
n0) <<
"</td>";
910 fout <<
"<td>" << fd.
convert(res.
B) <<
"</td>";
911 fout <<
"<td>" << fd.
convert(res.
K) <<
"</td>";
912 fout <<
"<td>" << fd.
convert(res.
S) <<
"</td>";
913 fout <<
"<td>" << fd.
convert(res.
L) <<
"</td>";
923 else fout <<
"<td>False</td>";
925 else fout <<
"<td>False</td>";
926 if (res.
pos_neut) fout <<
"<td>True</td>";
927 else fout <<
"<td>False</td>";
928 if (res.
good_sat) fout <<
"<td>True</td>";
929 else fout <<
"<td>False</td>";
930 if (res.
pure_neut) fout <<
"<td>True</td>";
931 else fout <<
"<td>False</td>";
932 fout <<
"<td>" << res.
other <<
"</td>";
933 if (res.
success) fout <<
"<td>True</td>";
934 else fout <<
"<td>False</td>";
935 fout <<
"</tr>" << endl;
938 fouu << res.
name <<
", ";
939 fouu << res.
n0 <<
", ";
940 fouu << res.
B <<
", ";
941 fouu << res.
K <<
", ";
942 fouu << res.
S <<
", ";
943 fouu << res.
L <<
", ";
944 fouu << res.
m_max <<
", ";
945 fouu << res.
r_max <<
", ";
946 fouu << res.
nb_max <<
", ";
947 fouu << res.
r_14 <<
", ";
948 fouu << res.
nb_14 <<
", ";
953 else fouu <<
"False, ";
955 else fouu <<
"False, ";
957 else fouu <<
"False, ";
959 else fouu <<
"False, ";
961 else fouu <<
"False, ";
962 fouu << res.
other <<
", ";
963 if (res.
success) fouu <<
"True ";
964 else fouu <<
"False ";
970 fout <<
"</table></body></html>" << endl;
982 int main(
int argv,
char *argc[]) {
984 cout.setf(ios::scientific);
992 cl.
prompt=
"ex_eos_had_skyrme> ";
994 int comm_option_cl_param=1;
995 int comm_option_both=2;
997 static const int narr=7;
999 {0,
"run-all",
"Run all internally stored Skyrme models.",0,0,
"",
"",
1002 {
's',
"store",
"Store current model.",1,1,
"",
"",
1005 {
'l',
"load",
"Load internally stored model.",1,1,
"",
"",
1008 {0,
"unedf",
"Desc.",0,0,
"",
"",
1011 {
't',
"test",
"Test ex_eos_had_skyrme.",0,0,
"",
"",
1014 {
'u',
"summary",
"Summarize the properties of a Skyrme model.",
1018 {
'j',
"json",
"Summarize the properties of a Skyrme model.",
1032 p_verbose.
help=
"Verbose (default 1).";
1033 cl.
par_list.insert(make_pair(
"verbose",&p_verbose));
1037 p_output_files.
help=
"Output files (default 0).";
1038 cl.
par_list.insert(make_pair(
"output-files",&p_output_files));
1042 p_file_prefix.
help=
"File prefix (default \"\").";
1043 cl.
par_list.insert(make_pair(
"file-prefix",&p_file_prefix));
1047 p_name.
help=
"Model name (default \"\").";
1048 cl.
par_list.insert(make_pair(
"name",&p_name));
1052 p_reference.
help=
"Model reference (default \"\").";
1053 cl.
par_list.insert(make_pair(
"reference",&p_reference));
1057 p_t0hc.
help=
"Model parameter t0 in MeV.";
1058 cl.
par_list.insert(make_pair(
"t0hc",&p_t0hc));
1062 p_t1hc.
help=
"Model parameter t1 in MeV.";
1063 cl.
par_list.insert(make_pair(
"t1hc",&p_t1hc));
1067 p_t2hc.
help=
"Model parameter t2 in MeV.";
1068 cl.
par_list.insert(make_pair(
"t2hc",&p_t2hc));
1072 p_t3hc.
help=
"Model parameter t3 in MeV.";
1073 cl.
par_list.insert(make_pair(
"t3hc",&p_t3hc));
1077 p_x0.
help=
"Model parameter x0.";
1078 cl.
par_list.insert(make_pair(
"x0",&p_x0));
1082 p_x1.
help=
"Model parameter x1.";
1083 cl.
par_list.insert(make_pair(
"x1",&p_x1));
1087 p_x2.
help=
"Model parameter x2.";
1088 cl.
par_list.insert(make_pair(
"x2",&p_x2));
1092 p_x3.
help=
"Model parameter x3.";
1093 cl.
par_list.insert(make_pair(
"x3",&p_x3));
1097 p_a.
help=
"Model parameter a.";
1098 cl.
par_list.insert(make_pair(
"a",&p_a));
1102 p_b.
help=
"Model parameter b.";
1103 cl.
par_list.insert(make_pair(
"b",&p_b));
1107 p_W0hc.
help=
"Model parameter W0hc.";
1108 cl.
par_list.insert(make_pair(
"W0hc",&p_W0hc));
1111 p_alpha.
d=&se.
sk.alpha;
1112 p_alpha.
help=
"Model parameter alpha.";
1113 cl.
par_list.insert(make_pair(
"alpha",&p_alpha));
1117 p_b4.
help=
"Model parameter b4.";
1118 cl.
par_list.insert(make_pair(
"b4",&p_b4));
1122 p_b4p.
help=
"Model parameter b4p.";
1123 cl.
par_list.insert(make_pair(
"b4p",&p_b4p));
bool max_mass_ok
True if the maximum mass is large enough.
eos_tov_interp def_eos_tov
Default EOS object for the TOV solver.
string name
Name of model.
bool good_sat
True if saturation is good.
std::string reference
Bibliographic reference.
double comp
Compression modulus in .
std::shared_ptr< table_units<> > get_tov_results()
Get the results from the TOV (after having called calc_nstar())
virtual int calc_e(fermion &ne, fermion &pr, thermo <)
Equation of state as a function of density.
Naive static cold neutron star.
ex_skyrme_data res
Results.
double neut_qual
Quality of neutron matter.
virtual double f_effm_neut(double nb, double delta=0.0)
Neutron (reduced) effective mass.
int check_pressure()
Check if the pressure of neutron matter is positive.
void compare_neut_nstar()
Generate a table comparing neutron matter and neutron star matter.
int verbose
Verbosity parameter (default 0)
Class to analyze Skyrme EOSs and output the results [Example class].
virtual double convert(std::string from, std::string to, double val)
int verbose
Verbose parameter.
int verbose
control for output (default 1)
lib_settings_class o2scl_settings
const double mass_neutron
std::string get_data_dir()
int saturation_prop()
Test saturation density.
double W0
Spin-orbit splitting (in )
virtual double f_effm_scalar(double nb, double delta=0.0)
Scalar effective mass.
format_float fd
Formatting output.
void hdf_output(hdf_file &hf, o2scl::table3d &h, std::string name)
bool test_rel(data_t result, data_t expected, data_t rel_error, std::string description)
double esym
Symmetry energy in .
virtual double fesym_diff(double nb)
Calculate symmetry energy of matter as energy of neutron matter minus the energy of nuclear matter in...
int run_auto(int argc, char *argv[], int debug=0)
int json(vector< string > &sv, bool itive_com)
Summarize the results of one model.
double n0
Saturation density in .
double L
Symmetry energy slope parameter.
double nb_14
Central baryon density of a 1.4 solar mass neutron star.
double r_max
Radius of maximum mass star.
virtual int saturation()
Calculates some of the EOS properties at the saturation density.
bool json_mode
If true, output JSON.
double pressure_dec
True if the pressure is flat.
double t2hc
Parameter t2 in MeV.
double W0hc
Parameter W0 in MeV.
double pressure_dec
The smallest baryon density where the pressure starts to decrease.
void alt_params_saturation(double n0, double EoA, double K, double Ms_star, double a, double L, double Mv_star, double CrDr0, double CrDr1, double CrnJ0, double CrnJ1)
Use the specified saturation properties and couplings and the function alt_params_set() to set the Sk...
void set_unit(std::string scol, std::string unit)
int test(vector< string > &sv, bool itive_com)
Test the code.
void skyrme_load(o2scl::eos_had_skyrme &sk, std::string model, bool external=false)
Input a o2scl::eos_had_skyrme object from an HDF file.
double acausal
True if the EOS is acausal.
double interp(std::string sx, double x0, std::string sy)
void open_or_create(std::string fname)
int store(vector< string > &sv, bool itive_com)
Write to a file.
int load(vector< string > &sv, bool itive_com)
Load internally stored model.
double r_14
Radius of a 1.4 solar mass star.
double alt_S
Alternate description of symmetry energy.
void line_of_names(std::string newheads)
Additional functions to read and write EOS data to HDF5 files.
virtual double f_effm_vector(double nb, double delta=1.0)
Vector effective mass.
table_units tneut
Neutron matter.
eos_had_skyrme sk
Base EOS model.
convert_units & get_convert_units()
bool output_files
If true, create output files for individual EOSs.
std::map< std::string, parameter *, std::less< std::string > > par_list
void line_of_data(size_t nv, const vec2_t &v)
int unedf(vector< string > &sv, bool itive_com)
Create data files for the UNEDF forces.
virtual void add_constant(std::string name, double val)
int set_comm_option_vec(size_t list_size, vec_t &option_list)
Skyrme hadronic equation of state.
double m_max
Maximum mass.
virtual void init(double mass, double dof)
double P_neut_n0
Pressure of neutron matter at saturation.
fermion def_proton
The defaut proton.
tov_solve def_tov
The default TOV equation solver.
double t0hc
Parameter t0 in MeV.
double nb_max
Central baryon density of maximum mass star.
double nb_end
The final baryon density (default 2.0)
void new_column(std::string head)
double b4
Isoscalar spin-orbit term (in )
Output data for a Skyrme EOS [Example class].
void set_eos(eos_had_base &he)
Set the equation of state.
virtual double f_effm_prot(double nb, double delta=0.0)
Proton (reduced) effective mass.
virtual double fesym_slope(double nb, double delta=0.0)
The symmetry energy slope parameter in .
double t3hc
Parameter t3 in MeV.
table_units tneut2
Neutron matter.
bool inc_pressure
True if the pressure is nondecreasing.
double n0
Saturation density.
double t1hc
Parameter t1 in MeV.
void skyrme_write(hdf_file &hf, o2scl::eos_had_skyrme &sk, std::string name)
Write a o2scl::eos_had_skyrme object to an HDF file.
int summary(vector< string > &sv, bool itive_com)
Summarize the results of one model.
std::shared_ptr< table_units<> > get_eos_results()
Get the eos table (after having called calc_eos())
double acausal
The density at which the EOS becomes acausal.
void set_output_level(int l)
string file_prefix
Prefix for output files.
int verbose
Control for output (default 1)
double b4phc
Parameter b4p.
double msom
Effective mass (neutron)
int calc_nstar()
Calculate the M vs. R curve.
const double mass_electron
nstar_cold nst
To compute neutron stars.
int run_all(vector< string > &sv, bool itive_com)
Run all the models.
int low_neutron_mat()
Check low-density neutron matter.
bool pos_neut
True if neutron matter is always positive.
bool include_muons
If true, include muons (default false)
std::string szttos(size_t x)
int calc_eos(double np_0=0.0)
Calculate the given equation of state.
double eoa
Binding energy (without the rest mass) in .
double E_neut_n0
Energy of neutron matter at saturation.
double b4p
Isovector spin-orbit term (in )
int mvsr()
Compute the M vs. R curve.
fermion def_neutron
The defaut neutron.
void alt_params_set(double Crr00, double Crr10, double Crr0D, double Crr1D, double Crt0, double Crt1, double CrDr0, double CrDr1, double CrnJ0, double CrnJ1, double alpha2)
Set using alternate parameterization.