def Advance(self,A,dz,direction):
        if self.method == SSFM.METHOD_SSFM:
            if direction==1:
                A[:] = self.LinearStep(A,dz,direction)
                return np.exp(dz*direction*self.NonlinearOperator(A))*A
            else:
                A[:] = np.exp(dz*direction*self.NonlinearOperator(A))*A
                return self.LinearStep(A,dz,direction)
        elif self.method == SSFM.METHOD_RK4IP:
            return self.RK4IP(A,dz,direction)