diff options
Diffstat (limited to 'src/GRHydro_C2P2C.F90')
-rw-r--r-- | src/GRHydro_C2P2C.F90 | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/src/GRHydro_C2P2C.F90 b/src/GRHydro_C2P2C.F90 new file mode 100644 index 0000000..5808c1b --- /dev/null +++ b/src/GRHydro_C2P2C.F90 @@ -0,0 +1,143 @@ + /*@@ + @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" + + /*@@ + @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 + +#ifdef _EOS_BASE_INC_ +#undef _EOS_BASE_INC_ +#endif +#include "EOS_Base.inc" + + integer didit,i,j,k,nx,ny,nz + 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 pmin, epsmin + CCTK_INT C2P_failed + logical epsnegative + + call CCTK_WARN(1,"This test works only with Ideal_Fluid EoS") + + nx = cctk_lsh(1) + ny = cctk_lsh(2) + nz = cctk_lsh(3) + + 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 = .false. + + GRHydro_rho_min = 1.e-10 + pmin = EOS_Pressure(GRHydro_eos_handle, GRHydro_rho_min, 1.0d0) + epsmin = EOS_SpecificIntEnergy(GRHydro_eos_handle, GRHydro_rho_min, pmin) + C2P_failed = 0 + + 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 Con2Prim_pt(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,GRHydro_rho_min, pmin, epsmin, 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 prim2con(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 |