コード例 #1
0
ファイル: testdmrg.py プロジェクト: GiggleLiu/apps
    def __init__(self,J,Jz,h,nsite,J2=0,J2z=None):
        self.spaceconfig=SpinSpaceConfig([2,1])
        I=OpUnitI(hndim=2)
        scfg=SpinSpaceConfig([2,1])
        Sx=opunit_Sx(spaceconfig=scfg)
        Sy=opunit_Sy(spaceconfig=scfg)
        Sz=opunit_Sz(spaceconfig=scfg)

        #with second nearest hopping terms.
        if J2==0:
            self.H_serial2=None
            return
        elif J2z==None:
            J2z=J2
        SL=[]
        for i in xrange(nsite):
            Sxi,Syi,Szi=copy.copy(Sx),copy.copy(Sy),copy.copy(Sz)
            Sxi.siteindex=i
            Syi.siteindex=i
            Szi.siteindex=i
            SL.append(array([Sxi,Syi,sqrt(J2z/J2)*Szi]))
        ops=[]
        for i in xrange(nsite-1):
            ops.append(J*SL[i].dot(SL[i+1]))
            if i<nsite-2 and J2z!=0:
                ops.append(J2*SL[i].dot(SL[i+2]))

        mpc=sum(ops)
        self.H_serial=mpc
コード例 #2
0
    def __init__(self, J, Jz, h, nsite, J2=0, J2z=None):
        self.spaceconfig = SpinSpaceConfig([1, 2])
        I = OpUnitI(hndim=2)
        scfg = SpinSpaceConfig([1, 2])
        Sx = opunit_Sx(spaceconfig=scfg)
        Sy = opunit_Sy(spaceconfig=scfg)
        Sz = opunit_Sz(spaceconfig=scfg)

        #with second nearest hopping terms.
        if J2 == 0:
            self.H_serial2 = None
            return
        elif J2z == None:
            J2z = J2
        SL = []
        for i in xrange(nsite):
            Sxi, Syi, Szi = copy.copy(Sx), copy.copy(Sy), copy.copy(Sz)
            Sxi.siteindex = i
            Syi.siteindex = i
            Szi.siteindex = i
            SL.append(array([Sxi, Syi, sqrt(J2z / J2) * Szi]))
        ops = []
        for i in xrange(nsite - 1):
            ops.append(J * SL[i].dot(SL[i + 1]))
            if i < nsite - 2 and J2z != 0:
                ops.append(J2 * SL[i].dot(SL[i + 2]))

        mpc = sum(ops)
        self.H_serial = mpc
コード例 #3
0
ファイル: models.py プロジェクト: GiggleLiu/apps
    def __init__(self,J1,J2,K,Jp,nsite,impurity_site=None):
        self.spaceconfig=SpinSpaceConfig([2,1])
        if impurity_site is None:
            impurity_site=nsite/2  #nsite/2 and nsite/2-1
        self.impurity_site=impurity_site
        self.J1,self.J2,self.K,self.Jp=J1,J2,K,Jp
        I=OpUnitI(hndim=self.spaceconfig.hndim)
        Sx=opunit_Sx(spaceconfig=self.spaceconfig)
        Sy=opunit_Sy(spaceconfig=self.spaceconfig)
        Sz=opunit_Sz(spaceconfig=self.spaceconfig)
        SL=[]
        for i in xrange(nsite):
            Sxi,Syi,Szi=copy.deepcopy(Sx),copy.deepcopy(Sy),copy.deepcopy(Sz)
            Sxi.siteindex=i
            Syi.siteindex=i
            Szi.siteindex=i
            SL.append(array([Sxi,Syi,Szi]))
        ops=[]
        for i in xrange(nsite-1):
            factor1=J1
            if i==impurity_site or i==impurity_site-2:
                factor1*=Jp
            elif i==impurity_site-1:
                factor1*=K
            ops.append(factor1*SL[i].dot(SL[i+1]))
            if i<nsite-2 and i!=impurity_site-1 and i!=impurity_site-2:
                factor2=J2
                if i==impurity_site-3 or i==impurity_site:
                    factor2*=Jp
                ops.append(factor2*SL[i].dot(SL[i+2]))

        mpc=sum(ops)
        self.H_serial=mpc
コード例 #4
0
ファイル: testtebd.py プロジェクト: yanguang21/dmrg
 def get_Haldane(self, D, J=1.):
     '''Get the hamiltonian.'''
     #the hamiltonian for Ising model
     Sx = opunit_Sx(spaceconfig=SpinSpaceConfig([1, 3]))
     Sy = opunit_Sy(spaceconfig=SpinSpaceConfig([1, 3]))
     Sz = opunit_Sz(spaceconfig=SpinSpaceConfig([1, 3]))
     H = J * (
         Sz.as_site(0) * Sz.as_site(1) + Sx.as_site(0) * Sx.as_site(1) +
         Sy.as_site(0) * Sy.as_site(1)) + D * Sz.as_site(0) * Sz.as_site(0)
     return H
コード例 #5
0
ファイル: test_thermal.py プロジェクト: gharib85/nrg
def test_loc_observe():
    nsite = 10
    (E, mps), info = get_spec(nsite, trunc_steps=[], return_vecs=True)
    model = info['model']
    sx = opunit_Sx(spaceconfig=model.spaceconfig)
    sz = opunit_Sz(spaceconfig=model.spaceconfig)
    sy = opunit_Sy(spaceconfig=model.spaceconfig)
    # measure Sx(i)
    ion()
    for isite in range(nsite):
        res = get_expect(sz.as_site(isite), mps)[0, 0].diagonal()
        # res=fft.fft(res)
        plot(res)
        pdb.set_trace()
コード例 #6
0
ファイル: models.py プロジェクト: GiggleLiu/apps
    def __init__(self,J,Jz,D,nsite,periodic=False):
        self.spaceconfig=SpinSpaceConfig([3,1])
        I=OpUnitI(hndim=self.spaceconfig.hndim)
        Sx=opunit_Sx(spaceconfig=self.spaceconfig)
        Sy=opunit_Sy(spaceconfig=self.spaceconfig)
        Sz=opunit_Sz(spaceconfig=self.spaceconfig)

        SL=[]
        for i in xrange(nsite):
            Sxi,Syi,Szi=copy.copy(Sx),copy.copy(Sy),copy.copy(Sz)
            Sxi.siteindex=i
            Syi.siteindex=i
            Szi.siteindex=i
            SL.append(array([Sxi,Syi,sqrt(Jz/J)*Szi]))
        ops=[]
        for i in xrange(nsite):
            if periodic or i!=nsite-1:
                ops.append(J*SL[i%nsite].dot(SL[(i+1)%nsite]))
            ops.append(D*SL[i][2]*SL[i][2])

        mpc=sum(ops)
        mpc.compactify()
        self.H_serial=mpc