aboutsummaryrefslogtreecommitdiff
path: root/src/EOS_Polytrope_Startup.F
blob: 156cc8c07acdf3fc2c020271ed738f04ec108495 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 /*@@
   @file      EOS_Polytrope_Startup.F
   @date      Wed Mar 20 14:50:22 2002
   @author    Ian Hawke
   @desc 
   Startup for EOS_Polytrope. A 2d routine so that all the standard 
   functionality is retained. Based on EOS_Ideal_Fluid.
   @enddesc 
 @@*/

#include "cctk.h"
#include "cctk_Arguments.h"
#include "cctk_Parameters.h"

 /*@@
   @routine    EOS_Polytrope_Startup
   @date       Wed Mar 20 14:52:41 2002
   @author     Ian Hawke
   @desc 
   Startup for EOS_Polytrope
   @enddesc 
   @calls     
   @calledby   
   @history 
 
   @endhistory 
@@*/

      integer function EOS_Polytrope_Startup()

      USE EOS_Polytrope_Scalars

      implicit none

      DECLARE_CCTK_PARAMETERS

      integer handle, ierr
      
      external EOS_Polytrope_Pressure
      external EOS_Polytrope_SpecificIE
      external EOS_Polytrope_RestMassDens
      external EOS_Polytrope_DPressByDRho
      external EOS_Polytrope_DPressByDEps

      call EOS_RegisterMethod(handle,"2D_Polytrope")

      if (handle .ge. 0) then

        call EOS_RegisterPressure(ierr, handle, EOS_Polytrope_Pressure)
        call EOS_RegisterSpecificIntEnergy(ierr, handle, 
     .                                     EOS_Polytrope_SpecificIE)
        call EOS_RegisterRestMassDens(ierr, handle, 
     .                                EOS_Polytrope_RestMassDens)
        call EOS_RegisterDPressByDRho(ierr, handle, 
     .                                EOS_Polytrope_DPressByDRho)
        call EOS_RegisterDPressByDEps(ierr, handle, 
     .                                EOS_Polytrope_DPressByDEps)

      else

        call CCTK_WARN(0, "Unable to register the EOS method!")

      end if

      EOS_Polytrope_Startup = 0

c$$$      These constants match the values in RNSID: consts.h

      m_solar_cgs = 1.987d33
      c_cgs = 2.9979d10
      G_cgs = 6.6732d-8
      m_solar_geom = G_cgs / c_cgs**2 * m_solar_cgs

      if (use_cgs .ne. 0) then

        p_geom_factor = G_cgs / c_cgs**4 * m_solar_geom**2
        rho_geom_factor = p_geom_factor * c_cgs**2
        rho_geom_factor_inv = 1.d0 / rho_geom_factor 
        
        eos_k_cgs = eos_k * rho_geom_factor**gamma_ini / p_geom_factor
        
      else
        
        p_geom_factor = 1.d0
        rho_geom_factor = 1.d0
        rho_geom_factor_inv = 1.d0
        eos_k_cgs = eos_k

      end if
        
      end function EOS_Polytrope_Startup