Skip to content

Magnetic structure refinement with IRREP #322

@Kvieta1990

Description

@Kvieta1990

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"
              }
          }
      }
  • 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 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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions