Get rot from xparm

From XDSwiki
Revision as of 23:57, 11 September 2010 by Kay (talk | contribs) (Created page with '</pre> ! program to calculate rotations of unit cell axes with respect to detector axes, rotation axis, and beam. ! KD 9/2010 implicit none integer i real rota…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

! program to calculate rotations of unit cell axes with respect to detector axes, rotation axis, and beam. ! KD 9/2010

     implicit none
     integer i
     real rotation(3),beam(3),detector_x(3),detector_y(3),x,xyz(3)
     real, parameter :: r2d=57.2957795
     character axnam*1(3)/'a','b','c'/
     

open(1,file='XPARM.XDS')

     read(1,*) beam,rotation ! 1. record: read ROTATION_AXIS
     print*,' ROTATION_AXIS=',rotation
     read(1,*) x,beam        ! 2. record: read INCIDENT_BEAM_DIRECTION
     beam=beam*x 
     print*,' normalized INCIDENT_BEAM_DIRECTION=',beam
     read(1,*) x             ! 3. record: read nothing
     read(1,*) x             ! 4. record: read nothing
     read(1,*) detector_x    ! 5. record: read DIRECTION_OF_DETECTOR_X-AXIS
     print*,' DIRECTION_OF_DETECTOR_X-AXIS=',detector_x
     read(1,*) detector_y    ! 6. record: read DIRECTION_OF_DETECTOR_Y-AXIS
     print*,' DIRECTION_OF_DETECTOR_Y-AXIS=',detector_y
     read(1,*) x             ! 7. record: read nothing
     read(1,*) x             ! 8. record: read nothing
     
     do i=1,3
       print*,' '
       read(1,*)xyz
       x=sqrt(xyz(1)**2 + xyz(2)**2 + xyz(3)**2)
       xyz=xyz/x
       x=dot_product(xyz,rotation)
       print*,axnam(i),' axis rotation w.r.t. ROTATION_AXIS:          ',acos(x)*r2d
       x=dot_product(xyz,detector_x)
       print*,axnam(i),' axis rotation w.r.t. DETECTOR_X-AXIS:        ',acos(x)*r2d
       x=dot_product(xyz,detector_y)
       print*,axnam(i),' axis rotation w.r.t. DETECTOR_Y-AXIS:        ',acos(x)*r2d
       x=dot_product(xyz,beam)
       print*,axnam(i),' axis rotation w.r.t. INCIDENT_BEAM DIRECTION:',acos(x)*r2d
     end do

end