コード例 #1
0
ファイル: wfkfile.py プロジェクト: sponce24/abipy
    def __init__(self, path):
        """Initialize the object from a filename."""
        super(WFK_Reader, self).__init__(path)

        self.structure = self.read_structure()
        self.kpoints = kpoints_factory(path)

        self.nfft1 = self.read_dimvalue("number_of_grid_points_vector1")
        self.nfft2 = self.read_dimvalue("number_of_grid_points_vector2")
        self.nfft3 = self.read_dimvalue("number_of_grid_points_vector3")

        self.cplex_ug = self.read_dimvalue("real_or_complex_coefficients")

        self.nspinor = self.read_dimvalue("number_of_spinor_components")
        self.nsppol = self.read_dimvalue("number_of_spins")
        self.nspden = self.read_dimvalue("number_of_components")

        self.ecut = self.read_value("kinetic_energy_cutoff")
        self.nband_sk = self.read_value("number_of_states")
        self.istwfk = self.read_value("istwfk")
        self.npwarr = self.read_value("number_of_coefficients")

        # Gvectors
        self._kg = self.read_value("reduced_coordinates_of_plane_waves")

        # Wavefunctions (complex array)
        # TODO use variables to avoid storing the full block.
        if self.cplex_ug == 2:
            self.set_of_ug = self.read_value("coefficients_of_wavefunctions", cmode="c")
        else:
            raise NotImplementedError("")
コード例 #2
0
ファイル: scissors.py プロジェクト: gmrigna/abipy
def sppgroup():
    filename = "/Users/gmatteo/Coding/Abinit/bzr_archives/733/gmatteo-private/gcc47/tests/Silicon/o_GSR"
    #from abipy.core import Structure, SpaceGroup
    #wfk = WFK_File(get_reference_file("si_WFK-etsf.nc"))

    #wfk = WFK_File(get_reference_file("si_WFK-etsf.nc"))
    #structure = wfk.get_structure()
    #ibz = wfk.kpoints

    structure = Structure.from_file(filename)

    spg = structure.spacegroup
    print(spg)

    ibz = kpoints_factory(filename)
    print(type(ibz))
    print("mpdivs", ibz.mpdivs)

    bands = ElectronBands.from_file(filename)

    from abipy.core.kpoints import map_mesh2ibz, Kmesh

    kmap = map_mesh2ibz(structure, ibz.mpdivs, ibz.shifts, ibz)
    sys.exit(1)
    #kmesh = Kmesh(structure,ibz.mpdivs, ibz.shifts, ibz)
    #print(kmesh.bzmap)

    band = 3

    branch = bands.eigens[0, :, band]
    kx, ky, plane = kmesh.plane_cut(branch)
    #print(plane)
    #plot_array(plane)
    #plt.contour(plane)

    #from mayavi import mlab
    #mlab.surf(kx,ky,plane)
    #mlab.show()

    from abipy.tools.plotting_utils import plot_array
    from mpl_toolkits.mplot3d import axes3d
    from matplotlib import cm

    fig = plt.figure()
    ax = fig.gca(projection='3d')

    surf = ax.plot_surface(kx, ky, plane, alpha=0.3)

    min_eig = plane.min()
    #min_eig -= abs(min_eig) * 0.1
    off_x = -1
    off_y = len(ky) + 1

    cset = ax.contourf(kx, ky, plane, zdir='z', offset=min_eig, cmap=cm.jet)
    #cset = ax.contourf(kx, ky, plane, zdir='x', offset=off_x, cmap=cm.coolwarm)
    #cset = ax.contourf(kx, ky, plane, zdir='y', offset=off_y, cmap=cm.coolwarm)
    #fig.colorbar(surf, shrink=0.5, aspect=5)

    plt.show()
コード例 #3
0
ファイル: scissors.py プロジェクト: gmrigna/abipy
def check_kinfo():
    from abipy.core.kpoints import KpointsInfo, kpoints_factory
    file = get_reference_file("si_nscf_WFK-etsf.nc")
    #kinfo = KpointsInfo.from_file(file)
    #print(kinfo)
    #print(kinfo.is_sampling)
    kpoints = kpoints_factory(file)
    print(kpoints)
