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" <[email protected]>
To: "A Mailing list for WIEN2k users" <[email protected]>
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 <[email protected]> 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" <[email protected]>
>> To: "A Mailing list for WIEN2k users" <[email protected]>
>> 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
>>> <[email protected]> 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
> [email protected]
> http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
> SEARCH the MAILING-LIST at:
> http://www.mail-archive.com/[email protected]/index.html
_______________________________________________
Wien mailing list
[email protected]
http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
SEARCH the MAILING-LIST at:
http://www.mail-archive.com/[email protected]/index.html
_______________________________________________
Wien mailing list
[email protected]
http://zeus.theochem.tuwien.ac.at/mailman/listinfo/wien
SEARCH the MAILING-LIST at:
http://www.mail-archive.com/[email protected]/index.html