def do_simulation(i):
    print 'Starting loop ' + str(i)
    sim = Simulation(hamiltonian,initial_states,mesolve_args)
    sim.regenerate_data_qubit_offsets() # Necessary for each run to have different displacement errors
    sim.args['cOpts']['tau']=taulist[i]
    sim.args['r']=[0, 0, d]
    sim.args['cOpts']['d']=d
    sim.run(taulist[i]/4,steps,1)	#adjust for full circle!
    result_states = sim.last_run_all
    qsave(result_states, os.path.join(lind_args['folder'],"d-%d_state-%d"%(d*1e9,i)))
    #step_data = sim.last_run_quarter_cycle
    sim.reset_system_state()
    # return tuple of iteration and result, because jobs are started async = return whenever finished
    return (i, sim.last_run_all[-1]) 
コード例 #2
0
def do_simulation(i):
    print 'Starting loop ' + str(i)
    
    if lind_args.get('specify_errors'): initial_states = calculate_initial_states_from_bitflips(bitflips[i])
    else: initial_states = calculate_initial_states_from_bitflips(bitflips)
    
    sim = Simulation(hamiltonian,initial_states,mesolve_args)
    sim.loop = i
    sim.set_data_qubit_offsets(displacements)
    sim.choose_twirl(lind_args.get('twirl'))
    sim.run(time,steps)    #adjust for full circle!
    result_states = sim.last_run_all
    qsave(result_states, os.path.join(lind_args.get('folder'),lind_args.get('subfolder'),'data','run'+str(i+1)))
    #step_data = sim.last_run_quarter_cycle
    sim.reset_system_state()
    # return tuple of iteration and result, because jobs are started async = return whenever finished
    return (i, sim.last_run_all[-1], sim.twirl) 
コード例 #3
0
""" Set up folder/subfolder """
lind_args['folder'] = os.path.join(lind_args.get('folder'),lind_args.get('subfolder'))
if not os.path.exists(lind_args.get('folder')):
    os.mkdir(lind_args.get('folder'))
if not os.path.exists(os.path.join(lind_args.get('folder'),'data')):
    os.mkdir(os.path.join(lind_args.get('folder'),'data'))    


""" Run simulation """
for i in range(0,no_of_runs):
    print 'Starting loop ' + str(i+1)
    sim.choose_twirl(lind_args.get('twirl')) # Pass this False if you don't want twirling
    sim.run(time,steps)
    result_states = sim.last_run_all
    qsave(result_states, os.path.join(lind_args.get('folder'),'data','run'+str(i+1)))
    step_data = sim.last_run_quarter_cycle
    final_states.append(sim.last_run_all[-1])
    sim.reset_system_state()

qsave(final_states, os.path.join(lind_args.get('folder'),'data',"final_states"))
print('States saved')
for t in range(0,len(result_states),10):
    db.add_states(result_states[t].ptrace(0), kind='point')
    db.add_states(result_states[t].ptrace(1), kind='point')

db.save(os.path.join(lind_args.get('folder'),'bloch.pdf'))
#db.show()
print('Bloch for last run saved to '+os.path.join(lind_args.get('folder'),'bloch.pdf'))
Plotter(final_states, header,filetype='.pdf',display=False)
print('Plotter output to '+os.path.join(lind_args.get('folder'),''))