コード例 #4
0
ファイル: bse.py プロジェクト: sponce24/abipy
    def __init__(self, path):
        super(DIPME_Reader, self).__init__(path)

        # Read important dimensions and variables.
        frac_coords = self.read_value("kpoints_reduced_coordinates")
        self.kibz = kpoints_factory(self)

        # Minimum and maximum band index as function of [s,k]
        self.minb_ks = self.read_value("minb")
        self.maxb_ks = self.read_value("maxb")

        # Dipole matrix elements
        self.dipme_skvc = self.read_value("dipme", cmode="c")
コード例 #5
0
ファイル: wfkfile.py プロジェクト: sponce24/abipy
    def __init__(self, filepath):
        """
        Initialized the object from a Netcdf file.
        """
        super(WFK_File, self).__init__(filepath)

        # Initialize the  structure from file.
        self.structure = Structure.from_file(filepath)

        # Initialize the band energies.
        self.bands = ElectronBands.from_file(filepath)

        self.kpoints = kpoints_factory(filepath)
        self.nkpt = len(self.kpoints)

        with WFK_Reader(filepath) as reader:
            assert reader.has_pwbasis_set
            assert reader.cplex_ug == 2
            self.npwarr = reader.npwarr
            self.nband_sk = reader.nband_sk

            self.nspinor = reader.nspinor
            self.nsppol = reader.nsppol
            self.nspden = reader.nspden

        # FFT mesh (augmented divisions reported in the WFK file)
        self.fft_mesh = Mesh3D(reader.fft_divs, self.structure.lattice_vectors())

        # Build G-spheres for each k-point
        gspheres = len(self.kpoints) * [None]
        ecut = reader.ecut
        for k, kpoint in enumerate(self.kpoints):
            gvec_k, istwfk = reader.read_gvec_istwfk(k)
            gspheres[k] = GSphere(ecut, self.structure.reciprocal_lattice, kpoint, gvec_k, istwfk=istwfk)

        self._gspheres = tuple(gspheres)

        # Save reference to the reader.
        self.reader = reader
コード例 #6
0
ファイル: gw.py プロジェクト: sponce24/abipy
    def __init__(self, path):
        self.ks_bands = ElectronBands.from_file(path)
        self.nsppol = self.ks_bands.nsppol

        super(SIGRES_Reader, self).__init__(path)

        try:
            self.nomega_r = self.read_dimvalue("nomega_r")
        except self.Error:
            self.nomega_r = 0

        #self.nomega_i = self.read_dim("nomega_i")

        # Save important quantities needed to simplify the API.
        self.structure = self.read_structure()
        self.gwcalctyp = self.read_value("gwcalctyp")
        self.usepawu = self.read_value("usepawu")

        # 1) The K-points of the homogeneous mesh.
        self.kpoints = kpoints_factory(self)

        # 2) The K-points where QPState corrections have been calculated.
        gwred_coords = self.read_redc_gwkpoints()
        self.gwkpoints = askpoints(gwred_coords, self.structure.reciprocal_lattice)

        # minbnd[nkptgw,nsppol] gives the minimum band index computed
        # Note conversion between Fortran and python convention.
        self.gwbstart_sk = self.read_value("minbnd") - 1
        self.gwbstop_sk = self.read_value("maxbnd")

        # min and Max band index for GW corrections.
        self.min_gwbstart = np.min(self.gwbstart_sk)
        self.max_gwbstop = np.max(self.gwbstop_sk)

        self._egw = self.read_value("egw", cmode="c")

        # Read and save important matrix elements.
        # All these arrays are dimensioned
        # vxcme(b1gw:b2gw,nkibz,nsppol*nsig_ab))
        self._vxcme = self.read_value("vxcme")
        self._sigxme = self.read_value("sigxme")

        self._hhartree = self.read_value("hhartree", cmode="c")

        self._vUme = self.read_value("vUme")
        #if self.usepawu == 0: self._vUme.fill(0.0)

        # Complex arrays
        self._sigcmee0 = self.read_value("sigcmee0", cmode="c")
        self._ze0 = self.read_value("ze0", cmode="c")

        # Frequencies for the spectral function.
        if self.has_spfunc:
            self._omega_r = self.read_value("omega_r")

            self._sigcme = self.read_value("sigcme", cmode="c")
            self._sigxcme = self.read_value("sigxcme", cmode="c")

        # Self-consistent case
        self._en_qp_diago = self.read_value("en_qp_diago")

        # <KS|QPState>
        self._eigvec_qp = self.read_value("eigvec_qp", cmode="c")