See examples in Modify.mw
A::list geometry to modifytA::list transformed geometryCo::list:=[] conectivityTransformAtoms(A,R,/t,J,$)::tA
transforms atoms as R.A+t,
R::{Matrix,numeric,list} transformation matrix or scalar, a list is considered as the matrix diagonal;t::Vector:=<0,0,0> translation, if Tvs are present in A then t is transformed to Cartesians by those Tvs;J::list:=[0] list of atoms to transform.R is applied to Tvs whereas t is not.ChangeDihedral(A,lsi,val,/Co,{opt4CA,frags},$)::tA
change dihedral or improper, where
lsi::[posint,posint,posint,posint] defines the dihedral;val::numeric value of the dihedral to set;Co::Vector:=`if`(nops(A[1])>3,map2(op,4,A),ConnectAtoms(A,op(opt4CA))) connectivity;opt4CA::list:=[] options for generating Co;frags::[list(posint),list(posint)]:=[[],[]] explicitly provide fragments (e.g. if dihedral is locked), set Co=[] to speed up.JoinMol(mols,joints,/dets,rcov,{output,printout},$)
join molecules, where
mols::list(list) list of list of atoms;joints::list([m1,[i1,j1,k1],[i2,j2,k2],d,b]) list of joints, where
m1::integer index of molecule to which the current molecule m2 is to be attached (negative values are counted from m2),i1::integer index of atom from molecule m1 to which the attachment is to be made,j1::integer additional atom from molecule m1 to define the connecting dihedral,k1::integer terminal atom from molecule m1 to be removed,i2,j2,k2::integer the same for molecule m2,d::numeric value of the dihedral (j1,i1,i2,j2) to set,b::numeric bond length (i1,i2) to set (if omitted then covalent bond length is used);dets::list({1,-1}):=[1$nops(molecules)] if -1 then the corresponding molecule is inverted;rcov::list(string=numeric):=[] supersedes tb_rcov for overlapping entries;output::string:="a" "a" for transformed atoms, "j" for the formed joints.AttachPoints(P,b,n,{a34},$)::newpoints
attach n=1..3 new points to the first point of P::list(Vector(3))
at the bond length b in such a way as to maximize distance between points in the first coordination shell.
Minimum 2 points are required in P.
If the coordination shell is complete (e.g. 4 atoms in tetrahedron or 6 atoms in octahedron),
the new atom is added at the location of the first point.
Here a34::realcons:=0 is the angle between 3rd and 4th points if different from the perfect tetrahedron.AliphaticDihedrals(A,/T,{atoms14,printout,printxyz,overwrite},$)::list([posint$4])
determine all aliphatic dihedrals, where
T::list:=["CC2H2"] which atoms types are allowed for the two central atoms of the dihedral, see ClassifyAtoms command;atoms14::list:=["C"] which elements are allowed for the two terminal atoms of the dihedral;printxyz::string:="" aliphatic chains will be saved to this file.Alkane(n,{CC:=1.527,CCC:=113.46,CH:=1.099,HCH:=105.98,CCH:=111.55},$)::Atoms
generate linear alkane of n carbons.
Default values of geometrical parameters correspond to CAM-B3LYPp2p.SortAlkane(A,i0,/convention,Co,{printout},$)::permutation
sort alkane atoms using A[i0] as the root hydrogen.
Three conventions are supported convention::{"line","loop","zigzag"}:="loop", see examples.