Get rot from xparm: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 31: | Line 31: | ||
xyz=xyz/x | xyz=xyz/x | ||
x=dot_product(xyz,rotation) | x=dot_product(xyz,rotation) | ||
print*,axnam(i),' axis | print*,'angle between ',axnam(i),' axis and ROTATION_AXIS: ',acos(x)*r2d | ||
x=dot_product(xyz,detector_x) | x=dot_product(xyz,detector_x) | ||
print*,axnam(i),' axis | print*,'angle between ',axnam(i),' axis and DETECTOR_X-AXIS: ',acos(x)*r2d | ||
x=dot_product(xyz,detector_y) | x=dot_product(xyz,detector_y) | ||
print*,axnam(i),' axis | print*,'angle between ',axnam(i),' axis and DETECTOR_Y-AXIS: ',acos(x)*r2d | ||
x=dot_product(xyz,beam) | x=dot_product(xyz,beam) | ||
print*,axnam(i),' axis | print*,'angle between ',axnam(i),' axis and INCIDENT_BEAM DIRECTION:',acos(x)*r2d | ||
end do | end do | ||
end | end |
Revision as of 00:04, 12 September 2010
! 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*,'angle between ',axnam(i),' axis and ROTATION_AXIS: ',acos(x)*r2d x=dot_product(xyz,detector_x) print*,'angle between ',axnam(i),' axis and DETECTOR_X-AXIS: ',acos(x)*r2d x=dot_product(xyz,detector_y) print*,'angle between ',axnam(i),' axis and DETECTOR_Y-AXIS: ',acos(x)*r2d x=dot_product(xyz,beam) print*,'angle between ',axnam(i),' axis and INCIDENT_BEAM DIRECTION:',acos(x)*r2d end do end