[Wien] fold2Bloch installation problem.

Maciej Polak maciej.polak at pwr.edu.pl
Thu May 19 14:42:26 CEST 2016


Dear Sanjeev,

I looked through your ubs_dots.m file, and it looks fine. I never had 
any problems with it, and I run it on two different versions of matlab 
(2014a, 2012a (windows)). I copied your script and it works fine on both 
versions as well. I tried making some common mistakes that you could 
have made, but none gave me the errors you got. What version of matlab 
are you running? Try one of those I mentioned, since they definitely 
work. I'm sure one of your coworkers will have those versions, and for 
this stage of unfolding you only need your unfolded file and the 
ubs_dots.m, WIEN2k is no longer needed.

As for the klist_band file generator. I'm working on that intensively 
and I believe it should be ready in a week or two. The stage it is at 
now is definitely not user friendly but i'm working on that too. I will 
let you know when its finished.

Best regards

Maciej Polak


On 05/19/2016 06:11 AM, Dr. Sanjeev Kumar Srivastava wrote:
> 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}
> % seehttp://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;

_______________________________________________
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