def __init__(self, space, nuclearHamiltonian, overRideDT=None):
#raise Exception("DO NOT USE HIGH-ACCURACY PROPAGATOR; FUNCTIONALITY NOT CODED YET")
self.myHamiltonian = nuclearHamiltonian
self.mySpace = space
if overRideDT is None:
self.dt = self.mySpace.dt
else:
self.dt = overRideDT
gamma = 1.0 / (2.0 - 2.0**(1.0/3.0))
lam = -1.0j * self.dt / self.mySpace.hbar
#set up the kinetic propagator,
kineticSurfaceLambda = self.myHamiltonian.myKineticOperator.surface * lam * .5
kineticSurface1 = np.exp( gamma * kineticSurfaceLambda )
kineticSurface2 = np.exp( (1.0 - gamma) * kineticSurfaceLambda )
self.myKineticOperator1 = momentumOperator(self.mySpace, kineticSurface1)
self.myKineticOperator2 = momentumOperator(self.mySpace, kineticSurface2)
#set up the potential propagator
potentialSurfaceLambda = self.myHamiltonian.myPotentialOperator.surface * lam
potentialSurface1 = np.exp( gamma * potentialSurfaceLambda )
potentialSurface2 = np.exp( (1.0 - 2.0 *gamma) * potentialSurfaceLambda )
self.myPotentialOperator1 = positionOperator(self.mySpace, potentialSurface1)
self.myPotentialOperator2 = positionOperator(self.mySpace, potentialSurface2)
评论列表
文章目录