[Wien] fold2bloch: problem with K - path in hexagonal lattice

Peter Blaha pblaha at theochem.tuwien.ac.at
Tue Nov 24 08:00:27 CET 2020


Sorry, your mail is too large for the mailing list. You have to send 
your graphics directly to Oleg or other people upon request or put it on 
some webserver for download.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Dear Oleg,


Thank you for your quick response! It was very helpful, but I still 
didn't resolve the issue. You are right, the path in my email has 
mistakes, but it was just me being sloppy when writing the email. The 
path in .klist_band and Octave script are the same. The problem can be 
reproduced with just the M-K section, so I will focus on that. As I do 
not know Matlab/Octave very well I modified the script to save data to a 
file, and then I use my favourite plotting tool:

%Save results
energy = (ENE-Ef)*ry2ev;
matrix = [L, energy, WGHTRS];
save myfile.mat matrix;

BTW, I did mentioned before but I had some trouble getting 
ubs_dots_w2k_octave.m and ubs_dots.m scripts working (actually I didn't 
find the way to make the second one work), maybe here is the source of 
the problems:

1. Octave version 3.8.2 crashes with ubs_dots_w2k_octave.m script:

octave:1> ubs_dots_w2k_octave.m
panic: Segmentation fault -- stopping myself...
attempting to save variables to 'octave-workspace'...
save to 'octave-workspace' complete
Segmentation fault

2. Octave version 5.2.0 makes the plot, but it is almost unreadable and 
there are some warning messages which look for me like from Gnuplot. I 
don't know how these two are related to each other.

octave:1> ubs_dots_w2k_octave
multiplot> et termoption dashed
            ^
            line 0: invalid command


3. When I wanted to test the Matlab script it fails with the following 
error:

Index in position 1 exceeds array bounds (must not exceed 2).

Error in ubs_dots>coordTransform (line 146)
     W(i,:) = G(1,:)*V(i,1) + G(2,:)*V(i,2) + G(3,:)*V(i,3);

Error in ubs_dots (line 53)
KPATH = coordTransform(KPATH,G);


For the Matlab script I used the following settings (only M-K):

%% Init. parameters
KPATH = [1/2 0 0;
          1/3 1/3 0]; % k-point path
FOLDS = [2 2 2]; % multiplicity in the corresponding directions used 
when constructing the super-cell
KLABEL = {'M'; 'K'};
finpt = 'LaBr3_superCell.f2b'; % input file name
Ef = 0.1686176787; % Fermi energy (Ry)
ERANGE = [Ef-0.2 Ef+0.4]; % energy range for plot (Ry)
ry2ev = 13.605698066; % Ry -> eV conversion factor
pwr = 1/1; % power for result plotting
          % 1 - linear scale, 1/2 - sqrt, etc.
          % 0 - folded bands (needs wth = 0)
msz = 10; % marker size for plot
lwdth = 0.5; % plot line width
PLTSZ = [1 1 600/1.5 300/1.5]; % plot size
wth = 0.05; % threshold weight
clrmp = jet;    % flipud(gray)
                 % flipud(pink)
                 % flipud(hot)
                 % flipud(autumn)
                 % cool
                 % flipud(bone)
                 % flipud(jet)
                 % jet
G = [ 0.038328  0.019164  0.000000;
        0.000000  0.033193  0.000000;
        0.000000  0.000000  0.058517]; % Reciprocal latt. vect. from 
*.outputkgen

I'm using Matlab R2020a.

I'm not good with paper, but I'm much better with computer graphics. As 
you advised I made a visualisation of the desired path, see attached 
"M-K_path_supercell_vs_primitive.jpg". Primitive lattice is shown with 
black lines, supercell (2x2) with red lines. Correct me if I'm wrong, 
but in my opinion the desired path M(1/2,0)->K(1/3,1/3) in the primitive 
lattice is going to be GAMMA(0,0) -> K(-1/3,2/3) in the supercell 
lattice (dashed arrows). And this seems to be the path generated with 
fold.m (see k-path_M-K1.pdf), however, this results in a 
discontinuous plot (see LaBr3_M-K_band.pdf, black lines correspond to 
the conduction band of LaBr3 calculated with primitive lattice and 
XCrysDen generated M->K k-path, points corresponds to 2x2x2 supercell 
with the symmetry broken by moving one La atom by 0.01A and a k-path 
generated with fold.m path). I also have the impression that the k 
vector values generated by ubs_dots_w2k_octave.m for the band plot does 
not correspond to values in *.agr generated by x spaghetti, so 
overlaying these two plots doesn't work well. Or maybe it's a hint that 
I made some mistake here.

Which versions of Octave/Matlab have been tested with the script? Maybe 
the newest are not compatible with plotting scripts.

Thank you in advance!

Best regards,
Weronika

-- 
Weronika Wiktoria Wolszczak
Postdoctoral researcher
TU Delft/Wake Forest University





More information about the Wien mailing list