check for NaN in math_QuaternionInSST

This commit is contained in:
Franz Roters 2012-05-11 07:37:32 +00:00
parent babf2647fb
commit f8f9c089d6
1 changed files with 16 additions and 12 deletions

View File

@ -1804,18 +1804,22 @@ pure function math_QuaternionInSST(Q, symmetryType)
real(pReal), dimension(3) :: Rodrig ! Rodrigues vector of Q
Rodrig = math_QuaternionToRodrig(Q)
select case (symmetryType)
case (1_pInt)
math_QuaternionInSST = Rodrig(1) > Rodrig(2) .and. &
Rodrig(2) > Rodrig(3) .and. &
Rodrig(3) > 0.0_pReal
case (2_pInt)
math_QuaternionInSST = Rodrig(1) > sqrt(3.0_pReal)*Rodrig(2) .and. &
Rodrig(2) > 0.0_pReal .and. &
Rodrig(3) > 0.0_pReal
case default
math_QuaternionInSST = .true.
end select
if (any(Rodrig/=Rodrig)) then
math_QuaternionInSST = .false.
else
select case (symmetryType)
case (1_pInt)
math_QuaternionInSST = Rodrig(1) > Rodrig(2) .and. &
Rodrig(2) > Rodrig(3) .and. &
Rodrig(3) > 0.0_pReal
case (2_pInt)
math_QuaternionInSST = Rodrig(1) > sqrt(3.0_pReal)*Rodrig(2) .and. &
Rodrig(2) > 0.0_pReal .and. &
Rodrig(3) > 0.0_pReal
case default
math_QuaternionInSST = .true.
end select
endif
end function math_QuaternionInSST