00001 /* 00002 ------------------------------------------------------------------- 00003 00004 Copyright (C) 2006, 2007, 2008, 2009, Andrew W. Steiner 00005 00006 This file is part of O2scl. 00007 00008 O2scl is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; either version 3 of the License, or 00011 (at your option) any later version. 00012 00013 O2scl is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with O2scl. If not, see <http://www.gnu.org/licenses/>. 00020 00021 ------------------------------------------------------------------- 00022 */ 00023 #ifndef O2SCL_SCHEMATIC_EOS_H 00024 #define O2SCL_SCHEMATIC_EOS_H 00025 00026 #include <iostream> 00027 #include <cmath> 00028 #include <o2scl/hadronic_eos.h> 00029 00030 #ifndef DOXYGENP 00031 namespace o2scl { 00032 #endif 00033 00034 /** 00035 \brief Schematic hadronic equation of state 00036 00037 Equation of state defined by the energy density: 00038 \f[ 00039 \epsilon = n \left\{ M+eoa+\frac{comp}{18}(n/n0-1)^2+ 00040 \frac{kprime}{162}(n/n0-1)^3+ 00041 \frac{kpp}{1944}(n/n0-1)^4+(1- 2 x)^2 00042 \left[a \left(\frac{n}{n0}\right)^{2/3}+ 00043 b \left(\frac{n}{n0}\right)^{\gamma} \right] \right\} 00044 \f] 00045 00046 Symmetry energy at nuclear matter density is a+b. 00047 00048 Note that it doesn't really matter what kind of particle 00049 object is used, since the calc_e() function doesn't use 00050 any of the particle thermodynamics functions. 00051 */ 00052 class schematic_eos : public hadronic_eos_eden { 00053 00054 public: 00055 00056 /** 00057 \brief The kinetic energy symmetry coefficient in inverse fm 00058 (default 17/hc) 00059 00060 The default value corresponds to an effective mass of about 00061 0.7. 00062 */ 00063 double a; 00064 00065 /// The potential energy symmetry coefficient in inverse fm (default 13/hc) 00066 double b; 00067 00068 /// The coefficient of a density to the fourth term (default 0) 00069 double kpp; 00070 00071 /// The exponent of the high-density symmetry energy (default 1.0) 00072 double gamma; 00073 00074 schematic_eos(); 00075 00076 virtual ~schematic_eos() {}; 00077 00078 /** 00079 \brief Equation of state as a function of density 00080 */ 00081 virtual int calc_e(fermion &ln, fermion &lp, thermo <h); 00082 00083 /** \brief Set kprime so that the energy per baryon of zero-density 00084 matter is zero 00085 */ 00086 virtual int set_kprime_zeroden() { 00087 kprime=162.0*eoa+9.0*comp; 00088 return 0; 00089 } 00090 00091 /** \brief Set kpp so that the energy per baryon of zero-density 00092 matter is zero 00093 */ 00094 virtual int set_kpp_zeroden() { 00095 kpp=12.0*kprime-108.0*comp-1944.0*eoa; 00096 return 0; 00097 } 00098 00099 /** \brief Fix the kinetic energy symmetry coefficient from 00100 the nucleon effective mass and the saturation density 00101 00102 This assumes the nucleons are non-relativistic and that the 00103 neutrons and protons have equal mass. The relativistic 00104 corrections are around 1 part in \f$ 10^{6} \f$. 00105 00106 \todo This was computed in schematic_sym.nb, which might be 00107 added to the documentation? 00108 */ 00109 virtual int set_a_from_mstar(double u_msom, double mnuc) { 00110 a=cbrt(n0*n0*o2scl_const::pi2*o2scl_const::pi2/4.0/3.0)/ 00111 (2.0*u_msom*mnuc); 00112 return 0; 00113 } 00114 00115 /** 00116 \brief Return the energy per baryon of matter at zero density 00117 00118 This is inaccessible from calc_e() so is available separately 00119 here. Using set_kprime_zeroden() or set_kpp_zeroden() will 00120 fix kprime or kpp (respectively) to ensure that this is zero. 00121 00122 The result provided here does not include the nucleon mass and 00123 is given in \f$ fm^{-1} \f$. 00124 */ 00125 virtual double eoa_zeroden() { 00126 return eoa+comp/18.0-kprime/162.0+kpp/1944.0; 00127 } 00128 00129 /// Return string denoting type ("schematic_eos") 00130 virtual const char *type() { return "schematic_eos"; } 00131 00132 }; 00133 00134 template<> int io_tlate<schematic_eos>::input 00135 (cinput *co, in_file_format *ins, schematic_eos *sc); 00136 template<> int io_tlate<schematic_eos>::output 00137 (coutput *co, out_file_format *outs, schematic_eos *sc); 00138 template<> const char *io_tlate<schematic_eos>::type(); 00139 00140 typedef io_tlate<schematic_eos> schematic_eos_io_type; 00141 00142 #ifndef DOXYGENP 00143 } 00144 #endif 00145 00146 #endif
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page