Tutorial 33#

Introduction to Plotting Chemistry#

We don’t care what is this model, we just test the plotting capabilities of SpinW.

Define the lattice#

symStr = '-z, y+3/4, x+3/4; z+3/4, -y, x+3/4; z+3/4, y+3/4, -x; y+3/4, x+3/4, -z; x+3/4, -z, y+3/4; -z, x+3/4, y+3/4';
model = spinw;
a = 10.0307;
model.genlattice('lat_const',[a a a],'angled',[90 90 90],'spgr',symStr,'label','F d -3 m Z')
model.addatom('label','Yb3+','r',[1/2 1/2 1/2],'S',1/2)
model.addatom('label','Ti4+','r',[0 0 0])
model.addatom('label','O2-','r',[0.3318 1/8 1/8])
model.addatom('label','O2-','r',[3/8 3/8 3/8])
model.gencoupling
model.addmatrix('label','J1','value',1)
model.addmatrix('label','g0','value',1);
model.addcoupling('mat','J1','bond',1)
model.addg('g0')
model.matrix.mat(:,:,2) =  -0.84*ones(3)+4.32*eye(3);
model.getmatrix('mat','J1');
J1 = -0.09; J2 = -0.22; J3 = -0.29; J4 = 0.01;
model.setmatrix('mat','J1','pref',[J1 J3 J2 -J4]);

Customizing the plot 1.#

We setup the number of triangular faces to be produced by the plot command using swpref. Each atom is an icosahedron, where each face is subdivided into triangles nmesh-times (see swplot.icomesh function). Thus nmnesh=3 will make all sphere to have 1280 faces. npatch determines the number of subdivision of the circle that is used to generate cylinders an arrows (swplot.arrow and swplot.cylinder).

pref = swpref;
pref.set({'nmesh', 'npatch'}, {3, 50})

% The high level spinw.plot command calls lower level commands
% (swplot.plotatom, swplot.plotion, swplot.plotbond, etc). For details
% check the documentation of spinw.plot or any of the lower level
% functions. Any option of the lower level functions can be controlled by
% making new options as: lowlevelfunname + lowlevelfunoption, for example
% to set the color option of the swplot.plotatom function set 'atomColor'
% option in the spinw.plot method as in the example below. The low level
% functions can be also called separately.

plot(model,'tooltip',false,'atomMode','mag','atomColor','gold')

% Move the atoms by shifting positions by 10 Angstrom to the right.
swplot.plotatom('shift',[10 0 0]','mode','mag','replace',true)

Customizing the plot 2.#

We show only the bonds and the atoms and changing colors.

model.plot('atomMode','mag','bondMode','cylinder',...
    'bondLinewidth0',3,'bondColor','orange','bondMode2','none',...
    'atomColor','pink','legend',false,'baseLabel',false,...
    'cellMode','none','tooltip',true)

Overplotting a polyhedron#

We overplot a tetrahedron between 4 magnetic atoms. The positions are in lattice units. Also Angstrom can be used by setting the ‘unit’ option of swplot.plot function to ‘xyz’.

R =[1/2 3/4 3/4;...
    1/2 1/2 1/2;...
    3/4 3/4 1/2;...
    3/4 1/2 3/4];

swplot.plot('type','polyhedron','position',permute(R,[2 3 1]))

Published with MATLAB® R2018b