Build the magnetic moments from the symmetry modes. This requires reading in the JSON file saved previously and simply follow the formulation below for the calculation of deltamoment for each magnetic atom,
# matrix conversion: deltamoments(lattice units) = matrix.(modeamplitudes*modenormfactors)
# Note that deltamoment_i(crystalaxis units) = deltamoment_i(lattice units)*strained_cell_length_i
# Square matrix with _iso_magneticmode_number rows and columns
loop_
_iso_magneticmodematrix_row
_iso_magneticmodematrix_col
_iso_magneticmodematrix_value
1 2 -1.00000
2 1 -1.00000
modeamplitudes*modenormfactors here is a column vector -- the multiplication operation happens for each mode. strained_cell_length_i is just the specific lattice parameter, depending on which direction the deltamoment is lying along. For example, Ti_1_dmx will be along the a-axis and strained_cell_length_i in this case refers to the |latt-a| of the magnetic unit cell.
Here, it should be noticed the deltamoment calculated above will be projected onto each corresponding magnetic species and the hook here is the label, e.g., Ti_1, together with the matching between, e.g., dmx (in DeltaMomentLabel) and mx (in MagAtomInfo)
This is to enable the support for the magnetic structure refinement with IRREPs. Here below is the drafted plan for the implementation.
A new button
ISODISTORT-MAGalongside thek-vector search resultstableSelect the magnetic atom (through a popup window) => magnetic atom information should be saved to a system-wise accessible parameter, e.g.,
mag_atoms(this may be already existing in the current GSAS-II implementation)Parse to grab all the IRREPs and for each IRREP grab all the modes.
Save all the modes information into a local file (same directory as for the GSAS-II project file) =>
JSONform{ "IRREP-1": { "Matrix": [[,,], [,,], [,,]], "MagAtomInfo": { "Ti_1": { "Coords": [0.5, 0.5, 0.0], "SymmForm": "mx,my,0" } }, "Pm-3m[0,1/2,0]mX3+(a;b;0)[Ti:a:mag]T1g(a)": { "NormFactor": 0.05952, "DeltaMomentLabel": "Ti_1_dmx" }, "Pm-3m[0,1/2,0]mX3+(a;b;0)[Ti:a:mag]T1g(b)": { "NormFactor": 0.05952, "DeltaMomentLabel": "Ti_1_dmy" } } }Phase=>Computer=>Select IRREP4MAG(new menu item) => bring up a similar popup window like what we current have withSelect magnetic/subgroup phaseSelect an IRREP from the list => Click
OKRead in the previously saved modes information JSON file => If no file found, show warning window to reminder users to go back to the
Unit Cells Listto select a k-vector and runISODISTORT-MAGGenerate the magnetic phase just like what we do with
Select magnetic/subgroup phaseNeed a new tab hosting all the modes with
Refineflag for each to control whether they are active during the fitting.Go with the ISODISTORT convention for the mode amplitude
Amplitude of those active modes will be the fitting parameters
Need to make the
Mx,MyandMzin theAtomstab non-editable, if possible, as they will be calculated from the modes.For the fitting, we need,
Build the magnetic moments from the symmetry modes. This requires reading in the JSON file saved previously and simply follow the formulation below for the calculation of
deltamomentfor each magnetic atom,Build up constraints for the magnetic moment refinement