diff --git a/cime_config/testdefs/testmods_dirs/cam/cam4_port/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/cam4_port/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/cam4_port/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/cam4_port/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/cam4_port5d/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/cam4_port5d/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/cam4_port5d/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/cam4_port5d/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/cam5_port_f45/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/cam5_port_f45/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/cam5_port_f45/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/cam5_port_f45/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/cam5_port_ne30/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/cam5_port_ne30/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/cam5_port_ne30/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/cam5_port_ne30/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/cam6_port_f09/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/cam6_port_f09/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/cam6_port_f09/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/cam6_port_f09/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_dust/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_dust/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_dust/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_dust/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_meteor_impact/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_meteor_impact/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_meteor_impact/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_meteor_impact/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_meteor_smoke/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_meteor_smoke/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_meteor_smoke/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_meteor_smoke/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_mixed_sulfate/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_mixed_sulfate/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_mixed_sulfate/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_mixed_sulfate/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_pmc/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_pmc/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_pmc/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_pmc/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_sea_salt/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_sea_salt/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_sea_salt/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_sea_salt/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_sulfate/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_sulfate/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_sulfate/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_sulfate/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_test_growth/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_test_growth/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_test_growth/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_test_growth/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_test_passive/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_test_passive/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_test_passive/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_test_passive/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_test_radiative/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_test_radiative/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_test_radiative/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_test_radiative/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_test_swelling/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_test_swelling/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_test_swelling/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_test_swelling/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers2/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers2/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers2/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/carma_test_tracers2/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/co2rmp/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/co2rmp/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/co2rmp/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/co2rmp/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/dartcambigens/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/dartcambigens/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/dartcambigens/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/dartcambigens/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/fire_emis/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/fire_emis/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/fire_emis/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/fire_emis/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/nudging/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/nudging/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/nudging/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/nudging/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq1d_amie/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq1d_amie/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq1d_amie/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq1d_amie/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq1d_newyear/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq1d_newyear/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq1d_newyear/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq1d_newyear/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq24h_port/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq24h_port/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq24h_port/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq24h_port/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_aqw/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_aqw/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_aqw/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_aqw/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_f10_L26/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_f10_L26/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_f10_L26/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_f10_L26/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_ne5_L26/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_ne5_L26/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_ne5_L26/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_nudging_ne5_L26/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_sathist/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_sathist/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_sathist/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_sathist/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_subcol/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_subcol/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_subcol/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_subcol/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_zmean_nudging/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_zmean_nudging/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq3s_zmean_nudging/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq3s_zmean_nudging/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_clubbmf/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_clubbmf/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_clubbmf/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_clubbmf/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_kessler/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_kessler/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_kessler/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_kessler/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_ocnemis/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_ocnemis/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/outfrq9s_ocnemis/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/outfrq9s_ocnemis/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/reduced_hist5d/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/reduced_hist5d/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/reduced_hist5d/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/reduced_hist5d/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/scm_prep/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/scm_prep/user_nl_cpl index 3d0b5a3ee9..b18e7c2e5b 100644 --- a/cime_config/testdefs/testmods_dirs/cam/scm_prep/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/scm_prep/user_nl_cpl @@ -5,4 +5,3 @@ orb_obliq = 1.e36 orb_mvelp = 1.e36 orb_mode = "fixed_year" reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/scm_prep_c6/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/scm_prep_c6/user_nl_cpl index 3d0b5a3ee9..b18e7c2e5b 100644 --- a/cime_config/testdefs/testmods_dirs/cam/scm_prep_c6/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/scm_prep_c6/user_nl_cpl @@ -5,4 +5,3 @@ orb_obliq = 1.e36 orb_mvelp = 1.e36 orb_mode = "fixed_year" reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/scmarm/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/scmarm/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/scmarm/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/scmarm/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal0/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal0/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal0/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal0/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal1/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal1/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal1/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal1/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal3/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal3/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal3/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/ttrac_loadbal3/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/cime_config/testdefs/testmods_dirs/cam/waccmx_weimer/user_nl_cpl b/cime_config/testdefs/testmods_dirs/cam/waccmx_weimer/user_nl_cpl index 398535cf65..ba3eb1b4b7 100644 --- a/cime_config/testdefs/testmods_dirs/cam/waccmx_weimer/user_nl_cpl +++ b/cime_config/testdefs/testmods_dirs/cam/waccmx_weimer/user_nl_cpl @@ -1,2 +1 @@ reprosum_diffmax=1.0e-14 -reprosum_recompute=.true. diff --git a/src/dynamics/fv/d2a3dikj.F90 b/src/dynamics/fv/d2a3dikj.F90 index 2ff9bbd748..b59242159a 100644 --- a/src/dynamics/fv/d2a3dikj.F90 +++ b/src/dynamics/fv/d2a3dikj.F90 @@ -22,14 +22,11 @@ subroutine d2a3dikj(grid, am_geom_crrct, u, v, ua, va) use dynamics_vars, only : t_fvdycore_grid #if defined( SPMD ) - use parutilitiesmodule, only : parcollective, sumop use mod_comm, only: mp_send3d, mp_recv3d #endif use shr_reprosum_mod, only : shr_reprosum_calc, & - shr_reprosum_tolExceeded, & - shr_reprosum_reldiffmax, & - shr_reprosum_recompute + shr_reprosum_tolExceeded use cam_logfile, only : iulog use perf_mod @@ -67,22 +64,21 @@ subroutine d2a3dikj(grid, am_geom_crrct, u, v, ua, va) !EOP !----------------------------------------------------------------------- !BOC - real(r8), parameter :: D0_0 = 0.0_r8 real(r8), parameter :: D0_5 = 0.5_r8 - integer :: imh, i, j, k, m, itot, jtot, ltot, ik + integer :: imh, i, j, k, itot, jtot, ltot, ik real(r8) :: veast(grid%jfirstxy:grid%jlastxy,grid%km) real(r8) :: unorth(grid%ifirstxy:grid%ilastxy,grid%km) real(r8) :: uva(grid%ifirstxy:grid%ilastxy,grid%km,2) real(r8) :: uvn(grid%km,2), uvs(grid%km,2) real(r8) :: rel_diff(2,grid%km,2) - real(r8),allocatable :: uva_tmp(:) integer :: ifirstxy, ilastxy, jfirstxy, jlastxy, im, jm, km integer :: myidxy_y, myidxy_x, nprxy_x, iam logical :: write_warning + logical :: tol_exceeded real(r8), pointer :: coslon(:),sinlon(:) ! Sine and cosine in longitude @@ -230,36 +226,13 @@ subroutine d2a3dikj(grid, am_geom_crrct, u, v, ua, va) commid=grid%commxy_x, rel_diff=rel_diff) call t_stopf("d2a3dikj_reprosum") - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = .false. if (myidxy_x == 0) write_warning = .true. - if ( shr_reprosum_tolExceeded('d2a3dikj/South Pole', 2*km, write_warning, & - iulog, rel_diff) ) then - if ( shr_reprosum_recompute ) then - call t_startf("d2a3dikj_sumfix") - allocate( uva_tmp(im) ) - do m = 1,2 - do k = 1,km - if (rel_diff(1,k,m) > shr_reprosum_reldiffmax) then - uva_tmp(:) = D0_0 - do i = ifirstxy,ilastxy - uva_tmp(i) = uva(i,k,m) - enddo -#if defined(SPMD) - call parcollective(grid%commxy_x,sumop,im,uva_tmp) -#endif - uvs(k,m) = D0_0 - do i = 1,im - uvs(k,m) = uvs(k,m) + uva_tmp(i) - enddo - endif - enddo - enddo - deallocate( uva_tmp ) - call t_stopf("d2a3dikj_sumfix") - endif - endif + tol_exceeded = shr_reprosum_tolExceeded('d2a3dikj/South Pole', 2*km, write_warning, & + iulog, rel_diff) !$omp parallel do private(i,k) do k = 1,km @@ -303,36 +276,13 @@ subroutine d2a3dikj(grid, am_geom_crrct, u, v, ua, va) commid=grid%commxy_x, rel_diff=rel_diff) call t_stopf("d2a3dikj_reprosum") - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = .false. if (myidxy_x == 0) write_warning = .true. - if ( shr_reprosum_tolExceeded('d2a3dikj/Nouth Pole', 2*km, write_warning, & - iulog, rel_diff) ) then - if ( shr_reprosum_recompute ) then - call t_startf("d2a3dikj_sumfix") - allocate( uva_tmp(im) ) - do m = 1,2 - do k = 1,km - if (rel_diff(1,k,m) > shr_reprosum_reldiffmax) then - uva_tmp(:) = D0_0 - do i = ifirstxy,ilastxy - uva_tmp(i) = uva(i,k,m) - enddo -#if defined(SPMD) - call parcollective(grid%commxy_x,sumop,im,uva_tmp) -#endif - uvn(k,m) = D0_0 - do i = 1,im - uvn(k,m) = uvn(k,m) + uva_tmp(i) - enddo - endif - enddo - enddo - deallocate( uva_tmp ) - call t_stopf("d2a3dikj_sumfix") - endif - endif + tol_exceeded = shr_reprosum_tolExceeded('d2a3dikj/North Pole', 2*km, write_warning, & + iulog, rel_diff) !$omp parallel do private(i,k) do k = 1,km diff --git a/src/dynamics/fv/mean_module.F90 b/src/dynamics/fv/mean_module.F90 index 7bc7af1dfa..15496b67ea 100644 --- a/src/dynamics/fv/mean_module.F90 +++ b/src/dynamics/fv/mean_module.F90 @@ -1,8 +1,7 @@ module mean_module use shr_kind_mod, only : r8 => shr_kind_r8 - use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded, & - shr_reprosum_recompute + use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded use perf_mod use cam_logfile, only : iulog @@ -97,10 +96,6 @@ subroutine gmeanxy(grid, q, qmean) use commap, only : w use dynamics_vars, only : T_FVDYCORE_GRID -#if defined( SPMD ) - use parutilitiesmodule, only : parcollective, sumop -#endif - implicit none ! !INPUT PARAMETERS: @@ -134,13 +129,13 @@ subroutine gmeanxy(grid, q, qmean) real(r8) :: q_tmp(grid%ifirstxy:grid%ilastxy, & grid%jfirstxy:grid%jlastxy) - real(r8) :: rel_diff(2), qmean_tmp(1), xsum - real(r8), allocatable :: q_global(:,:) + real(r8) :: rel_diff(2), qmean_tmp(1) integer :: i, j, im, jm, ifirstxy, ilastxy, jfirstxy, jlastxy integer :: lim, ljm, lijm logical :: write_warning + logical :: tol_exceeded im = grid%im jm = grid%jm @@ -165,38 +160,13 @@ subroutine gmeanxy(grid, q, qmean) qmean = qmean_tmp(1) call t_stopf("gmeanxy_reprosum") - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = .false. if (grid%iam == 0) write_warning = .true. - if ( shr_reprosum_tolExceeded('gmeanxy', 1, write_warning, & - iulog, rel_diff) ) then - if ( shr_reprosum_recompute ) then - call t_startf("gmeanxy_sumfix") - allocate( q_global(im,jm) ) - q_global = D0_0 - do j=jfirstxy,jlastxy - do i=ifirstxy,ilastxy - q_global(i,j) = q_tmp(i,j) - enddo - enddo - -#if defined( SPMD ) - call parcollective( grid%commxy, sumop, im, jm, q_global ) -#endif - qmean = D0_0 - do j=1,jm - xsum = D0_0 - do i=1,im - xsum = xsum + q_global(i,j) - enddo - qmean = qmean + xsum - enddo - - deallocate( q_global ) - call t_stopf("gmeanxy_sumfix") - endif - endif + tol_exceeded = shr_reprosum_tolExceeded('gmeanxy', 1, write_warning, & + iulog, rel_diff) qmean = qmean / (2*im) diff --git a/src/dynamics/fv/p_d_adjust.F90 b/src/dynamics/fv/p_d_adjust.F90 index 425e95ef26..e58987abcf 100644 --- a/src/dynamics/fv/p_d_adjust.F90 +++ b/src/dynamics/fv/p_d_adjust.F90 @@ -9,12 +9,7 @@ subroutine p_d_adjust(grid, tracer, pelnxy, pkxy, pkzxy, zvir, & ! !USES: use shr_kind_mod, only: r8 => shr_kind_r8 use dynamics_vars, only : T_FVDYCORE_GRID -#if defined( SPMD ) - use parutilitiesmodule, only: parcollective, sumop -#endif - use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded, & - shr_reprosum_reldiffmax, & - shr_reprosum_recompute + use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded use cam_logfile, only : iulog use perf_mod @@ -63,7 +58,6 @@ subroutine p_d_adjust(grid, tracer, pelnxy, pkxy, pkzxy, zvir, & !----------------------------------------------------------------------- !BOC ! !LOCAL VARIABLES: - real(r8), parameter :: D0_0 = 0.0_r8 real(r8), parameter :: D1_0 = 1.0_r8 real(r8) :: pole(grid%ifirstxy:grid%ilastxy,grid%km,grid%ntotq+2) @@ -76,13 +70,12 @@ subroutine p_d_adjust(grid, tracer, pelnxy, pkxy, pkzxy, zvir, & real(r8) :: & pkln(grid%ifirstxy:grid%ilastxy,grid%km+1,grid%jfirstxy:grid%jlastxy) - real(r8),allocatable :: pole_tmp(:) - integer :: i, k, m, j ! indices integer :: im, jm, km, ntotq, lim integer :: ifirstxy, ilastxy, jfirstxy, jlastxy logical :: write_warning + logical :: tol_exceeded logical :: high_alt !---------------------------End Local workspace------------------------- @@ -127,36 +120,13 @@ subroutine p_d_adjust(grid, tracer, pelnxy, pkxy, pkzxy, zvir, & commid=grid%commxy_x, rel_diff=rel_diff) ! South pole call t_stopf("pdadj_reprosum") - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = .false. if (grid%myidxy_x == 0) write_warning = .true. - if ( shr_reprosum_tolExceeded('p_d_adjust/South Pole', km*(ntotq+2), & - write_warning, iulog, rel_diff) ) then - if ( shr_reprosum_recompute ) then - call t_startf("pdadj_sumfix") - allocate( pole_tmp(im) ) - do m = 1, ntotq+2 - do k = 1, km - if (rel_diff(1,k,m) > shr_reprosum_reldiffmax) then - pole_tmp(:) = D0_0 - do i = ifirstxy, ilastxy - pole_tmp(i) = pole(i,k,m) - enddo -#if defined(SPMD) - call parcollective(grid%commxy_x,sumop,im,pole_tmp) -#endif - pole_sum(k,m) = D0_0 - do i = 1, im - pole_sum(k,m) = pole_sum(k,m) + pole_tmp(i) - enddo - endif - enddo - enddo - deallocate( pole_tmp ) - call t_stopf("pdadj_sumfix") - endif - endif + tol_exceeded = shr_reprosum_tolExceeded('p_d_adjust/South Pole', km*(ntotq+2), write_warning, & + iulog, rel_diff) ! save results !$omp parallel do private(i,k,m) @@ -198,36 +168,13 @@ subroutine p_d_adjust(grid, tracer, pelnxy, pkxy, pkzxy, zvir, & commid=grid%commxy_x, rel_diff=rel_diff) ! North pole call t_stopf("pdadj_reprosum") - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = .false. if (grid%myidxy_x == 0) write_warning = .true. - if ( shr_reprosum_tolExceeded('p_d_adjust/Nouth Pole', km*(ntotq+2), & - write_warning, iulog, rel_diff) ) then - if ( shr_reprosum_recompute ) then - call t_startf("pdadj_sumfix") - allocate( pole_tmp(im) ) - do m = 1, ntotq+2 - do k = 1, km - if (rel_diff(1,k,m) > shr_reprosum_reldiffmax) then - pole_tmp(:) = D0_0 - do i = ifirstxy, ilastxy - pole_tmp(i) = pole(i,k,m) - enddo -#if defined(SPMD) - call parcollective(grid%commxy_x,sumop,im,pole_tmp) -#endif - pole_sum(k,m) = D0_0 - do i = 1, im - pole_sum(k,m) = pole_sum(k,m) + pole_tmp(i) - enddo - endif - enddo - enddo - deallocate( pole_tmp ) - call t_stopf("pdadj_sumfix") - endif - endif + tol_exceeded = shr_reprosum_tolExceeded('p_d_adjust/North Pole', km*(ntotq+2), write_warning, & + iulog, rel_diff) ! save results !$omp parallel do private(i,k,m) diff --git a/src/dynamics/fv/par_xsum.F90 b/src/dynamics/fv/par_xsum.F90 index 9f2520a90f..04156dd438 100644 --- a/src/dynamics/fv/par_xsum.F90 +++ b/src/dynamics/fv/par_xsum.F90 @@ -8,14 +8,9 @@ subroutine par_xsum(grid, a, ltot, sum) !****6***0*********0*********0*********0*********0*********0**********72 ! ! !USES: -#if defined ( SPMD ) - use parutilitiesmodule, only : parexchangevector -#endif use dynamics_vars, only : T_FVDYCORE_GRID use shr_kind_mod, only: r8 => shr_kind_r8 - use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded, & - shr_reprosum_reldiffmax, & - shr_reprosum_recompute + use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded use cam_logfile, only : iulog use FVperf_module, only : FVstartclock, FVstopclock @@ -51,68 +46,28 @@ subroutine par_xsum(grid, a, ltot, sum) !BOC ! !Local - real(r8), parameter :: D0_0 = 0.0_r8 - real(r8) :: rel_diff(2,ltot) - real(r8),allocatable :: l_a(:) - real(r8),allocatable :: a_tmp(:) - integer :: i,ipe,l,im,lim,nprxy_x,offset - integer :: sendcount(grid%nprxy_x) - integer :: recvcount(grid%nprxy_x) + integer :: im,lim logical :: write_warning + logical :: tol_exceeded im = grid%im lim = (grid%ilastxy-grid%ifirstxy) + 1 - nprxy_x = grid%nprxy_x - offset = grid%ifirstxy - 1 call FVstartclock(grid,'xsum_reprosum') call shr_reprosum_calc(a, sum, lim, lim, ltot, gbl_count=im, & commid=grid%commxy_x, rel_diff=rel_diff) call FVstopclock(grid,'xsum_reprosum') - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = .false. if (grid%myidxy_x == 0) write_warning = .true. - if ( shr_reprosum_tolExceeded('par_xsum', ltot, write_warning, & - iulog, rel_diff) ) then - if ( shr_reprosum_recompute ) then - call FVstartclock(grid,'xsum_sumfix') - allocate( l_a(lim*nprxy_x) ) - allocate( a_tmp(im) ) - sendcount(:) = lim - - do l=1,ltot - if (rel_diff(1,l) > shr_reprosum_reldiffmax) then - sum(l) = D0_0 -#if defined ( SPMD ) - do ipe=1,nprxy_x - do i=1,lim - l_a(i+(ipe-1)*lim) = a(i+offset,l) - enddo - enddo - call parexchangevector( grid%commxy_x, sendcount, l_a, & - recvcount, a_tmp ) - do i=1,im - sum(l) = sum(l) + a_tmp(i) - enddo -#else - do i=1,im - sum(l) = sum(l) + a(i,l) - enddo -#endif - endif - - enddo - - deallocate( a_tmp ) - deallocate( l_a ) - call FVstopclock(grid,'xsum_sumfix') - endif - endif + tol_exceeded = shr_reprosum_tolExceeded('par_xsum', ltot, write_warning, & + iulog, rel_diff) return !EOC @@ -129,14 +84,9 @@ subroutine par_xsum_r4(grid, a, ltot, sum) !****6***0*********0*********0*********0*********0*********0**********72 ! ! !USES: -#if defined ( SPMD ) - use parutilitiesmodule, only : parexchangevector -#endif use dynamics_vars, only : T_FVDYCORE_GRID use shr_kind_mod, only: r8 => shr_kind_r8, r4 => shr_kind_r4 - use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded, & - shr_reprosum_reldiffmax, & - shr_reprosum_recompute + use shr_reprosum_mod, only : shr_reprosum_calc, shr_reprosum_tolExceeded use cam_logfile, only : iulog use FVperf_module, only : FVstartclock, FVstopclock @@ -167,23 +117,16 @@ subroutine par_xsum_r4(grid, a, ltot, sum) !BOC ! !Local - real(r8), parameter :: D0_0 = 0.0_r8 - real(r8) :: a8(grid%ifirstxy:grid%ilastxy,ltot) real(r8) :: rel_diff(2,ltot) - real(r4),allocatable :: l_a(:) - real(r4),allocatable :: a_tmp(:) - integer i,ipe,l,im,lim,nprxy_x,offset - integer sendcount(grid%nprxy_x) - integer recvcount(grid%nprxy_x) + integer :: im,lim logical :: write_warning + logical :: tol_exceeded im = grid%im lim = (grid%ilastxy-grid%ifirstxy) + 1 - nprxy_x = grid%nprxy_x - offset = grid%ifirstxy - 1 call FVstartclock(grid,'xsum_r4_reprosum') a8(:,:) = a(:,:) @@ -191,46 +134,13 @@ subroutine par_xsum_r4(grid, a, ltot, sum) commid=grid%commxy_x, rel_diff=rel_diff) call FVstopclock(grid,'xsum_r4_reprosum') - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = .false. if (grid%myidxy_x == 0) write_warning = .true. - if ( shr_reprosum_tolExceeded('par_xsum_r4', ltot, write_warning, & - iulog, rel_diff) ) then - if ( shr_reprosum_recompute ) then - call FVstartclock(grid,'xsum_r4_sumfix') - allocate( l_a(lim*nprxy_x) ) - allocate( a_tmp(im) ) - sendcount(:) = lim - - do l=1,ltot - if (rel_diff(1,l) > shr_reprosum_reldiffmax) then - sum(l) = D0_0 -#if defined ( SPMD ) - do ipe=1,nprxy_x - do i=1,lim - l_a(i+(ipe-1)*lim) = a(i+offset,l) - enddo - enddo - call parexchangevector( grid%commxy_x, sendcount, l_a, & - recvcount, a_tmp ) - do i=1,im - sum(l) = sum(l) + a_tmp(i) - enddo -#else - do i=1,im - sum(l) = sum(l) + a(i,l) - enddo -#endif - endif - - enddo - - deallocate( a_tmp ) - deallocate( l_a ) - call FVstopclock(grid,'xsum_r4_sumfix') - endif - endif + tol_exceeded = shr_reprosum_tolExceeded('par_xsum_r4', ltot, write_warning, & + iulog, rel_diff) return !EOC diff --git a/src/utils/gmean_mod.F90 b/src/utils/gmean_mod.F90 index 2abbe369ed..eb01c3f675 100644 --- a/src/utils/gmean_mod.F90 +++ b/src/utils/gmean_mod.F90 @@ -8,18 +8,16 @@ module gmean_mod ! Reproducible (scalable): ! Convert to fixed point (integer representation) to enable ! reproducibility when using MPI collectives. - ! If error checking is on (via setting reprosum_diffmax > 0 and - ! reprosum_recompute = .true. in user_nl_cpl), shr_reprosum_calc will - ! check the accuracy of its computation with a fast but - ! non-reproducible algorithm. If any error is reported, report - ! the difference and the expected sum and abort run (call endrun) + ! If reprosum_diffmax >= 0 (user_nl_cpl), shr_reprosum_calc also forms a + ! fast nonreproducible sum and a warning is written when it differs + ! from the reproducible sum by more than that tolerance. The + ! reproducible sum is exact and is always the value returned. ! ! !----------------------------------------------------------------------- use shr_kind_mod, only: r8 => shr_kind_r8 use ppgrid, only: pcols, begchunk, endchunk use shr_reprosum_mod, only: shr_reprosum_calc, shr_reprosum_tolExceeded - use shr_reprosum_mod, only: shr_reprosum_reldiffmax, shr_reprosum_recompute use perf_mod, only: t_startf, t_stopf use cam_logfile, only: iulog @@ -36,7 +34,6 @@ module gmean_mod end interface gmean private :: gmean_fixed_repro - private :: gmean_float_norepro ! Set do_gmean_tests to .true. to run a gmean challenge test logical, private :: do_gmean_tests = .false. @@ -75,9 +72,7 @@ end subroutine gmean_init ! subroutine gmean_arr (arr, arr_gmean, nflds) - use shr_strconvert_mod, only: toString use spmd_utils, only: masterproc - use cam_abortutils, only: endrun !----------------------------------------------------------------------- ! ! Purpose: @@ -96,9 +91,8 @@ subroutine gmean_arr (arr, arr_gmean, nflds) ! Local workspace ! real(r8) :: rel_diff(2, nflds) - integer :: ifld ! field index - integer :: num_err logical :: write_warning + logical :: tol_exceeded ! !----------------------------------------------------------------------- ! @@ -107,25 +101,13 @@ subroutine gmean_arr (arr, arr_gmean, nflds) call gmean_fixed_repro(arr, arr_gmean, rel_diff, nflds) call t_stopf ('gmean_fixed_repro') - ! check that "fast" reproducible sum is accurate enough. If not, calculate - ! using old method + ! Warn if the nonreproducible floating point check sum differs from the + ! integer vector sum by more than reprosum_diffmax. The integer vector sum is + ! exact, so the result is kept regardless. write_warning = masterproc - num_err = 0 - if (shr_reprosum_tolExceeded('gmean', nflds, write_warning, & - iulog, rel_diff)) then - if (shr_reprosum_recompute) then - do ifld = 1, nflds - if (rel_diff(1, ifld) > shr_reprosum_reldiffmax) then - call gmean_float_norepro(arr(:,:,ifld), arr_gmean(ifld), ifld) - num_err = num_err + 1 - end if - end do - end if - end if + tol_exceeded = shr_reprosum_tolExceeded('gmean', nflds, write_warning, & + iulog, rel_diff) call t_stopf('gmean_arr') - if (num_err > 0) then - call endrun('gmean: '//toString(num_err)//' reprosum errors found') - end if end subroutine gmean_arr @@ -170,60 +152,6 @@ end subroutine gmean_scl !======================================================================== ! - subroutine gmean_float_norepro(arr, repro_sum, index) - !----------------------------------------------------------------------- - ! - ! Purpose: - ! Compute the global mean of in the physics chunked - ! decomposition using a fast but non-reproducible algorithm. - ! Log that value along with the value computed by - ! shr_reprosum_calc () - ! - !----------------------------------------------------------------------- - - use physconst, only: pi - use spmd_utils, only: masterproc, masterprocid, MPI_REAL8, MPI_SUM, mpicom - use phys_grid, only: get_ncols_p, get_wght_p - ! - ! Arguments - ! - real(r8), intent(in) :: arr(pcols, begchunk:endchunk) - real(r8), intent(in) :: repro_sum ! Value computed by reprosum - integer, intent(in) :: index ! Index of field in original call - ! - ! Local workspace - ! - integer :: lchnk, ncols, icol - integer :: ierr - real(r8) :: wght - real(r8) :: check - real(r8) :: check_sum - real(r8), parameter :: pi4 = 4.0_r8 * pi - - ! - !----------------------------------------------------------------------- - ! - ! Calculate and print out non-reproducible value - check = 0.0_r8 - do lchnk = begchunk, endchunk - ncols = get_ncols_p(lchnk) - do icol = 1, ncols - wght = get_wght_p(lchnk, icol) - check = check + arr(icol, lchnk) * wght - end do - end do - call MPI_reduce(check, check_sum, 1, MPI_REAL8, check_sum, MPI_SUM, & - masterprocid, mpicom, ierr) - if (masterproc) then - write(iulog, '(a,i0,2(a,e20.13e2))') 'gmean(', index, ') = ', & - check_sum / pi4, ', reprosum reported ', repro_sum - end if - - end subroutine gmean_float_norepro - - ! - !======================================================================== - ! subroutine gmean_fixed_repro (arr, arr_gmean, rel_diff, nflds) !----------------------------------------------------------------------- !