Oasis3-MCT
Modules | Functions/Subroutines | Variables
mod_oasis_reprosum.F90 File Reference
#include <mpif.h>

Go to the source code of this file.

Modules

module  mod_oasis_reprosum
 OASIS reproducible sum method from P. Worley.
 

Functions/Subroutines

subroutine, public mod_oasis_reprosum::oasis_reprosum_setopts (repro_sum_use_ddpdd_in, repro_sum_rel_diff_max_in, repro_sum_recompute_in, repro_sum_master, repro_sum_logunit)
 Set runtime options. More...
 
subroutine, public mod_oasis_reprosum::oasis_reprosum_calc (arr, arr_gsum, nsummands, dsummands, nflds, ddpdd_sum, arr_gbl_max, arr_gbl_max_out, arr_max_levels, arr_max_levels_out, gbl_max_nsummands, gbl_max_nsummands_out, gbl_count, repro_sum_validate, repro_sum_stats, rel_diff, commid)
 Compute the global sum of each field in "arr" using the indicated communicator with a reproducible yet scalable implementation based on a fixed point algorithm. An alternative is to use an "almost always reproducible" floating point algorithm. More...
 
subroutine mod_oasis_reprosum::oasis_reprosum_int (arr, arr_gsum, nsummands, dsummands, nflds, arr_max_shift, arr_gmax_exp, max_levels, max_level, validate, recompute, omp_nthreads, mpi_comm)
 Compute the global sum of each field in "arr" using the indicated communicator with a reproducible yet scalable implementation based on a fixed point algorithm. The accuracy of the fixed point algorithm is controlled by the number of "levels" of integer expansion, the maximum value of which is specified by max_level. More...
 
logical function, public mod_oasis_reprosum::oasis_reprosum_tolexceeded (name, nflds, master, logunit, rel_diff)
 Test whether distributed sum exceeds tolerance and print out a warning message. More...
 
subroutine mod_oasis_reprosum::oasis_reprosum_ddpdd (arr, arr_gsum, nsummands, dsummands, nflds, mpi_comm)
 Compute the global sum of each field in "arr" using the indicated communicator with a reproducible yet scalable implementation based on He and Ding's implementation of the double-double algorithm. More...
 
subroutine, private mod_oasis_reprosum::ddpdd (dda, ddb, len, itype)
 
subroutine, private mod_oasis_reprosum::split_indices (total, num_pieces, ibeg, iend)
 

Variables

logical, public mod_oasis_reprosum::oasis_reprosum_recompute = .false.
 
real(r8), public mod_oasis_reprosum::oasis_reprosum_reldiffmax = -1.0_r8
 
logical mod_oasis_reprosum::repro_sum_use_ddpdd = .false.
 
logical mod_oasis_reprosum::detailed_timing = .false.