From 85cb2e6f9c6191fc9889a1055017236c9a071192 Mon Sep 17 00:00:00 2001 From: bmundim Date: Sat, 25 Dec 2010 06:44:22 +0000 Subject: RIT MHD dev: Update initial data routines to properly call out pressures and other hydro quantities using EOS_Omni rather than now-defunct interfaces. Add C2P_polytype interface. Un-hardwire fixed values of gamma for all MHD Con2Prim routines. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/GRHydro_InitData/trunk@117 ac85fae7-cede-4708-beff-ae01c7fa1c26 --- src/GRHydro_P2C2PM_polytype.F90 | 181 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 src/GRHydro_P2C2PM_polytype.F90 (limited to 'src/GRHydro_P2C2PM_polytype.F90') diff --git a/src/GRHydro_P2C2PM_polytype.F90 b/src/GRHydro_P2C2PM_polytype.F90 new file mode 100644 index 0000000..a8d0e77 --- /dev/null +++ b/src/GRHydro_P2C2PM_polytype.F90 @@ -0,0 +1,181 @@ + /*@@ + @file GRHydro_P2C2PM_polytype.F90 + @date Sep 25, 2010 + @author Joshua Faber, Scott Noble, Bruno Mundim, Luca Baiotti + @desc + A test of the conservative <--> primitive variable exchange + @enddesc + @@*/ + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Arguments.h" + + /*@@ + @routine p2c2pm + @date Sep 25, 2010 + @author Joshua Faber, Scott Noble, Bruno Mundim, Luca Baiotti + @desc + Testing the conservative <--> primitive variable transformations. + The values before and after should match. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ + +subroutine p2c2pm_polytype(CCTK_ARGUMENTS) + + implicit none + + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_PARAMETERS + + integer didit,i,j,k,nx,ny,nz + CCTK_REAL det, local_K + 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 bvcx_send,bvcy_send,bvcz_send,b2_send + CCTK_REAL pmin, epsmin, local_gam, sc_send + CCTK_INT C2P_failed + logical epsnegative + +! begin EOS Omni vars + integer :: n = 1 + integer :: keytemp = 0 + integer :: anyerr = 0 + integer :: keyerr(1) = 0 + real*8 :: xpress = 0.0d0 + real*8 :: xeps = 0.0d0 + real*8 :: xtemp = 0.0d0 + real*8 :: xye = 0.0d0 +! end EOS Omni vars + + 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 + + rho_send = 1.29047362d0 + velx_send = 0.166666658d0 + vely_send = 0.166666658d0 + velz_send = 0.166666658d0 +!!$ eps_send = 0.484123939d0 + + bvcx_send = Bx_init + bvcy_send = By_init + bvcz_send = Bz_init + + w_lorentz_send = 1.d0/sqrt(1.0d0-velx_send*velx_send-vely_send*vely_send-velz_send*velz_send) + + epsnegative = .false. + + GRHydro_rho_min = 1.e-10 + + call EOS_Omni_press(GRHydro_polytrope_handle,keytemp,GRHydro_eos_rf_prec,n,& + rho_send,1.0d0,xtemp,xye,press_send,keyerr,anyerr) + call EOS_Omni_press(GRHydro_polytrope_handle,keytemp,GRHydro_eos_rf_prec,n,& + GRHydro_rho_min,1.0d0,xtemp,xye,pmin,keyerr,anyerr) + + call EOS_Omni_EpsFromPress(GRHydro_polytrope_handle,keytemp,GRHydro_eos_rf_prec,n,& + rho_send,xeps,xtemp,xye,press_send,eps_send,keyerr,anyerr) + call EOS_Omni_EpsFromPress(GRHydro_polytrope_handle,keytemp,GRHydro_eos_rf_prec,n,& + GRHydro_rho_min,xeps,xtemp,xye,pmin,epsmin,keyerr,anyerr) + + call EOS_Omni_press(GRHydro_polytrope_handle,keytemp,GRHydro_eos_rf_prec,n,& + 1.d0,1.d0,xtemp,xye,xpress,keyerr,anyerr) + local_K = xpress + + local_gam=log(press_send/local_K)/log(rho_send) + + C2P_failed = 0 + + write(*,*) 'P2C2PM 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(*,*) ' Bvecx : ',bvcx_send + write(*,*) ' Bvecy : ',bvcy_send + write(*,*) ' Bvecz : ',bvcz_send + + write(*,*) 'P2C2PM test: converting back to conserved variables.' + call prim2conpolytypeM(GRHydro_polytrope_handle,gxx_send, gxy_send, gxz_send, gyy_send, gyz_send, gzz_send, det, & + dens_send, sx_send, sy_send, sz_send, tau_send, bvcx_send, bvcy_send, bvcz_send, rho_send, & + velx_send, vely_send, velz_send, eps_send, press_send, w_lorentz_send) + + write(*,*) 'P2C2PM 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(*,*) ' Bvecx : ',bvcx_send + write(*,*) ' Bvecy : ',bvcy_send + write(*,*) ' Bvecz : ',bvcz_send + + write(6,*)'local_K:',local_K + sc_send=local_K*dens_send + + write(*,*) 'P2C2PM test: getting the associated primitive variables.' + call GRHydro_Con2PrimM_Polytype_pt(GRHydro_polytrope_handle,local_gam,dens_send,sx_send,sy_send,sz_send, & + sc_send,rho_send,velx_send,vely_send,velz_send, & + eps_send,press_send,w_lorentz_send, & + gxx_send,gxy_send,gxz_send,gyy_send,gyz_send,gzz_send,& + uxx,uxy,uxz,uyy,uyz,uzz,det,& + bvcx_send,bvcy_send,bvcz_send,b2_send,& + epsnegative,C2P_failed) + + write(*,*) 'P2C2PM 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(*,*) ' Bvecx : ',bvcx_send + write(*,*) ' Bvecy : ',bvcy_send + write(*,*) ' Bvecz : ',bvcz_send + + STOP + + return + +end subroutine p2c2pm_polytype -- cgit v1.2.3