Added new parse ori_vec subroutine to parse orientation vectors
This commit is contained in:
parent
e007038b6f
commit
41024b9674
@ -199,20 +199,7 @@ module mode_create
|
|||||||
call get_command_argument(arg_pos, orient_string, arglen)
|
call get_command_argument(arg_pos, orient_string, arglen)
|
||||||
if (arglen==0) STOP "Missing orientation in orient command of mode create"
|
if (arglen==0) STOP "Missing orientation in orient command of mode create"
|
||||||
arg_pos = arg_pos+1
|
arg_pos = arg_pos+1
|
||||||
ori_pos=2
|
call parse_ori_vec(orient_string, orient(i,:))
|
||||||
do j = 1,3
|
|
||||||
if (orient_string(ori_pos:ori_pos) == '-') then
|
|
||||||
ori_pos = ori_pos + 1
|
|
||||||
read(orient_string(ori_pos:ori_pos), *, iostat=stat) orient(i,j)
|
|
||||||
if (stat>0) STOP "Error reading orient value"
|
|
||||||
orient(i,j) = -orient(i,j)
|
|
||||||
ori_pos = ori_pos + 1
|
|
||||||
else
|
|
||||||
read(orient_string(ori_pos:ori_pos), *, iostat=stat) orient(i,j)
|
|
||||||
if(stat>0) STOP "Error reading orient value"
|
|
||||||
ori_pos=ori_pos + 1
|
|
||||||
end if
|
|
||||||
end do
|
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,4 +145,29 @@ module subroutines
|
|||||||
return
|
return
|
||||||
end subroutine matrix_inverse
|
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
|
end module subroutines
|
Loading…
x
Reference in New Issue
Block a user