58
59
60
62 USE mat_elem_mod
65 USE multi_fvm_mod
66 USE sensor_mod
69 USE loads_mod
71 USE elbufdef_mod
72 USE pblast_mod
73 use element_mod , only : nixs
74
75
76
77#include "implicit_f.inc"
78
79
80
81#include "vect01_c.inc"
82#include "mvsiz_p.inc"
83#include "com01_c.inc"
84#include "com04_c.inc"
85#include "param_c.inc"
86
87
88
89 INTEGER ,INTENT(IN) :: NSENSOR
91 . skin_scalar(*),x(3,*),v(3,*),w(3,*),geo(npropg,*),pm(npropm,*),
92 . tf(*),bufmat(*)
93 my_real,
INTENT(IN) :: d(3,numnod)
94 INTEGER , DIMENSION(NUMSKINP0), INTENT(IN) :: IMAPSKP
95 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IFUNC,IXS10(*),IXS16(*), IXS20(*),
96 . IPM(NPROPMI,*),IGEO(NPROPGI,*),IPARTS(*),
97 . H3D_PART(*),IS_WRITTEN_SKIN(*),INFO1,
98 . IAD_ELEM(*),FR_ELEM(*), WEIGHT(*),TAG_SKINS6(*),NPF(*)
99 INTEGER LLOADP(*)
100 INTEGER ILOADP(SIZLOADP,*),IBCL(NIBCLD,*),NODAL_IPART(*)
101 INTEGER TAGNCONT(NLOADP_HYD_INTER,NUMNOD),LOADP_HYD_INTER(NLOADP_HYD)
103 . fac(lfacload,nloadp),xframe(nxframe,*),forc(*)
104 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
105 CHARACTER(LEN=NCHARLINE100)::KEYWORD
106 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
107 TYPE (H3D_DATABASE) :: H3D_DATA
108 TYPE (LOADS_) , INTENT(IN) :: LOADS
109 INTEGER , DIMENSION(LISKN,NUMFRAM+1) ,INTENT(IN) :: IFRAME
110 TYPE (TTABLE) ,DIMENSION(NTABLE) ,INTENT(IN) :: TABLE
111 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
112 TYPE (PBLAST_),INTENT(IN) :: PBLAST
113
114
115
117 . value(mvsiz),rindx,strain(3,mvsiz),f_exp,f_gauss(9)
118 INTEGER I, NG, NEL, NPTR, NPTS, NPTT, NLAY, IFAIL, ILAY,
119 . IR,IS,IT,IL,MLW, NUVAR,IUS,LENF,PTF,PTM,PTS,NFAIL,
120 . N,NN,K,K1,K2,JTURB,MT,IMID,IALEL,IPID,ISH3N,NNI,
121 . NN1,NN2,NN3,NN4,NN5,NN6,NN9,NF,BUF,NVARF,
122 . OFFSET,IHBE,NPTM,NPG, MPT,IPT,IADD,IADR,IPMAT,IFAILT,
123 . IIGEO,IADI,ISUBSTACK,ITHK,NB_PLYOFF
124
125
126INTEGER
127 . IS_WRITTEN_VALUE(MVSIZ),NFRAC,IU(4),IV,NB_FACE,KFACE,NSKIN
128 INTEGER NGL(MVSIZ)
129
130
131
132
133 TYPE(BUF_FAIL_) ,POINTER :: FBUF
134 DATA f_gauss /
135 9 1.000000000000000,1.732050807568877,1.290994448735806,
136 9 1.161256338324528,1.103533701926633,1.072421119155361,
137 9 1.053620970803647,1.041352247171806,1.032886870574820/
138
139 nskin = 0
140 is_written_skin(1:numskin) = 0
142 DO ng=1,ngroup
143
145 2 mlw ,nel ,nft ,iad ,ity ,
146 3 npt ,jale ,ismstr ,jeul ,jtur ,
147 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
148 5 nvaux ,jpor ,kcvt ,jclose ,jplasol ,
149 6 irep ,iint ,igtyp ,israt ,isrot ,
150 7 icsen ,isorth ,isorthg ,ifailure,jsms )
151
152 IF (mlw == 13 .OR. mlw == 0) cycle
153
154
155
156
157
158
159
160
161
162
163 IF (ity == 1.AND.(igtyp==20 .OR. igtyp==21 .OR. igtyp==22)) THEN
164 nft = iparg(3,ng)
165 icstr = iparg(17,ng)
166 llt=nel
167 nlay = elbuf_tab(ng)%NLAY
168 nptr = elbuf_tab(ng)%NPTR
169 npts = elbuf_tab(ng)%NPTS
170 nptt = elbuf_tab(ng)%NPTT
171 ior_tsh = 0
172 IF (igtyp == 21) THEN
173 ior_tsh = 1
174 ELSEIF (igtyp == 22) THEN
175 ior_tsh = 2
176 END IF
177 IF (kcvt==1.AND.ior_tsh/=0) kcvt=2
178
179 DO i=1,nel
180 VALUE(i) = zero
181 is_written_value(i) = 0
182 iok_part(i) = 0
183 IF( h3d_part(iparts(nft+i)) == 1) iok_part(i) = 1
184 ENDDO
185 mlwi = mlw
186 IF (igtyp == 22 .AND. nlay>9) THEN
187 f_exp = one
188 ELSE
189 f_exp = f_gauss(nlay)
190 END IF
191 IF (jhbe==14.OR.jhbe==16) f_exp = f_exp/(nptr*npts)
192
193 IF (keyword == 'FLDZ/OUTER') THEN
194 is_written_value(1:nel) = 1
195 mx = ixs(1,1 + nft)
196 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
197 it = 1
198
199 ilay=1
200
201 IF (igtyp == 22) THEN
202 pid = ixs(nixs-1,1 + nft)
203 mid = igeo(100+ilay,pid)
204 mlwi=nint(pm(19,mid))
205 END IF
207 . jhbe,mlwi,ilay,kcvt,ior_tsh,
208 . icstr,nptr,npts,nel,f_exp,strain )
209
210 ir = 1
211 is = 1
212 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
213 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
214 DO ifail=1,nfail
215 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
216 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
217 . ir,is,it,ilay,ifail,
218 . npf,tf,ngl,strain,nel )
219 DO i=1,nel
220 rindx = fbuf%FLOC(ifail)%INDX(i)
221 value(i) =
max(value(i),rindx)
222 is_written_value(i) = 1
223 ENDDO
224 ENDIF
225 END DO
226
227 DO i=1,nel
228 skin_scalar(nskin+i) = value(i)
229 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
230 END DO
231 nskin = nskin + nel
232
233 ilay=nlay
234 value(1:nel) = zero
235 IF (igtyp == 22) THEN
236 pid = ixs(nixs-1,1 + nft)
237 mid = igeo(100+ilay,pid)
238 mlwi=nint(pm(19,mid))
239 END IF
241 . jhbe,mlwi,ilay,kcvt,ior_tsh,
242 . icstr,nptr,npts,nel,f_exp,strain )
243 ir = 1
244 is = 1
245 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
246 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
247 DO ifail=1,nfail
248 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
249 DO i=1,nel
250 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
251 . ir,is,it,ilay,ifail,
252 . npf,tf,ngl,strain,nel )
253 rindx = fbuf%FLOC(ifail)%INDX(i)
254 value(i) =
max(value(i),rindx)
255 is_written_value(i) = 1
256 ENDDO
257 ENDIF
258 END DO
259 DO i=1,nel
260 skin_scalar(nskin+i) = value(i)
261 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
262 END DO
263 nskin = nskin + nel
264
265 ELSEIF (keyword == 'FLDZ/OUTER_AVERAGE') THEN
266 is_written_value(1:nel) = 1
267 mx = ixs(1,1 + nft)
268 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
269 it = 1
270
271 ilay=(1+nlay)/2
272
273 IF (igtyp == 22) THEN
274 pid = ixs(nixs-1,1 + nft)
275 mid = igeo(100+ilay,pid)
276 mlwi=nint(pm(19,mid))
277 END IF
279 . jhbe,mlwi,ilay,kcvt,ior_tsh,
280 . icstr,nptr,npts,nel,f_exp,strain )
281
282 ir = 1
283 is = 1
284 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
285 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
286 DO ifail=1,nfail
287 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
288 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
289 . ir,is,it,ilay,ifail,
290 . npf,tf,ngl,strain,nel )
291 DO i=1,nel
292 rindx = fbuf%FLOC(ifail)%INDX(i)
293 value(i) =
max(value(i),rindx)
294 is_written_value(i) = 1
295 ENDDO
296 ENDIF
297 END DO
298
299 DO i=1,nel
300 skin_scalar(nskin+i) = value(i)
301 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
302 END DO
303 nskin = nskin + nel
304
305 ilay=(1+nlay)/2
306 value(1:nel) = zero
307 IF (igtyp == 22) THEN
308 pid = ixs(nixs-1,1 + nft)
309 mid = igeo(100+ilay,pid)
310 mlwi=nint(pm(19,mid))
311 END IF
313 . jhbe,mlwi,ilay,kcvt,ior_tsh,
314 . icstr,nptr,npts,nel,f_exp,strain )
315 ir = 1
316 is = 1
317 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
318 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
319 DO ifail=1,nfail
320 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
321 DO i=1,nel
322 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
323 . ir,is,it,ilay,ifail,
324 . npf,tf,ngl,strain,nel )
325 rindx = fbuf%FLOC(ifail)%INDX(i)
326 value(i) =
max(value(i),rindx)
327 is_written_value(i) = 1
328 ENDDO
329 ENDIF
330 END DO
331 DO i=1,nel
332 skin_scalar(nskin+i) = value(i)
333 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
334 END DO
335 nskin = nskin + nel
336
337 ELSEIF (keyword == 'FLDF/OUTER') THEN
338 is_written_value(1:nel) = 1
339 mx = ixs(1,1 + nft)
340 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
341
342 ilay=1
343 it = 1
344 IF (igtyp == 22) THEN
345 pid = ixs(nixs-1,1 + nft)
346 mid = igeo(100+ilay,pid)
347 mlwi=nint(pm(19,mid))
348 END IF
350 . jhbe,mlwi,ilay,kcvt,ior_tsh,
351 . icstr,nptr,npts,nel,f_exp,strain )
352
353 ir = 1
354 is = 1
355 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
356 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
357 DO ifail=1,nfail
358 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
359 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
360 . ir,is,it,ilay,ifail,
361 . npf,tf,ngl,strain,nel )
362 DO i=1,nel
363 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
364 is_written_value(i) = 1
365 ENDDO
366 ENDIF
367 END DO
368
369 DO i=1,nel
370 n = i + nft
371 skin_scalar(nskin+i) = value(i)
372 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
373 END DO
374 nskin = nskin + nel
375
376 ilay=nlay
377 it = 1
378 value(1:nel) = zero
379 IF (igtyp == 22) THEN
380 pid = ixs(nixs-1,1 + nft)
381 mid = igeo(100+ilay,pid)
382 mlwi=nint(pm(19,mid))
383 END IF
385 . jhbe,mlwi,ilay,kcvt,ior_tsh,
386 . icstr,nptr,npts,nel,f_exp,strain )
387 ir = 1
388 is = 1
389 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
390 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
391 DO ifail=1,nfail
392 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
393 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
394 . ir,is,it,ilay,ifail,
395 . npf,tf,ngl,strain,nel )
396 DO i=1,nel
397 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
398 is_written_value(i) = 1
399 ENDDO
400 ENDIF
401 END DO
402 DO i=1,nel
403 n = i + nft
404 skin_scalar(nskin+i) = value(i)
405 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
406 END DO
407 nskin = nskin + nel
408
409 ELSEIF (keyword == 'FLDF/OUTER_AVERAGE') THEN
410 is_written_value(1:nel) = 1
411 mx = ixs(1,1 + nft)
412 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
413
414 ilay=(1+nlay)/2
415 it = 1
416 IF (igtyp == 22) THEN
417 pid = ixs(nixs-1,1 + nft)
418 mid = igeo(100+ilay,pid)
419 mlwi=nint(pm(19,mid))
420 END IF
422 . jhbe,mlwi,ilay,kcvt,ior_tsh,
423 . icstr,nptr,npts,nel,f_exp,strain )
424
425 ir = 1
426 is = 1
427 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
428 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
429 DO ifail=1,nfail
430 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
431 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
432 . ir,is,it,ilay,ifail,
433 . npf,tf,ngl,strain,nel )
434 DO i=1,nel
435 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
436 is_written_value(i) = 1
437 ENDDO
438 ENDIF
439 END DO
440
441 DO i=1,nel
442 n = i + nft
443 skin_scalar(nskin+i) = value(i)
444 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
445 END DO
446 nskin = nskin + nel
447
448 ilay=(1+nlay)/2
449 it = 1
450 value(1:nel) = zero
451 IF (igtyp == 22) THEN
452 pid = ixs(nixs-1,1 + nft)
453 mid = igeo(100+ilay,pid)
454 mlwi=nint(pm(19,mid))
455 END IF
457 . jhbe,mlwi,ilay,kcvt,ior_tsh,
458 . icstr,nptr,npts,nel,f_exp,strain )
459 ir = 1
460 is = 1
461 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
462 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
463 DO ifail=1,nfail
464 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
465 CALL h3d_fld_tsh(elbuf_tab(ng),mat_param(mx)%FAIL(ifail),
466 . ir,is,it,ilay,ifail,
467 . npf,tf,ngl,strain,nel )
468 DO i=1,nel
469 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
470 is_written_value(i) = 1
471 ENDDO
472 ENDIF
473 END DO
474 DO i=1,nel
475 n = i + nft
476 skin_scalar(nskin+i) = value(i)
477 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
478 END DO
479 nskin = nskin + nel
480
481 ELSE
482 nskin = nskin + 2*nel
483 END IF
484 END IF
485 END DO
486 END IF
487
490 . elbuf_tab,skin_scalar, iparg ,ixs ,x ,pm ,
491 4 iparts ,igeo ,ixs10 ,ixs16 , ixs20 ,
492 5 is_written_skin ,h3d_part,info1 ,keyword ,nskin ,
493 6 iad_elem ,fr_elem , weight ,tag_skins6,
494 7 npf ,tf ,mat_param)
495
498 . is_written_skin ,h3d_part,info1 ,keyword ,
499 . ibcl,iloadp,lloadp,fac ,npf,tf ,sensor_tab,
500 . tagncont,loadp_hyd_inter,forc,xframe ,x ,v ,
501 . imapskp,nskin ,nsensor,loads ,table, iframe,d,
502 . pblast)
503
504 RETURN
subroutine h3d_fld_strain(elbuf_tab, x, ixs, jhbe, mlwi, ilay, kcvt, ior_tsh, icstr, nptr, npts, nel, f_exp, evar)
subroutine h3d_fld_tsh(elbuf_tab, fail, ir, is, it, ilay, ifail, npf, tf, ngl, evar, nel)
subroutine h3d_pre_skin_scalar(skin_scalar, nodal_ipart, is_written_skin, h3d_part, info1, keyword, ib, iloadp, lloadp, fac, npc, tf, sensor_tab, tagncont, loadp_hyd_inter, forc, xframe, x, v, imapskp, nskin, nsensor, loads, table, iframe, dis, pblast)
subroutine h3d_sol_skin_scalar(elbuf_tab, skin_scalar, iparg, ixs, x, pm, iparts, igeo, ixs10, ixs16, ixs20, is_written_skin, h3d_part, info1, keyword, nskin, iad_elem, fr_elem, weight, tag_skins6, npf, tf, mat_param)
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)