User: rhaas Date: 2014/04/15 02:49 PM
Modified: /trunk/src/ GRHydro_CalcUpdate.F90
Log: GRHydro: low level optimizations
File Changes:
Directory: /trunk/src/ ======================
File [modified]: GRHydro_CalcUpdate.F90 Delta lines: +11 -7 =================================================================== --- trunk/src/GRHydro_CalcUpdate.F90 2014-04-15 19:49:43 UTC (rev 630) +++ trunk/src/GRHydro_CalcUpdate.F90 2014-04-15 19:49:45 UTC (rev 631) @@ -39,7 +39,7 @@ DECLARE_CCTK_FUNCTIONS
CCTK_INT :: i,j,k,itracer - CCTK_REAL :: idx, alp_l, alp_r, Bcons_l, Bcons_r, alp_tmp + CCTK_REAL :: idx, idy, idz, alp_l, alp_r, Bcons_l, Bcons_r, alp_tmp
idx = 1.d0 / CCTK_DELTA_SPACE(flux_direction)
@@ -300,22 +300,26 @@ flux_direction.eq.1) then ! HACK: x direction is last ! FIXME: I think one could wrap all of this into a single do loop and remove the ! Evec storage + ! idx differs from idx which was 1d0/CCTK_DELTA_SPACE(flux_direction) + idx = 1d0 / CCTK_DELTA_SPACE(1) + idy = 1d0 / CCTK_DELTA_SPACE(2) + idz = 1d0 / CCTK_DELTA_SPACE(3) !$OMP PARALLEL DO PRIVATE(i,j,k) do k = GRHydro_stencil + 1, cctk_lsh(3) - GRHydro_stencil do j = GRHydro_stencil + 1, cctk_lsh(2) - GRHydro_stencil do i = GRHydro_stencil + 1, cctk_lsh(1) - GRHydro_stencil Bconsrhs(i,j,k,1) = - 0.5d0 * ((Evec(i-1,j ,k-1,2)-Evec(i-1,j ,k ,2)) & - + (Evec(i ,j ,k-1,2)-Evec(i ,j ,k ,2))) / CCTK_DELTA_SPACE(3) & + + (Evec(i ,j ,k-1,2)-Evec(i ,j ,k ,2))) * idz & - 0.5d0 * ((Evec(i-1,j ,k ,3)-Evec(i-1,j-1,k ,3)) & - + (Evec(i ,j ,k ,3)-Evec(i ,j-1,k ,3))) / CCTK_DELTA_SPACE(2) + + (Evec(i ,j ,k ,3)-Evec(i ,j-1,k ,3))) * idy Bconsrhs(i,j,k,2) = - 0.5d0 * ((Evec(i-1,j-1,k ,3)-Evec(i ,j-1,k ,3)) & - + (Evec(i-1,j ,k ,3)-Evec(i ,j ,k ,3))) / CCTK_DELTA_SPACE(1) & + + (Evec(i-1,j ,k ,3)-Evec(i ,j ,k ,3))) * idx & - 0.5d0 * ((Evec(i ,j-1,k ,1)-Evec(i ,j-1,k-1,1)) & - + (Evec(i ,j ,k ,1)-Evec(i ,j ,k-1,1))) / CCTK_DELTA_SPACE(3) + + (Evec(i ,j ,k ,1)-Evec(i ,j ,k-1,1))) * idz Bconsrhs(i,j,k,3) = - 0.5d0 * ((Evec(i ,j-1,k-1,1)-Evec(i ,j ,k-1,1)) & - + (Evec(i ,j-1,k ,1)-Evec(i ,j ,k ,1))) / CCTK_DELTA_SPACE(2) & + + (Evec(i ,j-1,k ,1)-Evec(i ,j ,k ,1))) * idy & - 0.5d0 * ((Evec(i ,j ,k-1,2)-Evec(i-1,j ,k-1,2)) & - + (Evec(i ,j ,k ,2)-Evec(i-1,j ,k ,2))) / CCTK_DELTA_SPACE(1) + + (Evec(i ,j ,k ,2)-Evec(i-1,j ,k ,2))) * idx enddo enddo enddo
commits@lists.einsteintoolkit.org