[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