Exemple #1
0
def m_degeneracy(N, m):
    """Calculate the number of Dicke states |j, m> with same energy.

    Parameters
    ----------
    N: int
        The number of two-level systems.

    m: float
        Total spin z-axis projection eigenvalue (proportional to the total
        energy).

    Returns
    -------
    degeneracy: int
        The m-degeneracy.
    """
    jvals = j_vals(N)
    maxj = np.max(jvals)
    if m < -maxj:
        e = "m value is incorrect for this N."
        e += " Minimum m value can be {}".format(-maxj)
        raise ValueError(e)
    degeneracy = N / 2 + 1 - abs(m)
    return int(degeneracy)
Exemple #2
0
def m_degeneracy(N, m):
    """Calculate the number of Dicke states :math:`|j, m\\rangle` with
    same energy.

    Parameters
    ----------
    N: int
        The number of two-level systems.

    m: float
        Total spin z-axis projection eigenvalue (proportional to the total
        energy).

    Returns
    -------
    degeneracy: int
        The m-degeneracy.
    """
    jvals = j_vals(N)
    maxj = np.max(jvals)
    if m < -maxj:
        e = "m value is incorrect for this N."
        e += " Minimum m value can be {}".format(-maxj)
        raise ValueError(e)
    degeneracy = N/2 + 1 - abs(m)
    return int(degeneracy)
Exemple #3
0
    def test_j_vals(self):
        """
        PIQS: Test calculation of j values for given N.
        """
        N_list = [1, 2, 3, 4, 7]
        j_vals_real = [np.array([0.5]), np.array([0., 1.]),
                       np.array([0.5, 1.5]),
                       np.array([0., 1., 2.]),
                       np.array([0.5, 1.5, 2.5, 3.5])]
        j_vals_calc = [j_vals(i) for i in N_list]

        for (i, j) in zip(j_vals_calc, j_vals_real):
            assert_array_equal(i, j)
Exemple #4
0
    def test_j_vals(self):
        """
        PIQS: Test calculation of j values for given N.
        """
        N_list = [1, 2, 3, 4, 7]
        j_vals_real = [np.array([0.5]), np.array([0., 1.]),
                       np.array([0.5, 1.5]),
                       np.array([0., 1., 2.]),
                       np.array([0.5, 1.5, 2.5, 3.5])]
        j_vals_calc = [j_vals(i) for i in N_list]

        for (i, j) in zip(j_vals_calc, j_vals_real):
            assert_array_equal(i, j)