[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