diff options
Diffstat (limited to 'src/GRHydro_C2P2CM_eosomni.F90')
-rw-r--r-- | src/GRHydro_C2P2CM_eosomni.F90 | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/src/GRHydro_C2P2CM_eosomni.F90 b/src/GRHydro_C2P2CM_eosomni.F90 new file mode 100644 index 0000000..fefc1c9 --- /dev/null +++ b/src/GRHydro_C2P2CM_eosomni.F90 @@ -0,0 +1,196 @@ + /*@@ + @file GRHydro_C2P2CM.F90 + @date Sep 23, 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" +#include "cctk_Functions.h" + + /*@@ + @routine c2p2cM + @date Sep 23, 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 c2p2cM(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 :: bconsx_send, bconsy_send, bconsz_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 :: C2P_failed + CCTK_INT :: epsnegative + +! begin EOS Omni vars + CCTK_REAL :: pmin(1), epsmin(1), local_gam(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 + +! Initialize the velocity as GRHydro_Con2PrimM_pt may use these +! values as initial guess for its Newton-Raphson procedure. + velx_send = 0.1d0 + vely_send = 0.1d0 + velz_send = 0.1d0 + + dens_send = 1.29047362d0 + sx_send = 0.166666658d0 + sy_send = 0.166666658d0 + sz_send = 0.166666658d0 + tau_send = 0.484123939d0 + + bvcx_send = Bx_init + bvcy_send = By_init + bvcz_send = Bz_init + bconsx_send = Bx_init + bconsy_send = By_init + bconsz_send = Bz_init + + 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) + call EOS_Omni_EpsFromPress(1,keytemp,GRHydro_eos_rf_prec,n,& + xrho,xeps,xtemp,xye,pmin,epsmin,keyerr,anyerr) + + local_gam = 0.0d0 + xrho = 1.0d0 + call EOS_Omni_press(GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,n,& + xrho,epsval,xtemp,xye,local_gam,keyerr,anyerr) + local_gam = local_gam + 1.0 + + C2P_failed = 0.0d0 + + write(*,*) 'C2P2CM 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(*,*) ' Bconsx : ',bconsx_send + write(*,*) ' Bconsy : ',bconsy_send + write(*,*) ' Bconsz : ',bconsz_send + write(*,*) ' eps : ',eps_send + write(*,*) ' W : ',w_lorentz_send + write(*,*) ' Bvecx : ',bvcx_send + write(*,*) ' Bvecy : ',bvcy_send + write(*,*) ' Bvecz : ',bvcz_send + + write(*,*) 'C2P2CM test: getting the associated primitive variables.' + call Con2PrimGenM(GRHydro_eos_handle,keytemp,GRHydro_eos_rf_prec,local_gam(1),dens_send,sx_send,sy_send,sz_send, & + tau_send,bconsx_send,bconsy_send,bconsz_send,0.d0,0.d0,rho_send,velx_send,vely_send,velz_send, & + eps_send,press_send,bvcx_send,bvcy_send,bvcz_send,b2_send,w_lorentz_send, & + gxx_send,gxy_send,gxz_send,gyy_send,gyz_send,gzz_send,& + uxx,uxy,uxz,uyy,uyz,uzz,det,& + epsnegative,C2P_failed) + + !! call Con2PrimGenM(GRHydro_eos_handle,local_gam(1),dens_send,sx_send,sy_send,sz_send, & + !! tau_send,bconsx_send,bconsy_send,bconsz_send,rho_send,velx_send,vely_send,velz_send, & + !! eps_send,press_send,bvcx_send,bvcy_send,bvcz_send,b2_send,w_lorentz_send, & + !! gxx_send,gxy_send,gxz_send,gyy_send,gyz_send,gzz_send,& + !! uxx,uxy,uxz,uyy,uyz,uzz,det,& + !! epsnegative,C2P_failed) + + write(*,*) 'C2P2CM 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(*,*) ' C2P_failed : ',C2P_failed + + write(*,*) 'C2P2CM test: converting back to conserved variables.' + call Prim2ConGenM(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, bconsx_send, bconsy_send, bconsz_send, rho_send, & + velx_send, vely_send, velz_send, eps_send, press_send, bvcx_send, bvcy_send, bvcz_send, w_lorentz_send) + + write(*,*) 'C2P2CM 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(*,*) ' Bconsx : ',bconsx_send + write(*,*) ' Bconsy : ',bconsy_send + write(*,*) ' Bconsz : ',bconsz_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 c2p2cM |