[Commits] [svn:einsteintoolkit] GRHydro/trunk/src/ (Rev. 637)

rhaas at tapir.caltech.edu rhaas at tapir.caltech.edu
Tue Apr 15 14:50:00 CDT 2014


User: rhaas
Date: 2014/04/15 02:50 PM

Modified:
 /trunk/src/
  GRHydro_Boundaries.F90

Log:
 GRHydro: clean up sync_conservatives_only primitives bc calls
 
 Define helper routine to do all boundary registration for a single bc
 type. This avoids code duplication and the possibility that eg flat and
 none are applied to different sets of variables.

File Changes:

Directory: /trunk/src/
======================

File [modified]: GRHydro_Boundaries.F90
Delta lines: +114 -182
===================================================================
--- trunk/src/GRHydro_Boundaries.F90	2014-04-15 19:49:58 UTC (rev 636)
+++ trunk/src/GRHydro_Boundaries.F90	2014-04-15 19:50:00 UTC (rev 637)
@@ -296,13 +296,15 @@
 
 
 
-subroutine GRHydro_SelectPrimitiveInitialGuessesBoundaries(CCTK_ARGUMENTS)
+subroutine GRHydro_SelectPrimitiveInitialGuessesBoundariesForMethod(CCTK_ARGUMENTS, bcname)
   
   implicit none
   
   DECLARE_CCTK_ARGUMENTS
   DECLARE_CCTK_PARAMETERS
   DECLARE_CCTK_FUNCTIONS
+
+  character(len=*), INTENT(IN) :: bcname
   
   integer :: ierr
   CCTK_INT :: GRHydro_UseGeneralCoordinates, general_coordinates
@@ -314,116 +316,80 @@
 
   general_coordinates = GRHydro_UseGeneralCoordinates(cctkGH)
 
-!!$Flat boundaries if required  
-
 ! The commented out code are those primitives which do not require and explicit
 ! initial guess for Con2Prim. The guesses are either not needed or computed from other quantities!
 
-  if (verbose.eq.1) call CCTK_INFO("Selecting primitive BC")
+  !ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+  !      "HydroBase::w_lorentz", bcname)
+  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+        "HydroBase::rho", bcname)
+  !ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+  !      "HydroBase::press", bcname)
+  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+        "HydroBase::eps", bcname)
+  if (general_coordinates .ne. 0) then
+     ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+           "GRHydro::lvel", bcname)
+  else
+     ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+           "HydroBase::vel", bcname)
+  endif
+  if(evolve_mhd.ne.0) then
+       if (general_coordinates .ne. 0) then
+          ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+                "GRHydro::lBvec", bcname)
+       else
+          ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+                "HydroBase::Bvec", bcname)
+       endif
+  endif
 
+  !if(evolve_tracer.ne.0) then
+  !  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+  !         "GRHydro::GRHydro_tracers", bcname)
+  !endif
 
-  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_y_e.ne.0) then
+  !  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+  !         "HydroBase::Y_e", bcname)
+  !endif
 
-    !if(evolve_tracer.ne.0) then 
-    !  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
-    !         "GRHydro::GRHydro_tracers", "Flat")
-    !endif
+  if(evolve_temper.ne.0) then
+     ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+           "HydroBase::temperature", bcname)
+     !ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+     !      "HydroBase::entropy", bcname)
+  endif
 
-    !if(evolve_y_e.ne.0) then
-    !  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
-    !         "HydroBase::Y_e", "Flat")
-    !endif
+  if (ierr < 0) call CCTK_WARN(0, "problems with applying the chosen boundary condition")
 
-    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
+end subroutine GRHydro_SelectPrimitiveInitialGuessesBoundariesForMethod
 
+subroutine GRHydro_SelectPrimitiveInitialGuessesBoundaries(CCTK_ARGUMENTS)
 
-  endif
+  implicit none
 
-  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
+  DECLARE_CCTK_ARGUMENTS
+  DECLARE_CCTK_PARAMETERS
+  DECLARE_CCTK_FUNCTIONS
 
-    !if(evolve_tracer.ne.0) then 
-    !   ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
-    !         "GRHydro::GRHydro_tracers", "None")
-    !  
-    !endif
+  if (verbose.eq.1) call CCTK_INFO("Selecting primitive BC")
 
