FV3 Bundle
mpp_efp_mod Module Reference

Data Types

interface  assignment(=)
 
type  mpp_efp_type
 
interface  mpp_reproducing_sum
 
interface  operator(+)
 
interface  operator(-)
 

Functions/Subroutines

real(double_kind) function mpp_reproducing_sum_r8_2d (array, isr, ier, jsr, jer, EFP_sum, reproducing, overflow_check, err)
 
real(float_kind) function mpp_reproducing_sum_r4_2d (array, isr, ier, jsr, jer, EFP_sum, reproducing, overflow_check, err)
 
real(double_kind) function mpp_reproducing_sum_r8_3d (array, isr, ier, jsr, jer, sums, EFP_sum, err)
 
integer(long_kind) function, dimension(numintreal_to_ints (r, prec_error, overflow)
 
real(double_kind) function ints_to_real (ints)
 
subroutine increment_ints (int_sum, int2, prec_error)
 
subroutine increment_ints_faster (int_sum, r, max_mag_term)
 
subroutine carry_overflow (int_sum, prec_error)
 
subroutine regularize_ints (int_sum)
 
logical function, public mpp_query_efp_overflow_error ()
 
subroutine, public mpp_reset_efp_overlow_error ()
 
type(mpp_efp_type) function, public mpp_efp_plus (EFP1, EFP2)
 
type(mpp_efp_type) function, public mpp_efp_minus (EFP1, EFP2)
 
subroutine mpp_efp_assign (EFP1, EFP2)
 
real(double_kind) function, public mpp_efp_to_real (EFP1)
 
real(double_kind) function, public mpp_efp_real_diff (EFP1, EFP2)
 
type(mpp_efp_type) function, public mpp_real_to_efp (val, overflow)
 
subroutine, public mpp_efp_list_sum_across_pes (EFPs, nval, errors)
 

Variables

integer, parameter numbit = 46
 
integer, parameter numint = 6
 
integer(long_kind), parameter prec =2_8**NUMBIT
 
real(double_kind), parameter r_prec =2.0_8**NUMBIT
 
real(double_kind), parameter i_prec =1.0_8/(2.0_8**NUMBIT)
 
integer, parameter max_count_prec =2**(63-NUMBIT)-1
 
real(double_kind), dimension(numint), parameter pr = (/ r_prec**2, r_prec, 1.0_8, 1.0_8/r_prec, 1.0_8/r_prec**2, 1.0_8/r_prec**3 /)
 
real(double_kind), dimension(numint), parameter i_pr = (/ 1.0_8/r_prec**2, 1.0_8/r_prec, 1.0_8, r_prec, r_prec**2, r_prec**3 /)
 
logical overflow_error = .false.
 
logical nan_error = .false.
 
logical debug = .false.
 

Function/Subroutine Documentation

◆ carry_overflow()

subroutine mpp_efp_mod::carry_overflow ( integer(long_kind), dimension(numint), intent(inout)  int_sum,
integer(long_kind), intent(in)  prec_error 
)
private

Definition at line 507 of file mpp_efp.F90.

Here is the caller graph for this function:

◆ increment_ints()

subroutine mpp_efp_mod::increment_ints ( integer(long_kind), dimension(numint), intent(inout)  int_sum,
integer(long_kind), dimension(numint), intent(in)  int2,
integer(long_kind), intent(in), optional  prec_error 
)
private

Definition at line 453 of file mpp_efp.F90.

Here is the caller graph for this function:

◆ increment_ints_faster()

subroutine mpp_efp_mod::increment_ints_faster ( integer(long_kind), dimension(numint), intent(inout)  int_sum,
real(double_kind), intent(in)  r,
real(double_kind), intent(inout)  max_mag_term 
)
private

Definition at line 482 of file mpp_efp.F90.

Here is the caller graph for this function:

◆ ints_to_real()

real(double_kind) function mpp_efp_mod::ints_to_real ( integer(long_kind), dimension(numint), intent(in)  ints)
private

Definition at line 442 of file mpp_efp.F90.

Here is the caller graph for this function:

◆ mpp_efp_assign()

subroutine mpp_efp_mod::mpp_efp_assign ( type(mpp_efp_type), intent(out)  EFP1,
type(mpp_efp_type), intent(in)  EFP2 
)
private

Definition at line 590 of file mpp_efp.F90.

◆ mpp_efp_list_sum_across_pes()

subroutine, public mpp_efp_mod::mpp_efp_list_sum_across_pes ( type(mpp_efp_type), dimension(:), intent(inout)  EFPs,
integer, intent(in)  nval,
logical, dimension(:), intent(out), optional  errors 
)

Definition at line 641 of file mpp_efp.F90.

Here is the call graph for this function:

◆ mpp_efp_minus()

type(mpp_efp_type) function, public mpp_efp_mod::mpp_efp_minus ( type(mpp_efp_type), intent(in)  EFP1,
type(mpp_efp_type), intent(in)  EFP2 
)

Definition at line 580 of file mpp_efp.F90.

Here is the call graph for this function:

◆ mpp_efp_plus()

type(mpp_efp_type) function, public mpp_efp_mod::mpp_efp_plus ( type(mpp_efp_type), intent(in)  EFP1,
type(mpp_efp_type), intent(in)  EFP2 
)

Definition at line 571 of file mpp_efp.F90.

Here is the call graph for this function:

◆ mpp_efp_real_diff()

real(double_kind) function, public mpp_efp_mod::mpp_efp_real_diff ( type(mpp_efp_type), intent(in)  EFP1,
type(mpp_efp_type), intent(in)  EFP2 
)

Definition at line 609 of file mpp_efp.F90.

Here is the call graph for this function:

◆ mpp_efp_to_real()

real(double_kind) function, public mpp_efp_mod::mpp_efp_to_real ( type(mpp_efp_type), intent(inout)  EFP1)

Definition at line 601 of file mpp_efp.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mpp_query_efp_overflow_error()

logical function, public mpp_efp_mod::mpp_query_efp_overflow_error ( )

Definition at line 562 of file mpp_efp.F90.

◆ mpp_real_to_efp()

type(mpp_efp_type) function, public mpp_efp_mod::mpp_real_to_efp ( real(double_kind), intent(in)  val,
logical, intent(inout), optional  overflow 
)

Definition at line 620 of file mpp_efp.F90.

Here is the call graph for this function:

◆ mpp_reproducing_sum_r4_2d()

real(float_kind) function mpp_efp_mod::mpp_reproducing_sum_r4_2d ( real(float_kind), dimension(:,:), intent(in)  array,
integer, intent(in), optional  isr,
integer, intent(in), optional  ier,
integer, intent(in), optional  jsr,
integer, intent(in), optional  jer,
type(mpp_efp_type), intent(out), optional  EFP_sum,
logical, intent(in), optional  reproducing,
logical, intent(in), optional  overflow_check,
integer, intent(out), optional  err 
)
private

Definition at line 220 of file mpp_efp.F90.

Here is the call graph for this function:

◆ mpp_reproducing_sum_r8_2d()

real(double_kind) function mpp_efp_mod::mpp_reproducing_sum_r8_2d ( real(double_kind), dimension(:,:), intent(in)  array,
integer, intent(in), optional  isr,
integer, intent(in), optional  ier,
integer, intent(in), optional  jsr,
integer, intent(in), optional  jer,
type(mpp_efp_type), intent(out), optional  EFP_sum,
logical, intent(in), optional  reproducing,
logical, intent(in), optional  overflow_check,
integer, intent(out), optional  err 
)
private

Definition at line 75 of file mpp_efp.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mpp_reproducing_sum_r8_3d()

real(double_kind) function mpp_efp_mod::mpp_reproducing_sum_r8_3d ( real(double_kind), dimension(:,:,:), intent(in)  array,
integer, intent(in), optional  isr,
integer, intent(in), optional  ier,
integer, intent(in), optional  jsr,
integer, intent(in), optional  jer,
real(double_kind), dimension(:), intent(out), optional  sums,
type(mpp_efp_type), intent(out), optional  EFP_sum,
integer, intent(out), optional  err 
)
private

Definition at line 242 of file mpp_efp.F90.

Here is the call graph for this function:

◆ mpp_reset_efp_overlow_error()

subroutine, public mpp_efp_mod::mpp_reset_efp_overlow_error ( )

Definition at line 567 of file mpp_efp.F90.

◆ real_to_ints()

integer(long_kind) function, dimension(numint) mpp_efp_mod::real_to_ints ( real(double_kind), intent(in)  r,
integer(long_kind), intent(in), optional  prec_error,
logical, intent(inout), optional  overflow 
)
private

Definition at line 406 of file mpp_efp.F90.

Here is the caller graph for this function:

◆ regularize_ints()

subroutine mpp_efp_mod::regularize_ints ( integer(long_kind), dimension(numint), intent(inout)  int_sum)
private

Definition at line 525 of file mpp_efp.F90.

Here is the caller graph for this function:

Variable Documentation

◆ debug

logical mpp_efp_mod::debug = .false.
private

Definition at line 53 of file mpp_efp.F90.

◆ i_pr

real(double_kind), dimension(numint), parameter mpp_efp_mod::i_pr = (/ 1.0_8/r_prec**2, 1.0_8/r_prec, 1.0_8, r_prec, r_prec**2, r_prec**3 /)
private

Definition at line 49 of file mpp_efp.F90.

◆ i_prec

real(double_kind), parameter mpp_efp_mod::i_prec =1.0_8/(2.0_8**NUMBIT)
private

Definition at line 41 of file mpp_efp.F90.

◆ max_count_prec

integer, parameter mpp_efp_mod::max_count_prec =2**(63-NUMBIT)-1
private

Definition at line 42 of file mpp_efp.F90.

◆ nan_error

logical mpp_efp_mod::nan_error = .false.
private

Definition at line 52 of file mpp_efp.F90.

◆ numbit

integer, parameter mpp_efp_mod::numbit = 46
private

Definition at line 35 of file mpp_efp.F90.

◆ numint

integer, parameter mpp_efp_mod::numint = 6
private

Definition at line 36 of file mpp_efp.F90.

◆ overflow_error

logical mpp_efp_mod::overflow_error = .false.
private

Definition at line 52 of file mpp_efp.F90.

◆ pr

real(double_kind), dimension(numint), parameter mpp_efp_mod::pr = (/ r_prec**2, r_prec, 1.0_8, 1.0_8/r_prec, 1.0_8/r_prec**2, 1.0_8/r_prec**3 /)
private

Definition at line 47 of file mpp_efp.F90.

◆ prec

integer(long_kind), parameter mpp_efp_mod::prec =2_8**NUMBIT
private

Definition at line 39 of file mpp_efp.F90.

◆ r_prec

real(double_kind), parameter mpp_efp_mod::r_prec =2.0_8**NUMBIT
private

Definition at line 40 of file mpp_efp.F90.