From 1d8c13a277d8632a0eccac4b3152696b33bad208 Mon Sep 17 00:00:00 2001 From: schnetter Date: Wed, 20 Feb 2008 00:26:48 +0000 Subject: When type="multipatch", and when the aliased function MultiPatch_ConvertFromPhysicalBoundary is available, then call this function instead of ConvertFromPhysicalBoundary. This is necessary to set up the coordinate extent correctly when different patches have different boundary sizes. git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/CartGrid3D/trunk@236 c78560ca-4b45-4335-b268-5f3340f3cb52 --- interface.ccl | 21 +++++++++++++++++---- src/CartGrid3D.c | 18 +++++++++++++----- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/interface.ccl b/interface.ccl index e19dcab..f494d3a 100644 --- a/interface.ccl +++ b/interface.ccl @@ -32,6 +32,11 @@ USES FUNCTION ConvertFromPhysicalBoundary +CCTK_INT FUNCTION \ + MultiPatch_GetMap \ + (CCTK_POINTER_TO_CONST IN cctkGH) +USES FUNCTION MultiPatch_GetMap + CCTK_INT FUNCTION \ MultiPatch_GetDomainSpecification \ (CCTK_INT IN map, \ @@ -45,10 +50,18 @@ CCTK_INT FUNCTION \ CCTK_REAL OUT ARRAY spacing) USES FUNCTION MultiPatch_GetDomainSpecification -CCTK_INT FUNCTION \ - MultiPatch_GetMap \ - (CCTK_POINTER_TO_CONST IN cctkGH) -USES FUNCTION MultiPatch_GetMap +CCTK_INT FUNCTION \ + MultiPatch_ConvertFromPhysicalBoundary \ + (CCTK_INT IN map, \ + CCTK_INT IN size, \ + CCTK_REAL IN ARRAY physical_min, \ + CCTK_REAL IN ARRAY physical_max, \ + CCTK_REAL OUT ARRAY interior_min, \ + CCTK_REAL OUT ARRAY interior_max, \ + CCTK_REAL OUT ARRAY exterior_min, \ + CCTK_REAL OUT ARRAY exterior_max, \ + CCTK_REAL IN ARRAY spacing) +USES FUNCTION MultiPatch_ConvertFromPhysicalBoundary diff --git a/src/CartGrid3D.c b/src/CartGrid3D.c index d2da70f..1b6c967 100644 --- a/src/CartGrid3D.c +++ b/src/CartGrid3D.c @@ -284,11 +284,19 @@ void CartGrid3D_SetRanges(CCTK_ARGUMENTS) spacing[d] *= pow(cctkGH->cctk_convfac, cctkGH->cctk_convlevel); } - ierr = ConvertFromPhysicalBoundary - (3, physical_min, physical_max, interior_min, interior_max, - exterior_min, exterior_max, spacing); - if (ierr) - CCTK_WARN (0, "error returned from function ConvertFromPhysicalBoundary"); + if (CCTK_IsFunctionAliased ("MultiPatch_ConvertFromPhysicalBoundary")) { + ierr = MultiPatch_ConvertFromPhysicalBoundary + (map, 3, physical_min, physical_max, interior_min, interior_max, + exterior_min, exterior_max, spacing); + if (ierr) + CCTK_WARN (0, "error returned from function MultiPatch_ConvertFromPhysicalBoundary"); + } else { + ierr = ConvertFromPhysicalBoundary + (3, physical_min, physical_max, interior_min, interior_max, + exterior_min, exterior_max, spacing); + if (ierr) + CCTK_WARN (0, "error returned from function ConvertFromPhysicalBoundary"); + } for (d=0; d<3; ++d) { origin[d] = exterior_min[d]; -- cgit v1.2.3