diff --git a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F index 227fbde862..4283f46c60 100644 --- a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F +++ b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F @@ -7127,12 +7127,12 @@ subroutine atm_compute_solve_diagnostics_work(nCells, nEdges, nVertices, & logical :: reconstruct_v - + call mpas_timer_start('atm_comp_solve_diag_7134') ! ! Compute height on cell edges at velocity locations ! !$acc parallel default(present) - !$acc loop gang + !$acc loop gang worker do iEdge=edgeStart,edgeEnd cell1 = cellsOnEdge(1,iEdge) cell2 = cellsOnEdge(2,iEdge) @@ -7145,10 +7145,9 @@ subroutine atm_compute_solve_diagnostics_work(nCells, nEdges, nVertices, & ! the first openmp barrier below is set so that ke_edge is computed ! it would be good to move this somewhere else? - efac = dcEdge(iEdge)*dvEdge(iEdge) !$acc loop vector do k=1,nVertLevels - ke_edge(k,iEdge) = efac*u(k,iEdge)**2 + ke_edge(k,iEdge) = dcEdge(iEdge)*dvEdge(iEdge)*u(k,iEdge)**2 end do end do @@ -7156,19 +7155,21 @@ subroutine atm_compute_solve_diagnostics_work(nCells, nEdges, nVertices, & ! ! Compute circulation and relative vorticity at each vertex ! - !$acc loop gang + !$acc loop gang worker do iVertex=vertexStart,vertexEnd !$acc loop vector do k=1,nVertLevels vorticity(k,iVertex) = 0.0_RKIND end do - !$acc loop seq - do i=1,vertexDegree - iEdge = edgesOnVertex(i,iVertex) - s = edgesOnVertex_sign(i,iVertex) * dcEdge(iEdge) !DIR$ IVDEP - !$acc loop vector - do k=1,nVertLevels + !$acc loop vector + do k=1,nVertLevels + !$acc loop seq + do i=1,vertexDegree + iEdge = edgesOnVertex(i,iVertex) + s = edgesOnVertex_sign(i,iVertex) * dcEdge(iEdge) + + vorticity(k,iVertex) = vorticity(k,iVertex) + s * u(k,iEdge) end do end do @@ -7183,7 +7184,7 @@ subroutine atm_compute_solve_diagnostics_work(nCells, nEdges, nVertices, & ! ! Compute the divergence at each cell center ! - !$acc loop gang + !$acc loop gang worker do iCell=cellStart,cellEnd !$acc loop vector do k=1,nVertLevels @@ -7206,7 +7207,7 @@ subroutine atm_compute_solve_diagnostics_work(nCells, nEdges, nVertices, & end do end do !$acc end parallel - + call mpas_timer_stop('atm_comp_solve_diag_7134') !$OMP BARRIER