diff --git a/amip_interp/amip_interp.F90 b/amip_interp/amip_interp.F90 index 931a16a745..98914feaa3 100644 --- a/amip_interp/amip_interp.F90 +++ b/amip_interp/amip_interp.F90 @@ -277,8 +277,7 @@ module amip_interp_mod type amip_interp_type private type (horiz_interp_type) :: Hintrp, Hintrp2 ! add by JHC - real, pointer :: data1(:,:) =>NULL(), & - data2(:,:) =>NULL() + real, allocatable :: data1(:,:), data2(:,:) type (date_type) :: Date1, Date2 logical :: use_climo, use_annual logical :: I_am_initialized=.false. @@ -1003,8 +1002,8 @@ end subroutine amip_interp_init !! when calling get_amip_sst and get_amip_ice. subroutine amip_interp_del (Interp) type (amip_interp_type), intent(inout) :: Interp - if(associated(Interp%data1)) deallocate(Interp%data1) - if(associated(Interp%data2)) deallocate(Interp%data2) + if(allocated(Interp%data1)) deallocate(Interp%data1) + if(allocated(Interp%data2)) deallocate(Interp%data2) if(allocated(lon_bnd)) deallocate(lon_bnd) if(allocated(lat_bnd)) deallocate(lat_bnd) call horiz_interp_del ( Interp%Hintrp ) @@ -1536,8 +1535,9 @@ subroutine amip_interp_type_eq(amip_interp_out, amip_interp_in) endif amip_interp_out%Hintrp = amip_interp_in%Hintrp - amip_interp_out%data1 => amip_interp_in%data1 - amip_interp_out%data2 => amip_interp_in%data2 + amip_interp_out%Hintrp2 = amip_interp_in%Hintrp2 !< missing assignment statement; added by GPP + amip_interp_out%data1 = amip_interp_in%data1 + amip_interp_out%data2 = amip_interp_in%data2 amip_interp_out%Date1 = amip_interp_in%Date1 amip_interp_out%Date2 = amip_interp_in%Date2 amip_interp_out%Date1 = amip_interp_in%Date1 diff --git a/coupler/coupler_types.F90 b/coupler/coupler_types.F90 index 82d0c97082..1dea431fb6 100644 --- a/coupler/coupler_types.F90 +++ b/coupler/coupler_types.F90 @@ -3191,6 +3191,7 @@ subroutine CT_register_restarts_2d(var, bc_rest_files, num_rest_files, mpp_domai if (num_rest_files == 0) return + if (associated(bc_rest_files)) deallocate(bc_rest_files) !< Add extra safe-guard before allocation allocate(bc_rest_files(num_rest_files)) !< Open the files @@ -3394,6 +3395,7 @@ subroutine CT_register_restarts_3d(var, bc_rest_files, num_rest_files, mpp_domai if (num_rest_files == 0) return + if (associated(bc_rest_files)) deallocate(bc_rest_files) !< Add extra safe-guard before allocation allocate(bc_rest_files(num_rest_files)) !< Open the files @@ -3776,6 +3778,7 @@ subroutine mpp_io_CT_register_restarts_2d(var, bc_rest_files, num_rest_files, mp if (num_rest_files == 0) return ! Register the fields with the restart files + if (associated(bc_rest_files)) deallocate(bc_rest_files) !< Add extra safe-guard before allocation allocate(bc_rest_files(num_rest_files)) do n = 1, var%num_bcs if (var%bc(n)%num_fields <= 0) cycle @@ -3866,6 +3869,7 @@ subroutine mpp_io_CT_register_restarts_3d(var, bc_rest_files, num_rest_files, mp if (num_rest_files == 0) return ! Register the fields with the restart files + if (associated(bc_rest_files)) deallocate(bc_rest_files) !< Add extra safe-guard before allocation allocate(bc_rest_files(num_rest_files)) do n = 1, var%num_bcs if (var%bc(n)%num_fields <= 0) cycle