[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