[Wien] fold2Bloch installation problem.

Dr. Sanjeev Kumar Srivastava sanjeev at iitkgp.ac.in
Wed May 18 06:58:42 CEST 2016


Thanks a lot Gavin and Oleg. 
Following is the ubs_dots.m file which I downloaded and ran in Matlab and got the error. To understand the unfolding/folding concepts and be able to use it, it seems I need more of knowledge. Will come back to you when I can frame the question much more precisely.

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
function ubs_dots
% Plot undolded band structure
% 
% modified 21 Jan 2016

%% Init. parameters
KPATH = [1/2 0 0; ...
         0 0 0; ...
         1/2 1/2 0]; % k-point path
FOLDS = [1 2 3]; % multiplicity in the corresponding directions used when constructing the super-cell
KLABEL = {'L'; 'G'; 'X'};
finpt = '6-atom2D.f2b'; % input file name
Ef = 0.372141; % Fermi energy (Ry)
ERANGE = [Ef-0.1 Ef+0.15]; % 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.038904 -0.012968 -0.012968;
     0.000000  0.036679 -0.018340;
     0.000000  0.000000  0.031765]; % Reciprocal latt. vect. from *.outputkgen


%% INITIALIZATION
[KEIG, EIG, W] = readinput(finpt); % read input data from file
% EIG - energy eigenvalues
% KEIG - k-list for eigenvalues
% W - list of characters

%% MAIN
L = [];
ENE = [];
WGHT = [];
for i=1 : 3
    G(i,:)=G(i,:)*FOLDS(i); % rescale reciprocal lattice vectors 
end                         % from supercell to primitive cell
dl = 0; % cumulative length of the path
KPATH = coordTransform(KPATH,G);
KEIG = coordTransform(KEIG,G);
XTICKS = [0];
for ikp = 1 : size(KPATH,1)-1
    B = KPATH(ikp,:) - KPATH(ikp+1,:);
    dk = sqrt(dot(B,B));
    XTICKS = [XTICKS; XTICKS(ikp)+dk];
    for j = 1 : length(EIG)
        if EIG(j) > ERANGE(1) && EIG(j) < ERANGE(2) && W(j) >= wth
            dist = dp2l( KEIG(j,:) , KPATH(ikp,:) , KPATH(ikp+1,:) );
            if dist < eps % k-point is on the path
                A = KPATH(ikp,:) - KEIG(j,:);
                x = dot(A,B)/dk;
                if x > 0  &&  x-dk < eps % k-point is within the path range
                    L = [L; x+dl]; % append k-point coordinate along the path
                    ENE = [ENE; EIG(j)]; % append energy list
                    WGHT = [WGHT; W(j)];
                end
            end
        end
    end
    dl = dl + dk;
end

%% Plot results
hFig = figure(1);

% Fig 1(a)
subplot(1,2,1);
set(hFig, 'Position', PLTSZ, 'PaperPositionMode','auto')
map = colormap(clrmp);
WGHTRS = rescale(WGHT,pwr);
scatter(L,(ENE-Ef)*ry2ev, WGHTRS*msz, WGHTRS,'LineWidth',lwdth);
hold on;
axis([0 max(L) min((ENE-Ef)*ry2ev) max((ENE-Ef)*ry2ev)])
yticks = get(gca,'ytick');
set(gca,'YTick',yticks);
for i = 1 : length(yticks)
    newYTick{i} = sprintf('%1.1f',yticks(i));
end
set(gca,'YTickLabel',newYTick);
hline = plot([0 XTICKS(end)],[0 0]); % Fermi level
set(hline,'Color','k','LineStyle','--');
set(gca,'XTick',XTICKS);
set(gca,'XTickLabel',KLABEL);
set(gca,'XGrid','on', 'GridLineStyle','-');
caxis([0 1]); % normalize intensities to 1
xlabel('Wave vector')
ylabel('Energy (eV)')
axis([0 max(L) min((ENE-Ef)*ry2ev) max((ENE-Ef)*ry2ev)])
box on
hold off

% Fig 1(b)
subplot(1,2,2);
DAT = linspace(0,1,10);
DATX = ones(size(DAT));
DATRS = rescale(DAT,pwr);
scatter(DATX,DAT, DATRS*msz, DATRS,'LineWidth',lwdth);
caxis([0 1])
ylabel('Spectral weight')

% SAVE plot as *.eps
print( [finpt '.eps'], '-depsc')

% -------------------------------------------------------------------------
function W = coordTransform(V,G)
% transform vector V(:,3) in G(3,3) coord. system -> W(:,3) in Cartesian coordinates
% G vector elements are in columns!
W = zeros(size(V));
G = G'; % transform G
for i = 1:length(V)
    W(i,:) = G(1,:)*V(i,1) + G(2,:)*V(i,2) + G(3,:)*V(i,3);
end;
% -------------------------------------------------------------------------
function WRESCL = rescale(W,pwr)
% rescale weights using a power functio W^pwr
WRESCL=W.^(pwr); % rescale if needed to enhance
WRESCL = WRESCL + eps; % need eps to make plot "heapy"
% -------------------------------------------------------------------------
function [KEIG, EIG, W] = readinput(filename)
% read input data
DATA = importdata(filename);
KEIG = DATA(:,1:3);
EIG = DATA(:,4);
W = DATA(:,5);
% -------------------------------------------------------------------------
function RES = dp2l(X0,X1,X2) % distance from point {X0} to line {X1}-{X2}
% see http://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html
denom = X2 - X1;
denomabs = sqrt(dot(denom,denom));
if denomabs < eps
    display(X1); display(X2);
    error('X1 = X2');
