diff --git a/MDtutorials/k_vec_isodistort/data/STO_Parent.cif b/MDtutorials/k_vec_isodistort/data/STO_Parent.cif new file mode 100755 index 0000000..77e68c1 --- /dev/null +++ b/MDtutorials/k_vec_isodistort/data/STO_Parent.cif @@ -0,0 +1,132 @@ +#------------------------------------------------------------------------------ +#$Date: 2016-02-14 06:40:26 +0200 (Sun, 14 Feb 2016) $ +#$Revision: 176432 $ +#$URL: svn://www.crystallography.net/cod/cif/1/51/21/1512124.cif $ +#------------------------------------------------------------------------------ +# +# This file is available in the Crystallography Open Database (COD), +# http://www.crystallography.net/ +# +# All data on this site have been placed in the public domain by the +# contributors. +# +data_1512124 +loop_ +_publ_author_name +'Natheer B. Mahmood' +'Emad K. Al-Shakarchi' +'Brahim Elouadi' +_publ_section_title +; + Three Techniques Used to Produce BaTiO3 Fine Powder +; +_journal_name_full 'Journal of Modern Physics' +_journal_page_first 1420 +_journal_page_last 1428 +_journal_paper_doi 10.4236/jmp.2011.211175 +_journal_volume 2 +_journal_year 2011 +_chemical_formula_analytical SrTiO3 +_chemical_formula_structural SrTiO3 +_chemical_formula_sum 'O3 Sr Ti' +_chemical_formula_weight_meas 183.490 +_chemical_name_structure_type +; +Perovskite +; +_chemical_name_systematic +; +strontium titanate +; +_space_group_IT_number 221 +_symmetry_Int_Tables_number 221 +_symmetry_space_group_name_Hall '-P 4 2 3' +_symmetry_space_group_name_H-M 'P m -3 m' +_audit_creation_date 2013-07-23 +_audit_creation_method ' Natheer' +_audit_update_record 2013-07-23 +_cell_angle_alpha 90.000 +_cell_angle_beta 90.000 +_cell_angle_gamma 90.000 +_cell_formula_units_Z 1 +_cell_length_a 3.8990 +_cell_length_b 3.8990 +_cell_length_c 3.8990 +_cell_volume 59.273 +_exptl_crystal_density_meas 5.140 +_cod_data_source_file ST.cif +_cod_data_source_block ST +_cod_original_cell_volume 59.3 +_cod_original_sg_symbol_Hall -P_4_2_3 +_cod_original_formula_sum 'Sr Ti O3' +_cod_database_code 1512124 +loop_ +_symmetry_equiv_pos_site_id +_symmetry_equiv_pos_as_xyz +1 x,y,z +2 -y,x,z +3 -x,-y,z +4 y,-x,z +5 x,-z,y +6 x,-y,-z +7 x,z,-y +8 z,y,-x +9 -x,y,-z +10 -z,y,x +11 z,x,y +12 y,z,x +13 -y,-z,x +14 z,-x,-y +15 -y,z,-x +16 -z,-x,y +17 -z,x,-y +18 y,-z,-x +19 y,x,-z +20 -y,-x,-z +21 -x,z,y +22 -x,-z,-y +23 z,-y,x +24 -z,-y,-x +25 -x,-y,-z +26 y,-x,-z +27 x,y,-z +28 -y,x,-z +29 -x,z,-y +30 -x,y,z +31 -x,-z,y +32 -z,-y,x +33 x,-y,z +34 z,-y,-x +35 -z,-x,-y +36 -y,-z,-x +37 y,z,-x +38 -z,x,y +39 y,-z,x +40 z,x,-y +41 z,-x,y +42 -y,z,x +43 -y,-x,z +44 y,x,z +45 x,-z,-y +46 x,z,y +47 -z,y,-x +48 z,y,x +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_occupancy +_atom_site_symmetry_multiplicity +_atom_site_Wyckoff_symbol +_atom_site_calc_flag +sr Sr 0.5000 0.5000 0.5000 1.000 1 b d +ti Ti 0.0000 0.0000 0.0000 1.000 1 a d +o O 0.5000 0.0000 0.0000 1.000 3 d d +loop_ +_atom_type_symbol +_atom_type_radius_bond +Sr 1.200 +Ti 1.200 +O 1.200 diff --git a/MDtutorials/k_vec_isodistort/data/STO_Subgroup.cif b/MDtutorials/k_vec_isodistort/data/STO_Subgroup.cif new file mode 100755 index 0000000..2f6e722 --- /dev/null +++ b/MDtutorials/k_vec_isodistort/data/STO_Subgroup.cif @@ -0,0 +1,194 @@ +# This file was generated by ISODISTORT, version 6.12.2 +# Harold T. Stokes, Branton J. Campbell, David Tanner, Dorian M. Hatch +# Brigham Young University, Provo, Utah, USA +# +# Space Group: 221 Pm-3m Oh-1 +# Default space-group preferences: monoclinic axes a(b)c, monoclinic cell choice 1, orthorhombic axes abc, origin choice 2, hexagonal axes, SSG standard setting +# Lattice parameters: a= 3.89900, b= 3.89900, c= 3.89900, alpha= 90.00000, beta= 90.00000, gamma= 90.00000 +# sr 1b (1/2,1/2,1/2) +# ti 1a (0,0,0) +# o 3d (1/2,0,0) +# Include strain, displacive ALL distortions +# k point: X, k10 (0,1/2,0) +# IR: X1+, k10t1 +# P1 (a;0;0) 123 P4/mmm, basis={(1,0,0),(0,0,1),(0,-2,0)}, origin=(0,0,0), s=2, i=6, k-active= (0,1/2,0) +# Order parameter values: +# Pm-3m[0,1/2,0]X1+(a;0;0) 123 P4/mmm s=2 i=6 +# [sr:b:dsp]T1u(a): 0.10000 +# [o:d:dsp]A2u(a): -0.30000 +# Pm-3m[0,0,0]GM1+(a) 221 Pm-3m s=1 i=1 +# strain(a): 0.00000 +# Pm-3m[0,0,0]GM3+(a,-1.732a) 123 P4/mmm s=1 i=3 +# strain(a): 0.00000 + +data_isodistort-output + +_cell_length_a 3.89900 +_cell_length_b 3.89900 +_cell_length_c 7.79800 +_cell_angle_alpha 90.00000 +_cell_angle_beta 90.00000 +_cell_angle_gamma 90.00000 +_cell_volume 118.54676 + +_symmetry_space_group_name_H-M "P 4/m 2/m 2/m" +_symmetry_Int_Tables_number 123 +_space_group.reference_setting '123:-P 4 2' +_space_group.transform_Pp_abc a,b,c;0,0,0 + +loop_ +_space_group_symop_id +_space_group_symop_operation_xyz +1 x,y,z +2 x,-y,-z +3 -x,y,-z +4 -x,-y,z +5 -y,-x,-z +6 -y,x,z +7 y,-x,z +8 y,x,-z +9 -x,-y,-z +10 -x,y,z +11 x,-y,z +12 x,y,-z +13 y,x,z +14 y,-x,-z +15 -y,x,-z +16 -y,-x,z + +loop_ +_atom_type_symbol +Sr +Ti +O + +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_symmetry_multiplicity +_atom_site_Wyckoff_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_occupancy +_atom_site_fract_symmform +sr_1 Sr 2 h 0.50000 0.50000 0.74093 1.00000 0,0,Dz +ti_1 Ti 1 a 0.00000 0.00000 0.00000 1.00000 0,0,0 +ti_2 Ti 1 b 0.00000 0.00000 0.50000 1.00000 0,0,0 +o_1 O 2 f 0.00000 0.50000 0.00000 1.00000 0,0,0 +o_2 O 2 e 0.00000 0.50000 0.50000 1.00000 0,0,0 +o_3 O 2 g 0.00000 0.00000 0.77720 1.00000 0,0,Dz + +_iso_displacivemode_number 2 + +loop_ +_iso_displacivemode_ID +_iso_displacivemode_label +_iso_displacivemode_value + 1 Pm-3m[0,1/2,0]X1+(a;0;0)[sr:b:dsp]T1u(a) 0.10000 + 2 Pm-3m[0,1/2,0]X1+(a;0;0)[o:d:dsp]A2u(a) -0.30000 + +loop_ +_iso_displacivemodenorm_ID +_iso_displacivemodenorm_value + 1 0.09068 + 2 0.09068 + +loop_ +_iso_deltacoordinate_ID +_iso_deltacoordinate_label +_iso_deltacoordinate_value + 1 sr_1_dz -0.00907 + 2 o_3_dz 0.02720 + +loop_ +_iso_coordinate_label +_iso_coordinate_formula +sr_1_x "1/2" +sr_1_y "1/2" +sr_1_z "3/4 + sr_1_dz" +ti_1_x "0" +ti_1_y "0" +ti_1_z "0 + ti_1_dz" +ti_2_x "0" +ti_2_y "0" +ti_2_z "1/2 + ti_2_dz" +o_1_x "0" +o_1_y "1/2" +o_1_z "0 + o_1_dz" +o_2_x "0" +o_2_y "1/2" +o_2_z "1/2 + o_2_dz" +o_3_x "0" +o_3_y "0" +o_3_z "3/4 + o_3_dz" + +# matrix conversion: deltacoords(lattice units) = matrix.(modeamplitudes*modenormfactors) +# Square matrix with _iso_displacivemode_number rows and columns + +loop_ +_iso_displacivemodematrix_row +_iso_displacivemodematrix_col +_iso_displacivemodematrix_value + 1 1 -1.00000 + 2 2 -1.00000 + +_iso_magneticmode_number 0 + + +_iso_rotationalmode_number 0 + + +_iso_occupancymode_number 0 + +_iso_strainmode_number 2 + +loop_ +_iso_strainmode_ID +_iso_strainmode_label +_iso_strainmode_value + 1 Pm-3m[0,0,0]GM1+(a)strain(a) 0.00000 + 2 Pm-3m[0,0,0]GM3+(a,-1.732a)strain(a) 0.00000 + +loop_ +_iso_strainmodenorm_ID +_iso_strainmodenorm_value + 1 0.57735 + 2 0.81650 + +loop_ +_iso_strain_ID +_iso_strain_label +_iso_strain_value + 1 E_1 0.00000 + 2 E_2 0.00000 + 3 E_3 0.00000 + 4 E_4 0.00000 + 5 E_5 0.00000 + 6 E_6 0.00000 + +# matrix conversion: strains(parent) = matrix * modeamplitudes +# Rectangular matrix with 6 rows and _iso_strainmode_number columns + +loop_ +_iso_strainmodematrix_row +_iso_strainmodematrix_col +_iso_strainmodematrix_value + 1 1 1.00000 + 1 2 -0.50000 + 2 1 1.00000 + 2 2 1.00000 + 3 1 1.00000 + 3 2 -0.50000 + +_iso_parentcell_length_a 3.89900 +_iso_parentcell_length_b 3.89900 +_iso_parentcell_length_c 3.89900 +_iso_parentcell_angle_alpha 90.00000 +_iso_parentcell_angle_beta 90.00000 +_iso_parentcell_angle_gamma 90.00000 +_iso_parentcell_volume 59.27338 +_iso_parent-to-child.transform_Pp_abc a,c,-2b;0,2,0 + +# end of structure file +# end of cif diff --git a/MDtutorials/k_vec_isodistort/data/powgen_profile_lwf.instprm b/MDtutorials/k_vec_isodistort/data/powgen_profile_lwf.instprm new file mode 100644 index 0000000..f5c7bb0 --- /dev/null +++ b/MDtutorials/k_vec_isodistort/data/powgen_profile_lwf.instprm @@ -0,0 +1,21 @@ +#GSAS-II instrument parameter file; do not add/delete items! +Type:PNT +Z:0.0 +fltPath:63.183 +alpha:0.19637459518597117 +sig-q:-115.671 +2-theta:90.0 +sig-1:-150.877831643885 +sig-0:223.89502267695218 +sig-2:74.40379758682252 +Zero:0.0 +difA:0.0 +difB:5.3599226472337405 +Azimuth:0.0 +Y:0.0 +X:0.0 +beta-q:0.1307895343792446 +beta-0:0.002606568983582579 +difC:22583.929270280536 +beta-1:-0.07551370867534292 +Bank:3.0 diff --git a/MDtutorials/k_vec_isodistort/imgs/addie_plotter.gif b/MDtutorials/k_vec_isodistort/imgs/addie_plotter.gif new file mode 100755 index 0000000..bba642d Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/addie_plotter.gif differ diff --git a/MDtutorials/k_vec_isodistort/imgs/addie_simu.png b/MDtutorials/k_vec_isodistort/imgs/addie_simu.png new file mode 100644 index 0000000..f7ce64e Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/addie_simu.png differ diff --git a/MDtutorials/k_vec_isodistort/imgs/addie_simu_result.png b/MDtutorials/k_vec_isodistort/imgs/addie_simu_result.png new file mode 100644 index 0000000..da772bb Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/addie_simu_result.png differ diff --git a/MDtutorials/k_vec_isodistort/imgs/extra_peaks.png b/MDtutorials/k_vec_isodistort/imgs/extra_peaks.png new file mode 100644 index 0000000..b91deb8 Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/extra_peaks.png differ diff --git a/MDtutorials/k_vec_isodistort/imgs/k_vec_result_table.png b/MDtutorials/k_vec_isodistort/imgs/k_vec_result_table.png new file mode 100644 index 0000000..a961d16 Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/k_vec_result_table.png differ diff --git a/MDtutorials/k_vec_isodistort/imgs/k_vec_search.png b/MDtutorials/k_vec_isodistort/imgs/k_vec_search.png new file mode 100644 index 0000000..02e992e Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/k_vec_search.png differ diff --git a/MDtutorials/k_vec_isodistort/imgs/missing_peaks.png b/MDtutorials/k_vec_isodistort/imgs/missing_peaks.png new file mode 100644 index 0000000..00f59f3 Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/missing_peaks.png differ diff --git a/MDtutorials/k_vec_isodistort/imgs/structures.png b/MDtutorials/k_vec_isodistort/imgs/structures.png new file mode 100644 index 0000000..8ecd58c Binary files /dev/null and b/MDtutorials/k_vec_isodistort/imgs/structures.png differ diff --git a/MDtutorials/k_vec_isodistort/k_vec_isodistort.md b/MDtutorials/k_vec_isodistort/k_vec_isodistort.md new file mode 100644 index 0000000..e6b9e21 --- /dev/null +++ b/MDtutorials/k_vec_isodistort/k_vec_isodistort.md @@ -0,0 +1,73 @@ +--- +title: Use the k-vector searched with GSAS-II to talk to ISODISTORT +--- + + +* Exercise files are found [here](data/index.html) + + + +## Intro + +When the symmetry of a system is lowering through a group-subgroup pathway while going through a phase transition, one can try to use the emerging satellite peaks in the diffraction pattern to search for a k-vector that best explains the satellite peak positions. Refer to the two tutorials regarding the k-vector search in GSAS-II, [here](https://advancedphotonsource.github.io/GSAS-II-tutorials/k_vec_tutorial/k_vec_tutorial.html) and [here](https://advancedphotonsource.github.io/GSAS-II-tutorials/k_vec_tutorial_non_zero/k_vec_tutorial_non_zero.html). Once we obtain the alternative k-vector, we can move forward to use the k-vector to talk to ISODISTORT to search for all the isotropic subgroups that are compatible with the k-vector. It covers all the irreducible representations (IRs) compatible with the k-vector and the order parameters associated with each IR. An exhaustive refinement can then be performed for each of the candidate subgroup against the experimental diffraction data of the low symmetry phase. In this tutorial, we will demonstrate how to use the implementation in GSAS-II regarding this. Going through the steps to be presented here, we are expecting a series of GSAS-II project file, each for a specific subgroup candidate. + +For the demonstration purpose, here we are using the SrTiO${}_3$ structure as the parent and an arbitrarily generated subgroup (space group: $P4/mmm$) with a k-vector of (0, 1/2, 0). We simulated the powder diffraction data for both, with a typical instrument parameter file from the POWGEN diffractometer at SNS, ORNL. We will then use the simulated data to conduct a 'reverse engineering'. Namely, we can fit the simulated data from the subgroup with the parent phase and from there, we can use the residual peaks to extract the k-vector candidate and for a selected k-vector, we can construct GSAS-II project files for each of the subgroup candidate. We will `not` perform the exhaustive refinement for all the generated project files, though. `In the future, we can think about creating a wrapper script to run through all the generated candidate subgroups in a programmable manner.` + +Here below is shown the two structures used in this tutorial -- (left) the parent STO structure and (right) the arbitrarily generated subgroup structure. + +order parameter plot + +## Data Simulation + +For the data simulation with a CIF file, for sure we can use GSAS-II to do it. But here we want to showcase a convenient web-based tool for such a purpose. In fact, the backend calculation engine is still using GSAS-II, it is just that we will be doing this through an easy-accessible web interface. First, download the two structure files we include in the tutorial, `STO_Parent.cif` and `STO_Subgroup.cif`, together with the instrument parameter file we will be using for the simulation `powgen_profile_lwf.instprm`. Then go to the website, [https://addie.ornl.gov/simulatingpowder](https://addie.ornl.gov/simulatingpowder) (or, go to [https://addie.ornl.gov](https://addie.ornl.gov), then `Scattering Tools` => `SimulatePowder`). The interface looks like the figure to the right. + +![ADDIE Powder Diff Simulation](imgs/addie_simu.png) + +There we can upload the CIF file and the instrument parameter file to use for the simulation and click on the `Submit` button. One can notice that we have a dropdown selection menu there in the interface from which we can select one of the pre-included instruments such as NOMAD and POWGEN at SNS, ORNL and HB-2A (Powder) and HB-2C (WAND^2), HFIR, ORNL. One can also select the scatterer type and put in some optional parameters (follow the link there to see what options we can put in). The resulted here will be like the figure to the right. + +![ADDIE Powder Diff Simulation Result](imgs/addie_simu_result.png) + +We can download the simulated powder diffraction data by clicking on the `Datafile Download` button on top of the time-of-flight (TOF) result presented at the very top. Data in $d$ and $Q$ space are also presented but we do not need them here. We can do this for both CIF files provided here and if we do not change the CIF file names (`STO_Parent.cif` and `STO_Subgroup.cif`), we will obtain the following two simulated powder diffraction patterns, `STO_Parent_neutron_powder_calc.txt` and `STO_Subgroup_neutron_powder_calc.txt`, for the parent and subgroup phase, respectively. We will use these two simulated data files for the next part of the tutorial. Before that, if we want to have a quick comparison between the two datasets, we can go to [https://addie.ornl.gov/plotter](https://addie.ornl.gov/plotter), select the `Multiple Files Mode` and upload the two data files for a quick comparison plot. Here to the right is presented a demo for the tool. + +![ADDIE Data Plotter](imgs/addie_plotter.gif) + +## Refinement of the Subgroup Data with the Parent Phase + +Since we are dealing with the simulated data, here we are not going to refine the parent data with the parent phase since that will be trivial and we are expecting a 'perfect' refinement. To start, we load in the subgroup simulated data and refine it with the parent phase, pretending that we don't know the subgroup structure. First, launch the GSAS-II GUI, and then proceed to the menu item `Import` => `Powder Data` => `from Topas xyz/qye or 2th Fit2D chi/qchi file`, followed by browsing files and selecting the simulated data from previous step, namely `STO_Subgroup_neutron_powder_calc.txt`. If `ADDIE` interface was used previously for simulating the data, the downloaded simulated data will be ending with `.txt`. In this case, we have to select `any file (*.*)` from the file type dropdown selection while trying to find the previously saved simulated data. Once the data is selected, we want to click on `Yes` when prompted with the window to confirm the selection. Automatically, this will be followed by GSAS-II letting us to select the instrument parameter file. Here, we want to select exactly the one that was used above for the data simulation, i.e., `powgen_profile_lwf.instprm`. By default, GSAS-II assumes `GSAS iparm file (*.prm, *.inst, *.ins)`. Therefore, here we want to select `GSAS-II iparm file (*.instprm)` from the file type dropdown selection so that we can select the instrument parameter file `powgen_profile_lwf.instprm` to use. + +Next, proceed to the menu item `Import` => `Phase` => `from CIF file` and select the parent structure CIF file, `STO_Parent.cif`. Click `Yes` to confirm the selection when prompted. When asked, we want to give the phase a name -- here I am using `STO_parent`. GSAS-II will then let us select which histogram to attach the phase to -- here we only have one histogram and that is for sure the one we want to select. Just check the box in front of the histogram in the prompted window and click on `OK`. Without any other settings, let's just go ahead with the refinement -- go the menu `Calculate` => `Refine`. If we haven't saved the project yet, we will be asked to first save the project before proceeding and we can give the project a name like `test_subgroup_data_with_parent_structure.gpx` (we don't have to give the extension explicitly). Since we are dealing with the simulated data here, even though we are fitting the data simulated from the subgroup structure with the parent phase, we are still getting a very small Rwp (0.031%). However, if we zoom in the plot, we will see some peaks are not indexed by the parent structure, as seen to the right. + +![Unindexed peaks by the parent structure](imgs/missing_peaks.png) + +We will first pick up those extra peaks visually and perform the k-vector search. For more details about the k-vector search capability in GSAS-II, please refer to the tutorial [here](https://advancedphotonsource.github.io/GSAS-II-tutorials/k_vec_tutorial/k_vec_tutorial.html) and [here](https://advancedphotonsource.github.io/GSAS-II-tutorials/k_vec_tutorial_non_zero/k_vec_tutorial_non_zero.html). Here, we go to `Peak List` in the tree item (as one of the sub-items for the histogram tree item), and then go to the menu item `Peak Fitting` and enable `Add impurity/subgrp/magnetic peaks` (click on the item to see a check mark in front of the item text label). Then we go to the GSAS-II data plot window -- make sure the `Powder Patterns` tab is active. Following the previous steps, we now should be able to click on data points on the plot with the mouse to add in extra peaks. Here shown to the right are the peaks that I selected. + +![Extra peaks selection for k-vector search](imgs/extra_peaks.png) + +If by accident we select an extra peak unintentionally, we can remove it by right clicking on the extra peak that we want to remove. Or we can drag the extra peak to the position that we want it to be. Once we make sure several of the extra peaks are accurately selected, we can proceed to the k-vector search. Go back to the GSAS-II main window, click on the `Unit Cells List` item under the histogram tree item and check the `Search for k-vector` box, as shown to the right, + +![k-vector search](imgs/k_vec_search.png) + +Here, let's keep all the inputs as default and click on `Start Search`. In a blinking moment, we should be able to see the searched k-vector candidate where the results will be listed according to how close the extra peaks as will be yielded from a certain k-vector candidate are to those selected extra peaks, from the top to the bottom. ***GSAS-II does not try to pin down those unique k-vector arms and quite often we would see equivalent k-vectors appearing in the search result, as we would see in this case shown to the right***. + +![k-vector search result](imgs/k_vec_result_table.png) + +By default, the candidate k-vector at the very top of table will be checked -- we can check whichever one in the table if needed and only one of them can be checked at a time. With a certain k-vector candidate checked, we can click on the `Call ISODISTORT` button to use the selected k-vector to talk to ISODISTORT for constructing an exhaustive list of subgroups that are compatible with the selected k-vector. For sure, we need internet connection at this step. Once the button is clicked, we will first need to confirm the citation of ISODISTORT before proceeding. Clicking on `OK`, GSAS-II will then do the job in the background. Here are several critical steps happening in the background, + +- Upload the phase in GSAS-II to ISODISTORT + +- Feed in the selected k-vector + +- Go through the combination of IRREPs and order parameters and generate the corresponding subgroups, in an exhaustive manner + +- Save the CIF for each generated subgroup + +- Create and save a GSAS-II project file with the parent phase replaced by one candidate subgroup at a time + +The processing will take some time, depending on the number of candidate subgroups compatible with the selected k-vector. In the test case here, we are having 19 candidate subgroups in total and we can see the `P4/mmm` space group in the list, which is indeed our ground truth. Next, we will have to load open each of the saved GSAS-II project files, perform the refinement and go from there to determine the answer that best explains the diffraction pattern. We are not going to do that here. In the future, we will be working on a script with which one can run through those candidate subgroups refinement in a scriptable manner. + +## Authors + +| | +| ---: | +| Yuanpeng Zhang | +| October 14, 2025 |