[Developers] patch: AEIThorns/BSSN_MoL: add new boundary option "nothing at all"

Ian Hawke hawke at aei.mpg.de
Mon May 16 06:03:20 CDT 2005


On Sat, 14 May 2005, Erik Schnetter wrote:

>> * BSSN_MoL schedules code in src/Constraints.F in local mode, so it
>>    will run once for each patch... and this code calls
>>     Boundary_SelectGroupForBC()  to register a boundary condition
>
> This routine needs to be called in level mode.  If necessary, the
> calling function needs to be split.  Would this alone correct the
> problem?

This is not the only routine that would need fixing; the standard 
excision/boundary routines would also need fixing.

>> I propose the enclosed patch to "fix" this behavior:
>
> [schnipp]
>
>> Are there any objections to my applying this patch?
>
> If scheduling things in level mode correct the problem, then this should 
> be done.  If the interactions between BSSN_MoL and Boundary are too 
> complex, then your workaround would be fine.

Not necessarilly complex but certainly a mess; for those that enjoy 
suffering then the attached patch is, I believe, how the appropriate 
routines need splitting and the schedule rewriting. I believe this is the 
correct fix but have only tried it on the testsuites, nothing else.


Ian
-------------- next part --------------
? BSSN_bound_level.diff
Index: schedule.ccl
===================================================================
RCS file: /numrelcvs/AEIThorns/BSSN_MoL/schedule.ccl,v
retrieving revision 1.27
diff -u -r1.27 schedule.ccl
--- schedule.ccl	31 Jan 2005 14:36:58 -0000	1.27
+++ schedule.ccl	16 May 2005 10:58:45 -0000
@@ -287,30 +287,42 @@
   ###  BOUNDARY TERMS THE MOL WAY  ###
   ####################################
 
-  schedule ADM_BSSN_Excision1 in ADM_BSSN_PostStep
+  schedule ADM_BSSN_Excision1_1 in ADM_BSSN_PostStep
   {
     LANG: Fortran
     SYNC: spacemask::mask
-  } "Excision boundaries for BSSN, part 1"
+  } "Excision boundaries for BSSN, part 1 (1)"
+
+  schedule ADM_BSSN_Excision1_2 in ADM_BSSN_PostStep AFTER ADM_BSSN_Excision1_1
+  {
+    LANG: Fortran
+    OPTIONS: LEVEL
+  } "Excision boundaries for BSSN, part 1 (2)"
   
-  schedule GROUP ApplyBCs as BSSN_MoL_ApplyEx1 in ADM_BSSN_PostStep after ADM_BSSN_Excision1 before ADM_BSSN_Excision2
+  schedule GROUP ApplyBCs as BSSN_MoL_ApplyEx1 in ADM_BSSN_PostStep after ADM_BSSN_Excision1_2 before ADM_BSSN_Excision2_1
   {
   } "Apply boundary conditions controlled by thorn Boundary"
   
-  schedule ADM_BSSN_Excision2 in ADM_BSSN_PostStep
+  schedule ADM_BSSN_Excision2_1 in ADM_BSSN_PostStep
   {
     LANG: Fortran
     SYNC: adm_bssn::ADM_BSSN_dir
-  } "Excision boundaries for BSSN, part 2"
+  } "Excision boundaries for BSSN, part 2 (1)"
   
-  schedule GROUP ApplyBCs as BSSN_MoL_ApplyEx2 in ADM_BSSN_PostStep after ADM_BSSN_Excision2 before ADM_BSSN_Boundaries
+  schedule ADM_BSSN_Excision2_2 in ADM_BSSN_PostStep AFTER ADM_BSSN_Excision2_1
+  {
+    LANG: Fortran
+    OPTIONS: LEVEL
+  } "Excision boundaries for BSSN, part 2 (2)"
+  
+  schedule GROUP ApplyBCs as BSSN_MoL_ApplyEx2 in ADM_BSSN_PostStep after ADM_BSSN_Excision2_2 before ADM_BSSN_Boundaries_1
   {
   } "Apply boundary conditions controlled by thorn Boundary"
 
   if (CCTK_Equals(shift_evolution_method,"gamma0") || CCTK_Equals(shift_evolution_method,"gamma1")
    || CCTK_Equals(shift_evolution_method,"gamma2") || CCTK_Equals(shift_evolution_method,"hyp_mindist"))
   {
-    schedule ADM_BSSN_Boundaries in ADM_BSSN_PostStep
+    schedule ADM_BSSN_Boundaries_1 in ADM_BSSN_PostStep
     {
       LANG: Fortran
       SYNC: admbase::lapse
@@ -322,10 +334,15 @@
       SYNC: adm_bssn::ADM_BSSN_curv
       SYNC: adm_bssn::ADM_BSSN_gamma 
       SYNC: adm_bssn::ADM_BSSN_B
-    } "Boundary enforcement for BSSN"
+    } "Boundary enforcement for BSSN (1)"
+    schedule ADM_BSSN_Boundaries_2 in ADM_BSSN_PostStep AFTER ADM_BSSN_Boundaries_1
+    {
+      LANG: Fortran
+      OPTIONS: LEVEL
+    } "Boundary enforcement for BSSN (2)"
   }
   else {
-    schedule ADM_BSSN_Boundaries in ADM_BSSN_PostStep
+    schedule ADM_BSSN_Boundaries_1 in ADM_BSSN_PostStep
     {
       LANG: Fortran
       SYNC: admbase::lapse
@@ -336,10 +353,15 @@
       SYNC: adm_bssn::ADM_BSSN_K
       SYNC: adm_bssn::ADM_BSSN_curv
       SYNC: adm_bssn::ADM_BSSN_gamma 
-    } "Boundary enforcement for BSSN"
+    } "Boundary enforcement for BSSN (1)"
+    schedule ADM_BSSN_Boundaries_2 in ADM_BSSN_PostStep AFTER ADM_BSSN_Boundaries_1
+    {
+      LANG: Fortran
+      OPTIONS: LEVEL
+    } "Boundary enforcement for BSSN (2)"
   }
 
-  schedule GROUP ApplyBCs as BSSN_MoL_ApplyBCs in ADM_BSSN_PostStep after ADM_BSSN_Boundaries
+  schedule GROUP ApplyBCs as BSSN_MoL_ApplyBCs in ADM_BSSN_PostStep after ADM_BSSN_Boundaries_2
   {
   } "Apply boundary conditions controlled by thorn Boundary"
 
@@ -347,7 +369,7 @@
   ### UPDATE THE STANDARD ADM VARIABLES ###
   #########################################
 
-  schedule ADM_BSSN_StandardVariables in ADM_BSSN_PostStep after (ADM_BSSN_Boundaries ApplyBCs)
+  schedule ADM_BSSN_StandardVariables in ADM_BSSN_PostStep after (ADM_BSSN_Boundaries_2 ApplyBCs BSSN_MoL_ApplyBCs)
   {
     LANG: Fortran
   } "Updates the standard ADM variables"
@@ -368,12 +390,18 @@
     SYNC:     ADM_BSSN_cons
   } "Analyse BSSN quantities"
 
-  schedule ADM_BSSN_Constraints in ADM_BSSN_Analysis
+  schedule ADM_BSSN_Constraints1 in ADM_BSSN_Analysis
+  {
+    LANG: Fortran
+  } "Calculate the BSSN constraints"
+
+  schedule ADM_BSSN_Constraints2 in ADM_BSSN_Analysis
   {
     LANG: Fortran
+    OPTIONS: LEVEL
   } "Calculate the BSSN constraints"
 
-  schedule group ApplyBCs as BSSN_MoL_ApplyBCs in ADM_BSSN_Analysis after ADM_BSSN_Constraints
+  schedule group ApplyBCs as BSSN_MoL_ApplyBCs in ADM_BSSN_Analysis after ADM_BSSN_Constraints2
   {
   } "Apply boundary conditions controlled by thorn Boundary"
 
Index: src/Boundaries.F
===================================================================
RCS file: /numrelcvs/AEIThorns/BSSN_MoL/src/Boundaries.F,v
retrieving revision 1.20
diff -u -r1.20 Boundaries.F
--- src/Boundaries.F	31 Jan 2005 14:36:58 -0000	1.20
+++ src/Boundaries.F	16 May 2005 10:58:45 -0000
@@ -17,7 +17,7 @@
 
 
 
-      subroutine ADM_BSSN_Excision1(CCTK_ARGUMENTS)
+      subroutine ADM_BSSN_Excision1_1(CCTK_ARGUMENTS)
 
       implicit none
 
@@ -53,17 +53,44 @@
 
             call ExcisionFindBoundary(ierr,emask,nx,ny,nz)
 