-    !if(evolve_y_e.ne.0) then
-    !   ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
-    !         "HydroBase::Y_e", "None")
-    !  
-    !endif
+!!$Flat boundaries if required
+  if (CCTK_EQUALS(bound,"flat")) then
+    call GRHydro_SelectPrimitiveInitialGuessesBoundariesForMethod(CCTK_PASS_FTOF, "Flat")
+  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
-
+!!$None boundaries if required
+  if (CCTK_EQUALS(bound,"none")) then
+    call GRHydro_SelectPrimitiveInitialGuessesBoundariesForMethod(CCTK_PASS_FTOF, "None")
   end if
 
+!!$Scalar boundaries if required
   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_SelectPrimitiveInitialGuessesBoundaries
 
 
@@ -433,7 +399,7 @@
 
 
 
-subroutine GRHydro_SelectPrimitiveBoundaries(CCTK_ARGUMENTS)
+subroutine GRHydro_SelectPrimitiveBoundariesForMethod(CCTK_ARGUMENTS, bcname)
   
   implicit none
   
@@ -441,6 +407,8 @@
   DECLARE_CCTK_PARAMETERS
   DECLARE_CCTK_FUNCTIONS
   
+  character(len=*), INTENT(IN) :: bcname
+
   integer :: ierr
   CCTK_INT :: GRHydro_UseGeneralCoordinates, general_coordinates
 
@@ -451,113 +419,77 @@
 
   general_coordinates = GRHydro_UseGeneralCoordinates(cctkGH)
 
-!!$Flat boundaries if required  
+  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+        "HydroBase::w_lorentz", bcname)
+  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+        "HydroBase::rho", bcname)
+  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+        "HydroBase::press", bcname)
+  ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+        "HydroBase::eps", bcname)
+  if (general_coordinates .ne. 0) then
+     ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+           "GRHydro::lvel", bcname)
+  else
+     ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+           "HydroBase::vel", bcname)
+  endif
+  if(evolve_mhd.ne.0) then
+       if (general_coordinates .ne. 0) then
+          ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+                "GRHydro::lBvec", bcname)
+       else
+          ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+                "HydroBase::Bvec", bcname)
+       endif
+  endif
 
-  if (verbose.eq.1) call CCTK_INFO("Selecting primitive BC")
+  if(evolve_tracer.ne.0) then
+           ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+                 "GRHydro::GRHydro_tracers", bcname)
+  endif
 
+  if(evolve_y_e.ne.0) then
+           ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+                 "HydroBase::Y_e", bcname)
+  endif
 
-  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_temper.ne.0) then
+     ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+           "HydroBase::temperature", bcname)
+     ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
+           "HydroBase::entropy", bcname)
+  endif
 
-    if(evolve_tracer.ne.0) then 
-             ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
-                   "GRHydro::GRHydro_tracers", "Flat")
-    endif
+  if (ierr < 0) call CCTK_WARN(0, "problems with applying the chosen boundary condition")
 
-    if(evolve_y_e.ne.0) then
-             ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
-                   "HydroBase::Y_e", "Flat")
-    endif
+end subroutine GRHydro_SelectPrimitiveBoundariesForMethod
 
-    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
+subroutine GRHydro_SelectPrimitiveBoundaries(CCTK_ARGUMENTS)
 
+  implicit none
 
-  endif
+  DECLARE_CCTK_ARGUMENTS
+  DECLARE_CCTK_PARAMETERS
+  DECLARE_CCTK_FUNCTIONS
 
-  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 (verbose.eq.1) call CCTK_INFO("Selecting primitive BC")
 
-    if(evolve_tracer.ne.0) then 
-       ierr = ierr + Boundary_SelectGroupForBC(cctkGH, faces, GRHydro_stencil, -ione, &
-             "GRHydro::GRHydro_tracers", "None")
-      
-    endif
+!!$Flat boundaries if required
+  if (CCTK_EQUALS(bound,"flat")) then
+    call GRHydro_SelectPrimitiveBoundariesForMethod(CCTK_ARGUMENTS, "Flat")
+  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
-
+!!$None boundaries if required
+  if (CCTK_EQUALS(bound,"none")) then
+    call GRHydro_SelectPrimitiveBoundariesForMethod(CCTK_ARGUMENTS, "None")
   end if
 
+!!$Scalar boundaries if required
   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_SelectPrimitiveBoundaries
 
 



More information about the Commits mailing list