matparser(obj,Name,Value) modifies the obj.matrix.mat matrix, assigning new values from a given parmeter vector.


To assign a Dzyaloshinskii-Moriya vector to the 'DM' matrix, the following input would be sufficient:

cryst = spinw
P = [0.2 0.35 3.14]
M = {'DM' 'DM' 'DM'}
S = cat(3,[0 0 0;0 0 1;0 -1 0],[0 0 -1;0 0 0;1 0 0],[0 1 0;-1 0 0;0 0 0])


    1.0000    3.1400   -0.3500
   -3.1400    1.0000    0.2000
    0.3500   -0.2000    1.0000

Input Arguments

spinw object.

Name-Value Pair Arguments

Input row vector P with nPar elements that contains the new values to be assignd to elements of obj.matrix.mat matrix.
Identifies which matrices to be changed according to their label or index. To select matrices with given labels use a cell of strings with \(n_{par}\) elements, for example M = {'J1','J2'}. This will change the diagonal elements of matrices \(J_1\) and \(J_2\) to a given value that is provided in the param parameter vector. Alternatively the index of the matrices can be given in a vector, such as [1 2] (index runs according to the order of the previous creation of the matrices using spinw.addmatrix).

To assign parameter value only to a selected element of a \([3\times 3]\) matrix, a bracket notation can be used in any string, such as 'D(3,3)', in this case only the \((3,3)\) element of the \([3\times 3]\) matrix of 'D' will be modified, the other elements will be unchanged. To modify multiple elements of a matrix at once, use the option selector.

Matrix with dimensions of \([3\times 3\times n_{par}]\). Each S(:,:,i) submatrix can contain \(\pm 1\) and 0. Where S(:,:,i) contains 1, the corresponding matrix elements of spinw.matrix.mat(:,:,M(i)) will be changed to the value P(i)*S(:,:,i) where P(i) is the corresponding parameter value.
Initialize the matrices of obj.matrix.mat with zeros for all selected labels before assigning parameter values. Default is false.

Output Arguments

The spinw object will contain the modified obj.matrix.mat field.

See Also

spinw | spinw.horace | spinw.addmatrix