end;
numer = cross( X0-X1 , X0-X2 );
numerabs = sqrt(dot(numer,numer));
RES = numerabs/denomabs;
% -------------------------------------------------------------------------
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

Best regards

Sanjeev
----------------------------------------------------------------
Dr. Sanjeev Kumar Srivastava
Associate Professor
Department of Physics
Indian Institute of Technology Kharagpur
Kharagpur 721302
India

Ph.:     0091-3222-283854 (Office)
         0091-3222-283855 (Residence)
Mobile:  0091-9735444091
------------------------------------------------------------------

----- Original Message -----
From: "Oleg Rubel" <orubel at lakeheadu.ca>
To: "A Mailing list for WIEN2k users" <wien at zeus.theochem.tuwien.ac.at>
Sent: Tuesday, May 17, 2016 8:37:10 PM
Subject: Re: [Wien] fold2Bloch installation problem.

In addition to Dr. Abo suggestions: Generation of the k-path for unfolding can be tricky. It is generated keeping in mind the k-path you aim for the plot after unfolding + k-points that are not explicitly on the path, but can contribute there after unfolding. For instance, is you aim for the path (0,0,0)-(0,0,1/2) to plot with Matlab script, the *.klist_band should include points between (0,0,-1/2)-(0,0,1/2). More complex paths need much more thinking, though.

Maciej Polak from Wroclaw is working on a code to assist with the *.klist_band generation for unfolding. As far as I know he is ready to release it. You might have the first opportunity to test :)

As to the Matlab error, it might be useful to share the script in full.

Oleg

> On May 17, 2016, at 08:38, Gavin Abo <gsabo at crimson.ua.edu> wrote:
> 
> Regarding the matlab error, that is probably something Dr. Rubel would need to look into.  It might have something to do with the eps variable that is used (on line 60).  I don't see it defined in a preceding line.
> 
> The .klist_band should be created just like before a band structure calculation, either using XCrySDen, the WIEN2k templates, or by hand.  It looks like the .unfolded was replaced by .f2b.  The .f2b file is created by fold2Bloch.
> 
> On 5/16/2016 10:35 PM, Dr. Sanjeev Kumar Srivastava wrote:
>> Dear Oleg/Gavin/Wien2K users
>> 
>> I am trying to follow the instructions. However, I am getting the following error in MatLab:
>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>>> ubs_dots
>> ??? Error using ==> axis>LocSetLimits
>> Vector must have 4, 6, or 8 elements.
>> 
>> Error in ==> axis at 96
>>                 LocSetLimits(ax(j),cur_arg);
>> 
>> Error in ==> ubs_dots at 84
>> axis([0 max(L) min((ENE-Ef)*ry2ev) max((ENE-Ef)*ry2ev)])
>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>> 
>> Certainly, I need your help here.
>> 
>> Further, the Tutorial directories contain case.klist_band, case.struct and case.unfolded files. They must have come from a previous calculation. case.struct is clear, but which are the files from the previous run that should be copied as .klist_band (perhaps generated after a bandstructure calculation) and .unfolded in a new directory for fold2Bloch calculations? I hope I am able to express myself properly.
>> 
>> Best regards
>> 
>> Sanjeev
>> 
>> 
>> 
>> ----------------------------------------------------------------
>> Dr. Sanjeev Kumar Srivastava
>> Associate Professor
>> Department of Physics
>> Indian Institute of Technology Kharagpur
>> Kharagpur 721302
>> India
>> 
>> Ph.:     0091-3222-283854 (Office)
>>          0091-3222-283855 (Residence)
>> Mobile:  0091-9735444091
>> ------------------------------------------------------------------
>> 
>> ----- Original Message -----
>> From: "Oleg Rubel" <orubel at lakeheadu.ca>
>> To: "A Mailing list for WIEN2k users" <wien at zeus.theochem.tuwien.ac.at>
>> Sent: Monday, May 16, 2016 4:47:10 PM
>> Subject: Re: [Wien] fold2Bloch installation problem.
>> 
>> Please check fold2Bloch/Utils/ubs_dots.m
>> It is a matlab script. Variables in “Init. parameters” section should be modified for your individual structure.
>> If I recall correctly, matlab R2014a was the latest version that creates “petty” dot plots. Mathworks modified their plot engine later and acknowledged that this broke some features.
>> 
>> Oleg
>> 
>>> On May 16, 2016, at 2:36 AM, Dr. Sanjeev Kumar Srivastava <sanjeev at iitkgp.ac.in> wrote:
>>> 
>>> Dear Gavin/Wien2K users
>>> 
>>> Can I get the next set of instructions - how to plot the bandstructure after the unfolding?
>>> 
>>> Best regards
>>> 
>>> Sanjeev
>>> 
>>> ----------------------------------------------------------------
>>> Dr. Sanjeev Kumar Srivastava
>>> Associate Professor
>>> Department of Physics
>>> Indian Institute of Technology Kharagpur
>>> Kharagpur 721302
>>> India
>>> 
>>> Ph.:     0091-3222-283854 (Office)
>>>         0091-3222-283855 (Residence)
>>> Mobile:  0091-9735444091
>>> ------------------------------------------------------------------
> _______________________________________________
> Wien mailing list
> Wien at zeus.theochem.tuwien.ac.at
> http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
> SEARCH the MAILING-LIST at:  http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/index.html

_______________________________________________
Wien mailing list
Wien at zeus.theochem.tuwien.ac.at
http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
SEARCH the MAILING-LIST at:  http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/index.html
_______________________________________________
Wien mailing list
Wien at zeus.theochem.tuwien.ac.at
http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
SEARCH the MAILING-LIST at:  http://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/index.html


More information about the Wien mailing list