gen_potential_eos.h

00001 /*
00002   -------------------------------------------------------------------
00003   
00004   Copyright (C) 2006, 2007, 2008, 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_GEN_POTENTIAL_EOS_H
00024 #define O2SCL_GEN_POTENTIAL_EOS_H
00025 
00026 #include <iostream>
00027 #include <string>
00028 #include <cmath>
00029 #include <o2scl/constants.h>
00030 #include <o2scl/mroot.h>
00031 #include <o2scl/hadronic_eos.h>
00032 #include <o2scl/part.h>
00033 #include <o2scl/collection.h>
00034 #include <o2scl/gsl_deriv.h>
00035 #include <o2scl/nonrel_fermion.h>
00036 #include <cstdlib>
00037 
00038 #ifndef DOXYGENP
00039 namespace o2scl {
00040 #endif
00041 
00042   /** 
00043       \brief Generalized potential model equation of state
00044       
00045       The single particle energy is defined by the functional derivative
00046       of the energy density with respect to the distribution function
00047       \f[
00048       e_{\tau} = \frac{\delta \varepsilon}{\delta f_{\tau}}
00049       \f]
00050 
00051       The effective mass is defined by
00052       \f[
00053       \frac{m^{*}}{m} = \left( \frac{m}{k}
00054       \frac{d e_{\tau}}{d k}
00055       \right)^{-1}_{k=k_F}
00056       \f]
00057 
00058       In all of the models, the kinetic energy density is 
00059       \f$\tau_n+\tau_p\f$ where 
00060       \f[
00061       \tau_i = \frac{2}{(2 \pi)^3} \int d^3 k~ 
00062       \left(\frac{k^2}{2 m}\right)f_i(k,T)
00063       \f]
00064       and the number density is
00065       \f[
00066       \rho_i = \frac{2}{(2 \pi)^3} \int d^3 k~f_i(k,T)
00067       \f]
00068 
00069       When \ref form == \ref mdi_form or 
00070       \ref gbd_form, the potential energy
00071       density is given by \ref Das03 :
00072       \f[
00073       V(\rho,\delta) = \frac{Au}{\rho_0} \rho_n \rho_p +
00074       \frac{A_l}{2 \rho_0} \left(\rho_n^2+\rho_p^2\right)+
00075       \frac{B}{\sigma+1} \frac{\rho^{\sigma+1}}{\rho_0^{\sigma}}
00076       \left(1-x \delta^2\right)+V_{mom}(\rho,\delta)
00077       \f]
00078       where \f$\delta=1-2 \rho_p/(\rho_n+\rho_p)\f$.
00079       If \ref form == \ref mdi_form, then
00080       \f[
00081       V_{mom}(\rho,\delta)=
00082       \frac{1}{\rho_0} 
00083       \sum_{\tau,\tau^{\prime}} C_{\tau,\tau^{\prime}} 
00084       \int \int
00085       d^3 k d^3 k^{\prime} 
00086       \frac{f_{\tau}(\vec{k}) f_{{\tau}^{\prime}} (\vec{k}^{\prime})}
00087       {1-(\vec{k}-\vec{k}^{\prime})^2/\Lambda^2}
00088       \f]
00089       where \f$C_{1/2,1/2}=C_{-1/2,-1/2}=C_{\ell}\f$ and
00090       \f$C_{1/2,-1/2}=C_{-1/2,1/2}=C_{u}\f$.
00091       Otherwise if \ref form == \ref gbd_form, then
00092       \f[
00093       V_{mom}(\rho,\delta)=
00094       \frac{1}{\rho_0}\left[
00095       C_{\ell} \left( \rho_n g_n + \rho_p g_p \right)+
00096       C_u \left( \rho_n g_p + \rho_p g_n \right)
00097       \right]
00098       \f]
00099       where 
00100       \f[
00101       g_i=\frac{\Lambda^2}{\pi^2}\left[ k_{F,i}-\Lambda
00102       \mathrm{tan}^{-1} \left(k_{F,i}/\Lambda\right) \right]
00103       \f]
00104 
00105       Otherwise, if \ref form == \ref bgbd_form, \ref bpalb_form
00106       or \ref sl_form, then the potential energy density is
00107       given by \ref Bombaci01 :
00108       \f[
00109       V(\rho,\delta) = V_A+V_B+V_C
00110       \f]
00111       \f[
00112       V_A = \frac{2 A}{3 \rho_0}
00113       \left[ \left(1+\frac{x_0}{2}\right)\rho^2-
00114       \left(\frac{1}{2}+x_0\right)\left(\rho_n^2+\rho_p^2\right)\right]
00115       \f]
00116       \f[
00117       V_B=\frac{4 B}{3 \rho_0^{\sigma}} \frac{T}{1+4 B^{\prime} T / 
00118       \left(3 \rho_0^{\sigma-1} \rho^2\right)}
00119       \f]
00120       where 
00121       \f[
00122       T = \rho^{\sigma-1} \left[ \left( 1+\frac{x_3}{2} \right) \rho^2 - 
00123       \left(\frac{1}{2}+x_3\right)\left(\rho_n^2+\rho_p^2\right)\right]
00124       \f]
00125       The term \f$V_C\f$ is:
00126       \f[
00127       V_C=\sum_{i=1}^{i_{\mathrm{max}}} 
00128       \frac{4}{5} \left(C_{i}+2 z_i\right) \rho 
00129       (g_{n,i}+g_{p,i})+\frac{2}{5}\left(C_i -8 z_i\right)
00130       (\rho_n g_{n,i} + \rho_p g_{p,i})
00131       \f]
00132       where 
00133       \f[
00134       g_{\tau,i} = \frac{2}{(2 \pi)^3} \int d^3 k f_{\tau}(k,T)
00135       g_i(k)
00136       \f]
00137 
00138       For \ref form == \ref bgbd_form or \ref form == \ref bpalb_form,
00139       the form factor is given by
00140       \f[
00141       g_i(k) = \left(1+\frac{k^2}{\Lambda_i^2}\right)^{-1}
00142       \f]
00143       while for \ref form == \ref sl_form, the form factor
00144       is given by
00145       \f[
00146       g_i(k) = 1-\frac{k^2}{\Lambda_i^2}
00147       \f]
00148       where \f$\Lambda_1\f$ is specified in the parameter 
00149       \c Lambda when necessary.
00150 
00151       \htmlonly
00152       See Mathematica notebook at 
00153       <a href="gen_potential_eos.nb">
00154       gen_potential_eos.nb</a>, and
00155       <a href="gen_potential_eos.ps">
00156       gen_potential_eos.ps</a>.
00157       \endhtmlonly
00158       \latexonly
00159       See Mathematica notebook at 
00160       \begin{verbatim}
00161       doc/o2scl/extras/gen_potential_eos.nb
00162       doc/o2scl/extras/gen_potential_eos.ps
00163       \end{verbatim}
00164       \endlatexonly
00165 
00166       \bug The BGBD eos doesn't work and the 
00167       effective mass for the GBD eos doesn't work
00168 
00169       \todo Calculate the chemical potentials analytically 
00170       
00171   */
00172   class gen_potential_eos : public hadronic_eos {
00173   public:
00174     
00175     /// \name The parameters for the various interactions
00176     //@{
00177     double x,Au,Al,rho0,B,sigma,Cl,Cu,Lambda;
00178     double A,x0,x3,Bp,C1,z1,Lambda2,C2,z2,bpal_esym;
00179     int sym_index;
00180     //@}
00181     
00182     gen_potential_eos();
00183     
00184     /// Equation of state as a function of density.
00185     virtual int calc_e(fermion &ne, fermion &pr, thermo &lt);
00186 
00187     /// Form of potential
00188     int form;
00189 
00190     /// The "momentum-dependent-interaction" form
00191     static const int mdi_form=1;
00192 
00193     /// The modifed GBD form
00194     static const int bgbd_form=2;
00195 
00196     /// The form from \ref Prakash88 as formulated in \ref Bombaci01
00197     static const int bpalb_form=3;
00198 
00199     /// The "SL" form. See \ref Bombaci01.
00200     static const int sl_form=4;
00201 
00202     /// The Gale, Bertsch, Das Gupta from \ref Gale87.
00203     static const int gbd_form=5;
00204     
00205     /// The form from \ref Prakash88.
00206     static const int bpal_form=6;
00207 
00208     /** \brief Set the derivative object to calculate the 
00209         chemical potentials
00210     */
00211     int set_mu_deriv(deriv<void *,funct<void *> > &de) {
00212       mu_deriv_set=true;
00213       mu_deriv_ptr=&de;
00214       return 0;
00215     }
00216 
00217     /// The default derivative object for calculating chemical potentials
00218     gsl_deriv<void *,funct<void *> > def_mu_deriv;
00219 
00220     /// Default nonrelativistic neutron
00221     nonrel_fermion def_nr_neutron;
00222 
00223     /// Default nonrelativistic proton
00224     nonrel_fermion def_nr_proton;
00225 
00226     /// Return string denoting type ("gen_potential_eos")
00227     virtual const char *type() { return "gen_potential_eos"; }
00228 
00229   protected:
00230     
00231 #ifndef DOXYGEN_INTERNAL
00232 
00233     /// True of the derivative object has been set
00234     bool mu_deriv_set;
00235 
00236     /// The derivative object
00237     deriv<void *,funct<void *> > *mu_deriv_ptr;
00238     
00239     /// Compute the momentum integral for \ref mdi_form
00240     double mom_integral(double pft, double pftp);
00241     
00242     /** \name The mode for the energy() function [protected] */
00243     //@{
00244     int mode;
00245     static const int nmode=1;
00246     static const int pmode=2;
00247     static const int normal=0;
00248     //@}
00249     
00250     /// Compute the energy
00251     double energy(double x);
00252 
00253 #endif
00254     
00255   };
00256   
00257   template<> int io_tlate<gen_potential_eos>::input
00258     (cinput *co, in_file_format *ins, 
00259      gen_potential_eos *sk);
00260   template<> int io_tlate<gen_potential_eos>::output
00261     (coutput *co, out_file_format *outs, 
00262      gen_potential_eos *sk);
00263   template<> const char *io_tlate<gen_potential_eos>::type();
00264   
00265   typedef io_tlate<gen_potential_eos> gen_potential_eos_io_type;
00266   
00267 #ifndef DOXYGENP
00268 }
00269 #endif
00270 
00271 #endif

Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page