44
45
46
49 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
50
51
52
53#include "implicit_f.inc"
54#include "param_c.inc"
55
56
57
58#include "mvsiz_p.inc"
59
60
61
62#include "inter22.inc"
63
64
65
66 INTEGER :: NRTM, IRECT(4,*), NOINT, ITAB(*), NBRIC, IXS(NIXS,*), BRICS(*)
68 INTEGER :: , IMESG
69 CHARACTER(LEN=NCHARTITLE) :: TITR
70 INTEGER, DIMENSION(MVSIZ), INTENT(INOUT) :: IX1,IX2,IX3,IX4
71 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x1,x2,x3,x4
72 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: y1,y2,y3,y4
73 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: z1,z2,z3,z4
74 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: n1,n2,n3
75 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0
76 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xn1,yn1,zn1
77 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xn2,yn2,zn2
78 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xn3,yn3,zn3
79 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xn4,yn4,zn4
80
81
82
83 INTEGER I, J, IDEB, ILAW, MID, IBRIC, JALE, JEUL, I22LAW06
85 my_real,
DIMENSION(MVSIZ) :: xx1,yy1,zz1
86 my_real,
DIMENSION(MVSIZ) :: xx2,yy2,zz2
87 my_real,
DIMENSION(MVSIZ) :: xx3,yy3,zz3
88 my_real,
DIMENSION(MVSIZ) :: xx4,yy4,zz4
89 LOGICAL LOI_FLUID
91
92
93
94
95 ideb=0
96 DO WHILE(ideb<nrtm)
97
98
99 DO i=1,
min(mvsiz,nrtm-ideb)
100 j=ideb+i
101 ix1(i)=irect(1,j)
102 ix2(i)=irect(2,j)
103 ix3(i)=irect(3,j)
104 ix4(i)=irect(4,j)
105 x1(i) =x(1,ix1(i))
106 y1(i) =x(2,ix1(i))
107 z1(i) =x(3,ix1(i))
108 x2(i) =x(1,ix2(i))
109 y2(i) =x(2,ix2(i))
110 z2(i) =x(3,ix2(i))
111 x3(i) =x(1,ix3(i))
112 y3(i) =x(2,ix3(i))
113 z3(i) =x(3,ix3(i))
114 x4(i) =x(1,ix4(i))
115 y4(i) =x(2,ix4(i))
116 z4(i) =x(3,ix4(i))
117 ENDDO
118
119 DO i=1,
min(mvsiz,nrtm-ideb)
120
121 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
122 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
123 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
124
125
126 xx1(i) = x1(i)-x0(i)
127 xx2(i) = x2(i)-x0(i)
128 xx3(i) = x3(i)-x0(i)
129 xx4(i) = x4(i)-x0(i)
130 yy1(i) = y1(i)-y0(i)
131 yy2(i) = y2(i)-y0(i)
132 yy3(i) = y3(i)-y0(i)
133 yy4(i) = y4(i)-y0(i)
134 zz1(i) = z1(i)-z0(i)
135 zz2(i) = z2(i)-z0(i)
136 zz3(i) = z3(i)-z0(i)
137 zz4(i) = z4(i)-z0(i)
138 ENDDO
139
140
141
142
143 DO i=1,
min(mvsiz,nrtm-ideb)
144 xn1(i) = yy1(i)*zz2(i) - yy2(i)*zz1(i)
145 yn1(i) = zz1(i)*xx2(i) - zz2(i)*xx1(i)
146 zn1(i) = xx1(i)*yy2(i) - xx2(i)*yy1(i)
147 n1(i)=xn1(i)
148 n2(i)=yn1(i)
149 n3(i)=zn1(i)
150 ENDDO
151
152 DO i=1,
min(mvsiz,nrtm-ideb)
153 xn2(i) = yy2(i)*zz3(i) - yy3(i)*zz2(i)
154 yn2(i) = zz2(i)*xx3(i) - zz3(i)*xx2(i)
155 zn2(i) = xx2(i)*yy3(i) - xx3(i)*yy2(i)
156 n1(i)=n1(i)+xn2(i)
157 n2(i)=n2(i)+yn2(i)
158 n3(i)=n3(i)+zn2(i)
159 ENDDO
160
161 DO i=1,
min(mvsiz,nrtm-ideb)
162 IF(ix3(i)/=ix4(i)) THEN
163 xn3(i) = yy3(i)*zz4(i) - yy4(i)*zz3(i)
164 yn3(i) = zz3(i)*xx4(i) - zz4(i)*xx3(i)
165 zn3(i) = xx3(i)*yy4(i) - xx4(i)*yy3(i)
166 n1(i)=n1(i)+xn3(i)
167 n2(i)=n2(i)+yn3(i)
168 n3(i)=n3(i)+zn3(i)
169 ELSE
170 xn3(i)=zero
171 yn3(i)=zero
172 zn3(i)=zero
173 ENDIF
174 ENDDO
175
176 DO i=1,
min(mvsiz,nrtm-ideb)
177 xn4(i) = yy4(i)*zz1(i) - yy1(i)*zz4(i)
178 yn4(i) = zz4(i)*xx1(i) - zz1(i)*xx4(i)
179 zn4(i) = xx4(i)*yy1(i) - xx1(i)*yy4(i)
180 n1(i)=n1(i)+xn4(i)
181 n2(i)=n2(i)+yn4(i)
182 n3(i)=n3(i)+zn4(i)
183 ENDDO
184
185 DO i=1,
min(mvsiz,nrtm-ideb)
186 an=
max(em20,sqrt(n1(i)*n1(i)+n2(i)*n2(i)+n3(i)*n3(i)))
187 n1(i)=n1(i)/an
188 n2(i)=n2(i)/an
189 n3(i)=n3(i)/an
190 ENDDO
191
192 DO i=1,
min(mvsiz,nrtm-ideb)
193 x0(i)=(n1(i)*xn1(i)+n2(i)*yn1(i)+n3(i)*zn1(i))
194 z0(i)=(n1(i)*xn3(i)+n2(i)*yn3(i)+n3(i)*zn3(i))
195
196
197 IF(z0(i)==zero.AND.x0(i)==zero)THEN
199 . msgtype=msgerror,
200 . anmode=aninfo_blind_1,
202 . c1=titr,
203 . i2=itab(ix1(i)),
204 . i3=itab(ix2(i)),
205 . i4=itab(ix3(i)),
206 . i5=itab(ix4(i)))
207 ENDIF
208 ENDDO
209
210 ideb=ideb+
min(mvsiz,nrtm-ideb)
211 ENDDO
212
213
214
215
216
217
218
219
220
221
222 imesg = 0
223 DO i=1,nbric
224 ibric = brics(i)
225 mid = ixs(1,ibric)
226 ilaw = nint(pm(19,mid))
227 i22law06 = 0
228 i22law37 = 0
229 i22law51 = 0
230 IF(ilaw == 37) i22law37 = 5
231 IF(ilaw == 51) i22law51 = m51_n0phas+4*m51_nvphas
232
233 IF((ilaw/=0).AND.(ilaw/=11).AND.(ilaw/=51).AND.(ilaw/=6).AND.(ilaw/=37))THEN
234 imesg = 97
235 EXIT
236 END IF
237 END do
238
239 IF(i22law06*i22law37/=0 .OR. i22law06*i22law51/=0 .OR. i22law37*i22law51/=0 )THEN
240 imesg = 91
241 ENDIF
242
243 IF(imesg/=0)THEN
244 CALL ancmsg(msgid = imesg,
245 . msgtype = msgerror,
246 . anmode = aninfo_blind_1,
248 . c1 = titr)
249 ENDIF
250
251
252
253
254
255 RETURN
logical function loi_fluid(mln)
integer, parameter nchartitle
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)