Beispiel #1
0
    def plot_ggparams(self, **kwargs):
        plotter = ArrayPlotter(
            *[("$\\tilde\omega_{G G'}$",
               self.omegatw), ("$\\tilde\Omega^2_{G, G'}$",
                               self.bigomegatwsq)])

        return plotter.plot(**kwargs)
Beispiel #2
0
    def plot_eigvec_qp(self, spin, kpoint, band=None, **kwargs):

        title = kwargs.pop("title", None)

        if kpoint is None:
            from abipy.tools.plotting_utils import ArrayPlotter
            plotter = ArrayPlotter()
            for kpoint in self.kpoints:
                ksqp_arr = self.ncreader.read_eigvec_qp(spin, kpoint, band=band)
                plotter.add_array(str(kpoint), ksqp_arr)
            plotter.plot(title=title)

        else:
            from abipy.tools.plotting_utils import plot_array
            ksqp_arr = self.ncreader.read_eigvec_qp(spin, kpoint, band=band)
            plot_array(ksqp_arr)
Beispiel #3
0
    def plot_eigvec_qp(self, spin, kpoint, band=None, **kwargs):
        if kpoint is None:
            from abipy.tools.plotting_utils import ArrayPlotter
            plotter = ArrayPlotter()
            for kpoint in self.ibz:
                ksqp_arr = self.reader.read_eigvec_qp(spin, kpoint, band=band)
                plotter.add_array(str(kpoint), ksqp_arr)

            fig = plotter.plot(**kwargs)

        else:
            from abipy.tools.plotting_utils import plot_array
            ksqp_arr = self.reader.read_eigvec_qp(spin, kpoint, band=band)

            fig = plot_array(ksqp_arr, **kwargs)

        return fig
Beispiel #4
0
    def plot_eigvec_qp(self, spin, kpoint, band=None, **kwargs):

        if kpoint is None:
            from abipy.tools.plotting_utils import ArrayPlotter
            plotter = ArrayPlotter()
            for kpoint in self.ibz:
                ksqp_arr = self.reader.read_eigvec_qp(spin, kpoint, band=band)
                plotter.add_array(str(kpoint), ksqp_arr)

            fig = plotter.plot(**kwargs)

        else:
            from abipy.tools.plotting_utils import plot_array
            ksqp_arr = self.reader.read_eigvec_qp(spin, kpoint, band=band)

            fig = plot_array(ksqp_arr, **kwargs)

        return fig
Beispiel #5
0
    def plot_ggmat(self, cplx_mode="abs", wpos=None, **kwargs):
        """
        Use imshow for plotting W_GG'.

        Args:
            cplx_mode:
            wpos: List of frequency indices to plot. If None, the first
                frequency is used (usually w=0). if wpos == "all" 
                all frequencies are shown (use it carefully)
                Other possible values: "real" if only real frequencies are wanted.
                "imag" for imaginary frequencies only.

        Returns:
            `matplotlib` figure.
        """
        # Get wpos indices.
        choice_wpos = {
            None: [0],
            "all": range(self.nw),
            "real": range(self.nrew),
            "imag": range(self.nrew, self.nw)
        }

        if any(wpos == k for k in choice_wpos):
            wpos = choice_wpos[wpos]
        else:
            if isinstance(wpos, int): wpos = [wpos]
            wpos = np.array(wpos)

        # Build plotter.
        plotter = ArrayPlotter()
        for iw in wpos:
            label = cplx_mode + " $\omega = %s" % self.wpts[iw]
            data = data_from_cplx_mode(cplx_mode, self.wggmat[iw, :, :])
            plotter.add_array(label, data)

        return plotter.plot(**kwargs)
Beispiel #6
0
    def plot_ggmat(self, cplx_mode="abs", wpos=None, **kwargs):
        """
        Use imshow for plotting W_GG'.

        Args:
            cplx_mode:
            wpos: List of frequency indices to plot. If None, the first
                frequency is used (usually w=0). if wpos == "all" 
                all frequencies are shown (use it carefully)
                Other possible values: "real" if only real frequencies are wanted.
                "imag" for imaginary frequencies only.

        Returns:
            `matplotlib` figure.
        """
        # Get wpos indices.
        choice_wpos = {
            None: [0],
            "all": range(self.nw),
            "real": range(self.nrew),
            "imag": range(self.nrew, self.nw)}

        if any(wpos == k for k in choice_wpos):
            wpos = choice_wpos[wpos]
        else:
            if isinstance(wpos, int): wpos = [wpos]
            wpos = np.array(wpos)

        # Build plotter.
        plotter = ArrayPlotter()
        for iw in wpos:
            label = cplx_mode + " $\omega = %s" % self.wpts[iw]
            data = data_from_cplx_mode(cplx_mode, self.wggmat[iw,:,:])
            plotter.add_array(label, data)

        return plotter.plot(**kwargs)
Beispiel #7
0
    def plot_ggparams(self, **kwargs):
        plotter = ArrayPlotter(*[
            ("$\\tilde\omega_{G G'}$", self.omegatw),
            ("$\\tilde\Omega^2_{G, G'}$", self.bigomegatwsq)])

        return plotter.plot(**kwargs)
Beispiel #8
0
    def plot(self, qpoint=None, spin=None, kpoints=None, color_map=None, **kwargs):
        """
        Plot the dipole matrix elements.

        Args:
            qpoint:
                The qpoint for the optical limit.
                if qpoint is None, we plot  |<k|r|k>| else |<k|q.r|k>|
            spin:
                spin index. None if all spins are wanted
            kpoints:
                List of Kpoint objects, None if all k-points are wanted.

        ==============  ==============================================================
        kwargs          Meaning
        ==============  ==============================================================
        title           Title of the plot (Default: None).
        show            True to show the figure (Default).
        savefig:        'abc.png' or 'abc.eps'* to save the figure to a file.
        colormap        matplotlib colormap, see link below.
        ==============  ==============================================================

        Returns:
            matplotlib figure.

        .. see: 
            http://matplotlib.sourceforge.net/examples/pylab_examples/show_colormaps.html
        """
        title = kwargs.pop("title", None)
        show = kwargs.pop("show", True)
        savefig = kwargs.pop("savefig", None)
        color_map = kwargs.pop("color_map", None)

        if qpoint is not None:
            # Will compute scalar product with q
            qpoint = Kpoint.askpoint(qpoint, self.structure.reciprocal_lattice).versor()
        else:
            # Will plot |<psi|r|psi>|.
            qpoint = Kpoint((1, 1, 1), self.structure.reciprocal_lattice)

        if spin in None:
            spins = range(self.nsppol)
        else:
            spins = [spin]

        if kpoints is None:
            kpoints = self.ibz

        # Extract the matrix elements for the plot.
        from abipy.tools.plotting_utils import ArrayPlotter
        plotter = ArrayPlotter()
        for spin in spins:
            for kpoint in kpoints:
                ik = self.kpoint_index(kpoint)
                rme = self.dipme_scvk[spin, ik, :, :, :]

                #qrme = qpoint * rme
                label = "qpoint %s, spin %s, kpoint = %s" % (qpoint, spin, kpoint)
                plotter.add_array(label, rme)

        # Plot matrix elements and return matplotlib figure.
        return plotter.plot(title=title, color_map=color_map, show=show, savefig=savefig, **kwargs)