00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef O2SCL_SYM4_EOS_H
00025 #define O2SCL_SYM4_EOS_H
00026
00027 #include <iostream>
00028 #include <o2scl/ovector_tlate.h>
00029 #include <o2scl/apr_eos.h>
00030 #include <o2scl/rmf_eos.h>
00031 #include <o2scl/skyrme_eos.h>
00032 #include <o2scl/gen_potential_eos.h>
00033
00034 #ifndef DOXYGENP
00035 namespace o2scl {
00036 #endif
00037
00038
00039
00040 class sym4_eos_base {
00041
00042 #ifndef DOXYGEN_INTERNAL
00043
00044 protected:
00045
00046
00047 fermion e;
00048
00049 #endif
00050
00051 public:
00052
00053 sym4_eos_base();
00054
00055 virtual ~sym4_eos_base() {}
00056
00057
00058
00059 virtual int calc_e_alpha(fermion &ne, fermion &pr, thermo <h,
00060 double &alphak, double &alphap, double &alphat,
00061 double &diff_kin, double &diff_pot,
00062 double &ed_kin_nuc, double &ed_pot_nuc);
00063
00064
00065
00066 virtual double calc_muhat(fermion &ne, fermion &pr);
00067
00068
00069
00070
00071 virtual int calc_e_sep(fermion &ne, fermion &pr, double &ed_kin,
00072 double &ed_pot, double &mu_n_kin, double &mu_p_kin,
00073 double &mu_n_pot, double &mu_p_pot);
00074
00075 };
00076
00077
00078
00079
00080 class rmf4_eos : public rmf_eos, public sym4_eos_base {
00081
00082 public:
00083
00084 rmf4_eos();
00085
00086
00087
00088 virtual int calc_e_sep(fermion &ne, fermion &pr, double &ed_kin,
00089 double &ed_pot, double &mu_n_kin, double &mu_p_kin,
00090 double &mu_n_pot, double &mu_p_pot);
00091
00092 };
00093
00094
00095
00096
00097 class apr4_eos : public apr_eos, public sym4_eos_base {
00098
00099 public:
00100
00101
00102
00103 virtual int calc_e_sep(fermion &ne, fermion &pr, double &ed_kin,
00104 double &ed_pot, double &mu_n_kin, double &mu_p_kin,
00105 double &mu_n_pot, double &mu_p_pot);
00106 };
00107
00108
00109
00110
00111 class skyrme4_eos : public skyrme_eos, public sym4_eos_base {
00112
00113 public:
00114
00115
00116
00117 virtual int calc_e_sep(fermion &ne, fermion &pr, double &ed_kin,
00118 double &ed_pot, double &mu_n_kin, double &mu_p_kin,
00119 double &mu_n_pot, double &mu_p_pot);
00120 };
00121
00122
00123
00124
00125 class mdi4_eos : public gen_potential_eos, public sym4_eos_base {
00126
00127 #ifndef DOXYGEN_INTERNAL
00128
00129 protected:
00130
00131
00132 double energy_kin(double var);
00133
00134
00135 double energy_pot(double var);
00136
00137 #endif
00138
00139 public:
00140
00141
00142
00143 virtual int calc_e_sep(fermion &ne, fermion &pr, double &ed_kin,
00144 double &ed_pot, double &mu_n_kin, double &mu_p_kin,
00145 double &mu_n_pot, double &mu_p_pot);
00146
00147
00148 virtual int test_separation(fermion &ne, fermion &pr, test_mgr &t);
00149
00150 };
00151
00152
00153
00154
00155 class sym4_eos : public hadronic_eos {
00156
00157 #ifndef DOXYGEN_INTERNAL
00158
00159 protected:
00160
00161
00162 sym4_eos_base *sp;
00163
00164 #endif
00165
00166 public:
00167
00168
00169 double alpha;
00170
00171
00172 int set_base_eos(sym4_eos_base &seb);
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182 virtual int test_eos(fermion &ne, fermion &pr, thermo <h);
00183
00184
00185
00186
00187 virtual int calc_e(fermion &ne, fermion &pr, thermo <h);
00188
00189 };
00190
00191 #ifndef DOXYGENP
00192 }
00193 #endif
00194
00195 #endif