示例#1
0
    def set_tbmodels(self, tbmodels):
        """
        only difference is a colinear tag.
        """
        self.tbmodel_up, self.tbmodel_dn = tbmodels
        self.Gup = TBGreen(self.tbmodel_up,
                           self.kmesh,
                           self.efermi,
                           use_cache=self._use_cache,
                           cache_path='TB2J_results/cache/spinup')
        self.Gdn = TBGreen(self.tbmodel_dn,
                           self.kmesh,
                           self.efermi,
                           use_cache=self._use_cache,
                           cache_path='TB2J_results/cache/spindn')
        self.norb = self.Gup.norb
        self.nbasis = self.Gup.nbasis + self.Gdn.nbasis
        self.rho_up = np.zeros((self.norb, self.norb), dtype=float)
        self.rho_dn = np.zeros((self.norb, self.norb), dtype=float)
        self.JJ = defaultdict(lambda: 0.0j)
        self.Jorb = defaultdict(lambda: 0.0j)
        self.HR0_up = self.Gup.H0
        self.HR0_dn = self.Gdn.H0
        self.Delta = self.HR0_up - self.HR0_dn
        if self.Gup.is_orthogonal and self.Gdn.is_orthogonal:
            self.is_orthogonal = True
        else:
            self.is_orthogonal = False
            #self.S0=self.Gup.S0
        self._is_colinear = True

        self.exchange_Jdict = {}
        self.exchange_Jdict_orb = {}

        self.biquadratic = False
示例#2
0
文件: exchange.py 项目: kcbhamu/TB2J
 def set_tbmodels(self, tbmodels):
     """
     tbmodels should be in spinor form.
     The basis should be orb1_up, orb2_up,...orbn_up, orb1_dn, orb2_dn....
     """
     self.tbmodel = tbmodels
     # TODO: check if tbmodels are really a tbmodel with SOC.
     self.G = TBGreen(self.tbmodel, self.kmesh, self.efermi)
     self.norb = self.G.norb
     self.nbasis = self.G.nbasis
     self.rho = np.zeros((self.nbasis, self.nbasis), dtype=float)
     self.A_ijR = defaultdict(lambda: np.zeros((4, 4), dtype=complex))
     #self.HR0 = self.tbmodel.ham_R0
     self.HR0 = self.G.H0
     if not self.G.is_orthogonal:
         self.S0 = self.G.S0
     self._is_collinear = False
     self.Pdict = {}
示例#3
0
 def set_tbmodels(self, tbmodels):
     """
     tbmodels should be in spinor form.
     The basis should be orb1_up, orb2_up,...orbn_up, orb1_dn, orb2_dn....
     """
     self.tbmodel = tbmodels
     # TODO: check if tbmodels are really a tbmodel with SOC.
     self.G = TBGreen(self.tbmodel,
                      self.kmesh,
                      self.efermi,
                      use_cache=self._use_cache,
                      nproc=self.np)
     self.norb = self.G.norb
     self.nbasis = self.G.nbasis
     self.rho = np.zeros((self.nbasis, self.nbasis), dtype=complex)
     self.A_ijR_list = defaultdict(lambda: [])
     self.A_ijR = defaultdict(lambda: np.zeros((4, 4), dtype=complex))
     self.HR0 = self.G.H0
     self._is_collinear = False
     self.Pdict = {}