Exemplo n.º 1
0
 def from_dict(cls,d):
     path = Path.from_dict(d['kpath'])
     instance = cls(d['bands'],d['kpoints'],kpath=path,
                    fermie=d['fermie'],weights=d['weights'],**d['kwargs'])
     instance._xlim = d['_xlim']
     instance._ylim = d['_ylim']
     return instance
Exemplo n.º 2
0
    def test_yamboanalyse_gw_si(self):
        """ Analyse the yambo GW .json output files
        """
        y = YamboAnalyser('gw_conv')
        netcdf_files = y.get_files_type('netcdf_gw')
        keys = sorted(netcdf_files.keys())
        assert keys == [
            'BndsRnXp_1_20', 'BndsRnXp_1_30', 'FFTGvecs_00010',
            'FFTGvecs_00015', 'NGsBlkXp_00002', 'NGsBlkXp_00005', 'reference'
        ]

        netcdf_files = y.get_files_type('netcdf_gw', 'FFTGvecs')
        keys = sorted(netcdf_files.keys())
        assert keys == ['FFTGvecs_00010', 'FFTGvecs_00015']

        netcdf_files = y.get_files_type('netcdf_gw', ('FFTGvecs', 'reference'))
        keys = sorted(netcdf_files.keys())
        assert keys == ['FFTGvecs_00010', 'FFTGvecs_00015', 'reference']

        #test getting data
        ks_bands, qp_bands = y.get_bands(tags='reference')
        ks_bands.plot(show=False)
        print(ks_bands)
        qp_bands.plot(show=False)
        print(qp_bands)

        #test get_path
        path = Path([[[1.0, 1.0, 1.0], 'G'], [[0.0, 0.5, 0.5], 'X'],
                     [[0.0, 0.0, 0.0], 'G'], [[0.5, 0.0, 0.0], 'L']],
                    [20, 20, 20])
        ks_bands_path, qp_bands_path = y.get_bands(tags='FFTGvecs',
                                                   path_kpoints=path,
                                                   type_calc=('gw'))
        qp_bands_path.plot(show=False)
Exemplo n.º 3
0
    def test_yamboexcitondb(self):

        #define path in reduced coordinates
        npoints = 20
        path = Path(
            [[[0.0, 0.0, 0.0], '$\\Gamma$'], [[0.5, 0.0, 0.0], 'M'],
             [[1. / 3, 1. / 3, 0.0], 'K'], [[0.0, 0.0, 0.0], '$\\Gamma$']],
            [int(npoints * 2),
             int(npoints),
             int(np.sqrt(5) * npoints)])

        #load databases
        lat = YamboLatticeDB.from_db_file(
            os.path.join(test_path, 'SAVE', 'ns.db1'))
        exc = YamboExcitonDB.from_db_file(lat,
                                          folder=os.path.join(
                                              test_path, 'yambo'))
        electrons = YamboElectronsDB(lat, save=os.path.join(test_path, 'SAVE'))

        #show output
        sort_e, sort_i = exc.get_sorted()
        exc.get_degenerate(1)

        #write exc_I.dat and exc_E.dat
        exc.write_sorted('exc')

        #calculate chi
        w, chi = exc.get_chi()

        #load reference
        eps_filename = os.path.join(test_path, 'o-yambo.eps_q1_diago_bse')
        w_ref, chi_imag_ref, chi_real_ref = np.loadtxt(eps_filename,
                                                       unpack=True)[:3]

        #get amplitude and phases
        kpoints, amplitude, phase = exc.get_amplitudes_phases((
            1,
            0,
        ))

        #exciton_bandstructure
        exc.plot_exciton_bs(electrons,
                            path, (
                                1,
                                2,
                            ),
                            args_plot={'c': 'g'},
                            space='bands',
                            show=False)
Exemplo n.º 4
0
    def test_yambolatticedb(self):
        """ test latticedb """

        #open latticedb
        filename = os.path.join(test_path,'SAVE/ns.db1')
        ydb = YamboLatticeDB.from_db_file(filename)

        #write json file
        ydb.write_json('lattice.json')        
        string1 = str(ydb)

        #read jsonfile
        ydb.from_json_file('lattice.json')
        string2 = str(ydb)
        
        assert string1 == string2

        p = Path([ [[1.0,1.0,1.0],'G'],
                   [[0.0,0.5,0.5],'X'],
                   [[0.0,0.0,0.0],'G'],
                   [[0.5,0.0,0.0],'L']], [20,20,20])
        bands_kpoints, bands_indexes, path_car = ydb.get_path(p)

        print(ydb)
Exemplo n.º 5
0
import shutil
from yambopy.data.structures import BN 
from qepy.lattice import Path
from qepy.matdyn import Matdyn
from yambopy.io.factories import PwNscfTasks, PwBandsTasks, PwRelaxTasks
from yambopy.flow import YambopyFlow, PwTask, E2yTask, YamboTask
from schedulerpy import Scheduler
from yambopy import yambopyenv

