aboutsummaryrefslogtreecommitdiff
path: root/src/GRHydro_Con2Prim.F90
diff options
context:
space:
mode:
Diffstat (limited to 'src/GRHydro_Con2Prim.F90')
-rw-r--r--src/GRHydro_Con2Prim.F90125
1 files changed, 29 insertions, 96 deletions
diff --git a/src/GRHydro_Con2Prim.F90 b/src/GRHydro_Con2Prim.F90
index 160493c..24811c5 100644
--- a/src/GRHydro_Con2Prim.F90
+++ b/src/GRHydro_Con2Prim.F90
@@ -13,6 +13,7 @@
#include "cctk_Functions.h"
#include "SpaceMask.h"
#include "GRHydro_Interfaces.h"
+#include "GRHydro_Macros.h"
/*@@
@routine Conservative2Primitive
@@ -26,7 +27,7 @@
@calledby
@history
Trimmed and altered from the GR3D routines, original author Mark Miller.
- 2007?: Bruno escluded the points in the atmosphere and excision region from the computation.
+ 2007?: Bruno excluded the points in the atmosphere and excision region from the computation.
Aug. 2008: Luca added a check on whether a failure at a given point may be disregarded,
because that point will then be restricted from a finer level. This should be completely
safe only if *regridding happens at times when all levels are evolved.*
@@ -115,21 +116,11 @@ subroutine Conservative2Primitive(CCTK_ARGUMENTS)
epsnegative = .false.
- if (conformal_state .eq. 0) then
- call SpatialDeterminant(gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),&
- gyy(i,j,k),gyz(i,j,k),gzz(i,j,k),det)
- call UpperMetric(uxx,uxy,uxz,uyy,uyz,uzz,det,&
- gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),gyy(i,j,k),&
- gyz(i,j,k),gzz(i,j,k))
- else
- psi4pt = psi(i,j,k)**4
- call SpatialDeterminant(psi4pt*gxx(i,j,k),psi4pt*gxy(i,j,k),&
- psi4pt*gxz(i,j,k),psi4pt*gyy(i,j,k),&
- psi4pt*gyz(i,j,k),psi4pt*gzz(i,j,k),det)
- call UpperMetric(uxx,uxy,uxz,uyy,uyz,uzz,det,&
- psi4pt*gxx(i,j,k),psi4pt*gxy(i,j,k),psi4pt*gxz(i,j,k),&
- psi4pt*gyy(i,j,k),psi4pt*gyz(i,j,k),psi4pt*gzz(i,j,k))
- end if
+ det = SPATIAL_DETERMINANT(gxx(i,j,k),gxy(i,j,k),gxz(i,j,k), \
+ gyy(i,j,k),gyz(i,j,k),gzz(i,j,k))
+ call UpperMetric(uxx,uxy,uxz,uyy,uyz,uzz,det,&
+ gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),gyy(i,j,k),&
+ gyz(i,j,k),gzz(i,j,k))
!!$ if (det < 0.e0) then
!!$ call CCTK_WARN(0, "nan produced (det negative)")
@@ -637,28 +628,12 @@ subroutine Conservative2PrimitiveBounds(CCTK_ARGUMENTS)
epsnegative = .false.
- if (conformal_state .eq. 0) then
- call SpatialDeterminant(gxxl,gxyl,gxzl,gyyl, gyzl,gzzl,avg_detl)
- call SpatialDeterminant(gxxr,gxyr,gxzr,gyyr, gyzr,gzzr,avg_detr)
- call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
- gxxl,gxyl,gxzl,gyyl,gyzl,gzzl)
- call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
- gxxr,gxyr,gxzr,gyyr,gyzr,gzzr)
- else
- psi4r = (0.5d0*(psi(i,j,k)+psi(i+xoffset,j+yoffset,k+zoffset)))**4
- psi4l = (0.5d0*(psi(i,j,k)+psi(i-xoffset,j-yoffset,k-zoffset)))**4
-
- call SpatialDeterminant(psi4l*gxxl,psi4l*gxyl,psi4l*gxzl,&
- psi4l*gyyl,psi4l*gyzl,psi4l*gzzl,avg_detl)
- call SpatialDeterminant(psi4r*gxxr,psi4r*gxyr,psi4r*gxzr,&
- psi4r*gyyr,psi4r*gyzr,psi4r*gzzr,avg_detr)
- call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
- psi4l*gxxl,psi4l*gxyl,psi4l*gxzl,psi4l*gyyl,psi4l*gyzl,&
- psi4l*gzzl)
- call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
- psi4r*gxxr,psi4r*gxyr,psi4r*gxzr,psi4r*gyyr,psi4r*gyzr,&
- psi4r*gzzr)
- end if
+ avg_detl = SPATIAL_DETERMINANT(gxxl,gxyl,gxzl,gyyl, gyzl,gzzl)
+ avg_detr = SPATIAL_DETERMINANT(gxxr,gxyr,gxzr,gyyr, gyzr,gzzr)
+ call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
+ gxxl,gxyl,gxzl,gyyl,gyzl,gzzl)
+ call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
+ gxxr,gxyr,gxzr,gyyr,gyzr,gzzr)
if (evolve_tracer .ne. 0) then
do itracer=1,number_of_tracers
@@ -837,21 +812,11 @@ subroutine Conservative2PrimitivePolytype(CCTK_ARGUMENTS)
if (SpaceMask_CheckStateBitsF90(space_mask, i, j, k, type_bits, atmosphere) .or. &
GRHydro_enable_internal_excision /= 0 .and. (hydro_excision_mask(i,j,k) .ne. 0)) cycle
- if (conformal_state .eq. 0) then
- call SpatialDeterminant(gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),&
- gyy(i,j,k),gyz(i,j,k),gzz(i,j,k),det)
- call UpperMetric(uxx,uxy,uxz,uyy,uyz,uzz,det,&
- gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),gyy(i,j,k),&
- gyz(i,j,k),gzz(i,j,k))
- else
- psi4pt = psi(i,j,k)**4
- call SpatialDeterminant(psi4pt*gxx(i,j,k),psi4pt*gxy(i,j,k),&
- psi4pt*gxz(i,j,k),psi4pt*gyy(i,j,k),&
- psi4pt*gyz(i,j,k),psi4pt*gzz(i,j,k),det)
- call UpperMetric(uxx,uxy,uxz,uyy,uyz,uzz,det,&
- psi4pt*gxx(i,j,k),psi4pt*gxy(i,j,k),psi4pt*gxz(i,j,k),&
- psi4pt*gyy(i,j,k),psi4pt*gyz(i,j,k),psi4pt*gzz(i,j,k))
- end if
+ det = SPATIAL_DETERMINANT(gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),\
+ gyy(i,j,k),gyz(i,j,k),gzz(i,j,k))
+ call UpperMetric(uxx,uxy,uxz,uyy,uyz,uzz,det,&
+ gxx(i,j,k),gxy(i,j,k),gxz(i,j,k),gyy(i,j,k),&
+ gyz(i,j,k),gzz(i,j,k))
if (evolve_tracer .ne. 0) then
do itracer=1,number_of_tracers
@@ -1252,28 +1217,12 @@ subroutine Con2PrimBoundsPolytype(CCTK_ARGUMENTS)
gyzr = 0.5d0 * (gyz(i,j,k) + gyz(i+xoffset,j+yoffset,k+zoffset))
gzzr = 0.5d0 * (gzz(i,j,k) + gzz(i+xoffset,j+yoffset,k+zoffset))
- if (conformal_state .eq. 0) then
- call SpatialDeterminant(gxxl,gxyl,gxzl,gyyl, gyzl,gzzl,avg_detl)
- call SpatialDeterminant(gxxr,gxyr,gxzr,gyyr, gyzr,gzzr,avg_detr)
- call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
- gxxl,gxyl,gxzl,gyyl,gyzl,gzzl)
- call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
- gxxr,gxyr,gxzr,gyyr,gyzr,gzzr)
- else
- psi4r = (0.5d0*(psi(i,j,k)+psi(i+xoffset,j+yoffset,k+zoffset)))**4
- psi4l = (0.5d0*(psi(i,j,k)+psi(i-xoffset,j-yoffset,k-zoffset)))**4
-
- call SpatialDeterminant(psi4l*gxxl,psi4l*gxyl,psi4l*gxzl,&
- psi4l*gyyl,psi4l*gyzl,psi4l*gzzl,avg_detl)
- call SpatialDeterminant(psi4r*gxxr,psi4r*gxyr,psi4r*gxzr,&
- psi4r*gyyr,psi4r*gyzr,psi4r*gzzr,avg_detr)
- call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
- psi4l*gxxl,psi4l*gxyl,psi4l*gxzl,psi4l*gyyl,psi4l*gyzl,&
- psi4l*gzzl)
- call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
- psi4r*gxxr,psi4r*gxyr,psi4r*gxzr,psi4r*gyyr,psi4r*gyzr,&
- psi4r*gzzr)
- end if
+ avg_detl = SPATIAL_DETERMINANT(gxxl,gxyl,gxzl,gyyl, gyzl,gzzl)
+ avg_detr = SPATIAL_DETERMINANT(gxxr,gxyr,gxzr,gyyr, gyzr,gzzr)
+ call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
+ gxxl,gxyl,gxzl,gyyl,gyzl,gzzl)
+ call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
+ gxxr,gxyr,gxzr,gyyr,gyzr,gzzr)
call Con2Prim_ptPolytype(GRHydro_eos_handle, densminus(i,j,k),&
sxminus(i,j,k),syminus(i,j,k),szminus(i,j,k),&
@@ -1350,28 +1299,12 @@ subroutine Con2PrimBoundsTracer(CCTK_ARGUMENTS)
gyzr = 0.5d0 * (gyz(i,j,k) + gyz(i+xoffset,j+yoffset,k+zoffset))
gzzr = 0.5d0 * (gzz(i,j,k) + gzz(i+xoffset,j+yoffset,k+zoffset))
- if (conformal_state .eq. 0) then
- call SpatialDeterminant(gxxl,gxyl,gxzl,gyyl, gyzl,gzzl,avg_detl)
- call SpatialDeterminant(gxxr,gxyr,gxzr,gyyr, gyzr,gzzr,avg_detr)
- call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
- gxxl,gxyl,gxzl,gyyl,gyzl,gzzl)
- call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
+ avg_detl = SPATIAL_DETERMINANT(gxxl,gxyl,gxzl,gyyl, gyzl,gzzl)
+ avg_detr = SPATIAL_DETERMINANT(gxxr,gxyr,gxzr,gyyr, gyzr,gzzr)
+ call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
+ gxxl,gxyl,gxzl,gyyl,gyzl,gzzl)
+ call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
gxxr,gxyr,gxzr,gyyr,gyzr,gzzr)
- else
- psi4r = (0.5d0*(psi(i,j,k)+psi(i+xoffset,j+yoffset,k+zoffset)))**4
- psi4l = (0.5d0*(psi(i,j,k)+psi(i-xoffset,j-yoffset,k-zoffset)))**4
-
- call SpatialDeterminant(psi4l*gxxl,psi4l*gxyl,psi4l*gxzl,&
- psi4l*gyyl,psi4l*gyzl,psi4l*gzzl,avg_detl)
- call SpatialDeterminant(psi4r*gxxr,psi4r*gxyr,psi4r*gxzr,&
- psi4r*gyyr,psi4r*gyzr,psi4r*gzzr,avg_detr)
- call UpperMetric(uxxl,uxyl,uxzl,uyyl,uyzl,uzzl,avg_detl,&
- psi4l*gxxl,psi4l*gxyl,psi4l*gxzl,psi4l*gyyl,psi4l*gyzl,&
- psi4l*gzzl)
- call UpperMetric(uxxr,uxyr,uxzr,uyyr,uyzr,uzzr,avg_detr,&
- psi4r*gxxr,psi4r*gxyr,psi4r*gxzr,psi4r*gyyr,psi4r*gyzr,&
- psi4r*gzzr)
- end if
do itracer=1,number_of_tracers
call Con2Prim_ptBoundsTracer(cons_tracerplus(i,j,k,itracer), &