@@ -36,6 +36,7 @@ module MOM_surface_forcing_gfdl
3636use MOM_variables, only : surface
3737use user_revise_forcing, only : user_alter_forcing, user_revise_forcing_init
3838use user_revise_forcing, only : user_revise_forcing_CS
39+ use iso_fortran_env, only : int64
3940
4041implicit none ; private
4142
@@ -1622,32 +1623,39 @@ subroutine ice_ocn_bnd_type_chksum(id, timestep, iobt)
16221623 type (ice_ocean_boundary_type), &
16231624 intent (in ) :: iobt ! < An ice-ocean boundary type with fluxes to drive the
16241625 ! ! ocean in a coupled model whose checksums are reported
1625- integer :: n,m, outunit
1626+ ! Local variables
1627+ integer (kind= int64) :: chks ! A checksum for the field
1628+ logical :: root ! True only on the root PE
1629+ integer :: outunit ! The output unit to write to
16261630
16271631 outunit = stdout
1628-
1629- write (outunit,* ) " BEGIN CHECKSUM(ice_ocean_boundary_type):: " , id, timestep
1630- write (outunit,100 ) ' iobt%u_flux ' , field_chksum( iobt% u_flux )
1631- write (outunit,100 ) ' iobt%v_flux ' , field_chksum( iobt% v_flux )
1632- write (outunit,100 ) ' iobt%t_flux ' , field_chksum( iobt% t_flux )
1633- write (outunit,100 ) ' iobt%q_flux ' , field_chksum( iobt% q_flux )
1634- write (outunit,100 ) ' iobt%salt_flux ' , field_chksum( iobt% salt_flux )
1635- write (outunit,100 ) ' iobt%lw_flux ' , field_chksum( iobt% lw_flux )
1636- write (outunit,100 ) ' iobt%sw_flux_vis_dir' , field_chksum( iobt% sw_flux_vis_dir)
1637- write (outunit,100 ) ' iobt%sw_flux_vis_dif' , field_chksum( iobt% sw_flux_vis_dif)
1638- write (outunit,100 ) ' iobt%sw_flux_nir_dir' , field_chksum( iobt% sw_flux_nir_dir)
1639- write (outunit,100 ) ' iobt%sw_flux_nir_dif' , field_chksum( iobt% sw_flux_nir_dif)
1640- write (outunit,100 ) ' iobt%lprec ' , field_chksum( iobt% lprec )
1641- write (outunit,100 ) ' iobt%fprec ' , field_chksum( iobt% fprec )
1642- write (outunit,100 ) ' iobt%runoff ' , field_chksum( iobt% runoff )
1643- write (outunit,100 ) ' iobt%calving ' , field_chksum( iobt% calving )
1644- write (outunit,100 ) ' iobt%p ' , field_chksum( iobt% p )
1645- if (associated (iobt% ustar_berg)) &
1646- write (outunit,100 ) ' iobt%ustar_berg ' , field_chksum( iobt% ustar_berg )
1647- if (associated (iobt% area_berg)) &
1648- write (outunit,100 ) ' iobt%area_berg ' , field_chksum( iobt% area_berg )
1649- if (associated (iobt% mass_berg)) &
1650- write (outunit,100 ) ' iobt%mass_berg ' , field_chksum( iobt% mass_berg )
1632+ root = is_root_pe()
1633+
1634+ if (root) write (outunit,* ) " BEGIN CHECKSUM(ice_ocean_boundary_type):: " , id, timestep
1635+ chks = field_chksum( iobt% u_flux ) ; if (root) write (outunit,100 ) ' iobt%u_flux ' , chks
1636+ chks = field_chksum( iobt% v_flux ) ; if (root) write (outunit,100 ) ' iobt%v_flux ' , chks
1637+ chks = field_chksum( iobt% t_flux ) ; if (root) write (outunit,100 ) ' iobt%t_flux ' , chks
1638+ chks = field_chksum( iobt% q_flux ) ; if (root) write (outunit,100 ) ' iobt%q_flux ' , chks
1639+ chks = field_chksum( iobt% salt_flux ) ; if (root) write (outunit,100 ) ' iobt%salt_flux ' , chks
1640+ chks = field_chksum( iobt% lw_flux ) ; if (root) write (outunit,100 ) ' iobt%lw_flux ' , chks
1641+ chks = field_chksum( iobt% sw_flux_vis_dir) ; if (root) write (outunit,100 ) ' iobt%sw_flux_vis_dir' , chks
1642+ chks = field_chksum( iobt% sw_flux_vis_dif) ; if (root) write (outunit,100 ) ' iobt%sw_flux_vis_dif' , chks
1643+ chks = field_chksum( iobt% sw_flux_nir_dir) ; if (root) write (outunit,100 ) ' iobt%sw_flux_nir_dir' , chks
1644+ chks = field_chksum( iobt% sw_flux_nir_dif) ; if (root) write (outunit,100 ) ' iobt%sw_flux_nir_dif' , chks
1645+ chks = field_chksum( iobt% lprec ) ; if (root) write (outunit,100 ) ' iobt%lprec ' , chks
1646+ chks = field_chksum( iobt% fprec ) ; if (root) write (outunit,100 ) ' iobt%fprec ' , chks
1647+ chks = field_chksum( iobt% runoff ) ; if (root) write (outunit,100 ) ' iobt%runoff ' , chks
1648+ chks = field_chksum( iobt% calving ) ; if (root) write (outunit,100 ) ' iobt%calving ' , chks
1649+ chks = field_chksum( iobt% p ) ; if (root) write (outunit,100 ) ' iobt%p ' , chks
1650+ if (associated (iobt% ustar_berg)) then
1651+ chks = field_chksum( iobt% ustar_berg ) ; if (root) write (outunit,100 ) ' iobt%ustar_berg ' , chks
1652+ endif
1653+ if (associated (iobt% area_berg)) then
1654+ chks = field_chksum( iobt% area_berg ) ; if (root) write (outunit,100 ) ' iobt%area_berg ' , chks
1655+ endif
1656+ if (associated (iobt% mass_berg)) then
1657+ chks = field_chksum( iobt% mass_berg ) ; if (root) write (outunit,100 ) ' iobt%mass_berg ' , chks
1658+ endif
16511659100 FORMAT (" CHECKSUM::" ,A20," = " ,Z20)
16521660
16531661 call coupler_type_write_chksums(iobt% fluxes, outunit, ' iobt%' )
0 commit comments