Skip to content

Commit 6360dbb

Browse files
committed
Merge branch 'main' into main_to_dev
2 parents 82b879e + bac8031 commit 6360dbb

2 files changed

Lines changed: 74 additions & 12 deletions

File tree

config_src/infra/FMS1/MOM_diag_manager_infra.F90

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,15 @@ integer function register_static_field_infra(module_name, field_name, axes, long
236236
integer, optional, intent(in) :: area !< Diagnostic ID of the field containing the area attribute
237237
integer, optional, intent(in) :: volume !< Diagnostic ID of the field containing the volume attribute
238238

239-
register_static_field_infra = register_static_field_fms(module_name, field_name, axes, long_name, units,&
240-
& missing_value, range, mask_variant, standard_name, dynamic=.false.,do_not_log=do_not_log, &
239+
if(present(missing_value) .or. present(range)) then
240+
register_static_field_infra = register_static_field_fms(module_name, field_name, axes, long_name, units,&
241+
& missing_value, range, mask_variant=mask_variant, standard_name=standard_name, dynamic=.false.,&
242+
do_not_log=do_not_log, interp_method=interp_method,tile_count=tile_count, area=area, volume=volume)
243+
else
244+
register_static_field_infra = register_static_field_fms(module_name, field_name, axes, long_name, units,&
245+
& mask_variant=mask_variant, standard_name=standard_name, dynamic=.false.,do_not_log=do_not_log, &
241246
interp_method=interp_method,tile_count=tile_count, area=area, volume=volume)
247+
endif
242248
end function register_static_field_infra
243249

244250
!> Returns true if the argument data are successfully passed to a diagnostic manager
@@ -267,7 +273,20 @@ logical function send_data_infra_1d(diag_field_id, field, is_in, ie_in, time, ma
267273
character(len=*), optional, intent(out) :: err_msg !< A log indicating the status of the post upon
268274
!! returning to the calling routine
269275

270-
send_data_infra_1d = send_data_fms(diag_field_id, field, time, is_in, mask, rmask, ie_in, weight, err_msg)
276+
if(present(rmask) .or. present(weight)) then
277+
if(present(rmask) .and. present(weight)) then
278+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, mask=mask, rmask=rmask, ie_in=ie_in,&
279+
weight=weight, err_msg=err_msg)
280+
elseif(present(rmask)) then
281+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, mask=mask, rmask=rmask, ie_in=ie_in,&
282+
err_msg=err_msg)
283+
elseif(present(weight)) then
284+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, ie_in=ie_in, weight=weight,&
285+
err_msg=err_msg)
286+
endif
287+
else
288+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, ie_in=ie_in, err_msg=err_msg)
289+
endif
271290

272291
end function send_data_infra_1d
273292

@@ -289,9 +308,21 @@ logical function send_data_infra_2d(diag_field_id, field, is_in, ie_in, js_in, j
289308
character(len=*), optional, intent(out) :: err_msg !< A log indicating the status of the post upon
290309
!! returning to the calling routine
291310

292-
send_data_infra_2d = send_data_fms(diag_field_id, field, time, is_in, js_in, mask, &
293-
rmask, ie_in, je_in, weight, err_msg)
294-
311+
if(present(rmask) .or. present(weight)) then
312+
if(present(rmask) .and. present(weight)) then
313+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
314+
rmask=rmask, ie_in=ie_in, je_in=je_in, weight=weight, err_msg=err_msg)
315+
elseif(present(rmask)) then
316+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
317+
rmask=rmask, ie_in=ie_in, je_in=je_in, err_msg=err_msg)
318+
elseif(present(weight)) then
319+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
320+
ie_in=ie_in, je_in=je_in, weight=weight, err_msg=err_msg)
321+
endif
322+
else
323+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
324+
ie_in=ie_in, je_in=je_in, err_msg=err_msg)
325+
endif
295326
end function send_data_infra_2d
296327

297328
!> Returns true if the argument data are successfully passed to a diagnostic manager

