#include <misc.h> #include <preproc.h> module do_close_dispose 1 contains !------------------------------------------------------------------------ !BOP ! ! !ROUTINE: do_disp ! ! !INTERFACE: subroutine do_disp (ntapes, hist_ntimes, hist_mfilt, if_stop, if_disphist, rstwr, nlend) 1,3 ! ! !DESCRIPTION: ! Determine logic for closeing and/or disposing history file ! Sets values for if_disphist, if_stop (arguments) ! Remove history files unless this is end of run or ! history file is not full. ! ! !USES: use shr_kind_mod , only : r8 => shr_kind_r8 use shr_sys_mod , only : shr_sys_abort use clm_time_manager, only : is_last_step ! ! !ARGUMENTS: implicit none integer, intent(in) :: ntapes !actual number of history tapes integer, intent(in) :: hist_ntimes(ntapes) !current numbers of time samples on history tape integer, intent(in) :: hist_mfilt(ntapes) !maximum number of time samples per tape logical, intent(out) :: if_stop !true => last time step of run logical, intent(out) :: if_disphist(ntapes) !true => save and dispose history file logical, intent(in) :: rstwr logical, intent(in) :: nlend ! ! !REVISION HISTORY: ! Created by Mariana Vertenstein ! ! ! !LOCAL VARIABLES: !EOP integer :: t ! history tape index logical :: rest_now ! temporary logical :: stop_now ! temporary !------------------------------------------------------------------------ rest_now = .false. stop_now = .false. if (nlend) stop_now = .true. if (rstwr) rest_now = .true. if_stop = stop_now if (stop_now) then ! End of run - dispose all history files if_disphist(1:ntapes) = .true. else if (rest_now) then ! Restart - dispose all history files do t = 1,ntapes if_disphist(t) = .true. end do else ! Dispose if_disphist(1:ntapes) = .false. do t = 1,ntapes if (hist_ntimes(t) == hist_mfilt(t)) then if_disphist(t) = .true. endif end do endif end subroutine do_disp end module do_close_dispose