From 34293db7d9a42b672944a2dd2a4ac808de805ff7 Mon Sep 17 00:00:00 2001 From: rhaas Date: Sat, 6 Jul 2013 18:11:22 +0000 Subject: GRHydro: provide wrapper routines that take detg as arguments then call internal routines taking sqrt(detg) as argument clean up and correct function prototypes in interface.ccl From: Roland Haas git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinEvolve/GRHydro/trunk@557 c83d129a-5a75-4d5a-9c4d-ed3a5855bf45 --- src/GRHydro_Wrappers.F90 | 366 +++++++++++++++++++++++++++++++++++++++++++++++ src/make.code.defn | 7 +- 2 files changed, 369 insertions(+), 4 deletions(-) create mode 100644 src/GRHydro_Wrappers.F90 (limited to 'src') diff --git a/src/GRHydro_Wrappers.F90 b/src/GRHydro_Wrappers.F90 new file mode 100644 index 0000000..6ddca44 --- /dev/null +++ b/src/GRHydro_Wrappers.F90 @@ -0,0 +1,366 @@ + /*@@ + @file GRHydro_Wrappers.F90 + @date Sat Jun 29 18:57:07 PDT 2013 + @author Roland Haas + @desc + Wrapper routines to provide a consistent interface to the aliased + functions even if the interface to the underlying implementation changes. + @enddesc + @@*/ + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" +#include "cctk_Functions.h" + +subroutine Con2PrimPolyWrapper(handle, dens, sx, sy, sz, tau, rho, & + velx, vely, velz, epsilon, press, w_lorentz, uxx, uxy, uxz, uyy, & + uyz, uzz, detg, x, y, z, r, GRHydro_rho_min, GRHydro_reflevel, GRHydro_C2P_failed) + + use Con2Prim_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_REAL, INTENT(INOUT) :: dens, sx, sy, sz + CCTK_REAL, INTENT(OUT) :: tau + CCTK_REAL, INTENT(INOUT) :: rho + CCTK_REAL, INTENT(INOUT) :: velx, vely, velz, epsilon, press, w_lorentz + CCTK_REAL, INTENT(IN) :: uxx, uxy, uxz, uyy, uyz, uzz, detg + CCTK_REAL, INTENT(IN) :: x, y, z, r, GRHydro_rho_min + + CCTK_INT, INTENT(IN) :: handle, GRHydro_reflevel + CCTK_REAL, INTENT(OUT) :: GRHydro_C2P_failed + + CCTK_REAL :: sdetg + + sdetg = sqrt(detg) + + call Con2Prim_ptPolytype(handle, dens, sx, sy, sz, tau, rho, & + velx, vely, velz, epsilon, press, w_lorentz, uxx, uxy, uxz, uyy, & + uyz, uzz, sdetg, x, y, z, r, GRHydro_rho_min, GRHydro_reflevel, & + GRHydro_C2P_failed) + +end subroutine + +subroutine Con2PrimGenWrapper(handle, dens, sx, sy, sz, tau, rho, velx, vely, & + velz, epsilon, pressure, w_lorentz, uxx, uxy, & + uxz, uyy, uyz, uzz, det, x, y, z, r, epsnegative, & + GRHydro_rho_min, pmin, epsmin, GRHydro_reflevel, & + retval) + + use Con2Prim_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle + CCTK_REAL, INTENT(INOUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(INOUT) :: rho, velx, vely, velz, epsilon, pressure + CCTK_REAL, INTENT(INOUT) :: w_lorentz + CCTK_REAL, INTENT(IN) :: uxx, uxy, uxz, uyy, uyz, uzz, det + CCTK_REAL, INTENT(IN) :: x, y, z, r + CCTK_INT, INTENT(OUT) :: epsnegative + CCTK_REAL, INTENT(IN) :: GRHydro_rho_min, pmin, epsmin + CCTK_INT, INTENT(IN) :: GRHydro_reflevel + CCTK_REAL, INTENT(OUT) :: retval + + CCTK_REAL :: sdetg + CCTK_INT, parameter :: cctk_iteration = -1, ii = -1, jj = -1, kk = -1 + logical :: log_epsnegative + + sdetg = sqrt(det) + + call Con2Prim_pt(cctK_iteration, ii, jj, kk, & + handle, dens, sx, sy, sz, tau, rho, velx, vely, & + velz, epsilon, pressure, w_lorentz, uxx, uxy, & + uxz, uyy, uyz, uzz, sdetg, x, y, z, r, log_epsnegative, & + GRHydro_rho_min, pmin, epsmin, GRHydro_reflevel, & + retval) + if(log_epsnegative) then + epsnegative = 1 + else + epsnegative = 0 + end if + +end subroutine + +subroutine Con2PrimGenMWrapper(handle, keytemp, prec, gamma_eos, dens, sx, sy, sz, & + tau, Bconsx, Bconsy, Bconsz, y_e, temp, rho, velx, & + vely, velz, epsilon, pressure, Bvecx, Bvecy, Bvecz, & + Bvecsq, w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx, & + uxy, uxz, uyy, uyz, uzz, det, epsnegative, retval) + + use Con2PrimM_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle, keytemp + CCTK_REAL, INTENT(IN) :: prec, gamma_eos + CCTK_REAL, INTENT(INOUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(IN) :: Bconsx, Bconsy, Bconsz + CCTK_REAL, INTENT(INOUT) :: y_e, temp + CCTK_REAL, INTENT(INOUT) :: rho, velx, vely, velz, epsilon, pressure + CCTK_REAL, INTENT(OUT) :: Bvecx, Bvecy, Bvecz, Bvecsq + CCTK_REAL, INTENT(INOUT) :: w_lorentz + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: uxx, uxy, uxz, uyy, uyz, uzz + CCTK_REAL, INTENT(IN) :: det + CCTK_INT, INTENT(OUT) :: epsnegative + CCTK_REAL, INTENT(OUT) :: retval + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + if(handle.eq.1 .or. handle.eq.2) then + call GRHydro_Con2PrimM_ptold(handle, gamma_eos, dens, sx, sy, sz, & + tau, Bconsx, Bconsy, Bconsz, rho, velx, & + vely, velz, epsilon, pressure, Bvecx, Bvecy, Bvecz, & + Bvecsq, w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx, & + uxy, uxz, uyy, uyz, uzz, sdetg, epsnegative, retval) + else + call GRHydro_Con2PrimM_pt2(handle, keytemp, prec, prec, gamma_eos, dens, sx, sy, sz, & + tau, Bconsx, Bconsy, Bconsz, y_e, temp, rho, velx, & + vely, velz, epsilon, pressure, Bvecx, Bvecy, Bvecz, & + Bvecsq, w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx, & + uxy, uxz, uyy, uyz, uzz, sdetg, epsnegative, retval) + end if + +end subroutine + +subroutine Con2PrimPolyMWrapper(handle, gamma_eos, dens, sx, sy, sz, sc,& + Bconsx, Bconsy, Bconsz, rho, velx, vely, velz,& + epsilon, pressure, Bvecx, Bvecy, Bvecz, Bvecsq,& + w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx,& + uxy, uxz, uyy, uyz, uzz, det, epsnegative,& + retval) + + use Con2PrimM_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle + CCTK_REAL, INTENT(IN) :: gamma_eos + CCTK_REAL, INTENT(INOUT) :: dens, sx, sy, sz, sc + CCTK_REAL, INTENT(INOUT) :: Bconsx, Bconsy, Bconsz + CCTK_REAL, INTENT(INOUT) :: rho, velx, vely, velz, epsilon, pressure + CCTK_REAL, INTENT(OUT) :: Bvecx, Bvecy, Bvecz + CCTK_REAL, INTENT(OUT) :: Bvecsq + CCTK_REAL, INTENT(INOUT) :: w_lorentz + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: uxx, uxy, uxz, uyy, uyz, uzz + CCTK_REAL, INTENT(IN) :: det + CCTK_INT, INTENT(OUT) :: epsnegative + CCTK_REAL, INTENT(OUT) :: retval + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + call GRHydro_Con2PrimM_Polytype_pt(handle, gamma_eos, dens, sx, sy, sz, sc, & + Bconsx, Bconsy, Bconsz, rho, velx, vely, velz, & + epsilon, pressure, Bvecx, Bvecy, Bvecz, Bvecsq, & + w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx, & + uxy, uxz, uyy, uyz, uzz, sdetg, epsnegative, & + retval) +end subroutine + +subroutine Prim2ConGenWrapper(handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens,& + sx, sy, sz, tau, rho, velx, vely, velz, epsilon,& + press, w_lorentz) + + use Con2Prim_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: det + CCTK_REAL, INTENT(OUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(IN) :: rho, velx, vely, velz, epsilon + CCTK_REAL, INTENT(OUT) :: press, w_lorentz + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + call prim2con(handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens,& + sx, sy, sz, tau, rho, velx, vely, velz, epsilon,& + press, w_lorentz) +end subroutine + +subroutine Prim2ConPolyWrapper(handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens,& + sx, sy, sz, tau, rho, velx, vely, velz, epsilon,& + press, w_lorentz) + + use Con2Prim_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: det + CCTK_REAL, INTENT(OUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(IN) :: rho, velx, vely, velz + CCTK_REAL, INTENT(OUT) :: epsilon, press, w_lorentz + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + call prim2conpolytype(handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens,& + sx, sy, sz, tau, rho, velx, vely, velz, epsilon,& + press, w_lorentz) +end subroutine + +subroutine Prim2ConGenMWrapper(handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens,& + sx, sy, sz, tau, Bconsx, Bconsy, Bconsz, rho,& + velx, vely, velz, epsilon, press, Bvecx, Bvecy,& + Bvecz, w_lorentz) + + use Con2PrimM_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: det + CCTK_REAL, INTENT(OUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(OUT) :: Bconsx, Bconsy, Bconsz + CCTK_REAL, INTENT(IN) :: rho, velx, vely, velz, epsilon + CCTK_REAL, INTENT(OUT) :: press + CCTK_REAL, INTENT(IN) :: Bvecx, Bvecy, Bvecz + CCTK_REAL, INTENT(OUT) :: w_lorentz + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + call prim2conM(handle, gxx, gxy, gxz, gyy, gyz, gzz, sdetg, dens,& + sx, sy, sz, tau, Bconsx, Bconsy, Bconsz, rho,& + velx, vely, velz, epsilon, press, Bvecx, Bvecy,& + Bvecz, w_lorentz) +end subroutine + +subroutine Prim2ConGenM_hotWrapper(handle, GRHydro_reflevel, i, j, k, x, y, z,& + gxx, gxy, gxz, gyy, gyz, gzz, det, dens, sx,& + sy, sz, tau, Bconsx, Bconsy, Bconsz, rho,& + velx, vely, velz, epsilon, press, Bvecx,& + Bvecy, Bvecz, w_lorentz, temperature, Y_e) + + use Con2PrimM_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle, GRHydro_reflevel + CCTK_INT, INTENT(IN) :: i, j, k + CCTK_REAL, INTENT(IN) :: x, y, z + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: det + CCTK_REAL, INTENT(OUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(OUT) :: Bconsx, Bconsy, Bconsz + CCTK_REAL, INTENT(IN) :: rho, velx, vely, velz, epsilon + CCTK_REAL, INTENT(OUT) :: press + CCTK_REAL, INTENT(IN) :: Bvecx, Bvecy, Bvecz + CCTK_REAL, INTENT(OUT) :: w_lorentz + CCTK_REAL, INTENT(INOUT) :: temperature + CCTK_REAL, INTENT(IN) :: Y_e + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + call prim2conM_hot(handle, GRHydro_reflevel, i, j, k, x, y, z, gxx,& + gxy, gxz, gyy, gyz, gzz, sdetg, dens, sx, sy, sz,& + tau, Bconsx, Bconsy, Bconsz, rho, velx, vely, velz,& + epsilon, press, Bvecx, Bvecy, Bvecz, w_lorentz,& + temperature, Y_e) +end subroutine + +subroutine Prim2ConPolyMWrapper(handle, gxx, gxy, gxz, gyy, gyz, gzz, det,& + dens, sx, sy, sz, tau, Bconsx, Bconsy, Bconsz,& + rho, velx, vely, velz, epsilon, press, Bvecx,& + Bvecy, Bvecz, w_lorentz) + + use Con2PrimM_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: det + CCTK_REAL, INTENT(OUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(OUT) :: Bconsx, Bconsy, Bconsz + CCTK_REAL, INTENT(IN) :: rho, velx, vely, velz + CCTK_REAL, INTENT(OUT) :: epsilon + CCTK_REAL, INTENT(OUT) :: press + CCTK_REAL, INTENT(IN) :: Bvecx, Bvecy, Bvecz + CCTK_REAL, INTENT(OUT) :: w_lorentz + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + call prim2conpolytypeM(handle, gxx, gxy, gxz, gyy, gyz, gzz, det,& + dens, sx, sy, sz, tau, Bconsx, Bconsy, Bconsz,& + rho, velx, vely, velz, epsilon, press, Bvecx,& + Bvecy, Bvecz, w_lorentz) +end subroutine + +subroutine Con2PrimGenMeeWrapper(handle, keytemp, prec, gamma_eos, dens, sx, sy,& + sz, tau, Bconsx, Bconsy, Bconsz, entropycons,& + y_e, temp, rho, velx, vely, velz, epsilon,& + pressure, Bvecx, Bvecy, Bvecz, Bvecsq,& + w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx,& + uxy, uxz, uyy, uyz, uzz, det, epsnegative,& + retval) + + use Con2Prim_fortran_interfaces + + implicit none + + DECLARE_CCTK_FUNCTIONS + + CCTK_INT, INTENT(IN) :: handle, keytemp + CCTK_REAL, INTENT(IN) :: prec, gamma_eos + CCTK_REAL, INTENT(INOUT) :: dens, sx, sy, sz, tau + CCTK_REAL, INTENT(IN) :: Bconsx, Bconsy, Bconsz + CCTK_REAL, INTENT(INOUT) :: entropycons, y_e, temp + CCTK_REAL, INTENT(INOUT) :: rho, velx, vely, velz, epsilon, pressure + CCTK_REAL, INTENT(OUT) :: Bvecx, Bvecy, Bvecz + CCTK_REAL, INTENT(OUT) :: Bvecsq + CCTK_REAL, INTENT(INOUT) :: w_lorentz + CCTK_REAL, INTENT(IN) :: gxx, gxy, gxz, gyy, gyz, gzz + CCTK_REAL, INTENT(IN) :: uxx, uxy, uxz, uyy, uyz, uzz + CCTK_REAL, INTENT(IN) :: det + CCTK_INT, INTENT(OUT) :: epsnegative + CCTK_REAL, INTENT(OUT) :: retval + + CCTK_REAL :: sdetg + + sdetg = sqrt(det) + + call GRHydro_Con2PrimM_ptee(handle, keytemp, prec, gamma_eos, dens, sx, sy, sz,& + tau, Bconsx, Bconsy, Bconsz, entropycons, y_e, temp,& + rho, velx, vely, velz, epsilon, pressure, Bvecx,& + Bvecy, Bvecz, Bvecsq, w_lorentz, gxx, gxy, gxz, gyy,& + gyz, gzz, uxx, uxy, uxz, uyy, uyz, uzz, sdetg,& + epsnegative, retval) +end subroutine diff --git a/src/make.code.defn b/src/make.code.defn index 1fce82b..527713e 100644 --- a/src/make.code.defn +++ b/src/make.code.defn @@ -1,5 +1,4 @@ -# Main make.code.defn file for thorn Hydra -# $Header$ +# Main make.code.defn file for thorn GRHydro # Source files in this directory @@ -82,9 +81,9 @@ SRCS = Utils.F90 \ GRHydro_MP5Reconstruct.F90 \ Con2Prim_fortran_interfaces.F90 \ Con2PrimM_fortran_interfaces.F90 \ - GRHydro_Prim2Con.c + GRHydro_Prim2Con.c \ + GRHydro_Wrappers.F90 - # Subdirectories containing source files SUBDIRS = -- cgit v1.2.3