@@ -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
242248end 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
272291end 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
295326end function send_data_infra_2d
296327
297328! > Returns true if the argument data are successfully passed to a diagnostic manager
0 commit comments