See examples in Symmetry.mw
A::list list of atomsC::list list of unit cell parameters (SG=C[7])GSG::{string,list} symmetry group name or list of group elementstvzero::numeric:=tvzero9 passed to 'M2cryst'SymmetrizeCell(A,C,/axes,symdev,{base,printout},$)::A,C
symmetrize lattice parameters and unit cell,
axes::{12,21,13,31,23,32}:=12 see 'DecodeAxes';symdev::[numeric,numeric,numeric]:=[1e-4,1e-3,1e-4] max deviations for cell lengths (relative), angles, and lattice coordinates (absolute);base::integer:=0 atomic positions are rounded to this base, zero means automatic determination of base, negative value forbids rounding.SymmetrizeAtoms(A,GSG,/PorA,axes,maxdev,{output,offset,scale, cellsymmetry,cellaxes,symdev,
axesaxes,originalcell,tvzero,addtmap,zeroM,codM,opt4ReshapeCell,opt4Atoms2Cell,cryst2Mpars,
digits,dmax,ref,monomers,nowarning,printout,linewidth,xyzfile},$)
symmetrize set of atoms,
addtmap::list:=[] add tmap in case if atoms are given in lattice coordinates;axes::{123,231,321,132,312,213,Matrix}:=123 transformation of atoms to a coordinate system of the symmetry group, e.g. 231 means that [0,0,1] will be transformed into [0,1,0];axesaxes::integer:=1212 used in cryst2M@SymmetrizeCell@M2cryst chain of operations;cellsymmetry::string:=`if`(type(symmetry,string),symmetry,""),cellaxes,symdev passed to SymmetrizeCell;codM::nonnegint:=0,zeroM::numeric:=-1 shortcuts for special opt4ReshapeCell;cryst2Mpars::list:=[] passed as additional cell parameters to 'M2cryst';dmax::numeric:=0.1 only the largest and all larger than dmax deviations are printed;linewidth::posint:=80 for printing;maxdev::numeric:=0.2 maximum allowed deviation of the transformed atoms from the original;monomers::{integer,list(list(posint))}:=[] treat monomers with 'FG_apl' instead of 'FG_app', a posint means number of atoms in the monomer, a negint means order of the monomer's stabilizator;nowarning::boolean:=evalb(output="b") concerns maxdev;offset::list:=[] for 'FG_app' including augmented dimensions (offset for 'Atoms2Cell' is be provided in opt4Atoms2Cell);opt4Atoms2Cell::list:=[] passed to 'Atoms2Cell';opt4ReshapeCell::list:=`if`(zeroM>=0,['zero'=zeroM],`if`(codM>0,[codM],[])) passed to 'ReshapeCell' during 'Atoms2Cell' conversion;originalcell::boolean do not transform original cell (otherwise it is symmetrized and canonized);PorA::list:=[] list of permutations in full correspondence with symmetry operations or etalon system from which the correct permutations can be derived;ref::list:=[] reference fundamental domain;scale::numeric:=0 scale atomic coordinates for maxdev, dmax, and xyzfile, the deafult value for space groups is 5;xyzfile::string:=cat(tmpfld,"_tmp.xyz") name of file to which all the transformers are written if printout.output::string:="a" is a string of characters:
1 unfolded fundamental domain with coordinates of 1st replica;a symmetrized atoms;b true/false if the list "f" is empty/nonempty;d fundamental domain;f list of [i,maxdev,MSD] for every symmetry operator g[i] for which maxdev test fails;g generators as list, such that g[i] gives symmetry group member generating i-th atom from 1st replica;m RMSD between average and input geometries;o orbits (indexes);p list of permutations P such that G[i].A[P[i]]=A.UnfoldBySymmetry(A,GSGorC,/maxdev,offset,{fd1st,primitive},$)::A, opt M
unfold full set of atoms from fundamental domain (asymmetric unit),
GSGorC::{string,list} symmetry group name, or list of group elements, or Cell;maxdev::numeric:=1.1e-4 from ideal symmetry transformation;offset::list({numeric,undefined}):=[] for unit cell;fd1st::boolean alternative atom ordering in which fundamental domain goes first;primitive::boolean unfold to primitive cell.UnfoldBySymmetryMol(mols,points,GSG,/mol2p,maxdev,offset,{printout},$)::mols2,FDm,ex
unfold full set of molecules from fundamental domain,
mols::list(list) list of molecules in fundamental domain;points::list unfolded list of reference points in unit cell;mol2p::procedure:=Centroid mapping of molecules to reference points, e.g. A->A[3][2];maxdev::numeric:=1e-4 for 'FGS_p2s';offset::list(numeric):=[] for 'FGS_init';FDm::list(posint) fundamental domain in the form of list of mols indexes;ex::list(posint) list of mols indexes for which no reference point were found in points.