+         end if
+
+      end if
+      
+      end subroutine ADM_BSSN_Excision1_1
+
+      subroutine ADM_BSSN_Excision1_2(CCTK_ARGUMENTS)
+
+      implicit none
+
+      DECLARE_CCTK_ARGUMENTS
+      DECLARE_CCTK_PARAMETERS
+      DECLARE_CCTK_FUNCTIONS
+
+      CCTK_INT, parameter :: ione=1
+      CCTK_INT, parameter :: faces=CCTK_ALL_FACES
+      integer :: ierr
+!     Call Excision routines before symmetries are applied.
+
+      if (excise.eq.1) then
+
+         if (CCTK_EQUALS(excisiontype,'lego')) then
+
+!           Lego sphere or polyhedra.  For excising a figure other than
+!           a cube, we call thorn LegoExcision.  Notice that this could
+!           also be called for an excised cube and should work OK.
+
             ierr = Boundary_SelectGroupForBC (cctkGH, faces, ione, -ione, "spacemask::mask", "None")
 
          end if
 
       end if
       
-      end subroutine ADM_BSSN_Excision1
+      end subroutine ADM_BSSN_Excision1_2
 
 
 
-      subroutine ADM_BSSN_Excision2(CCTK_ARGUMENTS)
+      subroutine ADM_BSSN_Excision2_1(CCTK_ARGUMENTS)
 
       implicit none
 
@@ -100,17 +127,46 @@
             call ExcisionFindNormals(ierr,emask,
      .           ADM_BS_dirx,ADM_BS_diry,ADM_BS_dirz,nx,ny,nz)
            
+         end if
+
+      end if
+
+      end subroutine ADM_BSSN_Excision2_1
+
+      subroutine ADM_BSSN_Excision2_2(CCTK_ARGUMENTS)
+
+      implicit none
+
+      DECLARE_CCTK_ARGUMENTS
+      DECLARE_CCTK_PARAMETERS
+      DECLARE_CCTK_FUNCTIONS
+
+      CCTK_INT, parameter :: ione=1
+      CCTK_INT, parameter :: faces=CCTK_ALL_FACES
+
+      integer :: ierr
+
+!     Call Excision routines before symmetries are applied.
+
+      if (excise.eq.1) then
+
+         if (CCTK_EQUALS(excisiontype,'lego')) then
+
+!           Lego sphere or polyhedra.  For excising a figure other than
+!           a cube, we call thorn LegoExcision.  Notice that this could
+!           also be called for an excised cube and should work OK.
+           
             ierr = Boundary_SelectGroupForBC (cctkGH, faces, ione, -ione, "adm_bssn::ADM_BSSN_dir", "None")
 
          end if
 
       end if
 
-      end subroutine ADM_BSSN_Excision2
+      end subroutine ADM_BSSN_Excision2_2
 
 
 
-      subroutine ADM_BSSN_Boundaries(CCTK_ARGUMENTS)
+      subroutine ADM_BSSN_Boundaries_1(CCTK_ARGUMENTS)
 
       use ADM_BSSN_Scalars
 
@@ -265,6 +321,156 @@
 
 !        None or static: Do nothing.
 !        Zero.  (Also do nothing, for some reason.)
