Syntax
newcell(obj,Name,Value)
T = newcell(obj,Name,Value)
Description
T = newcell(obj,Name,Value)
redefines the unit cell using new basis
vectors. The input three basis vectors are in lattice units of the
original cell and define a parallelepiped. The atoms from the original
unit cell will fill the new unit cell and if the two cells are compatible
the structure won’t change. The magnetic structure, bonds and single ion
property definitions will be erased. The new cell will have different
reciprocal lattice, however the original reciprocal lattice units will be
retained automatically. To use the new reciprocal lattice, set the
'keepq'
option to false
. In the default case the spinw.spinwave
function will calculate spin wave dispersion at reciprocal lattice points
of the original lattice. The transformation between the two lattices is
stored in spinw.unit.qmat
.
Examples
In this example we generate the triangular lattice antiferromagnet and
convert the hexagonal cell to orthorhombic. This doubles the number of
magnetic atoms in the cell and changes the reciprocal lattice. However we
set 'keepq'
parameter to true
to able to index the reciprocal lattice
of the orthorhombic cell with the reciprocal lattice of the original
hexagonal cell. To show that the two models are equivalent, we calculate
the spin wave spectrum on both model using the same rlu. On the
orthorhombic cell, the \(Q\) value will be converted automatically and the
calculated spectrum will be the same for both cases.
tri = sw_model('triAF',1)
tri_orth = copy(tri)
tri_orth.newcell('bvect',{[1 0 0] [1 2 0] [0 0 1]},'keepq',true)
tri_orth.gencoupling
tri_orth.addcoupling('bond',1,'mat','J_1')
newk = ((tri_orth.unit.qmat)*tri.magstr.k')'
tri_orth.genmagstr('mode','helical','k',newk,'S',[1 0 0]')
plot(tri_orth)
subplot(2,1,1)
sw_plotspec(sw_egrid(tri.spinwave({[0 0 0] [1 1 0] 501})),'mode','color','dE',0.2)
subplot(2,1,2)
spec = tri_orth.spinwave({[0 0 0] [1 1 0] 501});
sw_plotspec(sw_egrid(tri_orth.spinwave({[0 0 0] [1 1 0] 501})),'mode','color','dE',0.2)
Input Arguments
obj
- spinw object.
Name-Value Pair Arguments
'bvect'
- Defines the new lattice vectors in the original lattice
coordinate system. Cell with the following elements
{v1 v2 v3}
or a \([3\times 3]\) matrix withv1
,v2
andv3
as column vectors:[v1 v2 v3]
. Default value iseye(3)
for indentity transformation. 'bshift'
- Row vector that defines a shift of the position of the unit cell.
Default value is
[0 0 0]
. 'keepq'
- If true, the reciprocal lattice units of the new model will be
the same as in the old model. This is achieved by storing the
transformation matrix between the new and the old coordinate system in
spinw.unit.qmat
and applying it every time a reciprocal space definition is invoked, such as in spinw.spinwave. Default value isfalse
.
Output Arguments
T
- Transformation matrix that converts \(Q\) points (in reciprocal
lattice units) from the old reciprocal lattice to the new
reciprocal lattice as follows:
Qrlu_new = T * Qrlu_old
where the \(Q\) vectors are row vectors with 3 elements.