Wolfram Language Paclet Repository

Community-contributed installable additions to the Wolfram Language

Primary Navigation

    • Cloud & Deployment
    • Core Language & Structure
    • Data Manipulation & Analysis
    • Engineering Data & Computation
    • External Interfaces & Connections
    • Financial Data & Computation
    • Geographic Data & Computation
    • Geometry
    • Graphs & Networks
    • Higher Mathematical Computation
    • Images
    • Knowledge Representation & Natural Language
    • Machine Learning
    • Notebook Documents & Presentation
    • Scientific and Medical Data & Computation
    • Social, Cultural & Linguistic Data
    • Strings & Text
    • Symbolic & Numeric Computation
    • System Operation & Setup
    • Time-Related Computation
    • User Interface Construction
    • Visualization & Graphics
    • Random Paclet
    • Alphabetical List
  • Using Paclets
    • Get Started
    • Download Definition Notebook
  • Learn More about Wolfram Language

MaXrd

Guides

  • MaXrd – Mathematica X-ray diffraction package

Tech Notes

  • Applying crystal data
  • Basic computations
  • Computations on reflections
  • Formulas in crystallography
  • Importing crystal data
  • Quick guide to conditions
  • References
  • Symmetry calculations
  • The association structure of crystallographic data
  • Using the rotation options

Symbols

  • AttenuationCoefficient
  • BraggAngle
  • ConstructDomains
  • CrystalDensity
  • CrystalFormulaUnits
  • CrystalPlot
  • DarwinWidth
  • DistortStructure
  • DomainPlot
  • EmbedStructure
  • ExpandCrystal
  • ExportCrystalData
  • ExtinctionLength
  • FindPixelClusters
  • GetAtomCoordinates
  • GetAtomicScatteringFactors
  • GetCrystalMetric
  • GetElements
  • GetLatticeParameters
  • GetLaueClass
  • GetScatteringCrossSections
  • GetSymmetryData
  • GetSymmetryOperations
  • ImportCrystalData
  • InputCheck
  • InterplanarSpacing
  • MergeDomains
  • MergeSymmetryEquivalentReflections
  • MillerNotationToList
  • MillerNotationToString
  • ReciprocalImageCheck
  • ReciprocalSpaceSimulation
  • ReflectionList
  • RelatedFunctionsGraph
  • ResetCrystalData
  • ResizeStructure
  • SimulateDiffractionPattern
  • StructureFactor
  • StructureFactorTable
  • SymmetryEquivalentPositions
  • SymmetryEquivalentReflections
  • SymmetryEquivalentReflectionsQ
  • SynthesiseStructure
  • SystematicAbsentQ
  • ToStandardSetting
  • TransformAtomicDisplacementParameters
  • UnitCellTransformation
  • $CrystalData
  • $GroupSymbolRedirect
  • $LaueClasses
  • $MaXrdPath
  • $MaXrdVersion
  • $PeriodicTable
  • $PointGroups
  • $SpaceGroups
  • $TransformationMatrices
