def METHOD_NAME(self, parameters, times):
    """ See :meth:`pints.ForwardModel.simulate()`. """
    if times[0] < 0:
        raise ValueError('All times must be positive.')
    times = np.asarray(times)
    # Unpack parameters
    p1, p2, p3, p4, p5 = parameters
    # Analytically calculate n, during a fixed-voltage step
    def calculate_n(v, n0, t0, times):
        a = p1 * (-(v + 75) + p2) / (np.exp((-(v + 75) + p2) / p3) - 1)
        b = p4 * np.exp((-v - 75) / p5)
        tau = 1 / (a + b)
        inf = a * tau
        return inf - (inf - n0) * np.exp(-(times - t0) / tau)
    # Output arrays
    ns = np.zeros(times.shape)
    vs = np.zeros(times.shape)
    # Iterate over the step, fill in the output arrays
    v = self._v_hold
    t_last = 0
    n_last = self._n0
    for i, t_next in enumerate(self._events):
        index = (t_last <= times) * (times < t_next)
        vs[index] = v
        ns[index] = calculate_n(v, n_last, t_last, times[index])
        n_last = calculate_n(v, n_last, t_last, t_next)
        t_last = t_next
        v = self._voltages[i]
    index = times >= t_next
    vs[index] = v
    ns[index] = calculate_n(v, n_last, t_last, times[index])
    n_last = calculate_n(v, n_last, t_last, t_next)
    # Calculate and return current
    return self._g_max * ns**4 * (vs - self._E_k)