Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions diag_manager/diag_manager.F90
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,15 @@ INTEGER FUNCTION register_diag_field_scalar(module_name, field_name, init_time,
END IF
END IF
if (use_modern_diag) then
if( do_diag_field_log) then
if ( PRESENT(do_not_log) ) THEN
if(.not. do_not_log) call log_diag_field_info(module_name, field_name, (/NULL_AXIS_ID/), long_name,&
& units, missing_value, range, dynamic=.true.)
else
call log_diag_field_info(module_name, field_name, (/NULL_AXIS_ID/), long_name, units,&
& missing_value, range, dynamic=.true.)
endif
endif
register_diag_field_scalar = fms_diag_object%fms_register_diag_field_scalar( &
& module_name, field_name, init_time, long_name=long_name, units=units, &
& missing_value=missing_value, var_range=range, standard_name=standard_name, &
Expand Down Expand Up @@ -445,6 +454,15 @@ INTEGER FUNCTION register_diag_field_array(module_name, field_name, axes, init_t
CHARACTER(len=*), OPTIONAL, INTENT(in) :: realm !< String to set as the modeling_realm attribute

if (use_modern_diag) then
if( do_diag_field_log) then
if ( PRESENT(do_not_log) ) THEN
if(.not. do_not_log) call log_diag_field_info(module_name, field_name, axes, long_name,&
& units, missing_value, range, dynamic=.true.)
else
call log_diag_field_info(module_name, field_name, axes, long_name, units,&
& missing_value, range, dynamic=.true.)
endif
endif
register_diag_field_array = fms_diag_object%fms_register_diag_field_array( &
& module_name, field_name, axes, init_time, long_name=long_name, &
& units=units, missing_value=missing_value, var_range=range, mask_variant=mask_variant, &
Expand Down Expand Up @@ -494,6 +512,15 @@ INTEGER FUNCTION register_static_field(module_name, field_name, axes, long_name,
END IF

if (use_modern_diag) then
if( do_diag_field_log) then
if ( PRESENT(do_not_log) ) THEN
if(.not. do_not_log) call log_diag_field_info(module_name, field_name, axes, long_name,&
& units, missing_value, range, dynamic=.false.)
else
call log_diag_field_info(module_name, field_name, axes, long_name, units,&
& missing_value, range, dynamic=.false.)
endif
endif
register_static_field = fms_diag_object%fms_register_static_field(module_name, field_name, axes, &
& long_name=long_name, units=units, missing_value=missing_value, range=range, mask_variant=mask_variant, &
& standard_name=standard_name, dynamic=DYNAMIC, do_not_log=do_not_log, interp_method=interp_method,&
Expand Down
14 changes: 11 additions & 3 deletions diag_manager/fms_diag_object.F90
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ module fms_diag_object_mod
use mpp_mod, only: fatal, note, warning, mpp_error, mpp_pe, mpp_root_pe, stdout
use diag_data_mod, only: diag_null, diag_not_found, diag_not_registered, diag_registered_id, &
&DIAG_FIELD_NOT_FOUND, diag_not_registered, max_axes, TWO_D_DOMAIN, &
&get_base_time
&get_base_time, NULL_AXIS_ID
USE time_manager_mod, ONLY: set_time, set_date, get_time, time_type, OPERATOR(>=), OPERATOR(>),&
& OPERATOR(<), OPERATOR(==), OPERATOR(/=), OPERATOR(/), OPERATOR(+), ASSIGNMENT(=), get_date, &
& get_ticks_per_second
#ifdef use_yaml
use fms_diag_file_object_mod, only: fmsDiagFileContainer_type, fmsDiagFile_type, fms_diag_files_object_init
use fms_diag_field_object_mod, only: fmsDiagField_type, fms_diag_fields_object_init
use fms_diag_yaml_mod, only: diag_yaml_object_init, diag_yaml_object_end, find_diag_field, &
& get_diag_files_id, diag_yaml
& get_diag_files_id, diag_yaml
use fms_diag_axis_object_mod, only: fms_diag_axis_object_init, fmsDiagAxis_type, fmsDiagSubAxis_type, &
&diagDomain_t, get_domain_and_domain_type, diagDomain2d_t, &
&fmsDiagAxisContainer_type, fms_diag_axis_object_end, fmsDiagFullAxis_type, &
Expand Down Expand Up @@ -789,7 +789,15 @@ function fms_get_axis_name_from_id (this, axis_id) &
axis_name=" "
#else
if (axis_id < 0 .and. axis_id > this%registered_axis) &
call mpp_error(FATAL, "fms_get_axis_length: The axis_id is not valid")
call mpp_error(FATAL, "fms_get_axis_length: The axis_id is not valid")

!! if its a scalar (null axis id) just returns n/a since no axis is defined
if (axis_id .eq. NULL_AXIS_ID) then
allocate(character(len=3) :: axis_name)
axis_name = "n/a"
return
endif


select type (axis => this%diag_axis(axis_id)%axis)
type is (fmsDiagFullAxis_type)
Expand Down
4 changes: 2 additions & 2 deletions test_fms/diag_manager/test_diag_manager2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ setup_test () {
&diag_manager_nml
max_field_attributes=3
debug_diag_manager=.true.

do_diag_field_log=.true.
/

&ensemble_nml
Expand Down Expand Up @@ -655,7 +655,7 @@ _EOF
'


printf "&diag_manager_nml \n use_modern_diag = .true. \n/" | cat > input.nml
printf "&diag_manager_nml \n use_modern_diag = .true. \n do_diag_field_log = .true. \n/" | cat > input.nml
cat <<_EOF > diag_table.yaml
title: test_diag_manager
base_date: 2 1 1 0 0 0
Expand Down