Symmetry calculations
Working with symmetry equivalent positions
Working with symmetry equivalent reflections
In this tutorial, we will learn about the correspondence between the information given in the International Tables for Crystallography, volume A and data stored in
$SpaceGroups
.
The package must be loaded:
In[1]:=
<<MaXrd`
SymmetryEquivalentPositions
returns equivalent postions of given coordinates
SymmetryEquivalentReflections
returns equivalent reflections of given Miller indices
SymmetryEquivalentReflectionsQ
check whether two or more reflections are equivalent
GetSymmetryOperations
returns the symmetry operations of a given group
Functions concerning symmetry equivalence and symmetry operations.
Working with symmetry equivalent positions
Shown below is an extract from the International Tables for Crystallography, volume A of the symmetry equivalent positions of space group
P
4
2
1
c
(#114).
The same information may be obtained by the following:
In[2]:=
$SpaceGroups
["P-421c","SpecialPositions"]//Dataset
Out[2]=
Multiplicity
WyckoffLetter
SiteSymmetry
Coordinates
ReflectionConditions
8
e
1
x
y
z
{
…
3
}
-"x"
-"y"
z
y
-"x"
-"z"
-"y"
x
-"z"
8 total ›
4
d
2..
0
1/2
z
{
…
2
}
1/2
0
-"z"
1/2
0
1
2
-"z"
0
1/2
1
2
+"z"
4
c
2..
0
0
z
{{h_,k_,l_}/;True/;EvenQ[h+k+l]}
0
0
-"z"
1/2
1/2
1
2
-"z"
1/2
1/2
1
2
+"z"
2
b
4
..
0
0
1/2
{{h_,k_,l_}/;True/;EvenQ[h+k+l]}
1/2
1/2
0
2
a
4
..
0
0
0
{{h_,k_,l_}/;True/;EvenQ[h+k+l]}
1/2
1/2
1/2
Let us generate these from the first coordinates from each site symmetry. We use the function called
SymmetryEquivalentPostions
:
In[3]:=
?
SymmetryEquivalentPositions
Out[3]=
Symbol
SymmetryEquivalentPositions[group,{x,y,z}] returns a list of coordinates that are equivalent to
{x,y,z}
under the symmetry of
group
.​​SymmetryEquivalentPositions[group,{{
x
1
,
y
1
,
z
1
}{
x
2
,
y
2
,
z
2
},…}] returns a list of coordinates, each entry containg the equivalents of
{x,i,z}
i
under the symmetry of
group
.
Wyckoff letter
e
(general position):
In[4]:=
SymmetryEquivalentPositions
["P -4 21 c",{x,y,z}]
Out[4]=
{x,y,z},{-x,-y,z},{y,-x,-z},{-y,x,-z},
1
2
-x,
1
2
+y,
1
2
-z,
1
2
+x,
1
2
-y,
1
2
-z,
1
2
-y,
1
2
-x,
1
2
+z,
1
2
+y,
1
2
+x,
1
2
+z
Wyckoff letter
d
:
In[5]:=
SymmetryEquivalentPositions
["P -4 21 c",{0,1/2,z}]
Out[5]=
0,
1
2
,z,
1
2
,0,-z,
1
2
,0,
1
2
-z,0,
1
2
,
1
2
+z
Wyckoff letter
c
:
In[6]:=
SymmetryEquivalentPositions
["P -4 21 c",{0,0,z}]
Out[6]=
{0,0,z},{0,0,-z},
1
2
,
1
2
,
1
2
-z,
1
2
,
1
2
,
1
2
+z
Wyckoff letter
b
:
In[7]:=
SymmetryEquivalentPositions
["P -4 21 c",{0,0,1/2}]
Out[7]=
0,0,
1
2
,
1
2
,
1
2
,0
Wyckoff letter
a
:
In[8]:=
SymmetryEquivalentPositions
["P -4 21 c",{0,0,0}]
Out[8]=
{0,0,0},
1
2
,
1
2
,
1
2

Users that are interested in how this function works should see the Mathematica code section in the documentation pages on this function.
Note that the multiplicity (the first column in the extract) is the number of symmetry equivalent positions times the number of centring vectors (which for
P
is one).
Working with symmetry equivalent reflections
Analogous to
SymmetryEquivalentPositions
is the
SymmetryEquivalentReflections
function. Let us first see an example:
Reflections that are symmetry equivalent to
hk0
reflection in
P31m
:
In[1]:=
SymmetryEquivalentReflections
["P31m",{h,k,0}]
Out[1]=
{{h,k,0},{k,-h-k,0},{-h-k,h,0},{k,h,0},{h,-h-k,0},{-h-k,k,0}}
Let us now look more into the details of the function, and break the procedure into steps.
The functions starts by finding the Laue class of the space group:
In[2]:=
GetLaueClass
["P31m"]
Out[2]=
3
m
Next we find the symmetry operations associated with that group:
In[3]:=
S=
GetSymmetryOperations
["-3m"]
Out[3]=
TransformationFunction
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
,TransformationFunction
0
-1
0
0
1
-1
0
0
0
0
1
0
0
0
0
1
,TransformationFunction
-1
1
0
0
-1
0
0
0
0
0
1
0
0
0
0
1
,TransformationFunction
0
1
0
0
1
0
0
0
0
0
-1
0
0
0
0
1
,TransformationFunction
1
-1
0
0
0
-1
0
0
0
0
-1
0
0
0
0
1
,TransformationFunction
-1
0
0
0
-1
1
0
0
0
0
-1
0
0
0
0
1
,TransformationFunction
-1
0
0
0
0
-1
0
0
0
0
-1
0
0
0
0
1
,TransformationFunction
0
1
0
0
-1
1
0
0
0
0
-1
0
0
0
0
1
,TransformationFunction
1
-1
0
0
1
0
0
0
0
0
-1
0
0
0
0
1
,TransformationFunction
0
-1
0
0
-1
0
0
0
0
0
1
0
0
0
0
1
,TransformationFunction
-1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
,TransformationFunction
1
0
0
0
1
-1
0
0
0
0
1
0
0
0
0
1

Each symmetry operation (matrix) must be transposed and multiplied by the reflection. For example:
In[4]:=
s=RandomChoice[S]
Two reflections from the list above, so we know they are symmetry equivalent:
Example of two reflections that are not symmetry equivalent:

© 2025 Wolfram. All rights reserved.

  • Legal & Privacy Policy
  • Contact Us
  • WolframAlpha.com
  • WolframCloud.com