本文整理匯總了Python中qutip.odedata.Odedata.expect[jj]方法的典型用法代碼示例。如果您正苦於以下問題:Python Odedata.expect[jj]方法的具體用法?Python Odedata.expect[jj]怎麽用?Python Odedata.expect[jj]使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類qutip.odedata.Odedata
的用法示例。
在下文中一共展示了Odedata.expect[jj]方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _gather
# 需要導入模塊: from qutip.odedata import Odedata [as 別名]
# 或者: from qutip.odedata.Odedata import expect[jj] [as 別名]
def _gather(sols):
# gather list of Odedata objects, sols, into one.
sol = Odedata()
# sol = sols[0]
ntraj = sum([a.ntraj for a in sols])
sol.col_times = np.zeros((ntraj), dtype=np.ndarray)
sol.col_which = np.zeros((ntraj), dtype=np.ndarray)
sol.col_times[0:sols[0].ntraj] = sols[0].col_times
sol.col_which[0:sols[0].ntraj] = sols[0].col_which
sol.states = np.array(sols[0].states)
sol.expect = np.array(sols[0].expect)
if (hasattr(sols[0], 'entropy')):
sol.entropy = np.array(sols[0].entropy)
sofar = 0
for j in range(1, len(sols)):
sofar = sofar + sols[j - 1].ntraj
sol.col_times[sofar:sofar + sols[j].ntraj] = (
sols[j].col_times)
sol.col_which[sofar:sofar + sols[j].ntraj] = (
sols[j].col_which)
if (odeconfig.e_num == 0):
if (odeconfig.options.average_states):
# collect states, averaged over trajectories
sol.states += np.array(sols[j].states)
else:
# collect states, all trajectories
sol.states = np.vstack((sol.states,
np.array(sols[j].states)))
else:
if (odeconfig.options.average_expect):
# collect expectation values, averaged
for i in range(odeconfig.e_num):
sol.expect[i] += np.array(sols[j].expect[i])
else:
# collect expectation values, all trajectories
sol.expect = np.vstack((sol.expect,
np.array(sols[j].expect)))
if (hasattr(sols[j], 'entropy')):
if (odeconfig.options.average_states or odeconfig.options.average_expect):
# collect entropy values, averaged
sol.entropy += np.array(sols[j].entropy)
else:
# collect entropy values, all trajectories
sol.entropy = np.vstack((sol.entropy,
np.array(sols[j].entropy)))
if (odeconfig.options.average_states or odeconfig.options.average_expect):
if (odeconfig.e_num == 0):
sol.states = sol.states / len(sols)
else:
sol.expect = list(sol.expect / len(sols))
inds=np.where(odeconfig.e_ops_isherm)[0]
for jj in inds:
sol.expect[jj]=np.real(sol.expect[jj])
if (hasattr(sols[0], 'entropy')):
sol.entropy = sol.entropy / len(sols)
#convert sol.expect array to list and fix dtypes of arrays
if (not odeconfig.options.average_expect) and odeconfig.e_num!=0:
temp=[list(sol.expect[ii]) for ii in range(ntraj)]
for ii in range(ntraj):
for jj in np.where(odeconfig.e_ops_isherm)[0]:
temp[ii][jj]=np.real(temp[ii][jj])
sol.expect=temp
# convert to list/array to be consistent with qutip mcsolve
sol.states = list(sol.states)
return sol