|
|
|
@ -145,4 +145,29 @@ module subroutines
|
|
|
|
|
return
|
|
|
|
|
end subroutine matrix_inverse
|
|
|
|
|
|
|
|
|
|
subroutine parse_ori_vec(ori_string, ori_vec)
|
|
|
|
|
!This subroutine parses a string to vector in the format [ijk]
|
|
|
|
|
character(len=8), intent(in) :: ori_string
|
|
|
|
|
real(kind=dp), dimension(3), intent(out) :: ori_vec
|
|
|
|
|
|
|
|
|
|
integer :: i, ori_pos, stat
|
|
|
|
|
|
|
|
|
|
ori_pos=2
|
|
|
|
|
do i = 1,3
|
|
|
|
|
if (ori_string(ori_pos:ori_pos) == '-') then
|
|
|
|
|
ori_pos = ori_pos + 1
|
|
|
|
|
read(ori_string(ori_pos:ori_pos), *, iostat=stat) ori_vec(i)
|
|
|
|
|
if (stat>0) STOP "Error reading orientation value"
|
|
|
|
|
ori_vec(i) = -ori_vec(i)
|
|
|
|
|
ori_pos = ori_pos + 1
|
|
|
|
|
else
|
|
|
|
|
read(ori_string(ori_pos:ori_pos), *, iostat=stat) ori_vec(i)
|
|
|
|
|
if(stat>0) STOP "Error reading orientation value"
|
|
|
|
|
ori_pos=ori_pos + 1
|
|
|
|
|
end if
|
|
|
|
|
end do
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
end subroutine parse_ori_vec
|
|
|
|
|
|
|
|
|
|
end module subroutines
|