[Commits] [svn:einsteintoolkit] GRHydro/trunk/ (Rev. 340)
rhaas at tapir.caltech.edu
rhaas at tapir.caltech.edu
Tue Jun 5 15:25:45 CDT 2012
User: rhaas
Date: 2012/06/05 03:25 PM
Modified:
/trunk/
param.ccl, schedule.ccl
/trunk/src/
GRHydro_Boundaries.F90, GRHydro_Con2Prim.F90
Log:
GRHydro: Added parameter to perform sync on conserved quantities only.
Primitives are only sync'ed after regridding to get initial guesses.
Schedule Primitive boundary call in PostRegridInitial if sync_only_coserved == yes.
Fixed issue with the sync call in CCTK_EVOL after MoL_Evolution when sync_conserved_only==yes:
Conserved vars must be synced here as well, otherwise conserved vars are reset to atmospshere whereas
primitives are not! This is wrong.
Patches by Christian Reisswig.
File Changes:
Directory: /trunk/src/
======================
File [modified]: GRHydro_Boundaries.F90
Delta lines: +247 -81
===================================================================
--- trunk/src/GRHydro_Boundaries.F90 2012-05-28 22:19:32 UTC (rev 339)
+++ trunk/src/GRHydro_Boundaries.F90 2012-06-05 20:25:44 UTC (rev 340)
@@ -66,12 +66,14 @@
general_coordinates = GRHydro_UseGeneralCoordinates(cctkGH)
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::rho")
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::press")
+ !if (sync_conserved_only .eq. 0) then
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::rho")
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::press")
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::w_lorentz")
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::eps")
+ !endif
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::dens")
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::tau")
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::w_lorentz")
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::eps")
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::GRHydro_C2P_failed")
if(evolve_mhd.ne.0.and.clean_divergence.ne.0) then
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::psidc")
@@ -84,27 +86,35 @@
endif
if(evolve_y_e.ne.0) then
+ !if (sync_conserved_only .eq. 0) then
call SetCartSymGN(ierr, cctkGH, sym, "HydroBase::Y_e")
+ !endif
call SetCartSymGN(ierr, cctkGH, sym, "GRHydro::Y_e_con")
endif
if(evolve_temper.ne.0) then
- call SetCartSymGN(ierr, cctkGH, sym, "HydroBase::temperature")
- call SetCartSymGN(ierr, cctkGH, sym, "HydroBase::entropy")
+ !if (sync_conserved_only .eq. 0) then
+ call SetCartSymGN(ierr, cctkGH, sym, "HydroBase::temperature")
+ call SetCartSymGN(ierr, cctkGH, sym, "HydroBase::entropy")
+ !endif
endif
sym(1) = -1
sym(2) = 1
sym(3) = 1
- if (general_coordinates .ne. 0) then
- call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::lvel[0]")
- else
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::vel[0]")
- endif
+ !if (sync_conserved_only .eq. 0) then
+ if (general_coordinates .ne. 0) then
+ call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::lvel[0]")
+ else
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::vel[0]")
+ endif
+ !endif
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::scon[0]")
if(evolve_mhd.ne.0) then
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::Bvec[0]")
+ !if (sync_conserved_only .eq. 0) then
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::Bvec[0]")
+ !endif
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::Bcons[0]")
endif
@@ -112,14 +122,18 @@
sym(2) = -1
sym(3) = 1
- if (general_coordinates .ne. 0) then
- call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::lvel[1]")
- else
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::vel[1]")
- endif
+ !if (sync_conserved_only .eq. 0) then
+ if (general_coordinates .ne. 0) then
+ call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::lvel[1]")
+ else
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::vel[1]")
+ endif
+ !endif
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::scon[1]")
if(evolve_mhd.ne.0) then
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::Bvec[1]")
+ !if (sync_conserved_only .eq. 0) then
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::Bvec[1]")
+ !endif
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::Bcons[1]")
endif
@@ -127,15 +141,19 @@
sym(2) = 1
sym(3) = -1
- if (general_coordinates .ne. 0) then
- call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::lvel[2]")
- else
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::vel[2]")
- endif
+ !if (sync_conserved_only .eq. 0) then
+ if (general_coordinates .ne. 0) then
+ call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::lvel[2]")
+ else
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::vel[2]")
+ endif
+ !endif
call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::scon[2]")
if(evolve_mhd.ne.0) then
- call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::Bvec[2]")
- call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::Bcons[2]")
+ !if (sync_conserved_only .eq. 0) then
+ call SetCartSymVN(ierr, cctkGH, sym, "HydroBase::Bvec[2]")
+ !endif
+ call SetCartSymVN(ierr, cctkGH, sym, "GRHydro::Bcons[2]")
endif
! check that storage for shift is active
@@ -190,28 +208,32 @@
"GRHydro::tau", "Flat")
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::scon", "Flat")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::w_lorentz", "Flat")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::rho", "Flat")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::press", "Flat")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::eps", "Flat")
- if (general_coordinates .ne. 0) then
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "GRHydro::lvel", "Flat")
- else
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::vel", "Flat")
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::w_lorentz", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::rho", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::press", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::eps", "Flat")
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lvel", "Flat")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::vel", "Flat")
+ endif
endif
if(evolve_mhd.ne.0) then
- if (general_coordinates .ne. 0) then
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "GRHydro::lBvec", "Flat")
- else
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::Bvec", "Flat")
+ if (sync_conserved_only .eq. 0) then
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lBvec", "Flat")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::Bvec", "Flat")
+ endif
endif
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::Bcons", "Flat")
@@ -222,24 +244,30 @@
endif
if(evolve_tracer.ne.0) then
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::GRHydro_tracers", "Flat")
+ endif
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "GRHydro::GRHydro_tracers", "Flat")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::GRHydro_cons_tracers", "Flat")
endif
if(evolve_y_e.ne.0) then
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::Y_e", "Flat")
+ endif
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::Y_e", "Flat")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::Y_e_con", "Flat")
endif
if(evolve_temper.ne.0) then
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::temperature", "Flat")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::entropy", "Flat")
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::temperature", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::entropy", "Flat")
+ endif
endif
@@ -252,29 +280,34 @@
"GRHydro::tau", "None")
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::scon", "None")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::w_lorentz", "None")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::rho", "None")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::press", "None")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::eps", "None")
- if (general_coordinates .ne. 0) then
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "GRHydro::lvel", "None")
- else
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::vel", "None")
+
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::w_lorentz", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::rho", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::press", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::eps", "None")
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lvel", "None")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::vel", "None")
+ endif
endif
if(evolve_mhd.ne.0) then
- if (general_coordinates .ne. 0) then
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "GRHydro::lBvec", "None")
- else
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::Bvec", "None")
+ if (sync_conserved_only .eq. 0) then
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lBvec", "None")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::Bvec", "None")
+ endif
endif
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::Bcons", "None")
@@ -285,34 +318,167 @@
endif
if(evolve_tracer.ne.0) then
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::GRHydro_tracers", "None")
+ endif
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "GRHydro::GRHydro_tracers", "None")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::GRHydro_cons_tracers", "None")
endif
if(evolve_y_e.ne.0) then
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::Y_e", "None")
+ endif
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::Y_e", "None")
- ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
"GRHydro::Y_e_con", "None")
endif
if(evolve_temper.ne.0) then
+ if (sync_conserved_only .eq. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::temperature", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::entropy", "None")
+ endif
+ endif
+
+ endif
+
+ if (CCTK_EQUALS(bound,"scalar")) then
+ call CCTK_WARN(0, "Until somebody uses this I see no reason to support it")
+ end if
+
+ if (ierr < 0) call CCTK_WARN(0, "problems with applying the chosen boundary condition")
+
+end subroutine GRHydro_Boundaries
+
+
+
+subroutine GRHydro_SelectPrimitiveBoundaries(CCTK_ARGUMENTS)
+
+ implicit none
+
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_PARAMETERS
+ DECLARE_CCTK_FUNCTIONS
+
+ integer, dimension(3) :: sw
+ integer :: ierr = 0
+ integer :: i,j,k
+ CCTK_INT :: GRHydro_UseGeneralCoordinates, general_coordinates
+
+ CCTK_INT, parameter :: faces=CCTK_ALL_FACES
+ CCTK_INT, parameter :: ione=1
+
+ sw = GRHydro_stencil
+
+ general_coordinates = GRHydro_UseGeneralCoordinates(cctkGH)
+
+!!$Flat boundaries if required
+
+ if (CCTK_EQUALS(bound,"flat")) then
+
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::w_lorentz", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::rho", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::press", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::eps", "Flat")
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lvel", "Flat")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::vel", "Flat")
+ endif
+ if(evolve_mhd.ne.0) then
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lBvec", "Flat")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::Bvec", "Flat")
+ endif
+ endif
+
+ if(evolve_tracer.ne.0) then
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::temperature", "None")
+ "GRHydro::GRHydro_tracers", "Flat")
+ endif
+
+ if(evolve_y_e.ne.0) then
ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
- "HydroBase::entropy", "None")
+ "HydroBase::Y_e", "Flat")
endif
+ if(evolve_temper.ne.0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::temperature", "Flat")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::entropy", "Flat")
+ endif
+
+
endif
+ if (CCTK_EQUALS(bound,"none")) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::w_lorentz", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::rho", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::press", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::eps", "None")
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lvel", "None")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::vel", "None")
+ endif
+
+ if(evolve_mhd.ne.0) then
+ if (general_coordinates .ne. 0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::lBvec", "None")
+ else
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::Bvec", "None")
+ endif
+
+ endif
+
+ if(evolve_tracer.ne.0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "GRHydro::GRHydro_tracers", "None")
+
+ endif
+
+ if(evolve_y_e.ne.0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::Y_e", "None")
+
+ endif
+
+ if(evolve_temper.ne.0) then
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::temperature", "None")
+ ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+ "HydroBase::entropy", "None")
+ endif
+
+ end if
+
if (CCTK_EQUALS(bound,"scalar")) then
call CCTK_WARN(0, "Until somebody uses this I see no reason to support it")
end if
if (ierr < 0) call CCTK_WARN(0, "problems with applying the chosen boundary condition")
-end subroutine GRHydro_Boundaries
+end subroutine GRHydro_SelectPrimitiveBoundaries
-
File [modified]: GRHydro_Con2Prim.F90
Delta lines: +2 -0
===================================================================
--- trunk/src/GRHydro_Con2Prim.F90 2012-05-28 22:19:32 UTC (rev 339)
+++ trunk/src/GRHydro_Con2Prim.F90 2012-06-05 20:25:44 UTC (rev 340)
@@ -475,6 +475,7 @@
df = 1.0d0 - dpressbydrho*drhobydpress - &
dpressbydeps*depsbydpress
+
pold = pnew
pnew = max(pold - f/df, pmin)
@@ -555,6 +556,7 @@
vely = uxy * vlowx + uyy * vlowy + uyz * vlowz
velz = uxz * vlowx + uyz * vlowy + uzz * vlowz
+
!!$If all else fails, use the polytropic EoS
if(epsilon .lt. 0.0d0) then
Directory: /trunk/
==================
File [modified]: param.ccl
Delta lines: +9 -0
===================================================================
--- trunk/param.ccl 2012-05-28 22:19:32 UTC (rev 339)
+++ trunk/param.ccl 2012-06-05 20:25:44 UTC (rev 340)
@@ -598,3 +598,12 @@
boolean disable_sync_and_tmunu_after_MoL "Do not sync/prolongate and reset Tmunu after MoL integration is done" STEERABLE=ALWAYS
{
} "no"
+
+
+# This can improve the performance on many cores, but may be dangerous
+# (it seems to work in simple testcases, but morde complicated settings may fail)
+# If you encounter strange behavior, switch this OFF
+BOOLEAN sync_conserved_only "Only sync evolved conserved quantities during evolution."
+{
+} no
+
File [modified]: schedule.ccl
Delta lines: +58 -1
===================================================================
--- trunk/schedule.ccl 2012-05-28 22:19:32 UTC (rev 339)
+++ trunk/schedule.ccl 2012-06-05 20:25:44 UTC (rev 340)
@@ -998,6 +998,8 @@
{
} "GRHydro Boundary conditions group"
+if (!sync_conserved_only)
+{
schedule GRHydro_Boundaries IN HydroBase_Select_Boundaries AS GRHydro_Bound
{
LANG: Fortran
@@ -1022,7 +1024,62 @@
SYNC: lvel
SYNC: lBvec
} "Select GRHydro boundary conditions"
-
+}
+else
+{
+schedule GRHydro_Boundaries IN HydroBase_Select_Boundaries AS GRHydro_Bound
+{
+ LANG: Fortran
+ OPTIONS: LEVEL
+ SYNC: dens
+ SYNC: tau
+ SYNC: scon
+ SYNC: Bcons
+ SYNC: psidc
+ SYNC: GRHydro_cons_tracers
+ SYNC: Y_e_con
+} "Select GRHydro boundary conditions"
+
+ # after a regrid Cactus relies on the boundary thorns to fill in the outer
+ # and symmetry boundaries (we need valid data for the initial guess in Con2Prim)
+ schedule group GRHydro_PrimitiveBoundaries IN CCTK_POSTREGRID BEFORE MoL_PostStep
+ {
+ } "Apply boundary conditions to primitives"
+ schedule group GRHydro_PrimitiveBoundaries IN CCTK_POSTREGRIDINITIAL BEFORE MoL_PostStep
+ {
+ } "Apply boundary conditions to primitives"
+
+ # This is necessary, otherwise we are inconsistent in atmosphere treatment of conserved and primitive variables
+ if(!disable_sync_and_tmunu_after_MoL) {
+ schedule group GRHydro_PrimitiveBoundaries IN CCTK_EVOL AFTER (MoL_Evolution,GRHydro_AtmosphereReset,sync_GRHydro_C2P_failed) BEFORE HydroBase_Boundaries
+ {
+ } "Apply boundary conditions to primitives"
+ }
+
+ schedule GRHydro_SelectPrimitiveBoundaries IN GRHydro_PrimitiveBoundaries
+ {
+ LANG: Fortran
+ OPTIONS: LEVEL
+ # do a sync to be very sure we have proper initial guesses everywhere
+ SYNC: HydroBase::w_lorentz
+ SYNC: HydroBase::rho
+ SYNC: HydroBase::press
+ SYNC: HydroBase::eps
+ SYNC: HydroBase::vel
+ SYNC: HydroBase::Bvec
+ SYNC: hydrobase::temperature
+ SYNC: hydrobase::entropy
+ SYNC: hydrobase::Y_e
+ SYNC: lvel
+ SYNC: lBvec
+ SYNC: GRHydro_tracers
+ } "Select primitive variables for boudary conditions"
+ schedule group ApplyBCs AS GRHydro_ApplyPrimitiveBCs in GRHydro_PrimitiveBoundaries AFTER GRHydro_SelectPrimitiveBoundaries
+ {
+ } "Apply boundary conditions to primitive variables"
+
+}
+
############################################################
### Compute first differences of rho for mesh refinement ###
############################################################
More information about the Commits
mailing list