def nh_pos(v, p, dt):
    """Updates position using the Nose-Hoover half step velocity verlet

    Args:
        v -- np.array(N,dim) containing current particles velocities
        p -- np.array(N,dim) containing current particles positions
        dt -- timestep

    Returns:
        p -- np.array(N,dim) containing updated positions

    Notes:
        -- the routine runs using Numba @njit decorator for faster run time
    """

    for i in range(p.shape[0]):
        p[i, 0] += v[i, 0]*dt
        p[i, 1] += v[i, 1]*dt
        p[i, 2] += v[i, 2]*dt

    return p