41 use element_mod , only : nixq
42
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "mvsiz_p.inc"
51
52
53
54#include "com01_c.inc"
55#include "vect01_c.inc"
56
57
58
59 INTEGER IXQ(NIXQ,*), NGL(*)
61 . volu(*), aire(*),
62 . y1(*), y2(*), y3(*), y4(*),
63 . z1(*), z2(*), z3(*), z4(*)
64
65
66
67 INTEGER I
69 . a1(mvsiz), a2(mvsiz)
70
71 DO i=lft,llt
72 a1(i) =y2(i)*(z3(i)-z4(i))+
73 . y3(i)*(z4(i)-z2(i))+y4(i)*(z2(i)-z3(i))
74 a2(i) =y2(i)*(z4(i)-z1(i))+
75 . y4(i)*(z1(i)-z2(i))+y1(i)*(z2(i)-z4(i))
76 aire(i)=(a1(i)+a2(i))* half
77 IF (aire(i)==zero) THEN
79 . msgtype=msgerror,
80 . anmode=aninfo_blind_1,
81 . i1=ixq(nixq,i))
82 ELSEIF(aire(i)<zero.AND.n2d==1) THEN
84 . msgtype=msgerror,
85 . anmode=aninfo_blind_1,
86 . i1=ngl(i),
87 . prmod=msg_cumu)
88 aire(i) = -aire(i)
89 ENDIF
90 END DO
91
92 IF(n2d==1) THEN
93 DO i=lft,llt
94 volu(i)=((y2(i)+y3(i)+y4(i))*a1(i)+
95 . (y1(i)+y2(i)+y4(i))*a2(i))* one_over_6
96 END DO
97 ELSE
98 DO i=lft,llt
99 volu(i)=aire(i)
100 END DO
101 ENDIF
102
103 DO i=lft,llt
104 IF(volu(i)<=0.0)THEN
106 . msgtype=msgerror,
107 . anmode=aninfo,
108 . i1=ngl(i))
109 EXIT
110 END IF
111 END DO
112
113 RETURN
114
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)