diff --git a/diag_manager/fms_diag_object.F90 b/diag_manager/fms_diag_object.F90 index c985a6c30..f4c892dec 100644 --- a/diag_manager/fms_diag_object.F90 +++ b/diag_manager/fms_diag_object.F90 @@ -224,6 +224,7 @@ integer function fms_register_diag_field_obj & integer, allocatable :: file_ids(:) !< The file IDs for this variable integer :: i !< For do loops integer, allocatable :: diag_field_indices(:) !< indices where the field was found in the yaml + class(diagDomain_t), pointer :: null_diag_domain => NULL() !< Workaround for a Cray bug which will be fixed in CCE 19 #endif #ifndef use_yaml fms_register_diag_field_obj = DIAG_FIELD_NOT_FOUND @@ -267,7 +268,7 @@ integer function fms_register_diag_field_obj & call fileptr%add_field_and_yaml_id(fieldptr%get_id(), diag_field_indices(i)) call fileptr%add_buffer_id(fieldptr%buffer_ids(i)) if(fieldptr%get_type_of_domain() .eq. NO_DOMAIN) then - call fileptr%set_file_domain(NULL(), fieldptr%get_type_of_domain()) + call fileptr%set_file_domain(null_diag_domain, fieldptr%get_type_of_domain()) else call fileptr%set_file_domain(fieldptr%get_domain(), fieldptr%get_type_of_domain()) endif @@ -284,7 +285,7 @@ integer function fms_register_diag_field_obj & call fileptr%add_buffer_id(fieldptr%buffer_ids(i)) call fileptr%init_diurnal_axis(this%diag_axis, this%registered_axis, diag_field_indices(i)) if(fieldptr%get_type_of_domain() .eq. NO_DOMAIN) then - call fileptr%set_file_domain(NULL(), fieldptr%get_type_of_domain()) + call fileptr%set_file_domain(null_diag_domain, fieldptr%get_type_of_domain()) else call fileptr%set_file_domain(fieldptr%get_domain(), fieldptr%get_type_of_domain()) endif diff --git a/test_fms/horiz_interp/test_horiz_interp.F90 b/test_fms/horiz_interp/test_horiz_interp.F90 index 31f0e3178..59ccdbb23 100644 --- a/test_fms/horiz_interp/test_horiz_interp.F90 +++ b/test_fms/horiz_interp/test_horiz_interp.F90 @@ -1131,7 +1131,7 @@ subroutine test_assignment() ! this set up is usually done within horiz_interp_new nlon_in = size(lon_in_1d(:))-1; nlat_in = size(lat_in_1d(:))-1 nlon_out = size(lon_out_1d(:))-1; nlat_out = size(lat_out_1d(:))-1 - allocate(lon_src_1d(nlon_in), lat_src_1d(nlat_in)) + allocate(lon_src_1d(nlon_in-1), lat_src_1d(nlat_in-1)) allocate(lon_dst_1d(nlon_out), lat_dst_1d(nlat_out)) do i = 1, nlon_in-1 lon_src_1d(i) = (lon_in_1d(i) + lon_in_1d(i+1)) * 0.5_lkind @@ -1213,7 +1213,7 @@ subroutine test_assignment() call horiz_interp_del(Interp_cp) ! 2dx1d deallocate(lon_out_1D, lat_out_1D) - allocate(lon_out_1D(ni_dst+1), lat_out_1D(nj_dst+1)) + allocate(lon_out_1D(ni_dst), lat_out_1D(nj_dst)) do i=1, ni_dst lon_out_1d(i) = real(i-1, HI_TEST_KIND_) * dlon_dst + lon_dst_beg enddo