Skip to content

Commit 8039cb8

Browse files
committed
Remove rescaling bottom pressure in SAL
* Instead of rescaling bottom pressure to height unit, calc_Loving_scaling is modified to be conditionally dimensional. When calculating self-attraction and loading, Love numbers are now dimensional when bottom pressure anomaly is used as an input. This change eliminate Love numbers' dependence on mean seawater density. * A new coefficient called linear_scaling is added to SAL CS for the same purpose, although to use bottom pressure anomaly for scalar approximation is not quite justifiable. A WARNING is given when users try to do that. * Two separate field, SSH (sea surface height anomaly) and pbot (total bottom pressure), are used for calculating self attraction and loading when SAL_USE_BPA = False and SAL_USE_BPA = True, respectively. The change is to enhance code readability.
1 parent e17bfc1 commit 8039cb8

File tree

3 files changed

+64
-56
lines changed

3 files changed

+64
-56
lines changed

src/core/MOM_PressureForce_FV.F90

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,10 @@ subroutine PressureForce_FV_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_
145145
! the pressure anomaly at the top of the layer [R L4 T-4 ~> Pa m2 s-2].
146146
real, dimension(SZI_(G),SZJ_(G)) :: &
147147
dp, & ! The (positive) change in pressure across a layer [R L2 T-2 ~> Pa].
148-
pbot_anom, & ! Bottom pressure (anomaly) in depth units, used for self-attraction and loading [Z ~> m].
148+
SSH, & ! Sea surfae height anomaly for self-attraction and loading. Used if
149+
! CALCULATE_SAL is True and SAL_USE_BPA is False [Z ~> m].
150+
pbot, & ! Total bottom pressure for self-attraction and loading. Used if
151+
! CALCULATE_SAL is True and SAL_USE_BPA is True [R L2 T-2 ~> Pa].
149152
e_sal, & ! The bottom geopotential anomaly due to self-attraction and loading [Z ~> m].
150153
e_tidal_eq, & ! The bottom geopotential anomaly due to tidal forces from astronomical sources [Z ~> m].
151154
e_tidal_sal, & ! The bottom geopotential anomaly due to harmonic self-attraction and loading
@@ -222,7 +225,6 @@ subroutine PressureForce_FV_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_
222225
real :: dp_neglect ! A thickness that is so small it is usually lost
223226
! in roundoff and can be neglected [R L2 T-2 ~> Pa].
224227
real :: I_gEarth ! The inverse of GV%g_Earth [T2 Z L-2 ~> s2 m-1]
225-
real :: I_g_rho ! The inverse of the density times the gravitational acceleration [Z T2 L-2 R-1 ~> m Pa-1]
226228
real :: alpha_anom ! The in-situ specific volume, averaged over a
227229
! layer, less alpha_ref [R-1 ~> m3 kg-1].
228230
logical :: use_p_atm ! If true, use the atmospheric pressure.
@@ -408,19 +410,19 @@ subroutine PressureForce_FV_nonBouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_
408410
! Calculate and add self-attraction and loading (SAL) geopotential height anomaly to interface height.
409411
if (CS%calculate_SAL) then
410412
if (CS%sal_use_bpa) then
411-
I_g_rho = 1.0 / (GV%rho0*GV%g_Earth)
412413
!$OMP parallel do default(shared)
413414
do j=Jsq,Jeq+1 ; do i=Isq,Ieq+1
414-
pbot_anom(i,j) = p(i,j,nz+1) * I_g_rho
415+
pbot(i,j) = p(i,j,nz+1)
415416
enddo ; enddo
417+
call calc_SAL(pbot, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
416418
else
417419
!$OMP parallel do default(shared)
418420
do j=Jsq,Jeq+1 ; do i=Isq,Ieq+1
419-
pbot_anom(i,j) = (za(i,j,1) - alpha_ref*p(i,j,1)) * I_gEarth - G%Z_ref &
421+
SSH(i,j) = (za(i,j,1) - alpha_ref*p(i,j,1)) * I_gEarth - G%Z_ref &
420422
- max(-G%bathyT(i,j)-G%Z_ref, 0.0)
421423
enddo ; enddo
424+
call calc_SAL(SSH, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
422425
endif
423-
call calc_SAL(pbot_anom, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
424426

425427
! This gives new answers after the change of separating SAL from tidal forcing module.
426428
if ((CS%tides_answer_date>20230630) .or. (.not.GV%semi_Boussinesq) .or. (.not.CS%tides)) then
@@ -873,7 +875,10 @@ subroutine PressureForce_FV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm
873875
e_tidal_sal, & ! The bottom geopotential anomaly due to harmonic self-attraction and loading
874876
! specific to tides [Z ~> m].
875877
Z_0p, & ! The height at which the pressure used in the equation of state is 0 [Z ~> m]
876-
pbot_anom, & ! Bottom pressure (anomaly) in depth units, used for self-attraction and loading [Z ~> m].
878+
SSH, & ! Sea surfae height anomaly for self-attraction and loading. Used if
879+
! CALCULATE_SAL is True and SAL_USE_BPA is False [Z ~> m].
880+
pbot, & ! Total bottom pressure for self-attraction and loading. Used if
881+
! CALCULATE_SAL is True and SAL_USE_BPA is True [R L2 T-2 ~> Pa].
877882
dM ! The barotropic adjustment to the Montgomery potential to
878883
! account for a reduced gravity model [L2 T-2 ~> m2 s-2].
879884
real, dimension(SZI_(G)) :: &
@@ -1018,7 +1023,6 @@ subroutine PressureForce_FV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm
10181023
G_Rho0 = GV%g_Earth / GV%Rho0
10191024
GxRho = GV%g_Earth * GV%Rho0
10201025
rho_ref = CS%Rho0
1021-
I_g_rho = 1.0 / (CS%rho0*GV%g_Earth) ! I think it should be I_g_rho = 1.0 / (GV%rho0*GV%g_Earth)
10221026

10231027
if ((CS%id_MassWt_u > 0) .or. (CS%id_MassWt_v > 0)) then
10241028
MassWt_u(:,:,:) = 0.0 ; MassWt_v(:,:,:) = 0.0
@@ -1033,17 +1037,17 @@ subroutine PressureForce_FV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm
10331037
! The following code is for recovering old answers only. The algorithm moves interface heights before density
10341038
! calculations, and therefore is incorrect without SSH_IN_EOS_PRESSURE_FOR_PGF=True (added in August 2024).
10351039
! See the code right after Pa calculation loop for the new method.
1036-
if (CS%tides_answer_date<=20230630) then
1040+
if (CS%tides .and. CS%tides_answer_date<=20230630) then
10371041
!$OMP parallel do default(shared)
10381042
do j=Jsq,Jeq+1
10391043
do i=Isq,Ieq+1
1040-
pbot_anom(i,j) = min(-G%bathyT(i,j) - G%Z_ref, 0.0) ! reference bottom pressure
1044+
SSH(i,j) = min(-G%bathyT(i,j) - G%Z_ref, 0.0) ! reference bottom pressure
10411045
enddo
10421046
do k=1,nz ; do i=Isq,Ieq+1
1043-
pbot_anom(i,j) = pbot_anom(i,j) + h(i,j,k)*GV%H_to_Z
1047+
SSH(i,j) = SSH(i,j) + h(i,j,k)*GV%H_to_Z
10441048
enddo ; enddo
10451049
enddo
1046-
call calc_SAL(pbot_anom, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
1050+
call calc_SAL(SSH, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
10471051
call calc_tidal_forcing_legacy(CS%Time, e_sal, e_sal_and_tide, e_tidal_eq, e_tidal_sal, &
10481052
G, US, CS%tides_CSp)
10491053
!$OMP parallel do default(shared)
@@ -1118,6 +1122,7 @@ subroutine PressureForce_FV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm
11181122
endif
11191123

11201124
if (CS%use_SSH_in_Z0p .and. use_p_atm) then
1125+
I_g_rho = 1.0 / (CS%rho0*GV%g_Earth)
11211126
do j=Jsq,Jeq+1 ; do i=Isq,Ieq+1
11221127
Z_0p(i,j) = e(i,j,1) + p_atm(i,j) * I_g_rho
11231128
enddo ; enddo
@@ -1201,15 +1206,16 @@ subroutine PressureForce_FV_Bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm
12011206
if (CS%sal_use_bpa) then
12021207
!$OMP parallel do default(shared)
12031208
do j=Jsq,Jeq+1 ; do i=Isq,Ieq+1
1204-
pbot_anom(i,j) = pa(i,j,nz+1) * I_g_rho - e(i,j,nz+1)
1209+
pbot(i,j) = pa(i,j,nz+1) - GxRho * e(i,j,nz+1)
12051210
enddo ; enddo
1211+
call calc_SAL(pbot, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
12061212
else
12071213
!$OMP parallel do default(shared)
12081214
do j=Jsq,Jeq+1 ; do i=Isq,Ieq+1
1209-
pbot_anom(i,j) = e(i,j,1) - max(-G%bathyT(i,j) - G%Z_ref, 0.0) ! Remove topography above sea level
1215+
SSH(i,j) = e(i,j,1) - max(-G%bathyT(i,j) - G%Z_ref, 0.0) ! Remove topography above sea level
12101216
enddo ; enddo
1217+
call calc_SAL(SSH, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
12111218
endif
1212-
call calc_SAL(pbot_anom, e_sal, G, CS%SAL_CSp, tmp_scale=US%Z_to_m)
12131219
if (.not.CS%bq_sal_tides) then ; do K=1,nz+1
12141220
!$OMP parallel do default(shared)
12151221
do j=Jsq,Jeq+1 ; do i=Isq,Ieq+1

src/parameterizations/lateral/MOM_self_attr_load.F90

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ module MOM_self_attr_load
3434
real :: eta_prop
3535
!< The partial derivative of eta_sal with the local value of eta [nondim].
3636
real :: linear_scaling
37-
!< A dimensional coefficient for scalar approximation SAL, equal to eta_prop * unit_convert
38-
!! [nondim or L2 Z-1 T-2 ~> m s-2 or R-1 ~> m3 kg-1 or L2 Z-1 T-2 R-1 ~> m4 s-2 kg-1]
37+
!< Dimensional coefficients for scalar SAL [nondim or Z T2 L-2 R-1 ~> m Pa-1]
3938
type(sht_CS), allocatable :: sht
4039
!< Spherical harmonic transforms (SHT) control structure
4140
integer :: sal_sht_Nd
@@ -44,7 +43,7 @@ module MOM_self_attr_load
4443
!< Reference bottom pressure scaled by Rho_0 and G_Earth[Z ~> m]
4544
real, allocatable :: Love_scaling(:)
4645
!< Dimensional coefficients for harmonic SAL, which are functions of Love numbers
47-
!! [nondim or L2 Z-1 T-2 ~> m s-2 or R-1 ~> m3 kg-1 or L2 Z-1 T-2 R-1 ~> m4 s-2 kg-1]
46+
!! [nondim or Z T2 L-2 R-1 ~> m Pa-1]
4847
real, allocatable :: Snm_Re(:), & !< Real SHT coefficient for SHT SAL [Z ~> m]
4948
Snm_Im(:) !< Imaginary SHT coefficient for SHT SAL [Z ~> m]
5049
end type SAL_CS
@@ -56,24 +55,22 @@ module MOM_self_attr_load
5655
!> This subroutine calculates seawater self-attraction and loading based on either sea surface height (SSH) or bottom
5756
!! pressure anomaly. Note that the SAL calculation applies to all motions across the spectrum. Tidal-specific methods
5857
!! that assume periodicity, i.e. iterative and read-in SAL, are stored in MOM_tidal_forcing module.
59-
!! The input field is always assume to have the unit of [Z ~> m], which can be either SSH or total bottom pressure
60-
!! scaled by mean seawater density Rho_0 and earth gravity G_Earth. For spherical harmonics, the mean seawater density
61-
!! would be cancelled by the same parameter in Love number scalings. If total bottom pressure is used as input, bottom
62-
!! pressure anomaly is calculated in the subroutine by subtracting a reference pressure from the input bottom pressure.
58+
!! The input field can be either SSH [Z ~> m] or total bottom pressure [R L2 T-2 ~> Pa]. If total bottom pressure is
59+
!! used, bottom pressure anomaly is first calculated by subtracting a reference bottom pressure from an input file.
6360
!! The output field is expressed as geopotential height anomaly, and therefore has the unit of [Z ~> m].
6461
subroutine calc_SAL(eta, eta_sal, G, CS, tmp_scale)
65-
type(ocean_grid_type), intent(in) :: G !< The ocean's grid structure.
62+
type(ocean_grid_type), intent(in) :: G !< The ocean's grid structure.
6663
real, dimension(SZI_(G),SZJ_(G)), intent(in) :: eta !< The sea surface height anomaly from
67-
!! a time-mean geoid or total bottom pressure scaled by mean density and earth gravity [Z ~> m].
64+
!! a time-mean geoid or total bottom pressure [Z ~> m] or [R L2 T-2 ~> Pa].
6865
real, dimension(SZI_(G),SZJ_(G)), intent(out) :: eta_sal !< The geopotential height anomaly from
6966
!! self-attraction and loading [Z ~> m].
7067
type(SAL_CS), intent(inout) :: CS !< The control structure returned by a previous call to SAL_init.
7168
real, optional, intent(in) :: tmp_scale !< A rescaling factor to temporarily convert eta
7269
!! to MKS units in reproducing sumes [m Z-1 ~> 1]
7370

7471
! Local variables
72+
real, dimension(SZI_(G),SZJ_(G)) :: bpa ! SSH or bottom pressure anomaly [Z ~> m or R L2 T-2 ~> Pa]
7573
integer :: n, m, l
76-
real, dimension(SZI_(G),SZJ_(G)) :: bpa ! [Z ~> m]
7774
integer :: Isq, Ieq, Jsq, Jeq
7875
integer :: i, j
7976

@@ -90,7 +87,7 @@ subroutine calc_SAL(eta, eta_sal, G, CS, tmp_scale)
9087
! use the scalar approximation and/or iterative tidal SAL
9188
if (CS%use_sal_scalar .or. CS%use_tidal_sal_prev) then
9289
do j=Jsq,Jeq+1 ; do i=Isq,Ieq+1
93-
eta_sal(i,j) = CS%eta_prop * bpa(i,j)
90+
eta_sal(i,j) = CS%linear_scaling * bpa(i,j)
9491
enddo ; enddo
9592

9693
! use the spherical harmonics method
@@ -132,21 +129,21 @@ end subroutine scalar_SAL_sensitivity
132129
!> This subroutine calculates coefficients of the spherical harmonic modes for self-attraction and loading.
133130
!! The algorithm is based on the SAL implementation in MPAS-ocean, which was modified by Kristin Barton from
134131
!! routine written by K. Quinn (March 2010) and modified by M. Schindelegger (May 2017).
135-
subroutine calc_love_scaling(nlm, rhoW, rhoE, Love_scaling)
136-
integer, intent(in) :: nlm !< Maximum spherical harmonics degree [nondim]
137-
real, intent(in) :: rhoW !< The average density of sea water [R ~> kg m-3]
138-
real, intent(in) :: rhoE !< The average density of Earth [R ~> kg m-3]
139-
real, dimension(:), intent(out) :: Love_scaling !< Scaling factors for inverse spherical harmonic
140-
!! transforms [nondim]
132+
subroutine calc_love_scaling(rhoW, rhoE, grav, CS)
133+
real, intent(in) :: rhoW !< The average density of sea water [R ~> kg m-3]
134+
real, intent(in) :: rhoE !< The average density of Earth [R ~> kg m-3]
135+
real, intent(in) :: grav !< The gravitational acceleration [L2 Z-1 T-2 ~> m s-2]
136+
type(SAL_CS), intent(inout) :: CS !< The control structure returned by a previous call to SAL_init.
141137

142138
! Local variables
143139
real, dimension(:), allocatable :: HDat, LDat, KDat ! Love numbers converted in CF reference frames [nondim]
144140
real :: H1, L1, K1 ! Temporary variables to store degree 1 Love numbers [nondim]
145-
integer :: n_tot ! Size of the stored Love numbers
141+
integer :: n_tot ! Size of the stored Love numbers [nondim]
142+
integer :: nlm ! Maximum spherical harmonics degree [nondim]
146143
integer :: n, m, l
147-
real :: unit
148144

149145
n_tot = size(Love_Data, dim=2)
146+
nlm = CS%sal_sht_Nd
150147

151148
if (nlm+1 > n_tot) call MOM_error(FATAL, "MOM_tidal_forcing " // &
152149
"calc_love_scaling: maximum spherical harmonics degree is larger than " // &
@@ -165,7 +162,11 @@ subroutine calc_love_scaling(nlm, rhoW, rhoE, Love_scaling)
165162

166163
do m=0,nlm ; do n=m,nlm
167164
l = order2index(m,nlm)
168-
Love_scaling(l+n-m) = (3.0 / real(2*n+1)) * (rhoW / rhoE) * (1.0 + KDat(n+1) - HDat(n+1))
165+
if (CS%use_bpa) then
166+
CS%Love_scaling(l+n-m) = (3.0 / real(2*n+1)) * (1.0 / (rhoE * grav)) * (1.0 + KDat(n+1) - HDat(n+1))
167+
else
168+
CS%Love_scaling(l+n-m) = (3.0 / real(2*n+1)) * (rhoW / rhoE) * (1.0 + KDat(n+1) - HDat(n+1))
169+
endif
169170
enddo ; enddo
170171
end subroutine calc_love_scaling
171172

@@ -184,14 +185,12 @@ subroutine SAL_init(G, GV, US, param_file, CS)
184185
real :: rhoE ! The average density of Earth [R ~> kg m-3].
185186
character(len=200) :: filename, ebot_ref_file, inputdir ! Strings for file/path
186187
character(len=200) :: ebot_ref_varname ! Variable name in file
187-
real :: I_g_rho ! The inverse of the density times the gravitational acceleration [Z T2 L-2 R-1 ~> m Pa-1]
188188
logical :: calculate_sal=.false.
189189
logical :: tides=.false., use_tidal_sal_file=.false., bq_sal_tides_bug=.false.
190190
integer :: tides_answer_date=99991203 ! Recover old answers with tides
191191
real :: sal_scalar_value, tide_sal_scalar_value ! Scaling SAL factors [nondim]
192-
193192
integer :: isd, ied, jsd, jed
194-
integer :: i, j
193+
195194
isd = G%isd ; ied = G%ied ; jsd = G%jsd ; jed = G%jed
196195

197196
! Read all relevant parameters and write them to the model log.
@@ -230,10 +229,6 @@ subroutine SAL_init(G, GV, US, param_file, CS)
230229
allocate(CS%ebot_ref(isd:ied, jsd:jed), source=0.0)
231230
call MOM_read_data(filename, trim(ebot_ref_varname), CS%ebot_ref, G%Domain,&
232231
scale=US%Pa_to_RL2_T2)
233-
I_g_rho = 1.0 / (GV%g_Earth * GV%Rho0)
234-
do j=jsd,jed ; do i=isd,ied
235-
CS%ebot_ref(i,j) = CS%ebot_ref(i,j) * I_g_rho
236-
enddo ; enddo
237232
call pass_var(CS%ebot_ref, G%Domain)
238233
endif
239234
if (tides_answer_date<=20230630 .and. CS%use_bpa) &
@@ -242,9 +237,9 @@ subroutine SAL_init(G, GV, US, param_file, CS)
242237
call get_param(param_file, mdl, "SAL_SCALAR_APPROX", CS%use_sal_scalar, &
243238
"If true, use the scalar approximation to calculate self-attraction and "//&
244239
"loading.", default=tides .and. (.not. use_tidal_sal_file))
245-
! if (CS%use_sal_scalar .and. CS%use_bpa) &
246-
! call MOM_error(WARNING, trim(mdl) // ", SAL_init: Using bottom pressure anomaly for scalar "//&
247-
! "approximation SAL is unsubstantiated.")
240+
if (CS%use_sal_scalar .and. CS%use_bpa) &
241+
call MOM_error(WARNING, trim(mdl) // ", SAL_init: Using bottom pressure anomaly for scalar "//&
242+
"approximation SAL is unsubstantiated.")
248243
call get_param(param_file, '', "TIDE_SAL_SCALAR_VALUE", tide_sal_scalar_value, &
249244
units="m m-1", default=0.0, do_not_log=.True.)
250245
if (tide_sal_scalar_value/=0.0) &
@@ -270,22 +265,29 @@ subroutine SAL_init(G, GV, US, param_file, CS)
270265
default=5517.0, scale=US%kg_m3_to_R, do_not_log=(.not. CS%use_sal_sht))
271266

272267
! Set scaling coefficients for scalar approximation
273-
if (CS%use_sal_scalar .and. CS%use_tidal_sal_prev) then
274-
CS%eta_prop = 2.0 * sal_scalar_value
275-
elseif (CS%use_sal_scalar .or. CS%use_tidal_sal_prev) then
276-
CS%eta_prop = sal_scalar_value
268+
if (CS%use_sal_scalar .or. CS%use_tidal_sal_prev) then
269+
if (CS%use_sal_scalar .and. CS%use_tidal_sal_prev) then
270+
CS%eta_prop = 2.0 * sal_scalar_value
271+
else
272+
CS%eta_prop = sal_scalar_value
273+
endif
274+
if (CS%use_bpa) then
275+
CS%linear_scaling = CS%eta_prop / (GV%Rho0 * GV%g_Earth)
276+
else
277+
CS%linear_scaling = CS%eta_prop
278+
endif
277279
else
278-
CS%eta_prop = 0.0
280+
CS%eta_prop = 0.0 ; CS%linear_scaling = 0.0
279281
endif
280282

281283
! Set scaling coefficients for spherical harmonics
282284
if (CS%use_sal_sht) then
283285
lmax = calc_lmax(CS%sal_sht_Nd)
284-
allocate(CS%Snm_Re(lmax)); CS%Snm_Re(:) = 0.0
285-
allocate(CS%Snm_Im(lmax)); CS%Snm_Im(:) = 0.0
286+
allocate(CS%Snm_Re(lmax), source=0.0)
287+
allocate(CS%Snm_Im(lmax), source=0.0)
286288

287-
allocate(CS%Love_scaling(lmax)); CS%Love_scaling(:) = 0.0
288-
call calc_love_scaling(CS%sal_sht_Nd, GV%Rho0, rhoE, CS%Love_scaling)
289+
allocate(CS%Love_scaling(lmax), source=0.0)
290+
call calc_love_scaling(GV%Rho0, rhoE, GV%g_Earth, CS)
289291

290292
allocate(CS%sht)
291293
call spherical_harmonics_init(G, param_file, CS%sht)

src/parameterizations/lateral/MOM_spherical_harmonics.F90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
!> Laplace's spherical harmonic transforms (SHT)
22
module MOM_spherical_harmonics
3+
use MOM_coms_infra, only : sum_across_PEs
4+
use MOM_coms, only : reproducing_sum
35
use MOM_cpu_clock, only : cpu_clock_id, cpu_clock_begin, cpu_clock_end, &
46
CLOCK_MODULE, CLOCK_ROUTINE, CLOCK_LOOP
57
use MOM_error_handler, only : MOM_error, FATAL
68
use MOM_file_parser, only : get_param, log_version, param_file_type
79
use MOM_grid, only : ocean_grid_type
8-
use MOM_coms_infra, only : sum_across_PEs
9-
use MOM_coms, only : reproducing_sum
1010

1111
implicit none ; private
1212

0 commit comments

Comments
 (0)