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

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).

Get Object-oriented Scientific Computing
Lib at SourceForge.net. Fast, secure and Free Open Source software
downloads.