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
145
146
147
148
149
|
/*@@
@file GRHydro_C2P2C.F90
@date Sat Jan 26 02:44:43 2002
@author Luca Baiotti
@desc
A test of the conservative <--> primitive variable exchange
@enddesc
@@*/
#include "cctk.h"
#include "cctk_Parameters.h"
#include "cctk_Arguments.h"
#include "cctk_Functions.h"
/*@@
@routine c2p2c
@date Sat Jan 26 02:45:19 2002
@author Luca Baiotti
@desc
Testing the conservative <--> primitive variable transformations.
The values before and after should match.
@enddesc
@calls
@calledby
@history
@endhistory
@@*/
subroutine c2p2c(CCTK_ARGUMENTS)
implicit none
DECLARE_CCTK_ARGUMENTS
DECLARE_CCTK_PARAMETERS
DECLARE_CCTK_FUNCTIONS
CCTK_REAL :: det
CCTK_REAL :: uxx,uxy,uxz,uyy,uyz,uzz
CCTK_REAL :: gxx_send,gxy_send,gxz_send,gyy_send,gyz_send,gzz_send
CCTK_REAL :: dens_send,sx_send,sy_send,sz_send,tau_send
CCTK_REAL :: rho_send,velx_send,vely_send,velz_send,eps_send
CCTK_REAL :: press_send,w_lorentz_send,x_send,y_send,z_send,r_send
CCTK_REAL :: C2P_failed
CCTK_INT :: epsnegative
! begin EOS Omni vars
CCTK_REAL :: pmin(1), epsmin(1), epsval(1)
CCTK_INT :: n,keytemp,anyerr,keyerr(1)
CCTK_REAL :: xpress(1),xtemp(1),xye(1),xeps(1),xrho(1)
n=1;keytemp=0;anyerr=0;keyerr(1)=0
xpress(1)=0.0d0;xtemp(1)=0.0d0;xye(1)=0.0d0;xeps(1)=0.0d0
! end EOS Omni vars
call CCTK_WARN(1,"This test works only with Ideal_Fluid EoS")
x_send = 0.0d0
y_send = 0.0d0
z_send = 0.0d0
r_send = 0.0d0
gxx_send = 1.0d0
gyy_send = 1.0d0
gzz_send = 1.0d0
gxy_send = 0.0d0
gxz_send = 0.0d0
gyz_send = 0.0d0
det = 1.0d0
uxx = 1.0d0
uyy = 1.0d0
uzz = 1.0d0
uxy = 0.0d0
uxz = 0.0d0
uyz = 0.0d0
dens_send = 1.29047362d0
sx_send = 0.166666658d0
sy_send = 0.166666658d0
sz_send = 0.166666658d0
tau_send = 0.484123939d0
eps_send = 1.0d-6
press_send = 6.666666666666667d-7
w_lorentz_send = 1.0d0
epsnegative = 0
xrho = 1.0d-10
epsval = 1.0d0
call EOS_Omni_press(GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n,&
xrho,epsval,xtemp,xye,pmin,keyerr,anyerr)
call EOS_Omni_EpsFromPress(GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n,&
xrho,xeps,xtemp,xye,pmin,epsmin,keyerr,anyerr)
C2P_failed = 0.0d0
write(*,*) 'C2P2C test: initial values.'
write(*,*) ' conservative variables: '
write(*,*) ' dens: ',dens_send
write(*,*) ' sx : ',sx_send
write(*,*) ' sy : ',sy_send
write(*,*) ' sz : ',sz_send
write(*,*) ' tau : ',tau_send
write(*,*) ' eps : ',eps_send
write(*,*) ' W : ',w_lorentz_send
write(*,*) 'C2P2C test: getting the associated primitive variables.'
call Con2PrimGen(GRHydro_eos_handle,dens_send,sx_send,sy_send,sz_send, &
tau_send,rho_send,velx_send,vely_send,velz_send, &
eps_send,press_send,w_lorentz_send, &
uxx,uxy,uxz,uyy,uyz,uzz,det,x_send,y_send,z_send,r_send,&
epsnegative,xrho(1),pmin(1),epsmin(1),GRHydro_init_data_reflevel,C2P_failed)
write(*,*) 'C2P2C test: the primitive variables are'
write(*,*) ' primitive variables: '
write(*,*) ' rho : ',rho_send
write(*,*) ' velx : ',velx_send
write(*,*) ' vely : ',vely_send
write(*,*) ' velz : ',velz_send
write(*,*) ' press : ',press_send
write(*,*) ' eps : ',eps_send
write(*,*) ' W : ',w_lorentz_send
write(*,*) 'C2P2C test: converting back to conserved variables.'
call Prim2ConGen(GRHydro_eos_handle, &
gxx_send,gxy_send,gxz_send,gyy_send,gyz_send,gzz_send,det, &
dens_send,sx_send,sy_send,sz_send,tau_send,rho_send, &
velx_send,vely_send,velz_send,eps_send,press_send,w_lorentz_send)
write(*,*) 'C2P2C test: the conserved variables are'
write(*,*) ' conservative variables: '
write(*,*) ' dens: ',dens_send
write(*,*) ' sx : ',sx_send
write(*,*) ' sy : ',sy_send
write(*,*) ' sz : ',sz_send
write(*,*) ' tau : ',tau_send
write(*,*) ' eps : ',eps_send
write(*,*) ' W : ',w_lorentz_send
STOP
return
end subroutine c2p2c
|