51
52
53
54
55
56
57
58
59
60
61
62 use output_mod
63 USE intbufdef_mod
66
67
68
69#include "implicit_f.inc"
70
71
72
73#include "mvsiz_p.inc"
74
75
76
77#include "com04_c.inc"
78#include "com08_c.inc"
79#include "param_c.inc"
80#include "warn_c.inc"
81#include "parit_c.inc"
82#include "task_c.inc"
83#include "impl1_c.inc"
84
85
86
87 type(output_), intent(inout) :: output
88 INTEGER NELTST,ITYPTST,NSTRF(*),
89 . NISKYFI,NIN,LINDMAX
90 INTEGER IPARI(*), ICODT(*), ITAB(*),
91 . ISKY(*), ISKYI_SMS(*), NODNX_SMS(*),
92 . ICONTACT(*), ISENSINT(*),DIMFB
93 INTEGER ,INTENT(IN) :: NODADT_THERM
94
95 INTEGER NB_JLT,NB_JLT_NEW,,JTASK
96 INTEGER NUM_IMP,NS_IMP(*),NE_IMP(*),IND_IMP(*)
97
99 . x(*), a(3,*), fsav(*), v(3,*),
100 . ms(*),stifn(*),fskyi(lskyi,4),fcont(*),
101 . secfcum(7,numnod,nsect),
102 . viscn(*), fsavsub(*), fncont(3,*), ftcont(3,*),
103 . mskyi_sms(*)
104
105 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
106
107 TYPE(INTBUF_STRUCT_) INTBUF_TAB
108 TYPE(H3D_DATABASE) :: H3D_DATA
109
110
111
112 INTEGER IDUM,
113 . I, J, H, NOINT, ISECIN, I_STOK,
114 . IGAP, JLT_NEW, JLT , NFT, ITIED, IGSTI, NISUB, IADM,
115 . NB_LOC,I_STOK_LOC,DEBUT, IERROR
116 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
117 . NSVG(MVSIZ), CAND_N_N(MVSIZ),CAND_E_N(MVSIZ),
118 . CN_LOC(MVSIZ),CE_LOC(MVSIZ),
119 . INDEX2(LINDMAX),IBID,SFSAVPARIT
120 INTEGER NSMS(MVSIZ)
121
123 . startt, gap, stopt,
124 . visc, stiglo, gapmin, kmin, kmax, gapmax,
125 . rbid
126
127
129 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
130 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
131 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
132 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
133 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
134 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz),
135 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
136 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
137 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
138 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
139 .
140 .
141 . gapv(mvsiz),
142 . vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz)
143
144 my_real,
DIMENSION(:,:,:),
ALLOCATABLE :: fsavparit
145 INTEGER :: NTY,NSN
146
147 idum = 0
148 nsn =ipari(5)
149 nty =ipari(7)
150 noint =ipari(15)
151 igap =ipari(21)
152 isecin=ipari(28)
153 igsti =ipari(34)
154 nisub =ipari(36)
155
156 stiglo=-intbuf_tab%STFAC(1)
157 startt=intbuf_tab%VARIABLES(3)
158 stopt =intbuf_tab%VARIABLES(11)
159 IF(startt>tt) RETURN
160 IF(tt>stopt) RETURN
161
162 itied =nint(intbuf_tab%VARIABLES(1))
163 gap =intbuf_tab%VARIABLES(2)
164 gapmin=intbuf_tab%VARIABLES(13)
165 visc =intbuf_tab%VARIABLES(14)
166 gapmax=intbuf_tab%VARIABLES(16)
167 kmin =intbuf_tab%VARIABLES(17)
168 kmax =intbuf_tab%VARIABLES(18)
169 iadm=ipari(44)
170
171 rbid = zero
172 ibid = 0
173 IF(nty==10)THEN
174
175 i_stok = intbuf_tab%I_STOK(1)
176 IF (impl_s==1) THEN
177 num_imp = 0
178 visc =zero
179 ENDIF
180
181
182 nb_loc = i_stok / nthread
183 IF (jtask==nthread) THEN
184 i_stok_loc = i_stok-nb_loc*(nthread-1)
185 ELSE
186 i_stok_loc = nb_loc
187 ENDIF
188 debut = (jtask-1)*nb_loc
189 i_stok = 0
190
191 DO i = debut+1, debut+i_stok_loc
192 IF(intbuf_tab%CAND_N(i)<0) THEN
193 i_stok = i_stok + 1
194 index2(i_stok) = i
195
196 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
197 ELSEIF(itied/=0.AND.intbuf_tab%CAND_F(6*(i-1)+1)/=0.) THEN
198 i_stok = i_stok + 1
199 index2(i_stok) = i
200 ELSE
201
202 intbuf_tab%CAND_F(6*(i-1)+1) = zero
203 intbuf_tab%CAND_F(6*(i-1)+2) = zero
204 intbuf_tab%CAND_F(6*(i-1)+3) = zero
205 ENDIF
206 ENDDO
207 IF (debug(3)>=1) THEN
208 nb_jlt = nb_jlt + i_stok_loc
209 nb_stok_n = nb_stok_n + i_stok
210 ENDIF
211
212 sfsavparit = 0
213 DO i=1,nisub+1
214 IF(isensint(i)/=0) THEN
215 sfsavparit = sfsavparit + 1
216 ENDIF
217 ENDDO
218 IF (sfsavparit /= 0) THEN
219 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
220 IF(ierror/=0) THEN
221 CALL ancmsg(msgid=19,anmode=aninfo,
222 . c1='(/INTER/TYPE10)')
224 ENDIF
225 DO j=1,i_stok
226 DO i=1,11
227 DO h=1,nisub+1
228 fsavparit(h,i,j) = zero
229 ENDDO
230 ENDDO
231 ENDDO
232 ELSE
233 ALLOCATE(fsavparit(0,0,0),stat=ierror)
234 IF(ierror/=0) THEN
235 CALL ancmsg(msgid=19,anmode=aninfo,
236 . c1='(/inter/type10)')
237 CALL ARRET(2)
238 ENDIF
239 ENDIF
240
241 DO NFT = 0 , I_STOK - 1 , NVSIZ
242 JLT = MIN( NVSIZ, I_STOK - NFT )
243
244 CALL I7CDCOR3(
245 1 JLT,INDEX2(NFT+1),INTBUF_TAB%CAND_E,INTBUF_TAB%CAND_N,CAND_E_N,
246 2 CAND_N_N)
247 CALL I7COR3(
248 1 JLT ,X ,INTBUF_TAB%IRECTM,INTBUF_TAB%NSV,CAND_E_N,
249 2 CAND_N_N ,INTBUF_TAB%STFM,INTBUF_TAB%STFNS,X1 ,X2 ,
250 3 X3 ,X4 ,Y1 ,Y2 ,Y3 ,
251 4 Y4 ,Z1 ,Z2 ,Z3 ,Z4 ,
252 5 XI ,YI ,ZI ,STIF ,IX1 ,
253 6 IX2 ,IX3 ,IX4 ,NSVG ,IGAP ,
254 7 GAP ,INTBUF_TAB%GAP_S,INTBUF_TAB%GAP_M,GAPV,
255 9 MS ,VXI ,VYI ,
256 A VZI ,MSI ,NSN ,V ,IDUM ,
257 B IDUM ,NTY ,NIN ,IGSTI ,KMIN ,
258 C KMAX ,GAPMAX ,GAPMIN ,IADM ,RBID ,
259 D RBID ,RBID ,RBID ,IBID ,RBID ,
260 E RBID ,RBID ,RBID ,IBID ,RBID ,
261 F IBID ,NODNX_SMS ,NSMS ,RBID ,RBID ,
262 G IBID ,IBID ,IBID ,IBID ,IBID ,
263 H IBID ,IBID ,RBID ,IBID ,RBID )
264 JLT_NEW = 0
265 CALL I10DST3(
266 1 JLT ,CAND_N_N,CAND_E_N,CN_LOC,CE_LOC ,
267 2 X1 ,X2 ,X3 ,X4 ,Y1 ,
268 3 Y2 ,Y3 ,Y4 ,Z1 ,Z2 ,
269 4 Z3 ,Z4 ,XI ,YI ,ZI ,
270 5 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
271 6 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
272 7 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
273 8 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
274 9 P1 ,P2 ,P3 ,P4 ,IX1 ,
275 A IX2 ,IX3 ,IX4 ,NSVG ,STIF ,
276 B JLT_NEW,GAPV,INTBUF_TAB%CAND_F,INDEX2(NFT+1),ITIED,
277 C VXI ,VYI ,VZI ,MSI ,NSMS )
278 JLT = JLT_NEW
279 IF(JLT_NEW/=0) THEN
280 IPARI(29) = 1
281 IF (DEBUG(3)>=1)
282 . NB_JLT_NEW = NB_JLT_NEW + JLT_NEW
283
284 CALL I10FOR3(output,
285 1 JLT ,A ,MS ,V ,FSAV ,
286 2 INTBUF_TAB%CAND_F,STIFN,STIF ,FSKYI ,ISKY ,
287 3 ITIED ,VISC ,X1 ,X2 ,X3 ,
288 4 X4 ,Y1 ,Y2 ,Y3 ,Y4 ,
289 5 Z1 ,Z2 ,Z3 ,Z4 ,NSVG ,
290 6 NX1 ,NX2 ,NX3 ,NX4 ,NY1 ,
291 7 NY2 ,NY3 ,NY4 ,NZ1 ,NZ2 ,
292 8 NZ3 ,NZ4 ,LB1 ,LB2 ,LB3 ,
293 9 LB4 ,LC1 ,LC2 ,LC3 ,LC4 ,
294 A P1 ,P2 ,P3 ,P4 ,FCONT ,
295 B IX1 ,IX2 ,IX3 ,IX4 ,GAPV ,
296 C INDEX2(NFT+1),NISKYFI ,ISECIN ,NSTRF ,SECFCUM ,
297 D NOINT ,VISCN ,VXI ,VYI ,VZI ,
298 E MSI ,NIN ,NISUB ,INTBUF_TAB%LISUB,INTBUF_TAB%ADDSUBS,
299 F INTBUF_TAB%ADDSUBM,INTBUF_TAB%LISUBS,INTBUF_TAB%LISUBM,CN_LOC,CE_LOC,
300 G FSAVSUB ,FNCONT ,FTCONT ,MSKYI_SMS ,ISKYI_SMS ,
301 H NSMS ,XI ,YI ,ZI ,ICONTACT,
302 I DT2T ,NELTST ,ITYPTST ,JTASK ,ISENSINT,
303 J FSAVPARIT ,NFT ,H3D_DATA,NODADT_THERM)
304 ENDIF
305 IF(IMPL_S==1) THEN
306 DO I = 1 ,JLT_NEW
307 NS_IMP(I+NUM_IMP)=CN_LOC(I)
308 NE_IMP(I+NUM_IMP)=CE_LOC(I)
309 IND_IMP(I+NUM_IMP)=INDEX2(I+NFT)
310 ENDDO
311 NUM_IMP=NUM_IMP+JLT_NEW
312 ENDIF
313 ENDDO
314
315 IF (SFSAVPARIT /= 0)THEN
316 CALL SUM_6_FLOAT_SENS(FSAVPARIT, NISUB+1, 11, I_STOK,1,I_STOK,
317 . FBSAV6, 12, 6, DIMFB, ISENSINT )
318 ENDIF
319 IF (ALLOCATED(FSAVPARIT)) DEALLOCATE (FSAVPARIT)
320
321 ENDIF
322
323 RETURN
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)