49 . ELBUF_TAB ,SKIN_SCALAR ,IFUNC ,IPARG ,GEO ,
50 . IXS ,IXS10 ,IXS16 , IXS20 ,PM ,
51 . IPM ,IGEO ,X ,V ,W ,
53 . IS_WRITTEN_SKIN ,INFO1 ,KEYWORD , H3D_DATA ,
54 6 IAD_ELEM ,FR_ELEM , WEIGHT ,TAG_SKINS6,
55 7 NPF ,TF ,BUFMAT,IBCL ,ILOADP ,LLOADP ,FAC ,
56 8 NSENSOR,SENSOR_TAB,TAGNCONT ,LOADP_HYD_INTER,XFRAME,FORC ,
57 9 NODAL_IPART ,IMAPSKP ,LOADS ,TABLE, IFRAME,MAT_PARAM,D,PBLAST)
73 use element_mod ,
only : nixs
77#include "implicit_f.inc"
81#include "vect01_c.inc"
89 INTEGER ,
INTENT(IN) :: NSENSOR
91 . (*),X(3,*),V(3,*),W(3,*),GEO(NPROPG,*),PM(NPROPM,*),
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(*)
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
117 . value(mvsiz),rindx,strain(3,mvsiz
118 INTEGER I, , NEL, NPTR, , 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,iuvar,idx,ipos,itrimat,
124 . ialefvm_flg, imat,iadbuf,nuparam,iok_part(mvsiz),
125 . mlwi,pid,mid,mx,kcvt,ior_tsh,icstr
127 . is_written_value(mvsiz),nfrac,iu(4),iv,nb_face,kface,nskin
133 TYPE(BUF_FAIL_) ,
POINTER :: FBUF
135 9 1.000000000000000,1.732050807568877,1.290994448735806,
136 9 1.161256338324528,1.103533701926633,1.072421119155361,
137 9 1.053620970803647,1.041352247171806,1.032886870574820/
140 is_written_skin(1:numskin) = 0
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 )
152 IF (mlw == 13 .OR. mlw == 0) cycle
163 IF (ity == 1.AND.(igtyp==20 .OR. igtyp==21 .OR. igtyp==22))
THEN
167 nlay = elbuf_tab(ng)%NLAY
168 nptr = elbuf_tab(ng)%NPTR
169 npts = elbuf_tab(ng)%NPTS
170 nptt = elbuf_tab(ng)%NPTT
172 IF (igtyp == 21)
THEN
174 ELSEIF (igtyp == 22)
THEN
177 IF (kcvt==1.AND.ior_tsh/=0) kcvt=2
181 is_written_value(i) = 0
183 IF( h3d_part(iparts(nft+i)) == 1) iok_part(i) = 1
186 IF (igtyp == 22 .AND. nlay>9)
THEN
189 f_exp = f_gauss(nlay)
191 IF (jhbe==14.OR.jhbe==16) f_exp = f_exp/(nptr*npts)
193 IF (keyword ==
'FLDZ/OUTER')
THEN
194 is_written_value(1:nel) = 1
196 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
201 IF (igtyp == 22)
THEN
202 pid = ixs(nixs-1,1 + nft)
203 mid = igeo(100+ilay,pid)
204 mlwi=nint(pm(19,mid))
207 . jhbe,mlwi,ilay,kcvt,ior_tsh,
208 . icstr,nptr,npts,nel,f_exp,strain
212 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
213 nfail = elbuf_tab(ng)%BUFLY(ilay)%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
220 rindx = fbuf%FLOC(ifail)%INDX(i)
221 value(i) =
max(value(i),rindx)
222 is_written_value(i) = 1
228 skin_scalar(nskin+i) = value(i
229 IF(iok_part(i) == 1 ) is_written_skin
235 IF (igtyp == 22)
THEN
236 pid = ixs(nixs-1,1 + nft)
237 mid = igeo(100+ilay,pid)
238 mlwi=nint(pm(19,mid))
241 . jhbe,mlwi,ilay,kcvt,ior_tsh,
242 . icstr,nptr,npts,nel,f_exp,strain )
245 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
246 nfail = elbuf_tab(ng)%BUFLY(ilay
248 IF (fbuf%FLOC(ifail)%ILAWF == 7)
THEN
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
260 skin_scalar(nskin+i) = value(i)
261 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
265 ELSEIF (keyword ==
'FLDZ/OUTER_AVERAGE')
THEN
266 is_written_value(1:nel) = 1
268 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
273 IF (igtyp == 22)
THEN
274 pid = ixs(nixs-1,1 + nft)
275 mid = igeo(100+ilay,pid)
276 mlwi=nint(pm(19,mid))
279 . jhbe,mlwi,ilay,kcvt,ior_tsh,
280 . icstr,nptr,npts,nel,f_exp,strain )
284 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
285 nfail = elbuf_tab(ng)%BUFLY(ilay)%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 )
292 rindx = fbuf%FLOC(ifail)%INDX(i)
293 value(i) =
max(value(i),rindx)
294 is_written_value(i) = 1
300 skin_scalar(nskin+i) = value(i)
301 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
307 IF (igtyp == 22)
THEN
308 pid = ixs(nixs-1,1 + nft)
309 mid = igeo(100+ilay,pid)
310 mlwi=nint(pm(19,mid))
313 . jhbe,mlwi,ilay,kcvt,ior_tsh,
314 . icstr,nptr,npts,nel,f_exp,strain )
318 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
320 IF (fbuf%FLOC(ifail)%ILAWF == 7)
THEN
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
332 skin_scalar(nskin+i) = value(i)
333 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
337 ELSEIF (keyword ==
'FLDF/OUTER')
THEN
338 is_written_value(1:nel) = 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))
350 . jhbe,mlwi,ilay,kcvt,ior_tsh,
351 . icstr,nptr,npts,nel,f_exp,strain )
355 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
356 nfail = elbuf_tab(ng)%BUFLY(ilay)%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 )
363 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
364 is_written_value(i) = 1
371 skin_scalar(nskin+i) = value(i)
372 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value
379 IF (igtyp == 22)
THEN
380 pid = ixs(nixs-1,1 + nft)
381 mid = igeo(100+ilay,pid)
382 mlwi=nint(pm(19,mid))
385 . jhbe,mlwi,ilay,kcvt,ior_tsh,
386 . icstr,nptr,npts,nel,f_exp,strain )
389 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
390 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
392 IF (fbuf%FLOC(ifail)%ILAWF == 7)
THEN
394 . ir,is,it,ilay,ifail,
395 . npf,tf,ngl,strain,nel )
397 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
398 is_written_value(i) = 1
404 skin_scalar(nskin+i) = value(i)
405 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
409 ELSEIF (keyword ==
'FLDF/OUTER_AVERAGE')
THEN
410 is_written_value(1:nel) = 1
412 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
416 IF (igtyp == 22)
THEN
417 pid = ixs(nixs-1,1 + nft)
418 mid = igeo(100+ilay,pid)
419 mlwi=nint(pm(19,mid))
422 . jhbe,mlwi,ilay,kcvt,ior_tsh,
423 . icstr,nptr,npts,nel,f_exp,strain )
427 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
428 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
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 )
435 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
436 is_written_value(i) = 1
443 skin_scalar(nskin+i) = value(i)
444 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i
451 IF (igtyp == 22)
THEN
452 pid = ixs(nixs-1,1 + nft)
453 mid = igeo(100+ilay,pid)
454 mlwi=nint(pm(19,mid))
457 . jhbe,mlwi,ilay,kcvt,ior_tsh,
458 . icstr,nptr,npts,nel,f_exp,strain )
461 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
462 nfail = elbuf_tab(ng)%BUFLY(ilay)%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 )
469 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
470 is_written_value(i) = 1
476 skin_scalar(nskin+i) = value(i)
477 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
482 nskin = nskin + 2*nel
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)
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,
530 . IS_WRITTEN_SKIN ,H3D_PART,INFO1 ,KEYWORD ,
531 . IB ,ILOADP,LLOADP,FAC ,NPC,TF ,SENSOR_TAB,
532 . TAGNCONT,LOADP_HYD_INTER,FORC,XFRAME,X ,V ,
533 . IMAPSKP, NSKIN ,NSENSOR ,LOADS ,TABLE,IFRAME,DIS,
549#include "implicit_f.inc"
550#include "param_c.inc"
554#include "com04_c.inc"
555#include "com08_c.inc"
556#include "tabsiz_c.inc"
560 INTEGER GET_U_NUMSENS,GET_U_SENS_FPAR,GET_U_SENS_IPAR,
561 . GET_U_SENS_VALUE,SET_U_SENS_VALUE
562 EXTERNAL GET_U_NUMSENS,GET_U_SENS_FPAR,GET_U_SENS_IPAR,
563 . GET_U_SENS_VALUE,SET_U_SENS_VALUE
567 INTEGER ,
INTENT(IN) :: NSENSOR
569 . SKIN_SCALAR(*),TF(*),X(3,*),V(3,*)
570 my_real,
INTENT(IN) :: DIS(3,NUMNOD)
571 CHARACTER(LEN=NCHARLINE100) ::
573 INTEGER ,
DIMENSION(NUMSKINP0),
INTENT(IN) :: IMAPSKP
575 . h3d_part(*),is_written_skin(*),info1,npc(*)
576 INTEGER LLOADP(SLLOADP),NSKIN
577 INTEGER ILOADP(SIZLOADP,*),IB(NIBCLD,*)
578 INTEGER TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
579 . LOADP_HYD_INTER(NLOADP_HYD),NODAL_IPART(*)
581 . fac(lfacload,nloadp),xframe(nxframe,*),forc
582 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
583 TYPE (LOADS_) ,
INTENT(IN) :: LOADS
584 INTEGER ,
DIMENSION(LISKN,NUMFRAM+1) ,
INTENT(IN) :: IFRAME
585 TYPE (TTABLE) ,
DIMENSION(NTABLE) ,
INTENT(IN) :: TABLE
586 TYPE(PBLAST_),
INTENT(IN) :: PBLAST
590 INTEGER NL, N1, N2, N3, N4, N5,
591 . iad ,np ,ifunc ,npres,nskin0,nskin1,n1fram
592 INTEGER K1, K2, K3, ISENS, K,
593 . N_OLD, ISMOOTH,IDEL,NINTERP ,NPL,TAGN1,TAGN2,TAGN3,TAGN4,
594 . fun_cx,fun_vel,dir_vel,ifra2, ianim,ijk,up_bound,
595 . iz_update,abac_id,isiz_seg,ierr1,
596 . phi_i,
id, user_id, ita_shift,ndt,ndt0,
597 . niter,iter,imodel,il,is,segcont,fun_hsp,ifra1,ifload
599 . nx, ny, nz, axi, aa, a0, vv, fx, fy, fz, ax, dydx, ts,
600 . sixth,x_old, f1, f2,xsens,fcx,fcy,fcypinch,fp,
601 . fcx1,fcy1,fcx2,fcy2,vx,vy,vz,vel,vseg,
norm
602 my_real finter, zfx,zfy,zfz, zzfx,zzfy,zzfz,ps, zx,zy,zz,finter_smooth
604 my_real coormean,ymean,zmean,pvel
605 . xdet,ydet,zdet,tdet,wtnt,pmin,dx,dy,dz,normd, p,
606 . fac_m_bb, fac_l_bb, fac_t_bb, fac_p_bb, fac_i_bb, t0inf_loc, ta_shift, tt_star
608 INTEGER :: IFUN,IFRA,M1,M2,NDIM,NPOINT, IIOUT,SHIFT,FUNCTYPE
609 my_real :: LEN, DIRX, DIRY, DIRZ,
610 . BETA,GAMMA,R,S,RMAX,XFACR,XFACT,YFAC,SEGP,PRESS,DISP
611 my_real,
DIMENSION(3) :: P0,DIR,A,B,C,D,M
613 EXTERNAL finter,finter_smooth
616 IF (keyword /=
'PEXT')
RETURN
617 is_written_skin(nskin+1:numskin) = 0
618 skin_scalar(nskin+1:numskin)=zero
634 IF (n1==0.OR.n2==0.OR.n3==0.OR.n4==-1) cycle
637 nskin = nskin0+ imapskp(np0)
638 IF (nodal_ipart(n1)>0)
THEN
639 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
644 IF(ib(6,nl)==sensor_tab(k)%SENS_ID) isens=k
649 ts = tt-sensor_tab(isens)%TSTART
651 IF(idel > 0 .OR. ts < zero) cycle
652 IF (functype == 1)
THEN
653 IF(n_old/=n5.OR.x_old/=ts)
THEN
655 IF (n5 > 0) ismooth = npc(2*nfunct+n5+1)
656 IF (ismooth == 0)
THEN
657 f1 = finter(n5,ts*fcx,npc,tf,dydx)
659 f1 = finter_smooth(n5,ts*fcx,npc,tf,dydx)
664 ELSE IF(functype == 2)
THEN
666 disp = (dis(3,n1)+dis(3,n2)+dis(3,n3)+dis(3,n4))/4.0
668 IF (n5 > 0) ismooth = npc(2*nfunct+n5+1)
669 IF (ismooth == 0)
THEN
670 f1 = finter(n5,disp*fcx,npc,tf,dydx)
672 f1 = finter_smooth(n5,disp*fcx,npc,tf,dydx)
677 ELSE IF(functype == 3)
THEN
679 vel = (v(3,n1)+v(3,n2)+v(3,n3)+v(3,n4))/4.0
681 IF (n5 > 0) ismooth = npc(2*nfunct+n5+1)
682 IF (ismooth == 0)
THEN
683 f1 = finter(n5,vel*fcx,npc,tf,dydx)
685 f1 = finter_smooth(n5,vel*fcx,npc,tf,dydx)
692 skin_scalar(nskin)=aa
695 shift = nloadp_f+pblast%NLOADP_B
696 DO np=1+shift,nloadp_hyd+shift
697 isiz_seg = iloadp(1,np)/4
700 ninterp = iloadp(5,np)
702 ifload = iloadp(10,np)
707 n1 = lloadp(iad+4*(n-1))
708 n2 = lloadp(iad+4*(n-1)+1)
709 n3 = lloadp(iad+4*(n-1)+2)
710 n4 = lloadp(iad+4*(n-1)+3)
711 IF (n1==0.OR.n2==0.OR.n3==0) cycle
712 nskin = nskin0+ imapskp(np0+n)
713 IF (nodal_ipart(n1)>0)
THEN
714 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
721 ts = tt-sensor_tab(isens)%TSTART
724 n1 = lloadp(iad+4*(n-1))
725 n2 = lloadp(iad+4*(n-1)+1)
726 n3 = lloadp(iad+4*(n-1)+2)
727 n4 = lloadp(iad+4*(n-1)+3)
728 IF (n1==0.OR.n2==0.OR.n3==0) cycle
732 nskin = nskin0+ imapskp(np0)
745 IF(ninterp > 0 )
THEN
746 npl = loadp_hyd_inter(np)
748 segcont = tagncont(npl,n1) + tagncont(npl,n2) +
749 . tagncont(npl,n3)+tagncont(npl,n4)
750 IF(segcont >= 2 .AND.ifload==1)
THEN
752 ELSEIF(segcont <= 1.AND.ifload==2)
THEN
758 segcont = tagncont(npl,n1) + tagncont(npl,n2) +
760 IF(segcont >= 2 .AND.ifload==1)
THEN
762 ELSEIF(segcont <= 1.AND.ifload==2)
THEN
770 IF (segcont==1) aa = zero
771 skin_scalar(nskin)=skin_scalar(nskin)+aa*fp
777 isiz_seg = iloadp(1,nl)/4
780 n1 = lloadp(iad+4*(n-1))
781 n2 = lloadp(iad+4*(n-1)+1)
782 n3 = lloadp(iad+4*(n-1)+2)
783 n4 = lloadp(iad+4*(n-1)+3)
784 IF (n1==0.OR.n2==0.OR.n3==0) cycle
785 nskin = nskin0+ imapskp(np0+n)
786 IF (nodal_ipart(n1)>0)
THEN
787 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
798 fun_vel=iloadp(11,nl)
803 dir_vel=
max(iloadp(12,nl),1)
808 IF(iloadp(6,nl)==sensor_tab(k)%SENS_ID) isens=k
813 ts = tt-sensor_tab(isens)%TSTART
816 n1=lloadp(iloadp(4,nl)+4*(i-1))
817 n2=lloadp(iloadp(4,nl)+4*(i-1)+1)
818 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
819 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
820 IF (n1==0.OR.n2==0.OR.n3==0) cycle
823 nskin = nskin0+ imapskp(np0)
830 IF(n4/=0 .AND. n1/=n2 .AND. n1/=n3 .AND. n1/=n4 .AND.
831 . n2/=n3 .AND. n2/=n4 .AND. n3/=n4 )
THEN
838 coormean = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))/four)+
839 . (xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))/four)+
840 . (xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))/four)
841 aa = fcy*finter(fun_hsp,(coormean-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
843 nx= (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2)) - (x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
844 ny= (x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2)) - (x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
845 nz= (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2)) - (x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
846 norm = sqrt(nx*nx+ny*ny+nz*nz)
847 aa = aa * half *
norm
853 nsign = (nx * xframe(k1,ifra2) +
854 . ny * xframe(k2,ifra2) +
855 . nz * xframe(k3,ifra2))
856 IF(nsign/=zero) nsign = sign(one,nsign)
858 vseg= (xframe(k1,ifra2)*
859 . (v(1,n1) + v(1,n2) + v(1,n3) + v(1,n4)) /four)+
861 . (v(2,n1) + v(2,n2) + v(2,n3) + v(2,n4)) /four)+
863 . (v(3,n1) + v(3,n2) + v(3,n3) + v(3,n4)) /four)
866 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx)- vseg
871 . pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-
872 . (ny/
norm)*vel*xframe(k2,ifra2)-
873 . (nz/
norm)*vel*xframe(k3,ifra2))**2 )* fcy1*
874 . finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
903 coormean = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3))/three)+
904 . (xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3))/three)+
905 . (xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3))/three)
906 aa = fcy*finter(fun_hsp,(coormean
908 nx= (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2)) - (x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
909 ny= (x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2)) - (x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
910 nz= (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2)) - (x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
911 norm = sqrt(nx*nx+ny*ny+nz*nz)
912 aa = aa * half *
norm
918 nsign = (nx * xframe(k1,ifra2) +
919 . ny * xframe(k2,ifra2) +
920 . nz * xframe(k3,ifra2))
921 IF(nsign/=zero) nsign = sign(one,nsign)
923 vseg= (xframe(k1,ifra2)*
924 . (v(1,n1) + v(1,n2) + v(1,n3)) /three)+
926 . (v(2,n1) + v(2,n2) + v(2,n3)) /three)+
928 . (v(3,n1) + v(3,n2) + v(3,n3)) /three)
931 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx)- vseg
936 . pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-
937 . (ny/
norm)*vel*xframe(k2,ifra2)-
938 . (nz/
norm)*vel*xframe(k3,ifra2))**2 )* fcy1*
939 . finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
941 skin_scalar(nskin)=skin_scalar(nskin)-aa+pvel*nsign
945 DO nl=1+nloadp_f,nloadp_f+pblast%NLOADP_B
947 isiz_seg = iloadp(1,nl)/4
950 n1 = lloadp(iad+4*(n-1))
951 n2 = lloadp(iad+4*(n-1)+1)
952 n3 = lloadp(iad+4*(n-1)+2)
953 n4 = lloadp(iad+4*(n-1)+3)
954 IF (n1==0.OR.n2==0.OR.n3==0) cycle
955 nskin = nskin0+ imapskp(np0+n)
956 IF (nodal_ipart(n1)>0)
THEN
957 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
966 nskin = nskin0+ imapskp(np0)
967 p = pblast%PBLAST_TAB(il)%PRES(i)
968 skin_scalar(nskin)= skin_scalar(nskin)-p
972 DO nl=1,loads%NLOAD_CYL
974 isiz_seg = loads%LOAD_CYL(nl)%NSEG
976 n1 = loads%LOAD_CYL(nl)%SEGNOD(n,1)
977 n2 = loads%LOAD_CYL(nl)%SEGNOD(n,2)
978 n3 = loads%LOAD_CYL(nl)%SEGNOD(n,3)
979 n4 = loads%LOAD_CYL(nl)%SEGNOD(n,4)
980 IF (n1==0.OR.n2==0.OR.n3==0) cycle
981 nskin = nskin0+ imapskp(np0+n)
982 IF (nodal_ipart(n1)>0)
THEN
983 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
986 isens = loads%LOAD_CYL(nl)%ISENS
989 IF (sensor_tab(isens)%STATUS == 0)
THEN
994 ifra = loads%LOAD_CYL(nl)%IFRAME + 1
995 xfacr= loads%LOAD_CYL(nl)%XSCALE_R
996 xfact= loads%LOAD_CYL(nl)%XSCALE_T
997 yfac = loads%LOAD_CYL(nl)%YSCALE
998 ifun = loads%LOAD_CYL(nl)%ITABLE
999 ndim = table(ifun)%NDIM
1000 npoint =
SIZE(table(ifun)%X(1)%VALUES)
1001 rmax = table(ifun)%X(1)%VALUES(npoint)
1004 dirx = x(1,m1) - x(1,m2)
1005 diry = x(2,m1) - x(2,m2)
1006 dirz = x(3,m1) - x(3,m2)
1007 len = sqrt(dirx**2 + diry**2 + dirz**2)
1019 n1 = loads%LOAD_CYL(nl)%SEGNOD(n,1)
1020 n2 = loads%LOAD_CYL(nl)%SEGNOD(n,2)
1021 n3 = loads%LOAD_CYL(nl)%SEGNOD(n,3)
1022 n4 = loads%LOAD_CYL(nl)%SEGNOD(n,4)
1036 . ifun ,table ,xfacr ,xfact ,segp )
1037 press = abs(segp) * yfac
1043 m(1) = (x(1,n1) + x(1,n2) + x(1,n3) + x(1,n4)) * fourth
1044 m(2) = (x(2,n1) + x(2,n2) + x(2,n3) + x(2,n4)) * fourth
1045 m(3) = (x(3,n1) + x(3,n2) + x(3,n3) + x(3,n4)) * fourth
1048 . ifun ,table ,xfacr ,xfact ,segp )
1049 press = press + segp * fourth
1052 . ifun ,table ,xfacr ,xfact ,segp )
1053 press = press + segp * fourth
1056 . ifun ,table ,xfacr ,xfact ,segp )
1057 press = press + segp * fourth
1060 . ifun ,table ,xfacr ,xfact ,segp )
1061 press = abs(press) * yfac
1063 nskin = nskin0+ imapskp(np0)
1064 skin_scalar(nskin)= skin_scalar(nskin)+press
subroutine genh3d(output, timers, x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, swaft, smas, sxnorm, siad, iparg, pm, geo, ms, sinvert, cont, smater, icut, skew, xcut, fint, itab, sel2fa, fext, fopt, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, mat_param, dd_iad, weight, eani, ipart, cluster, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, rby, swa4, tors, nom_opt, bufsf, idata, rdata, siadg, bufmat, bufgeo, kxx, ixx, ipartx, suix, sxusr, snfacptx, sixedge, sixfacet, sixsolid, snumx1, snumx2, snumx3, soffx1, soffx2, soffx3, smass1, smass2, smass3, sfunc1, sfunc2, sfunc3, kxsp, ixsp, nod2sp, ipartsp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, iflow, rflow, fncont, ftcont, temp, thke, err_thk_sh4, err_thk_sh3, diag_sms, ipari, fncont2, dr, ale_connect, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, nod_pxfem, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, pdama2, res_sms, weight_md, nodglobxfe, nodedge, fcluster, mcluster, xfem_tab, w, nv46, ipartig3d, kxig3d, ixig3d, sig3dsolid, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, igrnod, sh4tree, sh3tree, h3d_data, multi_fvm, subset, pskids, tag_skins6, tf, npf, fcont_max, mds_matid, fncontp2, ftcontp2, ibcl, iloadp, lloadp, fac, sensors, tagncont, loadp_hyd_inter, xframe, forc, ar, csefric, csefricg, csefric_stamp, csefricg_stamp, table, iframe, loads, drape_sh4n, drape_sh3n, drapeg, x_c, glob_therm, pblast)