@@ -1716,7 +1716,7 @@ SUBROUTINE IS_IN_UNGRID(IMOD, XTIN, YTIN, ITOUT, IS, JS, RW)
1716
1716
! / ------------------------------------------------------------------- /
1717
1717
! local parameters
1718
1718
1719
- DOUBLE PRECISION :: x1, x2, x3
1719
+ DOUBLE PRECISION :: x1, x2, x3, XTINmod, xavg
1720
1720
DOUBLE PRECISION :: y1, y2, y3
1721
1721
DOUBLE PRECISION :: s1, s2, s3, sg1, sg2, sg3
1722
1722
REAL * 8 :: PT(3 ,2 )
@@ -1748,19 +1748,26 @@ SUBROUTINE IS_IN_UNGRID(IMOD, XTIN, YTIN, ITOUT, IS, JS, RW)
1748
1748
! coordinates of the 3rd vertex C
1749
1749
x3 = PT(3 ,1 )
1750
1750
y3 = PT(3 ,2 )
1751
- ! with M = (XTIN,YTIN) the target point ...
1751
+ ! ensure XTIN is defined with same coordinates as element
1752
+ xavg= (x1+ x2+ x3)/ 3
1753
+ IF (ABS (XTIN- xavg).GT. 180 ) THEN
1754
+ XTINmod= XTIN- SIGN (360.0d0 ,(XTIN- xavg))
1755
+ ELSE
1756
+ XTINmod= XTIN
1757
+ END IF
1758
+ ! with M = (XTINmod,YTIN) the target point ...
1752
1759
! vector product of AB and AC
1753
1760
sg3= (y3- y1)* (x2- x1)- (x3- x1)* (y2- y1)
1754
1761
! vector product of AB and AM
1755
- s3= (YTIN- y1)* (x2- x1)- (XTIN - x1)* (y2- y1)
1762
+ s3= (YTIN- y1)* (x2- x1)- (XTINmod - x1)* (y2- y1)
1756
1763
! vector product of BC and BA
1757
1764
sg1= (y1- y2)* (x3- x2)- (x1- x2)* (y3- y2)
1758
1765
! vector product of BC and BM
1759
- s1= (YTIN- y2)* (x3- x2)- (XTIN - x2)* (y3- y2)
1766
+ s1= (YTIN- y2)* (x3- x2)- (XTINmod - x2)* (y3- y2)
1760
1767
! vector product of CA and CB
1761
1768
sg2= (y2- y3)* (x1- x3)- (x2- x3)* (y1- y3)
1762
1769
! vector product of CA and CM
1763
- s2= (YTIN- y3)* (x1- x3)- (XTIN - x3)* (y1- y3)
1770
+ s2= (YTIN- y3)* (x1- x3)- (XTINmod - x3)* (y1- y3)
1764
1771
IF ((s1* sg1.GE. 0 ).AND. (s2* sg2.GE. 0 ).AND. (s3* sg3.GE. 0 )) THEN
1765
1772
itout= ITRI
1766
1773
nbFound= nbFound+1
0 commit comments