nscf_bands = 60
kpoints = [6,6,1]
nscf_kpoints = [12,12,1]
ecut = 20
npoints = 10 
path_kpoints = Path([ [[0.0, 0.0, 0.0],'G'],
                      [[0.5, 0.0, 0.0],'M'],
                      [[1./3,1./3,0.0],'K'],
                      [[0.0, 0.0, 0.0],'G']], [int(npoints*2),int(npoints),int(sqrt(5)*npoints)])

def relax():
    qe_relax_atoms_task, qe_relax_cell_task, qe_scf_task = PwRelaxTasks(BN,kpoints,ecut,cell_dofree='2Dxy',pseudo_dir="/Users/alejandro/Software/yambopy/tutorial/bn/pseudos")

    relax_flow = YambopyFlow.from_tasks('relax_flow',[qe_relax_atoms_task,qe_relax_cell_task,qe_scf_task])
    relax_flow.create(agressive=True)
    relax_flow.run()

def bands():
    pw_scf,pw_bands = PwBandsTasks(BN,kpoints,ecut,nscf_bands,path_kpoints,spin="spinor",pseudo_dir="/Users/alejandro/Software/yambopy/tutorial/bn/pseudos")
    bands_flow = YambopyFlow.from_tasks('bands_flow',[pw_scf,pw_bands])
    bands_flow.create(agressive=True)
    bands_flow.run()
Exemplo n.º 6
0
import shutil
from yambopy.data.structures import Si
from qepy import PwXML
from qepy.lattice import Path
from qepy.matdyn import Matdyn
from yambopy.io.factories import PwNscfTasks, PwBandsTasks, PwRelaxTasks
from yambopy.flow import YambopyFlow, PwTask, E2yTask, YamboTask
from schedulerpy import Scheduler
from yambopy import yambopyenv

nscf_bands = 10
kpoints = [2, 2, 2]
nscf_kpoints = [4, 4, 4]
ecut = 30
path_kpoints = Path([[[1.0, 1.0, 1.0], '$\Gamma$'], [[0.0, 0.5, 0.5], '$X$'],
                     [[0.0, 0.0, 0.0], '$\Gamma$'], [[0.5, 0.0, 0.0], '$L$']],
                    [20, 20, 20])
pseudo_dir = '../../pseudos'


def relax():
    qe_relax_atoms_task, qe_relax_cell_task, qe_scf_task = PwRelaxTasks(
        Si, kpoints, ecut, cell_dofree='all', pseudo_dir=pseudo_dir)

    relax_flow = YambopyFlow.from_tasks(
        'relax_flow', [qe_relax_atoms_task, qe_relax_cell_task, qe_scf_task])
    relax_flow.create(agressive=True)
    relax_flow.run()


def bands():
Exemplo n.º 7
0
               N=[14.0067,"N.pbe-mt_fhi.UPF"])

atoms_sc  = [['N' ,  [0.0000000000  , 0.0000000000  ,-0.0000000000 ]],
             ['N' ,  [0.5000000000  , 0.0000000000  , 0.0000000000 ]],
             ['N' ,  [0.0000000000  , 0.5000000000  , 0.0000000000 ]],
             ['N' ,  [0.5000000000  , 0.5000000000  , 0.0000000000 ]],
             ['B' ,  [0.1666666667  , 0.3333333333  , 0.0000000000 ]],
             ['B' ,  [0.6666666667  , 0.3333333333  , 0.0000000000 ]],
             ['B' ,  [0.1666666667  , 0.8333333333  , 0.0000000000 ]],
             ['B' ,  [0.6666666667  , 0.8333333333  , 0.0000000000 ]]]

#occ = dict(occupations='smearing', smearing='mp', degauss=0.01)
BN_sc = dict(lattice=lattice_sc,atypes=atypes,atoms=atoms_sc)

path_kpoints_pc = Path([ [[0.0,  0.0, 0.0],'$\Gamma$'],
                         [[0.5,  0.0, 0.0],'M'],
                         [[1./3, 1./3,0.0],'K'],
                         [[0.0,  0.0, 0.0],'$\Gamma$']], [int(npoints*2),int(npoints),int(sqrt(5)*npoints)])

path_kpoints_sc = Path([ [[0.0,  0.0, 0.0],'$\Gamma$'],
                         [[1.0,  0.0, 0.0],'M'],
                         [[2./3, 2./3,0.0],'K'],
                         [[0.0,  0.0, 0.0],'$\Gamma$']], [int(npoints*2),int(npoints),int(sqrt(5)*npoints)])


def bands():

    pw_scf_pc,pw_bands_pc = PwBandsTasks(BN,kpoints_pc,ecut,nscf_bands_pc,path_kpoints_pc,spin="spinor",pseudo_dir="../../../bn/pseudos")
    bands_flow = YambopyFlow.from_tasks('bands_pc',[pw_scf_pc,pw_bands_pc])
    bands_flow.create(agressive=True)
    bands_flow.run()