### Syntax

`[r, aIdx, opInfo] = swsym.position(sym,r0)`

`[r, aIdx, opInfo] = swsym.position(sym,r0,fid)`

`[r, aIdx, opInfo] = swsym.position(sym,r0,fid,tol)`

### Description

`[r, aIdx, opInfo] = swsym.position(sym, r0, fid, tol)`

generates all
symmetry equivalent atomic positions from a given space group and
coordinates of the symmetry inequivalent atoms. If `fid`

is defined, the
result are printed onto the corresponding file.

### Input Arguments

`sym`

- Either the label of the space group or the index from the International Tables of Crystallography or string containing the space group operators in the same format as used in the symmetry.dat file (for details see swsym.str).
`r0`

- Atomic position in lattice units in a matrix with dimensions of \([3\times n_{atom}]\).
`fid`

- If non-zero, the symmetry operators will be printed to the file
identified by
`fid`

, the following values are valid:`0`

no printed output (default),`1`

standard output (Command Line),`fid`

text file opened before using`fid = fopen(path)`

.

`tol`

- Tolerance, distance within two atoms are considered identical, default value is \(10^{-5}\) lattice unit. Necessary to check for badly defined atomic positions (when atoms are not exactly on the symmetry element) and to avoid numerical errors.

### Output Arguments

`r`

- All generated atomic positions stored in a matrix with dimensions of \([3\times n_{genAtom}]\).
`aIdx`

- The index of the symmetry inequivalent position for every generated position, stored in a row vector with \(n_{genAtom}\) number of elements.
`opInfo`

- Structure with the following fields:
`ismoved`

Cell, where each element contains a vector with logical values, whether the given operator moved the atom or not. Each vector has a dimensions of \([1\times n_{sym}]\), where the \(n_{sym}\) is multiplicity of the general position.`opmove`

The rotation operator that moved the original atom the equivalent position stored in a matrix with dimensions of \([3\times 3\times n_{genAtom}]\).