From: Peter Murray-R. <pm...@ca...> - 2003-05-28 19:06:35
|
At 07:18 28/05/2003 +0200, E.L. Willighagen (Egon) wrote: >On Tuesday 27 May 2003 22:30, Fabian Dortu wrote: > > some times ago you told me about a piece of code to deal with symmetries > > in crystal. But I was not very receptive at that moment. Could you tell > > me more about it? > >Ah, good. Take for example the CML output of ABINIT: buld_Si.cml... >(Not valid CML, I'm writing a patch for ABINIT to write valid CML... but >that's a different story...) > >You will see fragments like: > > <floatMatrix builtin="symOp" rows="4" columns="3"> > 1 0 0 0.000000000000 > 0 1 0 0.000000000000 > 0 0 1 0.000000000000 > </floatMatrix> > >wrapped in a <symmetry> element... AFAIK, this example corresponds with a >symmetry operation like: > >x,y,z You have 3 rows and 4 columns so should adjust the attributes :-) >which is the identity operation. The second is more interesting: > > <floatMatrix builtin="symOp" rows="4" columns="3"> > -1 0 0 0.250000000000 > 0 -1 0 0.250000000000 > 0 0 -1 0.250000000000 > </floatMatrix> > >This would be the operation: > >1/4-x, 1/4-y. 1/4-z floatMatrix is allowed but deprecated in CML2. The preferred construct is: <matrix type="xsd:float" rows="3" columns="4"> > -1 0 0 0.250000000000 > 0 -1 0 0.250000000000 > 0 0 -1 0.250000000000 </matrix> In this way a much greater range of datatypes is possible. >etc... > >Each operation is applied to all atoms in the unit cell, i.e. only >those in the assymetric unit is given. > >Thus, the UnitCell class should be extended to hold such symmetries and be >able to use them when composing the unit cell contents... Yes. Be aware that the symmetry operators given do not normally include cell translations (and often not cell centering). Thus in C2/m which has 8 asymmetric (sic) units in the cell only 2 operators are often given: x, y, z x, -y, z The operator 1/2+x, 1/2+y, z is assumed as are p+x, q+y, r+z where p, q, r and any integers (and therefore infinite). The operators are enough to define an infinite lattice but if you wish to define a specific set of "molecules" you have to enumerate them or give ranges or both. I'd be very interest in this as it needs to go into CML. >Alternatively, some file format describe symmetry operation in this format >1/4-x, 1/4-y. 1/4-z, and some even only give the symmetry group, which would >require a lookup table. The mechanism used by ABINIT is easiest, and >clearest, as it simply gives which operations should be done. Support for >that would be the place to start. > >Egon > >PS. Could you describe how a unit cell is composed in the Jmol >implementation? >What are the basic steps, and in which Class.method is each step found? >Because and I want to add an option (next to default atom placement, original >position) that will display the atoms without partitioning the molecules into >fragments, but will move the molecules such that the center of mass of the >molecule is located within in the unit cell. (we discussed this before, but I >never got to writing a patch...) > > > > > > >------------------------------------------------------- >This SF.net email is sponsored by: ObjectStore. >If flattening out C++ or Java code to make your application fit in a >relational database is painful, don't do it! Check out ObjectStore. >Now part of Progress Software. http://www.objectstore.net/sourceforge >_______________________________________________ >Jmol-developers mailing list >Jmo...@li... >https://lists.sourceforge.net/lists/listinfo/jmol-developers |