#include <fstream>
#include <o2scl/test_mgr.h>
#include <o2scl/lib_settings.h>
#include <o2scl/table_units.h>
#include <o2scl/eos_crust.h>
#include <o2scl/eos_tov.h>
#include <o2scl/hdf_io.h>
int main(void) {
cout.setf(ios::scientific);
int Z, A;
double ed_bps;
double pr_bps;
bps_load(bps);
cout << "Default mass formula, using calc_pressure()." << endl;
cout << "eden pres barn A Z ";
cout << "ed_err pr_err" << endl;
for(
double pr=8.9e-4/hc_mev_fm;pr>=2.12e-10/
hc_mev_fm;pr/=2.0) {
<< " " << barn << " ";
cout.width(3);
cout << A << " ";
cout.width(3);
cout << Z << " ";
ed_bps=cu.
convert(
"g/cm^3",
"MeV/fm^3",
bps.
interp(
"nb",barn*1.0e39,
"rho"));
pr_bps=cu.
convert(
"dyne/cm^2",
"MeV/fm^3",
bps.
interp(
"nb",barn*1.0e39,
"P"));
cout.setf(ios::showpos);
<< (pr_bps-th.
pr*hc_mev_fm)/pr_bps << endl;
cout.unsetf(ios::showpos);
t.
test_rel((ed_bps-th.
ed*hc_mev_fm)/ed_bps,0.0,2.0e-3,
"Energy");
t.
test_rel((pr_bps-th.
pr*hc_mev_fm)/pr_bps,0.0,1.5e-1,
"Pressure");
}
cout << endl;
cout << "Default mass formula, using calc_density()." << endl;
cout << "eden pres barn A Z ";
cout << "ed_err pr_err" << endl;
for(barn=4.19e-4;barn>=6.39e-9;barn/=2.0) {
ed_bps=cu.
convert(
"g/cm^3",
"MeV/fm^3",
bps.
interp(
"nb",barn*1.0e39,
"rho"));
pr_bps=cu.
convert(
"dyne/cm^2",
"MeV/fm^3",
bps.
interp(
"nb",barn*1.0e39,
"P"));
<< " " << barn << " ";
cout.width(3);
cout << A << " ";
cout.width(3);
cout << Z << " ";
cout.setf(ios::showpos);
<< (pr_bps-th.
pr*hc_mev_fm)/pr_bps << endl;
cout.unsetf(ios::showpos);
t.
test_rel((ed_bps-th.
ed*hc_mev_fm)/ed_bps,0.0,2.0e-3,
"Energy");
t.
test_rel((pr_bps-th.
pr*hc_mev_fm)/pr_bps,0.0,1.5e-1,
"Pressure");
}
cout << endl;
string name;
hf.
open(
"ex_eos_had_apr_nstar.o2");
size_t ngrid=200;
crust_comp.
line_of_names(
"pr ed_NVBPS ed_SHO ed_PNM_L40 ed_PNM_L100");
crust_comp.
line_of_names(
"ed_J35_L40 ed_J35_L100 ed_SLy4 ed_APR ed_Rs");
crust_comp.
line_of_names(
"nb_NVBPS nb_SHO nb_PNM_L40 nb_PNM_L100");
crust_comp.
line_of_names(
"nb_J35_L40 nb_J35_L100 nb_SLy4 nb_APR nb_Rs");
crust_comp.
set_unit(
"ed_NVBPS",
"1/fm^4");
crust_comp.
set_unit(
"ed_PNM_L40",
"1/fm^4");
crust_comp.
set_unit(
"ed_PNM_L100",
"1/fm^4");
crust_comp.
set_unit(
"ed_J35_L40",
"1/fm^4");
crust_comp.
set_unit(
"ed_J35_L100",
"1/fm^4");
crust_comp.
set_unit(
"ed_SLy4",
"1/fm^4");
crust_comp.
set_unit(
"nb_NVBPS",
"1/fm^3");
crust_comp.
set_unit(
"nb_PNM_L40",
"1/fm^3");
crust_comp.
set_unit(
"nb_PNM_L100",
"1/fm^3");
crust_comp.
set_unit(
"nb_J35_L40",
"1/fm^3");
crust_comp.
set_unit(
"nb_J35_L100",
"1/fm^3");
crust_comp.
set_unit(
"nb_SLy4",
"1/fm^3");
double ed, nb;
cout << "NVBPS crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_NVBPS",i,ed);
crust_comp.
set(
"nb_NVBPS",i,nb);
if (i==199) {
cout << pr_grid[i] << " " << ed << " " << nb << endl;
}
}
cout << "SHO crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_SHO",i,ed);
crust_comp.
set(
"nb_SHO",i,nb);
if (i==199) {
cout << pr_grid[i] << " " << ed << " " << nb << endl;
}
}
cout << "NGL13, L=40 crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_PNM_L40",i,ed);
crust_comp.
set(
"nb_PNM_L40",i,nb);
}
cout << "NGL13, L=100 crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_PNM_L100",i,ed);
crust_comp.
set(
"nb_PNM_L100",i,nb);
}
cout << "NGL13, L=40 crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_J35_L40",i,ed);
crust_comp.
set(
"nb_J35_L40",i,nb);
}
cout << "NGL13, L=100 crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_J35_L100",i,ed);
crust_comp.
set(
"nb_J35_L100",i,nb);
}
cout << "S12, SLy4 crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_SLy4",i,ed);
crust_comp.
set(
"nb_SLy4",i,nb);
}
cout << "S12, APR crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_APR",i,ed);
crust_comp.
set(
"nb_APR",i,nb);
}
cout << "S12, Rs crust." << endl;
for(size_t i=0;i<200;i++) {
crust_comp.
set(
"pr",i,pr_grid[i]);
ed=cu.
convert(
"Msun/km^3",
"1/fm^4",ed);
crust_comp.
set(
"ed_Rs",i,ed);
crust_comp.
set(
"nb_Rs",i,nb);
}
cout << endl;
return 0;
}