Function that generates population.

        Called by ``__init__`` if ``M`` is passed.

def generate(self, M, age=9.6, feh=0.0,
                 ichrone='mist', n=1e4, bands=None, **kwargs):
        """
        Function that generates population.

        Called by ``__init__`` if ``M`` is passed.
        """
        ichrone = get_ichrone(ichrone, bands=bands)
        if np.size(M) > 1:
            n = np.size(M)
        else:
            n = int(n)
        M2 = M * self.q_fn(n, qmin=np.maximum(self.qmin,self.minmass/M))

        P = self.P_fn(n)
        ecc = self.ecc_fn(n,P)

        mass = np.ascontiguousarray(np.ones(n)*M)
        mass2 = np.ascontiguousarray(M2)
        age = np.ascontiguousarray(age)
        feh = np.ascontiguousarray(feh)
        pri = ichrone(mass, age, feh, return_df=True, bands=bands)
        sec = ichrone(mass2, age, feh, return_df=True, bands=bands)

        BinaryPopulation.__init__(self, primary=pri, secondary=sec,
                                  period=P, ecc=ecc, **kwargs)
        return self