spinw.getmatrix method#

Syntax#

amat = getmatrix(obj,Name,Value)

Description#

amat = getmatrix(obj,Name,Value) determines the symmetry allowed elements of the exchange, single-ion anistropy and g-tensor. For bonds, the code first determines the point group symmetry on the center of the bond and calculates the allowed eelements of the exchange tensor accordingly. For anisotropy and g-tensor, the point group symmetry of the selected atom is considered. For example the code can correctly calculate the allowed Dzyaloshinskii-Moriya vectors.

Examples#

To following code will determine the allowed anisotropy matrix elements in the \(C4\) point group (the symmetry at the \((0,0,0)\) atomic position). The allowed matrix elements will be diag([A A B]):

cryst = spinw
cryst.genlattice('sym','P 4')
cryst.addatom('r',[0 0 0],'label','MCu2')
cryst.addmatrix('label','A','value',1)
cryst.gencoupling
cryst.addaniso('A')
cryst.getmatrix('mat','A')

Output

The symmetry analysis of the anisotropy matrix of atom 1 ('MCu2'):
 position (in lattice units): [0.000,0.000,0.000]
 label of the assigned matrix: 'A'
 allowed elements in the symmetric matrix:
  S = | A| 0| 0|
      | 0| A| 0|
      | 0| 0| B|

Input Arguments#

obj

spinw object.

Name-Value Pair Arguments#

At least one of the following option has to be defined:

mat

Label or index of a matrix that is already assigned to a bond, anisotropy or g-tensor, e.g. J1.

bond

Index of the bond in spinw.coupling.idx, e.g. 1 for first neighbor bonds.

aniso

Label or index of the magnetic atom that has a single ion anisotropy matrix is assigned, e.g. Cr1 if Cr1 is a magnetic atom.

gtensor

Label or index of the magnetic atom that has a g-tensor is assigned.

Optional inputs:

subIdx

Selects a certain bond, within equivalent bonds. Default value is 1.

tol

Tolerance for printing the output for the smallest matrix element.

pref

If defined amat will contain a single \([3\times 3]\) matrix by multuplying the calculated tensor components with the given prefactors. Thus pref should contain the same number of elements as the number of symmetry allowed tensor components. Alternatively, if only a few of the symmetry allowed matrices have non-zero prefactors, use e.g. {[6 0.1 5 0.25]} which means, the 6th symmetry allowed matrix have prefactor 0.1, the 5th symmetry allowed matrix have prefactor 0.25. Since Heisenberg isotropic couplings are always allowed, a cell with a single element will create a Heisenberg coupling, e.g. {0.1}, which is identical to obj.matrix.mat = eye(3)*0.1. For Dzyaloshinskii-Moriya interactions (antisymmetric exchange matrices), use a three element vector in a cell, e.g. pref = {[D1 D2 D3]}. In this case, these will be the prefactors of the 3 antisymmetric allowed matrices. In case no crystal symmetry is defined, these will define directly the components of the Dzyaloshinskii-Moriya interaction in the xyz coordinate system.

{% include note.html content=” Be carefull with the sign of the Dzyaloshinskii-Moriya interaction, it depends on the counting order of the two interacting atoms! For single-ion anisotropy and g-tensor antisymmetric matrices are forbidden in any symmetry.” %}

'fid'

Defines whether to provide text output. The default value is determined by the fid preference stored in swpref. The possible values are:

  • 0 No text output is generated.

  • 1 Text output in the MATLAB Command Window.

  • fid File ID provided by the fopen command, the output is written into the opened file stream.

Output Arguments#

aMat

If no prefactors are defined, aMat contains all symmetry allowed elements of the selected tensor, dimensions are \([3\times 3\times n_{symmat}]\). If a prefactor is defined, it is a single \([3\times 3]\) matrix, that is a sum of all symmetry allowed elemenets multiplied by the given prefactors.

See Also#

spinw.setmatrix