#include "cctk.h" #include "cctk_Parameters.h" #include "cctk_Arguments.h" #include "cctk_Functions.h" module eosmodule implicit none integer,save :: nrho,ntemp,nye integer,save :: warn_from !warn from given reflevel real*8 :: energy_shift = 0.0d0 real*8 :: precision = 1.0d-9 ! min-max values: real*8 :: eos_rhomin,eos_rhomax real*8 :: eos_yemin,eos_yemax real*8 :: eos_tempmin,eos_tempmax real*8 :: t_max_hack = 240.0d0 ! basics integer, parameter :: nvars = 19 real*8,pointer :: alltables(:,:,:,:) ! index variable mapping: ! 1 -> logpress ! 2 -> logenergy ! 3 -> entropy ! 4 -> munu ! 5 -> cs2 ! 6 -> dedT ! 7 -> dpdrhoe ! 8 -> dpderho ! 9 -> muhat ! 10 -> mu_e ! 11 -> mu_p ! 12 -> mu_n ! 13 -> xa ! 14 -> xh ! 15 -> xn ! 16 -> xp ! 17 -> abar ! 18 -> zbar ! 19 -> gamma real*8,pointer :: logrho(:) real*8,pointer :: logtemp(:) real*8,pointer :: ye(:) ! constants real*8,save :: mev_to_erg = 1.60217733d-6 real*8,save :: amu_cgs = 1.66053873d-24 real*8,save :: amu_mev = 931.49432d0 real*8,save :: pi = 3.14159265358979d0 real*8,save :: ggrav = 6.672d-8 real*8,save :: temp_mev_to_kelvin = 1.1604447522806d10 real*8,save :: clight = 2.99792458d10 real*8,save :: kb_erg = 1.380658d-16 real*8,save :: kb_mev = 8.61738568d-11 end module eosmodule ! This function is called from within readtable.c ! It creates pointers to the arrays given as parameters into arrays ! of the eos module. subroutine setup_eosmodule(nrho_, ntemp_, nye_, alltables_, logrho_, logtemp_, ye_, energy_shift_) use eosmodule DECLARE_CCTK_PARAMETERS CCTK_INT :: nrho_, ntemp_, nye_ CCTK_REAL, TARGET :: alltables_(nrho_, ntemp_, nye_, 19) CCTK_REAL, TARGET :: logrho_(nrho_) CCTK_REAL, TARGET :: logtemp_(ntemp_) CCTK_REAL, TARGET :: ye_(nye_) CCTK_REAL :: energy_shift_ nrho = nrho_ ntemp = ntemp_ nye = nye_ alltables => alltables_ logrho => logrho_ logtemp => logtemp_ ye => ye_ energy_shift = energy_shift_ if(do_energy_shift.ne.1) then energy_shift = 0.0d0 endif ! set min-max values: eos_rhomin = 10.0d0**logrho(1) eos_rhomax = 10.0d0**logrho(nrho) eos_yemin = ye(1) eos_yemax = ye(nye) eos_tempmin = 10.0d0**logtemp(1) eos_tempmax = 10.0d0**logtemp(ntemp) end subroutine setup_eosmodule