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