示例#1
0
def generate_result_states(params, times, psi0=None, opt=None):
    if opt is None:
        opt = Options()
        opt.atol = 1e-6
        opt.rtol = 1e-6

    args = {'params': params}

    c_ops = c_ops_gen_jc(params)
    e_ops = []

    H = construct_ham(params)
    if psi0 is None:
        psi0 = steadystate(H[0], c_ops)

    opt.store_states = True
    trace = mesolve(H, psi0, times, c_ops, e_ops, args=args, options=opt)

    size = 2 * params.c_levels
    state_array = np.zeros([len(trace.states), size, size], dtype=complex)
    for i, state in enumerate(trace.states):
        state_array[i] = state.full()

    frame_content = [[trace.times, state_array, params]]
    columns = ['times', 'states', 'params']
    results_frame = pd.DataFrame(frame_content, columns=columns)
    results_frame['fd'] = params.fd
    results_frame.set_index('fd', inplace=True)

    return results_frame
示例#2
0
def generate_result(params, times, psi0=None, opt=None, e_ops=None):
    if opt is None:
        opt = Options()
        opt.atol = 1e-6
        opt.rtol = 1e-6

    args = {'params': params}

    if e_ops is None:
        e_ops = e_ops_gen(params)

    c_ops = c_ops_gen_jc(params)

    H = construct_ham(params)
    if psi0 is None:
        psi0 = steadystate(H[0], c_ops)

    trace = mesolve(H, psi0, times, c_ops, e_ops, args=args, options=opt)

    results_frame = pd.DataFrame(trace.expect, index=times)
    results_frame.index.name = 'time'
    results_frame['fd'] = params.fd
    results_frame.set_index('fd', inplace=True, append=True)
    results_frame = results_frame.reorder_levels(['fd', 'time'])

    return results_frame