mirror of
https://github.com/triqs/dft_tools
synced 2024-12-22 12:23:41 +01:00
[doc] added another faq
This commit is contained in:
parent
0aed9c681f
commit
f7c2298eed
@ -11,10 +11,14 @@ A hack solution is as follows:
|
|||||||
3) `x lapw2 -almd -band`
|
3) `x lapw2 -almd -band`
|
||||||
4) `dmftproj -band` (add the fermi energy to file, it can be found by running `grep :FER *.scf`)
|
4) `dmftproj -band` (add the fermi energy to file, it can be found by running `grep :FER *.scf`)
|
||||||
|
|
||||||
How do I do ..this..?
|
How do I plot the output of `spaghettis`?
|
||||||
---------------------
|
-----------------------------------------
|
||||||
|
|
||||||
This is how you do this.
|
In python, you can do the following for example. You should pass the name of
|
||||||
|
the file written out by the spaghettis function. Of course, you should change
|
||||||
|
the parameters as desired.
|
||||||
|
|
||||||
|
.. literalinclude:: plotting_spaghettis.py
|
||||||
|
|
||||||
Why is my calculation not working?
|
Why is my calculation not working?
|
||||||
----------------------------------
|
----------------------------------
|
||||||
|
33
doc/faqs/plotting_spaghettis.py
Normal file
33
doc/faqs/plotting_spaghettis.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
from matplotlib import *
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
filename = 'spaghettis_to_plot.dat' # Name of file
|
||||||
|
emin = -1.0 # Minimum of energy range to plot
|
||||||
|
emax = 1.5 # Maximum of energy range to plot
|
||||||
|
zmin = 0.0 #z.min() # Minimum of colour range
|
||||||
|
zmax = 5.0 #z.max() # Maximum of colour range
|
||||||
|
kpos = [0, 50, 100, 150, 200] # Position of high-symmetry k-point
|
||||||
|
kname = ['M', 'G', 'X', 'Z', 'M'] # Name of high-symmetry k-point
|
||||||
|
|
||||||
|
b = np.loadtxt(filename)
|
||||||
|
n_k = int(b[:,0][-1] + 1)
|
||||||
|
mesh_size = len(b[:,0])/n_k
|
||||||
|
klist = b[:,0][::mesh_size]
|
||||||
|
elist = b[:,1][0:mesh_size]
|
||||||
|
x,y = np.meshgrid(klist,elist)
|
||||||
|
z = b[:,2].reshape(n_k,mesh_size)
|
||||||
|
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
p = ax.pcolormesh(x,y,z.T, cmap=cm.Blues, vmin=zmin, vmax=zmax)
|
||||||
|
cb = fig.colorbar(p, ax=ax)
|
||||||
|
ax.set_xlim(klist.min(),klist.max())
|
||||||
|
ax.set_ylim(emin,emax)
|
||||||
|
ax.hlines(0.0,0,n_k-1)
|
||||||
|
plt.title(filename,fontsize=24)
|
||||||
|
for i in kpos: ax.vlines(i,emin,emax,alpha=0.5)
|
||||||
|
plt.xticks(kpos,kname,fontsize=16)
|
||||||
|
plt.ylabel('Energy (%s)'%'eV', fontsize=18)
|
||||||
|
plt.yticks(fontsize=16)
|
||||||
|
plt.grid()
|
||||||
|
plt.savefig(''.join(kname)+'_'+filename.replace('dat','png'),bbox_inches='tight')
|
@ -1,98 +0,0 @@
|
|||||||
class function_template():
|
|
||||||
|
|
||||||
def old_fft(name, state=None):
|
|
||||||
"""This function does something.
|
|
||||||
|
|
||||||
:param name: The name to use.
|
|
||||||
:type name: str.
|
|
||||||
:param state: Current state to be in.
|
|
||||||
:type state: bool.
|
|
||||||
:returns: int -- the return code.
|
|
||||||
:raises: AttributeError, KeyError
|
|
||||||
|
|
||||||
"""
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def fft(a, n=None, axis=-1):
|
|
||||||
|
|
||||||
"""
|
|
||||||
Compute the one-dimensional discrete Fourier Transform.
|
|
||||||
This function computes the one-dimensional *n*-point discrete Fourier
|
|
||||||
Transform (DFT) with the efficient Fast Fourier Transform (FFT)
|
|
||||||
algorithm [CT].
|
|
||||||
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
a : array_like
|
|
||||||
Input array, can be complex.
|
|
||||||
n : int, optional
|
|
||||||
Length of the transformed axis of the output.
|
|
||||||
If `n` is smaller than the length of the input, the input is cropped.
|
|
||||||
If it is larger, the input is padded with zeros. If `n` is not given,
|
|
||||||
the length of the input along the axis specified by `axis` is used.
|
|
||||||
axis : int, optional
|
|
||||||
Axis over which to compute the FFT. If not given, the last axis is
|
|
||||||
used.
|
|
||||||
|
|
||||||
Returns
|
|
||||||
-------
|
|
||||||
out : complex ndarray
|
|
||||||
The truncated or zero-padded input, transformed along the axis
|
|
||||||
indicated by `axis`, or the last one if `axis` is not specified.
|
|
||||||
|
|
||||||
Raises
|
|
||||||
------
|
|
||||||
IndexError
|
|
||||||
if `axes` is larger than the last axis of `a`.
|
|
||||||
|
|
||||||
See Also
|
|
||||||
--------
|
|
||||||
numpy.fft : for definition of the DFT and conventions used.
|
|
||||||
ifft : The inverse of `fft`.
|
|
||||||
fft2 : The two-dimensional FFT.
|
|
||||||
fftn : The *n*-dimensional FFT.
|
|
||||||
rfftn : The *n*-dimensional FFT of real input.
|
|
||||||
fftfreq : Frequency bins for given FFT parameters.
|
|
||||||
|
|
||||||
Notes
|
|
||||||
-----
|
|
||||||
FFT (Fast Fourier Transform) refers to a way the discrete Fourier
|
|
||||||
Transform (DFT) can be calculated efficiently, by using symmetries in the
|
|
||||||
calculated terms. The symmetry is highest when `n` is a power of 2, and
|
|
||||||
the transform is therefore most efficient for these sizes.
|
|
||||||
The DFT is defined, with the conventions used in this implementation, in
|
|
||||||
the documentation for the `numpy.fft` module.
|
|
||||||
|
|
||||||
References
|
|
||||||
----------
|
|
||||||
.. [CT] Cooley, James W., and John W. Tukey, 1965, "An algorithm for the
|
|
||||||
machine calculation of complex Fourier series," *Math. Comput.*
|
|
||||||
19: 297-301.
|
|
||||||
|
|
||||||
Examples
|
|
||||||
--------
|
|
||||||
>>> np.fft.fft(np.exp(2j * np.pi * np.arange(8) / 8))
|
|
||||||
array([ -3.44505240e-16 +1.14383329e-17j,
|
|
||||||
8.00000000e+00 -5.71092652e-15j,
|
|
||||||
2.33482938e-16 +1.22460635e-16j,
|
|
||||||
1.64863782e-15 +1.77635684e-15j,
|
|
||||||
9.95839695e-17 +2.33482938e-16j,
|
|
||||||
0.00000000e+00 +1.66837030e-15j,
|
|
||||||
1.14383329e-17 +1.22460635e-16j,
|
|
||||||
-1.64863782e-15 +1.77635684e-15j])
|
|
||||||
|
|
||||||
>>> import matplotlib.pyplot as plt
|
|
||||||
>>> t = np.arange(256)
|
|
||||||
>>> sp = np.fft.fft(np.sin(t))
|
|
||||||
>>> freq = np.fft.fftfreq(t.shape[-1])
|
|
||||||
>>> plt.plot(freq, sp.real, freq, sp.imag)
|
|
||||||
[<matplotlib.lines.Line2D object at 0x...>, <matplotlib.lines.Line2D object at
|
|
||||||
0x...>]
|
|
||||||
>>> plt.show()
|
|
||||||
In this example, real input has an FFT which is Hermitian, i.e., symmetric
|
|
||||||
in the real part and anti-symmetric in the imaginary part, as described in
|
|
||||||
the `numpy.fft` documentation.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
return 0
|
|
Loading…
Reference in New Issue
Block a user