45 integer(I4B),
allocatable :: steps(:)
60 deallocate (this%steps)
67 if (
allocated(this%steps))
deallocate (this%steps)
68 allocate (this%steps(0))
75 subroutine log(this, iout, verb)
78 integer(I4B),
intent(in) :: iout
79 character(len=*),
intent(in) :: verb
81 character(len=*),
parameter :: fmt_steps = &
82 &
"(6x,'THE FOLLOWING STEPS WILL BE ',A,': ',50(I0,' '))"
83 character(len=*),
parameter :: fmt_freq = &
84 &
"(6x,'THE FOLLOWING FREQUENCY WILL BE ',A,': ',I0)"
87 write (iout,
"(6x,a,a)")
'ALL TIME STEPS WILL BE ', verb
89 if (
size(this%steps) > 0)
then
90 write (iout, fmt_steps) verb, this%steps
92 if (this%freq > 0)
then
93 write (iout, fmt_freq) verb, this%freq
96 write (iout,
"(6x,a,a)")
'THE FIRST TIME STEP WILL BE ', verb
99 write (iout,
"(6x,a,a)")
'THE LAST TIME STEP WILL BE ', verb
106 character(len=*),
intent(in) :: line
108 character(len=len(line)) :: l
109 integer(I4B) :: n, lloc, istart, istop, ival
115 call urword(l, lloc, istart, istop, 1, ival, rval, 0, 0)
116 select case (l(istart:istop))
121 call urword(l, lloc, istart, istop, 2, ival, rval, -1, 0)
125 this%steps(n + 1) = ival
131 call urword(l, lloc, istart, istop, 2, ival, rval, -1, 0)
139 'Looking for ALL, STEPS, FIRST, LAST, OR FREQUENCY. Found: ', &
149 integer(I4B),
intent(in) :: kstp
150 logical(LGP),
intent(in),
optional :: endofperiod
155 if (
present(endofperiod))
then
163 if (kstp == 1 .and. this%first)
is_selected = .true.
165 if (this%freq > 0)
then
166 if (mod(kstp, this%freq) == 0)
is_selected = .true.
171 if (kstp == this%steps(i))
then
180 logical function any(this)
result(a)
186 size(this%steps) > 0)
This module defines variable data types.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
This module contains simulation variables.
character(len=maxcharlen) errmsg
error message string
Time step selection module.
subroutine deallocate(this)
Deallocate the time step selection object.
subroutine read(this, line)
Read a line of input and prepare the selection object.
logical function is_selected(this, kstp, endofperiod)
Indicates whether the given time step is selected.
logical function any(this)
Indicates whether any time steps are selected.
subroutine log(this, iout, verb)
Time step selection type.