Home > Applications > Horace > @sqw > refine_crystal.m

iFit/refine_crystal

PURPOSE ^

Refine crystal orientation and lattice parameters for an sqw or d0d/d1d/...d4d object

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 Refine crystal orientation and lattice parameters for an sqw or d0d/d1d/...d4d object

   >> [rlu_corr,alatt,angdeg] = refine_crystal(w, rlu0, rlu)
   >> [rlu_corr,alatt,angdeg] = refine_crystal(w, rlu0, rlu, alatt_init, angdeg_init)

 In addition, there are keyword arguments to control the refinement e.g.
   >> [rlu_corr,alatt,angdeg] = refine_crystal(..., 'fix_angdeg')
   >> [rlu_corr,alatt,angdeg] = refine_crystal(..., 'free_alatt', [1,0,1])

 In all cases, further output arguments can be returned:
   >> [rlu_corr,alatt,angdeg,rotmat,distance,rotangle] = refine_crystal(...)

 This function is used to get a matrix that relates the coordinates of a vector (h0,k0,l0)
 as expressed in an initial or reference lattice to the coordinates (h,k,l) in the true lattice.
 It does this by taking a set of points (h0,k0,l0) and the corresponding set of true indicies
 (h,k,l), and refining the lattice parameters and orientation. The refined lattice parameters
 are also returned.

 The output from this function can be used to correct the crystal orientation and lattice parameters
 in Horace. Type >> help change_crystal_horace for more details.

 Input:
 ------
   w               sqw object
   rlu0            Positions of reciprocal lattice vectors as h,k,l in reference lattice
                  (n x 3 matrix, n=no. reflections)
   rlu             True indexes of reciprocal lattice vectors (n x 3 matrix)

 Optional input parameter:
   alatt_init      Initial lattice parameters for start of refinement [a,b,c] (Angstroms)
   angdeg_init     Initial lattice angles for start of refinement [alf,bet,gam] (deg)
                  If one or both of alatt_init and angdeg_init are not given, then the corresponding
                  reference lattice parmaeters are taken as the initial values for refinement.

 Keywords (more than one is permitted if not inconsistent)
   fix_lattice     Fix all lattice parameters [a,b,c,alf,bet,gam]
                  i.e. only allow crystal orientation to be refined
   fix_alatt       Fix [a,b,c] but allow lattice angles alf, bet and gam to be refined
                  together with crystal orientation
   fix_angdeg      Fix [alf,bet,gam] but allow pattice parameters [a,b,c] to be refined
                  together with crystal orientation
   fix_alatt_ratio Fix the ratio of the lattice parameters as given by the values in
                  lattice_init, but allow the overall scale of the lattice to be refined
                  together with crystal orientation
   fix_orient      Fix the crystal orientation i.e. only refine lattice parameters

 Finer control of refoinement of lattice parameters: instead of fix_lattice, fix_angdeg,... use
   free_alatt      Array length 3 of zeros or ones, 1=free, 0=fixed
                  e.g. ...,'free_alatt',[1,0,1],... allows only lattice parameter b to vary
   free_angdeg     Array length 3 of zeros or ones, 1=free, 0=fixed
                  e.g. ...,'free_lattice',[1,1,0],... fixes lattice angle gam buts allows alf and bet to vary


 Output:
 -------
   rlu_corr        Conversion matrix to relate notional rlu to true rlu, accounting for the the
                  refined crystal lattice parameters and orientation
                       qhkl(i) = rlu_corr(i,j) * qhkl_0(j)

   alatt           Refined lattice parameters [a,b,c] (Angstroms)

   angdeg          Refined lattice angles [alf,bet,gam] (degrees)

   rotmat          Rotation matrix that relates crystal Cartesian coordinate frame of the refined
                  lattice and orientation as a rotation of the initial crystal frame. Coordinates
                  in the two frames are related by 
                       v(i)= rotmat(i,j)*v0(j)

   distance        Distances between peak positions and points given by true indexes, in input
                  argument rlu, in the refined crystal lattice. (Ang^-1)

   rotangle        Angle of rotation corresponding to rotmat (to give a measure
                  of the misorientation) (degrees)

 The output argument rlu_corr, together with the input alatt0 and angdeg0, are sufficient to compute
 the other output arguments. That is why Horace functions that use the output of this function will
 generally only require rlu_corr.

 EXAMPLES
   Want to refine crystal orientation only:
   >> rlu_corr=refine_crystal (rlu0, alatt0, angdeg0, rlu, 'fix_lattice')

   Want to refine lattice parameters a,b,c as well as crystal orientation:
   >> [rlu_corr,alatt]=refine_crystal (rlu0, alatt0, angdeg0, rlu, 'fix_angdeg')
%   Overloaded methods:
      sqw/refine_crystal
      sqw/refine_crystal
      d4d/refine_crystal
      d3d/refine_crystal
      d2d/refine_crystal
      d1d/refine_crystal
      d0d/refine_crystal

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Mon 26-Nov-2018 15:08:42 by m2html © 2005. iFit (c) E.Farhi/ILL EUPL 1.1