config_src/infra/FMS2/MOM_diag_manager_infra.F90

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,15 @@ integer function register_static_field_infra(module_name, field_name, axes, long
236236
integer, optional, intent(in) :: area !< Diagnostic ID of the field containing the area attribute
237237
integer, optional, intent(in) :: volume !< Diagnostic ID of the field containing the volume attribute
238238

239-
register_static_field_infra = register_static_field_fms(module_name, field_name, axes, long_name, units,&
240-
& missing_value, range, mask_variant, standard_name, dynamic=.false.,do_not_log=do_not_log, &
239+
if(present(missing_value) .or. present(range)) then
240+
register_static_field_infra = register_static_field_fms(module_name, field_name, axes, long_name, units,&
241+
& missing_value, range, mask_variant=mask_variant, standard_name=standard_name, dynamic=.false.,&
242+
do_not_log=do_not_log, interp_method=interp_method,tile_count=tile_count, area=area, volume=volume)
243+
else
244+
register_static_field_infra = register_static_field_fms(module_name, field_name, axes, long_name, units,&
245+
& mask_variant=mask_variant, standard_name=standard_name, dynamic=.false.,do_not_log=do_not_log, &
241246
interp_method=interp_method,tile_count=tile_count, area=area, volume=volume)
247+
endif
242248
end function register_static_field_infra
243249

244250
!> Returns true if the argument data are successfully passed to a diagnostic manager
@@ -267,7 +273,20 @@ logical function send_data_infra_1d(diag_field_id, field, is_in, ie_in, time, ma
267273
character(len=*), optional, intent(out) :: err_msg !< A log indicating the status of the post upon
268274
!! returning to the calling routine
269275

270-
send_data_infra_1d = send_data_fms(diag_field_id, field, time, is_in, mask, rmask, ie_in, weight, err_msg)
276+
if(present(rmask) .or. present(weight)) then
277+
if(present(rmask) .and. present(weight)) then
278+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, mask=mask, rmask=rmask, ie_in=ie_in,&
279+
weight=weight, err_msg=err_msg)
280+
elseif(present(rmask)) then
281+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, mask=mask, rmask=rmask, ie_in=ie_in,&
282+
err_msg=err_msg)
283+
elseif(present(weight)) then
284+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, ie_in=ie_in, weight=weight,&
285+
err_msg=err_msg)
286+
endif
287+
else
288+
send_data_infra_1d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, ie_in=ie_in, err_msg=err_msg)
289+
endif
271290

272291
end function send_data_infra_1d
273292

@@ -289,9 +308,21 @@ logical function send_data_infra_2d(diag_field_id, field, is_in, ie_in, js_in, j
289308
character(len=*), optional, intent(out) :: err_msg !< A log indicating the status of the post upon
290309
!! returning to the calling routine
291310

292-
send_data_infra_2d = send_data_fms(diag_field_id, field, time, is_in, js_in, mask, &
293-
rmask, ie_in, je_in, weight, err_msg)
294-
311+
if(present(rmask) .or. present(weight)) then
312+
if(present(rmask) .and. present(weight)) then
313+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
314+
rmask=rmask, ie_in=ie_in, je_in=je_in, weight=weight, err_msg=err_msg)
315+
elseif(present(rmask)) then
316+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
317+
rmask=rmask, ie_in=ie_in, je_in=je_in, err_msg=err_msg)
318+
elseif(present(weight)) then
319+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
320+
ie_in=ie_in, je_in=je_in, weight=weight, err_msg=err_msg)
321+
endif
322+
else
323+
send_data_infra_2d = send_data_fms(diag_field_id, field, time=time, is_in=is_in, js_in=js_in, mask=mask, &
324+
ie_in=ie_in, je_in=je_in, err_msg=err_msg)
325+
endif
295326
end function send_data_infra_2d
296327

297328
!> Returns true if the argument data are successfully passed to a diagnostic manager

0 commit comments

Comments
 (0)