diff --git a/diag_manager/diag_manager.F90 b/diag_manager/diag_manager.F90 index daf88a95c9..e9347fe1d6 100644 --- a/diag_manager/diag_manager.F90 +++ b/diag_manager/diag_manager.F90 @@ -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, & @@ -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, & @@ -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,& diff --git a/diag_manager/fms_diag_object.F90 b/diag_manager/fms_diag_object.F90 index 713e37529c..765d9f4bab 100644 --- a/diag_manager/fms_diag_object.F90 +++ b/diag_manager/fms_diag_object.F90 @@ -20,7 +20,7 @@ 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 @@ -28,7 +28,7 @@ module fms_diag_object_mod 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, & @@ -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) diff --git a/test_fms/diag_manager/test_diag_manager2.sh b/test_fms/diag_manager/test_diag_manager2.sh index d4454df852..2b47186f99 100755 --- a/test_fms/diag_manager/test_diag_manager2.sh +++ b/test_fms/diag_manager/test_diag_manager2.sh @@ -45,7 +45,7 @@ setup_test () { &diag_manager_nml max_field_attributes=3 debug_diag_manager=.true. - + do_diag_field_log=.true. / &ensemble_nml @@ -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