def orbital_layer_weights_rel(blocks): import pyfplo.common as com labps = [ 'p3/2+3/2', 'p3/2-3/2', 'p3/2+1/2', 'p3/2-1/2', 'p1/2+1/2', 'p1/2-1/2' ] labps2 = ['p32+32', 'p32-32', 'p32+12', 'p32-12', 'p12+12', 'p12-12'] b_ind = 0 for i in range(6): orb_name = labps[i] wds = com.WeightDefinitions() suffix = orb_name for block in blocks: length = len(block) if (length == 5): name = """Q_%(b_ind)s""" % locals() else: name = """S_%(b_ind)s""" % locals() w = wds.add(name=name) labels_block = [] for atom in block: site_index = atom[0] site = "{:03d}".format(site_index) if (atom[1] == 'Bi'): label = """Bi(%(site)s)6%(suffix)s""" % locals() labels_block.append(label) if (atom[1] == 'Te'): label = """Te(%(site)s)5%(suffix)s""" % locals() labels_block.append(label) w.addLabels(labels=labels_block, fac=1) b_ind += 1 bw = com.BandWeights('+bweights_mydef') orb_name = labps2[i] bw.addWeights(wds, """+bwsum_orb_%(orb_name)s_layer_resolved""" % locals())
def orbital_exp_decay(self, lambda_0=20, only_Bi=False, only_Te=False, from_septuple=False): """ lamba_0: characteristic lenght for the exponential decay in Bohr """ import pyfplo.common as com self.build_exp_decay_weight(lambda_0, from_septuple) for i in range(len(self.orbs)): orb_name = self.orbs_names[i] labp = self.orbs[i] wds = com.WeightDefinitions() ind_atom = 0 for block in self.my_blocks: for atom in block: if (atom[1] != 'Mn'): labels_atom = [] site_index = atom[0] w = wds.add( name="""exp_%(orb_name)s_%(site_index)s""" % locals()) weight = self.weight[site_index] #determine label site = "{:03d}".format(site_index) if (atom[1] == 'Bi' and not only_Te): for suffix in labp: label = """Bi(%(site)s)6%(suffix)s""" % locals( ) labels_atom.append(label) if (atom[1] == 'Te' and not only_Bi): for suffix in labp: label = """Te(%(site)s)5%(suffix)s""" % locals( ) labels_atom.append(label) ind_atom += 1 if (len(labels_atom) > 0): w.addLabels(labels=labels_atom, fac=weight) print "w", w bw = com.BandWeights('+bweights_mydef') output = """+bwsum_orb_%(orb_name)s_lambda_%(lambda_0)s""" % locals( ) if (only_Bi): output += "_onlyBi" if (only_Te): output += "_onlyTe" bw.addWeights(wds, output)
def layer_weights(blocks, rel=False, only_Bi=False, only_Te=False): import pyfplo.common as com wds = com.WeightDefinitions() labp = ['p+1up', 'p+1dn', 'p+0up', 'p+0dn', 'p-1up', 'p-1dn'] if (rel): labp = [ 'p3/2+3/2', 'p3/2-3/2', 'p3/2+1/2', 'p3/2-1/2', 'p1/2+1/2', 'p1/2-1/2' ] labd = [ 'd+2up', 'd+2dn', 'd+1up', 'd+1dn', 'd+0up', 'd+0dn', 'd-1up', 'd-1dn', 'd-2up', 'd-2dn' ] b_ind = 0 for block in blocks: length = len(block) print length if (length == 5): name = """Q_%(b_ind)s""" % locals() else: name = """S_%(b_ind)s""" % locals() w = wds.add(name=name) labels_block = [] for atom in block: site_index = atom[0] site = "{:03d}".format(site_index) if (atom[1] == 'Bi' and not only_Te): for suffix in labp: label = """Bi(%(site)s)6%(suffix)s""" % locals() labels_block.append(label) if (atom[1] == 'Te' and not only_Bi): for suffix in labp: label = """Te(%(site)s)5%(suffix)s""" % locals() labels_block.append(label) if (atom[1] == 'Mn' and rel == False and not only_Te and not only_Bi): for suffix in labd: label = """Mn(%(site)s)3%(suffix)s""" % locals() labels_block.append(label) w.addLabels(labels=labels_block, fac=1) print "w", w bw = com.BandWeights('+bweights_mydef') output = '+bwsum_layer_resolved' if (only_Bi): output += "_onlyBi" if (only_Te): output += "_onlyTe" bw.addWeights(wds, output)
def orbital_layer_weights(self, ewindow=None): import pyfplo.common as com b_ind = 0 for i in range(len(self.orbs)): orb_name = self.orbs_names[i] labp = self.orbs[i] wds = com.WeightDefinitions() for block in self.my_blocks: length = len(block) if (length == 5): name = """Q_%(b_ind)s""" % locals() else: name = """S_%(b_ind)s""" % locals() w = wds.add(name=name) labels_block = [] for atom in block: site_index = atom[0] site = "{:03d}".format(site_index) if (atom[1] == 'Bi'): for suffix in labp: label = """Bi(%(site)s)6%(suffix)s""" % locals() labels_block.append(label) if (atom[1] == 'Te'): for suffix in labp: label = """Te(%(site)s)5%(suffix)s""" % locals() labels_block.append(label) w.addLabels(labels=labels_block, fac=1) b_ind += 1 bw = com.BandWeights('+bweights_mydef') if (ewindow == None): bw.addWeights( wds, """+bwsum_orb_%(orb_name)s_layer_resolved""" % locals()) else: e_min = ewindow[0] e_max = ewindow[1] bw.addWeights( wds, """+bwsum_orb_%(orb_name)s_emin_%(e_min)s_emax_%(e_max)s_layer_resolved""" % locals(), ewindow=ewindow)
def orbital_layer_weights(blocks, rel=False): import pyfplo.common as com orbs = [['p+1up', 'p+1dn'], ['p-1up', 'p-1dn'], ['p+0up', 'p+0dn']] orbs_names = ['px', 'py', 'pz'] if (rel): orbs = [['p3/2+3/2'], ['p3/2-3/2'], ['p3/2+1/2'], ['p3/2-1/2'], ['p1/2+1/2'], ['p1/2-1/2']] orbs_names = ['32_32', '32_-32', '32_12', '32_-12', '12_12', '12_-12'] b_ind = 0 for i in range(len(orbs)): orb_name = orbs_names[i] labp = orbs[i] wds = com.WeightDefinitions() for block in blocks: length = len(block) if (length == 5): name = """Q_%(b_ind)s""" % locals() else: name = """S_%(b_ind)s""" % locals() w = wds.add(name=name) labels_block = [] for atom in block: site_index = atom[0] site = "{:03d}".format(site_index) if (atom[1] == 'Bi'): for suffix in labp: label = """Bi(%(site)s)6%(suffix)s""" % locals() labels_block.append(label) if (atom[1] == 'Te'): for suffix in labp: label = """Te(%(site)s)5%(suffix)s""" % locals() labels_block.append(label) w.addLabels(labels=labels_block, fac=1) b_ind += 1 bw = com.BandWeights('+bweights_mydef') bw.addWeights(wds, """+bwsum_orb_%(orb_name)s_layer_resolved""" % locals())
def orbital_exp_decay(blocks, lambda_0=20, rel=False, only_Bi=False, only_Te=False): import pyfplo.common as com orbs = [['p+1up', 'p+1dn'], ['p-1up', 'p-1dn'], ['p+0up', 'p+0dn']] orbs_names = ['px', 'py', 'pz'] if (rel): orbs = [['p3/2+3/2'], ['p3/2-3/2'], ['p3/2+1/2'], ['p3/2-1/2'], ['p1/2+1/2'], ['p1/2-1/2']] orbs_names = ['32_32', '32_-32', '32_12', '32_-12', '12_12', '12_-12'] z_coord_0 = -1000 import numpy as np file = open("""weight_lambda_%(lambda_0)s.dat""" % locals(), 'w') for i in range(len(orbs)): orb_name = orbs_names[i] labp = orbs[i] wds = com.WeightDefinitions() ind_atom = 0 for block in blocks: for atom in block: if (atom[1] != 'Mn'): labels_atom = [] site_index = atom[0] w = wds.add( name="""exp_decay_%(orb_name)s_%(site_index)s""" % locals()) #determine weight z_coord = atom[2][2] if (ind_atom == 0): z_coord_0 = z_coord assert z_coord_0 != -1000 rel_z = (z_coord - z_coord_0) / lambda_0 weight = np.exp(-rel_z) if (i == 0): print >> file, z_coord, rel_z, np.exp(-rel_z) #determine label site = "{:03d}".format(site_index) if (atom[1] == 'Bi' and not only_Te): for suffix in labp: label = """Bi(%(site)s)6%(suffix)s""" % locals() labels_atom.append(label) if (atom[1] == 'Te' and not only_Bi): for suffix in labp: label = """Te(%(site)s)5%(suffix)s""" % locals() labels_atom.append(label) ind_atom += 1 if (len(labels_atom) > 0): w.addLabels(labels=labels_atom, fac=weight) print "w", w bw = com.BandWeights('+bweights_mydef') output = """+bwsum_orb_%(orb_name)s_lambda_%(lambda_0)s""" % locals() if (only_Bi): output += "_onlyBi" if (only_Te): output += "_onlyTe" bw.addWeights(wds, output) file.close()