+
+      else if (CCTK_EQUALS(bound,'flat')) then
+
+!        Flat.
+
+      else if (CCTK_EQUALS(bound,'minkowski')) then
+
+!        Minkowski.
+
+      else if (CCTK_EQUALS(bound,'radiative')) then
+
+!        Radiative.
+
+      else if (CCTK_EQUALS(bound,'staticrad')) then
+
+!        Static radiative.
+
+         if (cctk_iteration.ge.1) then
+
+            v0 = sqrt(harmonic_f)
+
+            if (evolveLapse) then
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            alp,alp_p,ADM_BS_alp0,v0)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            ADM_BS_dtalp,ADM_BS_dtalp_p,ADM_BS_dtalp0,v0)
+            end if
+
+            if (evolveShift) then
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            betax,betax_p,ADM_BS_betax0,one)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            betay,betay_p,ADM_BS_betay0,one)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            betaz,betaz_p,ADM_BS_betaz0,one)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            ADM_BS_Bx,ADM_BS_Bx_p,ADM_BS_Bx0,v0)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            ADM_BS_By,ADM_BS_By_p,ADM_BS_By0,v0)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            ADM_BS_Bz,ADM_BS_Bz_p,ADM_BS_Bz0,v0)
+            end if
+
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .      ADM_BS_phi,ADM_BS_phi_p,ADM_BS_phi0,v0)
+
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .         ADM_BS_gxx,ADM_BS_gxx_p,ADM_BS_gxx0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .         ADM_BS_gyy,ADM_BS_gyy_p,ADM_BS_gyy0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .         ADM_BS_gzz,ADM_BS_gzz_p,ADM_BS_gzz0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .         ADM_BS_gxy,ADM_BS_gxy_p,ADM_BS_gxy0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .         ADM_BS_gxz,ADM_BS_gxz_p,ADM_BS_gxz0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .         ADM_BS_gyz,ADM_BS_gyz_p,ADM_BS_gyz0,one)
+
+            if (evolveGamma.and.evolveShift) then
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            ADM_BS_Gx,ADM_BS_Gx_p,ADM_BS_Gx0,one)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            ADM_BS_Gy,ADM_BS_Gy_p,ADM_BS_Gy0,one)
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .            ADM_BS_Gz,ADM_BS_Gz_p,ADM_BS_Gz0,one)
+            end if
+
+            if (evolveK) then
+               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .         ADM_BS_K,ADM_BS_K_p,ADM_BS_K0,v0)
+            end if
+
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .      ADM_BS_Axx,ADM_BS_Axx_p,ADM_BS_Axx0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .      ADM_BS_Ayy,ADM_BS_Ayy_p,ADM_BS_Ayy0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .      ADM_BS_Azz,ADM_BS_Azz_p,ADM_BS_Azz0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .      ADM_BS_Axy,ADM_BS_Axy_p,ADM_BS_Axy0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .      ADM_BS_Axz,ADM_BS_Axz_p,ADM_BS_Axz0,one)
+            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
+     .      ADM_BS_Ayz,ADM_BS_Ayz_p,ADM_BS_Ayz0,one)
+
+         end if
+
+      end if
+
+!     End.
+
+      end subroutine ADM_BSSN_Boundaries_1
+
+      subroutine ADM_BSSN_Boundaries_2(CCTK_ARGUMENTS)
+
+      use ADM_BSSN_Scalars
+
+      implicit none
+
+      DECLARE_CCTK_ARGUMENTS
+      DECLARE_CCTK_PARAMETERS
+      DECLARE_CCTK_FUNCTIONS
+
+      CCTK_INT, parameter :: ione=1
+      CCTK_INT, parameter :: faces=CCTK_ALL_FACES
+
+      integer :: i
+      integer :: ierr
+      integer, save :: scalar_zero_table = -2
+      integer, save :: scalar_one_table  = -2
+      integer, save :: lim_1_spd_v0_table = -2
+      integer, save :: lim_0_spd_v0_table = -2
+      integer, save :: lim_0_spd_iscale_table = -2
+      integer, save :: lim_1_spd_iscale_table = -2
+      integer, save :: lim_aux_spd_v0_table = -2
+
+      integer, dimension(3) :: sw
+
+      CCTK_REAL v0
+      CCTK_REAL scale,iscale
+      CCTK_REAL aux
+
+      CCTK_REAL, PARAMETER :: one  = 1.0D0
+      CCTK_REAL, PARAMETER :: zero = 0.0D0
+
+!     Define sw.
+
+      sw = 1
+
+!     FishEye scale.  When using FishEye, the physical metric far away
+!     is not diag(1,1,1), but rather diag(s**2,s**2,s**2) with s the
+!     "deresolution" parameter, which is contained in the parameter
+!     "fisheye_scale".  Since in BSSN we are use a conformal metric,
+!     it turns out that only the asymptotic value of the conformal
+!     factor ADM_BS_phi is affected.  However, the speed of light is
+!     also affected so the radiative boundaries need to know this.
+
+      scale  = fisheye_scale
+      iscale = 1.0D0/scale
+
+!     Apply boundary conditions.
+
+      if (CCTK_EQUALS(bound,'none').or.
+     $    CCTK_EQUALS(bound,'static').or.
+     $    CCTK_EQUALS(bound,'zero').or.
+     $    CCTK_EQUALS(bound,'newrad')) then
+
+!        None or static: Do nothing.
+!        Zero.  (Also do nothing, for some reason.)
          if (evolveLapse) then
             ierr = Boundary_SelectGroupForBC(cctkGH, faces, ione, -ione, 
      $           "admbase::lapse", "None")
@@ -513,77 +719,6 @@
 
 !        Static radiative.
 
