From debafa1859c38d7529550b8021dd52265d10f483 Mon Sep 17 00:00:00 2001 From: John Krasting Date: Fri, 4 Apr 2014 13:59:24 -0400 Subject: [PATCH 1/3] *Reproducing sums for SST_global and SSS_global - Uses reproducing_sum() subroutine - timestats.intel did not change for MOM6z_SIS_025 config --- src/core/MOM.F90 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/MOM.F90 b/src/core/MOM.F90 index a34457ac89..0fb22a9557 100644 --- a/src/core/MOM.F90 +++ b/src/core/MOM.F90 @@ -328,6 +328,7 @@ module MOM use MOM_cpu_clock, only : cpu_clock_id, cpu_clock_begin, cpu_clock_end use MOM_cpu_clock, only : CLOCK_COMPONENT, CLOCK_SUBCOMPONENT use MOM_cpu_clock, only : CLOCK_MODULE_DRIVER, CLOCK_MODULE, CLOCK_ROUTINE +use MOM_coms, only : reproducing_sum use MOM_diag_mediator, only : diag_mediator_init, enable_averaging use MOM_diag_mediator, only : disable_averaging, post_data, safe_alloc_ptr use MOM_diag_mediator, only : register_diag_field, register_static_field @@ -646,6 +647,7 @@ subroutine step_MOM(fluxes, state, Time_start, time_interval, CS) h ! h : Layer thickness, in m. real, dimension(SZI_(CS%G),SZJ_(CS%G),SZK_(CS%G)+1) :: eta_predia real :: tot_wt_ssh, Itot_wt_ssh, I_time_int + real, dimension(SZI_(CS%G),SZJ_(CS%G)) :: tmpForSumming real :: SST_global, SSS_global type(time_type) :: Time_local integer :: pid_tau, pid_ustar, pid_psurf, pid_u, pid_h @@ -1318,22 +1320,20 @@ subroutine step_MOM(fluxes, state, Time_start, time_interval, CS) endif if (CS%id_sst_global > 0) then - SST_global = 0.0 + tmpForSumming(:,:) = 0. do j=js,je ; do i=is, ie - SST_global = SST_global + ( state%SST(i,j) * G%areaT(i,j) * G%mask2dT(i,j) ) + tmpForSumming(i,j) = ( state%SST(i,j) * G%areaT(i,j) * G%mask2dT(i,j) ) enddo ; enddo - call sum_across_PEs( SST_global ) - SST_global = SST_global * G%IareaT_global + SST_global = reproducing_sum( tmpForSumming ) * G%IareaT_global call post_data(CS%id_sst_global, SST_global, CS%diag) endif if (CS%id_sss_global > 0) then - SSS_global = 0.0 + tmpForSumming(:,:) = 0. do j=js,je ; do i=is, ie - SSS_global = SSS_global + ( state%SSS(i,j) * G%areaT(i,j) * G%mask2dT(i,j) ) + tmpForSumming(i,j) = ( state%SSS(i,j) * G%areaT(i,j) * G%mask2dT(i,j) ) enddo ; enddo - call sum_across_PEs( SSS_global ) - SSS_global = SSS_global * G%IareaT_global + SSS_global = reproducing_sum( tmpForSumming ) * G%IareaT_global call post_data(CS%id_sss_global, SSS_global, CS%diag) endif From 022fae2899d0bf1a8d5d3b6c983d1005828d8a97 Mon Sep 17 00:00:00 2001 From: John Krasting Date: Mon, 14 Apr 2014 16:49:06 -0400 Subject: [PATCH 2/3] *Reproducing sums for SST_global and SSS_global - Uses reproducing_sum() subroutine for global area, SST_global, and SSS_global - Use this commit instead of debafa1859c38d7529550b8021dd52265d10f483 --- src/core/MOM.F90 | 5 +++-- src/initialization/MOM_initialization.F90 | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/core/MOM.F90 b/src/core/MOM.F90 index 0fb22a9557..a7caf3a636 100644 --- a/src/core/MOM.F90 +++ b/src/core/MOM.F90 @@ -1322,7 +1322,7 @@ subroutine step_MOM(fluxes, state, Time_start, time_interval, CS) if (CS%id_sst_global > 0) then tmpForSumming(:,:) = 0. do j=js,je ; do i=is, ie - tmpForSumming(i,j) = ( state%SST(i,j) * G%areaT(i,j) * G%mask2dT(i,j) ) + tmpForSumming(i,j) = ( state%SST(i,j) * (G%areaT(i,j) * G%mask2dT(i,j)) ) enddo ; enddo SST_global = reproducing_sum( tmpForSumming ) * G%IareaT_global call post_data(CS%id_sst_global, SST_global, CS%diag) @@ -1331,10 +1331,11 @@ subroutine step_MOM(fluxes, state, Time_start, time_interval, CS) if (CS%id_sss_global > 0) then tmpForSumming(:,:) = 0. do j=js,je ; do i=is, ie - tmpForSumming(i,j) = ( state%SSS(i,j) * G%areaT(i,j) * G%mask2dT(i,j) ) + tmpForSumming(i,j) = ( state%SSS(i,j) * (G%areaT(i,j) * G%mask2dT(i,j)) ) enddo ; enddo SSS_global = reproducing_sum( tmpForSumming ) * G%IareaT_global call post_data(CS%id_sss_global, SSS_global, CS%diag) + if (is_root_pe()) write (*,*) ' GLOBAL SSS = ', SSS_global endif if (CS%id_sss > 0) & diff --git a/src/initialization/MOM_initialization.F90 b/src/initialization/MOM_initialization.F90 index 65ea7d0c3a..226bb33ba8 100644 --- a/src/initialization/MOM_initialization.F90 +++ b/src/initialization/MOM_initialization.F90 @@ -70,7 +70,7 @@ module MOM_initialization use MOM_checksums, only : hchksum, qchksum, uchksum, vchksum, chksum -use MOM_coms, only : max_across_PEs, min_across_PEs +use MOM_coms, only : max_across_PEs, min_across_PEs, reproducing_sum use MOM_cpu_clock, only : cpu_clock_id, cpu_clock_begin, cpu_clock_end use MOM_cpu_clock, only : CLOCK_ROUTINE, CLOCK_LOOP use MOM_domains, only : pass_var, pass_vector, sum_across_PEs, broadcast @@ -3236,12 +3236,14 @@ subroutine compute_global_grid_integrals(G) ! Subroutine to pre-compute global integrals of grid quantities for ! later use in reporting diagnostics integer :: i,j + real, dimension(G%isc:G%iec,G%jsc:G%jec) :: tmpForSumming G%areaT_global = 0.0 ; G%IareaT_global = 0.0 + tmpForSumming(:,:) = 0. do j=G%jsc,G%jec ; do i=G%isc,G%iec - G%areaT_global = G%areaT_global + ( G%areaT(i,j) * G%mask2dT(i,j) ) + tmpForSumming(i,j) = G%areaT(i,j) * G%mask2dT(i,j) enddo ; enddo - call sum_across_PEs( G%areaT_global ) + G%areaT_global = reproducing_sum( tmpForSumming ) G%IareaT_global = 1. / G%areaT_global end subroutine compute_global_grid_integrals From ab145f0b35094a10bdbc6d3dffd8a1b0bf9f2dc2 Mon Sep 17 00:00:00 2001 From: John Krasting Date: Tue, 15 Apr 2014 09:25:13 -0400 Subject: [PATCH 3/3] * Removed SSS_global print statement - Unnecessary verbiage --- src/core/MOM.F90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/MOM.F90 b/src/core/MOM.F90 index a7caf3a636..46b3e35cb1 100644 --- a/src/core/MOM.F90 +++ b/src/core/MOM.F90 @@ -1335,7 +1335,6 @@ subroutine step_MOM(fluxes, state, Time_start, time_interval, CS) enddo ; enddo SSS_global = reproducing_sum( tmpForSumming ) * G%IareaT_global call post_data(CS%id_sss_global, SSS_global, CS%diag) - if (is_root_pe()) write (*,*) ' GLOBAL SSS = ', SSS_global endif if (CS%id_sss > 0) &