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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
/*@@
@file GRHydro_RiemannSolveM.F90
@date Sep 1, 2010
@author
@desc
A wrapper routine to call the correct Riemann solver
@enddesc
@@*/
#include "cctk.h"
#include "cctk_Parameters.h"
#include "cctk_Arguments.h"
#include "cctk_Functions.h"
#include "GRHydro_Macros.h"
/*@@
@routine RiemannSolveM
@date Sep 1, 2010
@author Joshua Faber, Scott Noble, Bruno Mundim, Pedro Montero, Ian Hawke
@desc
A wrapper routine to switch between the different Riemann solvers.
@enddesc
@calls
@calledby
@history
@endhistory
@@*/
subroutine RiemannSolveM(CCTK_ARGUMENTS)
implicit none
DECLARE_CCTK_ARGUMENTS
DECLARE_CCTK_PARAMETERS
DECLARE_CCTK_FUNCTIONS
CCTK_INT :: i,j,k
if (CCTK_EQUALS(riemann_solver,"HLLE")) then
call GRHydro_HLLEM(CCTK_PASS_FTOF)
if (evolve_tracer .ne. 0) then
!!$ There are no special calls for tracers, which care not one whit about B-fields!
!!$ Just call the standard version...
call GRHydro_HLLE_Tracer(CCTK_PASS_FTOF)
end if
!!$ else if (CCTK_EQUALS(riemann_solver,"Roe")) then
!!$
!!$ call GRHydro_RoeSolveM(CCTK_PASS_FTOF)
!!$
!!$ if (evolve_tracer .ne. 0) then
!!$
!!$ call GRHydro_HLLE_Tracer(CCTK_PASS_FTOF)
!!$
!!$ end if
!!$
!!$ else if (CCTK_EQUALS(riemann_solver,"Marquina")) then
!!$
!!$ call GRHydro_MarquinaM(CCTK_PASS_FTOF)
!!$ Tracers are built directly in to the Marquina solver
else
call CCTK_WARN(0, "Roe and Marquina not implemented in MHD yet!!!")
end if
end subroutine RiemannSolveM
/*@@
@routine RiemannSolvePolytypeM
@date Sep 1, 2010
@author Joshua Faber, Scott Noble, Bruno Mundim, Ian Hawke
@desc
The same as above, just specializing to polytropic type EOS.
Currently there is no point to this routine right now.
@enddesc
@calls
@calledby
@history
@endhistory
@@*/
subroutine RiemannSolvePolytypeM(CCTK_ARGUMENTS)
implicit none
DECLARE_CCTK_ARGUMENTS
DECLARE_CCTK_PARAMETERS
DECLARE_CCTK_FUNCTIONS
CCTK_INT :: i,j,k
if (CCTK_EQUALS(riemann_solver,"HLLE")) then
call GRHydro_HLLEM(CCTK_PASS_FTOF)
if (evolve_tracer .ne. 0) then
!!$ Call the non-MHD version - see above
call GRHydro_HLLE_Tracer(CCTK_PASS_FTOF)
end if
!!$ else if (CCTK_EQUALS(riemann_solver,"Roe")) then
!!$
!!$ call GRHydro_RoeSolve(CCTK_PASS_FTOF)
!!$
!!$ if (evolve_tracer .ne. 0) then
!!$
!!$ call GRHydro_HLLE_Tracer(CCTK_PASS_FTOF)
!!$
!!$ end if
!!$
!!$ else if (CCTK_EQUALS(riemann_solver,"Marquina")) then
!!$
!!$ call GRHydro_Marquina(CCTK_PASS_FTOF)
!!$ Tracers are built directly in to the Marquina solver
else
call CCTK_WARN(0, "Roe and Marquina not implemented in MHD yet!!!")
end if
end subroutine RiemannSolvePolytypeM
|