-         if (cctk_iteration.ge.1) then
-
-            v0 = sqrt(harmonic_f)
-
-            if (evolveLapse) then
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            alp,alp_p,ADM_BS_alp0,v0)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            ADM_BS_dtalp,ADM_BS_dtalp_p,ADM_BS_dtalp0,v0)
-            end if
-
-            if (evolveShift) then
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            betax,betax_p,ADM_BS_betax0,one)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            betay,betay_p,ADM_BS_betay0,one)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            betaz,betaz_p,ADM_BS_betaz0,one)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            ADM_BS_Bx,ADM_BS_Bx_p,ADM_BS_Bx0,v0)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            ADM_BS_By,ADM_BS_By_p,ADM_BS_By0,v0)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            ADM_BS_Bz,ADM_BS_Bz_p,ADM_BS_Bz0,v0)
-            end if
-
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .      ADM_BS_phi,ADM_BS_phi_p,ADM_BS_phi0,v0)
-
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .         ADM_BS_gxx,ADM_BS_gxx_p,ADM_BS_gxx0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .         ADM_BS_gyy,ADM_BS_gyy_p,ADM_BS_gyy0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .         ADM_BS_gzz,ADM_BS_gzz_p,ADM_BS_gzz0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .         ADM_BS_gxy,ADM_BS_gxy_p,ADM_BS_gxy0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .         ADM_BS_gxz,ADM_BS_gxz_p,ADM_BS_gxz0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .         ADM_BS_gyz,ADM_BS_gyz_p,ADM_BS_gyz0,one)
-
-            if (evolveGamma.and.evolveShift) then
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            ADM_BS_Gx,ADM_BS_Gx_p,ADM_BS_Gx0,one)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            ADM_BS_Gy,ADM_BS_Gy_p,ADM_BS_Gy0,one)
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .            ADM_BS_Gz,ADM_BS_Gz_p,ADM_BS_Gz0,one)
-            end if
-
-            if (evolveK) then
-               call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .         ADM_BS_K,ADM_BS_K_p,ADM_BS_K0,v0)
-            end if
-
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .      ADM_BS_Axx,ADM_BS_Axx_p,ADM_BS_Axx0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .      ADM_BS_Ayy,ADM_BS_Ayy_p,ADM_BS_Ayy0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .      ADM_BS_Azz,ADM_BS_Azz_p,ADM_BS_Azz0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .      ADM_BS_Axy,ADM_BS_Axy_p,ADM_BS_Axy0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .      ADM_BS_Axz,ADM_BS_Axz_p,ADM_BS_Axz0,one)
-            call BSSN_MoL_staticrad(cctk_bbox,nx,ny,nz,dt,dx,dy,dz,x,y,z,r,
-     .      ADM_BS_Ayz,ADM_BS_Ayz_p,ADM_BS_Ayz0,one)
-
-         end if
-
 !        Must execute "None" boundary condition on all variables, so
 !        that symmetry bcs will be properly executed on them
          if (evolveLapse) then
@@ -622,7 +757,7 @@
 
 !     End.
 
-      end subroutine ADM_BSSN_Boundaries
+      end subroutine ADM_BSSN_Boundaries_2
 
 
 
Index: src/Constraints.F
===================================================================
RCS file: /numrelcvs/AEIThorns/BSSN_MoL/src/Constraints.F,v
retrieving revision 1.5
diff -u -r1.5 Constraints.F
--- src/Constraints.F	8 Dec 2004 15:53:16 -0000	1.5
+++ src/Constraints.F	16 May 2005 10:58:45 -0000
@@ -5,7 +5,7 @@
 #include "cctk_Functions.h"
 #include "cctk_Parameters.h"
 
-      subroutine ADM_BSSN_Constraints (CCTK_ARGUMENTS)
+      subroutine ADM_BSSN_Constraints1 (CCTK_ARGUMENTS)
       implicit none
       DECLARE_CCTK_ARGUMENTS
       DECLARE_CCTK_FUNCTIONS
@@ -88,10 +88,20 @@
 #include "macro/BSHAMSTD_undefine.h"
 #include "macro/BSMOMSTD_undefine.h"
 #include "macro/BSGAMMA_undefine.h"
+
+      end subroutine ADM_BSSN_Constraints1
+
+      subroutine ADM_BSSN_Constraints2 (CCTK_ARGUMENTS)
+      implicit none
+      DECLARE_CCTK_ARGUMENTS
+      DECLARE_CCTK_FUNCTIONS
+      DECLARE_CCTK_PARAMETERS
+      
+      integer ierr
       
       ierr = Boundary_SelectGroupForBC
      $     (cctkGH, CCTK_ALL_FACES, 1, -1,
      $     "ADM_BSSN::ADM_BSSN_cons", "Flat")
       if (ierr/=0) call CCTK_WARN(0, "error trying to select Flat BC for ADM_BSSN::ADM_BSSN_cons")
       
-      end subroutine ADM_BSSN_Constraints
+      end subroutine ADM_BSSN_Constraints2


More information about the Developers mailing list