This is an old revision of the document!


Alan Coelho 2017/08/28 04:08

The following example runs stand-alone; ie. no data files necessary. The rotation and translation coordinates are determined in one refinement Cycle.

Atoms types given for occupancy is for display purposes.

/*
   Rigid Body - Matching to a known fragment
   Determining rotation and translation parameters for a known fragment
   The known-fragment is in fractional coordinates.
   Doing the same for a fragment in Cartesian coordinates is possible by changing the lattice angles to 90 degrees and adjusting the lattice parameter lengths.
*/

only_penalties
continue_after_convergence

yobs_eqn !aac.xy = 1; min 10 max 20 del 0.02

   STR(p1)
      a       6.54131
      b       7.75969
      c       9.13579
      al     96.18524
      be    107.23760
      ga    101.40126

      view_structure

      ' Known Fragment
      site Al1  x  0.24949` y  0.20782` z  0.41049` occ Al+3 1 beq 1
      site O1   x  0.54370` y  0.19252` z  0.43481` occ O-2  1 beq 1
      site O2   x -0.04471` y  0.22313` z  0.38619` occ O-2  1 beq 1
      site O3   x  0.25944` y  0.35365` z  0.25728` occ O-2  1 beq 1
      site O4   x  0.23953` y  0.06199` z  0.56370` occ O-2  1 beq 1
      site O5   x  0.35706` y  0.41500` z  0.56828` occ O-2  1 beq 1
      site O6   x  0.14191` y  0.00063` z  0.25270` occ O-2  1 beq 1

      ' Rigid body to fit to known fragment
      site wAl1  x 0 y 0 z 0 occ Zr 1  beq 1
      site wO1   x 0 y 0 z 0 occ C  1  beq 1
      site wO2   x 0 y 0 z 0 occ C  1  beq 1
      site wO3   x 0 y 0 z 0 occ C  1  beq 1
      site wO4   x 0 y 0 z 0 occ C  1  beq 1
      site wO5   x 0 y 0 z 0 occ C  1  beq 1
      site wO6   x 0 y 0 z 0 occ C  1  beq 1

      rigid
         Octahedra(wAl1, wO1, wO2, wO3, wO4, wO5, wO6, 1.9)

         macro VA { val_on_continue = Rand(-180, 180);  }
         rotate @ 0 VA qa 1
         rotate @ 0 VA qb 1
         rotate @ 0 VA qc 1

         translate
            ta @  0
            tb @  0
            tc @  0

      ' Probably not necessary to include all of these
      Distance_Restrain(Al1 wAl1, 0,0,0,1)
      Distance_Restrain(O1 wO1, 0,0,0,1)
      Distance_Restrain(O2 wO2, 0,0,0,1)
      Distance_Restrain(O3 wO3, 0,0,0,1)
      Distance_Restrain(O4 wO4, 0,0,0,1)
      Distance_Restrain(O5 wO5, 0,0,0,1)
      Distance_Restrain(O6 wO6, 0,0,0,1)

Personal Tools