37 use element_mod , only : nixq
38
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50#include "com01_c.inc"
51#include "vect01_c.inc"
52
53
54
55 INTEGER IXQ(NIXQ,*), NGL(*)
57 . volu(*), aire(*),
58 . y1(*), y2(*), y3(*), y4(*),
59 . z1(*), z2(*), z3(*), z4(*),y234(*),y124(*)
60
61
62
63 INTEGER I
65 . a1(mvsiz), a2(mvsiz)
66
67 DO i=lft,llt
68 a1(i) =y2(i)*(z3(i)-z4(i))+
69 . y3(i)*(z4(i)-z2(i))+y4(i)*(z2(i)-z3(i))
70 a2(i) =y2(i)*(z4(i)-z1(i))+
71 . y4(i)*(z1(i)-z2(i))+y1(i)*(z2(i)-z4(i))
72 aire(i)=(a1(i)+a2(i))* half
73 IF (aire(i)==zero) THEN
75 . msgtype=msgerror,
76 . anmode=aninfo_blind_1,
77 . i1=ixq(nixq,i))
78 ELSEIF(aire(i)<zero.AND.n2d==1) THEN
80 . msgtype=msgerror,
81 . anmode=aninfo_blind_1,
82 . i1=ngl(i),
83 . prmod=msg_cumu)
84 aire(i) = -aire(i)
85 ENDIF
86 END DO
87
88 IF(n2d==1) THEN
89 IF(jcvt==0)THEN
90 DO i=lft,llt
91 volu(i)=((y2(i)+y3(i)+y4(i))*a1(i)
92 . +(y1(i)+y2(i)+y4(i))*a2(i))*one_over_6
93 END DO
94 ELSE
95 DO i=lft,llt
96 volu(i)=(y234(i)*a1(i)+y124(i)*a2(i))*one_over_6
97 END DO
98 END IF
99 ELSE
100 DO i=lft,llt
101 volu(i)=aire(i)
102 END DO
103 ENDIF
104
105 DO i=lft,llt
106 IF(volu(i)<=0.0)THEN
108 . msgtype=msgerror,
109 . anmode=aninfo,
110 . i1=ngl(i))
111 EXIT
112 END IF
113 END DO
114
115 RETURN
116
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)