subroutine imexQ_oc_evaluate(this, lev, t, m, flags, step)
class(pf_imexQ_oc_t), intent(inout) :: this
class(pf_level_t), intent(inout) :: lev
real(pfdp), intent(in ) :: t
integer, intent(in ) :: m
integer, intent(in), optional :: flags, step
integer :: which, mystep
which = 0
if (present(flags)) which = flags
if (.not.present(flags)) stop "IMEXQ_OC EVAL WITHOUT FLAGS"
mystep = 1
if(present(step)) then
mystep = step
else
print *, "step not present in evaluate", which
stop
end if
! print *, "IMEXQ_OC EVAL ", which
if (this%explicit) &
call this%f_eval(lev%Q(m), t, lev%index, lev%F(m,1), 1, which, m, mystep)
if (this%implicit) &
call this%f_eval(lev%Q(m), t, lev%index, lev%F(m,2), 2, which, m, mystep)
end subroutine imexQ_oc_evaluate