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-MAG alongside the k-vector search results table
Similar to the current button but with only magnetic modes selected in the first step
-
Select 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.
All the way through the ISODISTORT process => grab the finally saved CIF file. For each IRREP, take only the order parameter direction with the full representation space
For parsing the CIF downloaded from ISODISTORT, refer to the code in GSAS-II here.
-
Save all the modes information into a local file (same directory as for the GSAS-II project file) => JSON form
{
"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"
}
}
}
-
Once done with ISODISTORT communication, bring up a window containing all the IRREPS => select (only one or multiple allowed?) => click on OK.
-
Or if nothing is done in previous step and the window is just closed, we can go Phase => Computer => Select IRREP4MAG (new menu item) => bring up a similar popup window like what we current have with Select magnetic/subgroup phase
-
Select an IRREP (or IRREPs?) from the list => Click OK
-
Read 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 List to select a k-vector and run ISODISTORT-MAG
-
Generate the magnetic phase just like what we do with Select magnetic/subgroup phase
-
Need a new tab hosting all the modes with Refine flag 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, My and Mz in the Atoms tab non-editable, if possible, as they will be calculated from the modes.
If we don't grey them out, user editing will be conflicting with what will be derived from the symmetry modes combination. Also, with the representation space fitting, the independent parameters becomes the mode amplitude (i.e., coordination in the representation space) instead of the magnetic moments themselves.
-
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 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)
-
Build up constraints for the magnetic moment refinement
Need to talk to @briantoby about how-to
Mag_demo.zip
Notes from discussion @ 04/17/2026 13:39:27 EST
- Potentially we can do displacive modes and magnetic modes together => this is something we can considered after the magnetic implementation
- initially while processing ISODISTORT, make sure to deselect the strain mode
- initially while processing ISODISTORT, make sure to check the employ parent-like basis option in the interface by default while giving users the option to turn this off in GSAS-II settings
- for order parameter selection in ISODISTORT, make sure to select only those with a single k-active
- perform the mode amplitude fitting following the GSAS-II implemenation to use constraints
- Loop through all the IRREPs to do the refinement and output all the results for all the fittings
- Magnetic form factor is already implementation in GSAS-II => to change the valence of species, we can go to the atoms tab in phase and double click on the atom label to select from the periodic table.
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" } } }Once done with ISODISTORT communication, bring up a window containing all the IRREPS => select (only one or multiple allowed?) => click on OK.
Or if nothing is done in previous step and the window is just closed, we can go
Phase=>Computer=>Select IRREP4MAG(new menu item) => bring up a similar popup window like what we current have withSelect magnetic/subgroup phaseSelect an IRREP (or IRREPs?) 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
Mag_demo.zip
Notes from discussion @ 04/17/2026 13:39:27 EST