48 . ELBUF_TAB ,SKIN_SCALAR ,IFUNC ,IPARG ,GEO ,
49 . IXS ,IXS10 ,IXS16 , IXS20 ,PM ,
50 . IPM ,IGEO ,X ,V ,W ,
52 . IS_WRITTEN_SKIN ,INFO1 ,KEYWORD , H3D_DATA ,
53 6 IAD_ELEM ,FR_ELEM , WEIGHT ,TAG_SKINS6,
54 7 NPF ,TF ,BUFMAT,IBCL ,ILOADP ,LLOADP ,FAC ,
55 8 NSENSOR,SENSOR_TAB,TAGNCONT ,LOADP_HYD_INTER,XFRAME,FORC ,
56 9 NODAL_IPART ,IMAPSKP ,LOADS ,TABLE, IFRAME,MAT_PARAM,D,PBLAST)
75#include "implicit_f.inc"
79#include "vect01_c.inc"
87 INTEGER ,
INTENT(IN) ::
89 . SKIN_SCALAR(*),X(3,*),V(3,*),W(3,*),GEO(NPROPG,*),PM(,*),
91 my_real,
INTENT(IN) :: D(3,NUMNOD)
92 INTEGER ,
DIMENSION(NUMSKINP0),
INTENT(IN) :: IMAPSKP
93 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IFUNC,(*),IXS16(*), (*),
94 . IPM(NPROPMI,*),IGEO(NPROPGI,*),(*),
95 . H3D_PART(*),IS_WRITTEN_SKIN(*),INFO1
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 (LOADS_) ,
INTENT(IN) :: LOADS
107 INTEGER ,
DIMENSION(LISKN,NUMFRAM+1) ,
INTENT(IN) :: IFRAME
108 TYPE (TTABLE) ,
DIMENSION(NTABLE) ,
INTENT(IN) :: TABLE
109 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
110 TYPE (PBLAST_),
INTENT(IN) :: PBLAST
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,IFAIL,ILAY,
117 . ir,is,it,il,mlw, nuvar,ius,lenf,ptf,ptm,pts,nfail,
118 . n,nn,k,k1,k2,jturb,mt,imid,ialel,ipid,ish3n,nni,
119 . nn1,nn2,nn3,nn4,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
125 . is_written_value(mvsiz),nfrac,iu(4),iv,nb_face,kface,nskin
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 ::
133 9 1.000000000000000,1.732050807568877,1.290994448735806,
134 9 1.161256338324528,1.103533701926633,1.072421119155361,
135 9 1.053620970803647,1.041352247171806,1.032886870574820/
138 is_written_skin(1:numskin) = 0
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 )
150 IF (mlw == 13 .OR. mlw == 0) cycle
161 IF (ity == 1.AND.(igtyp==20 .OR. igtyp==21 .OR. igtyp==22))
THEN
165 nlay = elbuf_tab(ng)%NLAY
166 nptr = elbuf_tab(ng)%NPTR
167 npts = elbuf_tab(ng)%NPTS
168 nptt = elbuf_tab(ng)%NPTT
170 IF (igtyp == 21)
THEN
172 ELSEIF (igtyp == 22)
THEN
175 IF (kcvt==1.AND.ior_tsh/=0) kcvt=2
179 is_written_value(i) = 0
181 IF( h3d_part(iparts(nft+i)) == 1) iok_part(i) = 1
184 IF (igtyp == 22 .AND. nlay>9)
THEN
187 f_exp = f_gauss(nlay)
189 IF (jhbe==14.OR.jhbe==16) f_exp = f_exp/(nptr*npts)
191 IF (keyword ==
'FLDZ/OUTER')
THEN
192 is_written_value(1:nel) = 1
194 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
199 IF (igtyp == 22)
THEN
200 pid = ixs(nixs-1,1 + nft)
201 mid = igeo(100+ilay,pid)
202 mlwi=nint(pm(19,mid))
205 . jhbe,mlwi,ilay,kcvt,ior_tsh,
206 . icstr,nptr,npts,nel,f_exp,strain )
210 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
211 nfail = elbuf_tab(ng)%BUFLY(ilay)%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 )
218 rindx = fbuf%FLOC(ifail)%INDX(i)
219 value(i) =
max(value(i),rindx)
220 is_written_value(i) = 1
227 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
233 IF (igtyp == 22)
THEN
234 pid = ixs(nixs-1,1 + nft)
235 mid = igeo(100+ilay,pid)
236 mlwi=nint(pm(19,mid))
239 . jhbe,mlwi,ilay,kcvt,ior_tsh,
240 . icstr,nptr,npts,nel,f_exp,strain )
243 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
244 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
246 IF (fbuf%FLOC(ifail)%ILAWF == 7)
THEN
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
259 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
263 ELSEIF (keyword ==
'FLDZ/OUTER_AVERAGE')
THEN
264 is_written_value(1:nel) = 1
266 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
271 IF (igtyp == 22)
THEN
272 pid = ixs(nixs-1,1 + nft)
273 mid = igeo(100+ilay,pid)
274 mlwi=nint(pm(19,mid))
277 . jhbe,mlwi,ilay,kcvt,ior_tsh,
278 . icstr,nptr,npts,nel,f_exp,strain )
282 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
283 nfail = elbuf_tab(ng)%BUFLY(ilay)%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 )
290 rindx = fbuf%FLOC(ifail)%INDX(i)
291 value(i) =
max(value(i),rindx)
292 is_written_value(i) = 1
298 skin_scalar(nskin+i) = value(i)
299 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
305 IF (igtyp == 22)
THEN
306 pid = ixs(nixs-1,1 + nft)
307 mid = igeo(100+ilay,pid)
308 mlwi=nint(pm(19,mid))
311 . jhbe,mlwi,ilay,kcvt,ior_tsh,
312 . icstr,nptr,npts,nel,f_exp,strain )
315 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
316 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
318 IF (fbuf%FLOC(ifail)%ILAWF == 7)
THEN
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
330 skin_scalar(nskin+i) = value(i)
331 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
335 ELSEIF (keyword ==
'FLDF/OUTER')
THEN
336 is_written_value(1:nel) = 1
338 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
342 IF (igtyp == 22)
THEN
343 pid = ixs(nixs-1,1 + nft)
344 mid = igeo(100+ilay,pid)
345 mlwi=nint(pm(19,mid))
348 . jhbe,mlwi,ilay,kcvt,ior_tsh
349 . icstr,nptr,npts,nel,f_exp,strain )
353 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
354 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
356 IF (fbuf%FLOC(ifail)%ILAWF == 7)
THEN
358 . ir,is,it,ilay,ifail,
359 . npf,tf,ngl,strain,nel )
361 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i
362 is_written_value(i) = 1
369 skin_scalar(nskin+i) = value(i)
370 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
377 IF (igtyp == 22)
THEN
378 pid = ixs(nixs-1,1 + nft)
379 mid = igeo(100+ilay,pid)
380 mlwi=nint(pm(19,mid))
383 . jhbe,mlwi,ilay,kcvt,ior_tsh,
384 . icstr,nptr,npts,nel,f_exp,strain )
387 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL
388 nfail = elbuf_tab(ng)%BUFLY(ilay)%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 )
395 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
396 is_written_value(i) = 1
402 skin_scalar(nskin+i) = value(i)
407 ELSEIF (keyword ==
'FLDF/OUTER_AVERAGE')
THEN
408 is_written_value(1:nel) = 1
410 ngl(1:nel) =ixs(nixs,1 + nft:nel + nft)
414 IF (igtyp == 22)
THEN
415 pid = ixs(nixs-1,1 + nft)
416 mid = igeo(100+ilay,pid)
417 mlwi=nint(pm(19,mid))
420 . jhbe,mlwi,ilay,kcvt,ior_tsh,
425 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
426 nfail = elbuf_tab(ng)%BUFLY(ilay
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 )
433 value(i) =
max(value(i),fbuf%FLOC(ifail)%DAM(i))
434 is_written_value(i) = 1
441 skin_scalar(nskin+i) = value(i)
442 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
449 IF (igtyp == 22)
THEN
450 pid = ixs(nixs-1,1 + nft)
451 mid = igeo(100+ilay,pid)
452 mlwi=nint(pm(19,mid))
455 . jhbe,mlwi,ilay,kcvt,ior_tsh,
456 . icstr,nptr,npts,nel,f_exp,strain )
459 fbuf => elbuf_tab(ng)%BUFLY(ilay)%FAIL(ir,is,it)
460 nfail = elbuf_tab(ng)%BUFLY(ilay)%NFAIL
462 IF (fbuf%FLOC(ifail)%ILAWF == 7)
THEN
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 )
468 is_written_value(i) = 1
474 skin_scalar(nskin+i) = value(i)
475 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
480 nskin = nskin + 2*nel
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)
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,
528 . IS_WRITTEN_SKIN ,H3D_PART,INFO1 ,KEYWORD ,
529 . IB ,ILOADP,LLOADP,FAC ,NPC,TF ,SENSOR_TAB,
530 . TAGNCONT,LOADP_HYD_INTER,FORC,XFRAME,X ,V ,
531 . IMAPSKP, NSKIN ,NSENSOR ,LOADS ,TABLE,IFRAME,DIS,
547#include "implicit_f.inc"
548#include "param_c.inc"
552#include "com04_c.inc"
553#include "com08_c.inc"
554#include "tabsiz_c.inc"
558 INTEGER GET_U_NUMSENS,GET_U_SENS_FPAR,GET_U_SENS_IPAR,
559 . GET_U_SENS_VALUE,SET_U_SENS_VALUE
560 EXTERNAL GET_U_NUMSENS,GET_U_SENS_FPAR,GET_U_SENS_IPAR,
561 . GET_U_SENS_VALUE,SET_U_SENS_VALUE
565 INTEGER ,
INTENT(IN) :: NSENSOR
567 . SKIN_SCALAR(*),TF(*),X(3,*),V(3,*)
568 my_real,
INTENT(IN) :: DIS(3,NUMNOD)
569 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
570 TYPE (H3D_DATABASE) :: H3D_DATA
571 INTEGER ,
DIMENSION(NUMSKINP0),
INTENT(IN) :: IMAPSKP
573 . h3d_part(*),is_written_skin(*),info1,npc(*)
574 INTEGER LLOADP(SLLOADP),NSKIN
575 INTEGER ILOADP(SIZLOADP,*),IB(NIBCLD,*)
576 INTEGER TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
577 . LOADP_HYD_INTER(NLOADP_HYD),NODAL_IPART(*)
579 . fac(lfacload,nloadp),xframe(nxframe,*),forc(lfaccld,*)
580 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) ,
INTENT(IN) :: SENSOR_TAB
581 TYPE (LOADS_) ,
INTENT(IN) :: LOADS
582 INTEGER ,
DIMENSION(LISKN,NUMFRAM+1) ,
INTENT(IN) :: IFRAME
583 TYPE (TTABLE) ,
DIMENSION(NTABLE) ,
INTENT(IN) :: TABLE
584 TYPE(pblast_),
INTENT(IN) :: PBLAST
588 INTEGER NL, N1, ISK, N2, N3, N4, N5,
589 . iad ,np ,ifunc ,npres,nskin0,nskin1,n1fram,dir_hsp,i,n
590 INTEGER K1, K2, K3, ISENS,K,LL,IERR,
591 . N_OLD, ISMOOTH,IDEL,NINTERP ,NPL,TAGN1,TAGN2,TAGN3,TAGN4,
592 . fun_cx,fun_vel,dir_vel,ifra2, ianim,ijk,up_bound,
593 . iz_update,abac_id,isiz_seg,ierr1,
594 . phi_i,
id, user_id, ita_shift,ndt,ndt0,
595 . niter,iter,imodel,il,is,segcont,fun_hsp,ifra1,ifload,np0,npi
597 . nx, ny, nz, axi, aa, a0, vv, fx, fy, fz, ax, dydx
598 . sixth,x_old, f1, f2,xsens,fcx,fcy,fcypinch,fp,
599 . fcx1,fcy1,fcx2,fcy2,vx,vy,vz,vel,vseg,
norm
600 my_real finter, zfx,zfy,zfz, zzfx,zzfy,zzfz,ps, zx,zy,zz,finter_smooth
602 my_real coormean,ymean,zmean,pvel,nsign,dnorm,
603 . xdet,ydet,zdet,tdet,wtnt,pmin,dx,dy,dz,normd, p,
604 . fac_m_bb, fac_l_bb, fac_t_bb, fac_p_bb, fac_i_bb, t0inf_loc, ta_shift, tt_star
606 INTEGER :: IFUN,IFRA,M1,,NDIM,NPOINT, IIOUT,SHIFT,FUNCTYPE
607 my_real :: A11,A12,A21,A22,B1,B2,DET,LEN,DIRX,DIRY,DIRZ,
608 . BETA,GAMMA,R,S,RMAX,XFACR,XFACT,YFAC,SEGP,PRESS,DISP
609 my_real,
DIMENSION(3) :: P0,DIR,,B,C,D,M
611 EXTERNAL finter,finter_smooth
614 IF (keyword /=
'PEXT'RETURN
615 is_written_skin(nskin+1:numskin) = 0
616 skin_scalar(nskin+1:numskin)=zero
632 IF (n1==0.OR.n2==0.OR.n3==0.OR.n4==-1) cycle
635 nskin = nskin0+ imapskp(np0)
636 IF (nodal_ipart(n1)>0)
THEN
637 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
642 IF(ib(6,nl)==sensor_tab(k)%SENS_ID) isens=k
647 ts = tt-sensor_tab(isens)%TSTART
649 IF(idel > 0 .OR. ts < zero) cycle
650 IF (functype == 1)
THEN
651 IF(n_old/=n5.OR.x_old/=ts)
THEN
653 IF (n5 > 0) ismooth = npc(2*nfunct+n5+1)
654 IF (ismooth == 0)
THEN
655 f1 = finter(n5,ts*fcx,npc,tf,dydx)
657 f1 = finter_smooth(n5,ts*fcx,npc,tf,dydx)
662 ELSE IF(functype == 2)
THEN
664 disp = (dis(3,n1)+dis(3,n2)+dis(3,n3)+dis(3,n4))/4.0
667 IF (ismooth == 0)
THEN
668 f1 = finter(n5,disp*fcx,npc,tf,dydx)
670 f1 = finter_smooth(n5,disp*fcx,npc,tf,dydx)
675 ELSE IF(functype == 3)
THEN
677 vel = (v(3,n1)+v(3,n2)+v(3,n3)+v(3,n4))/4.0
679 IF (n5 > 0) ismooth = npc(2*nfunct+n5+1)
680 IF (ismooth == 0)
THEN
681 f1 = finter(n5,vel*fcx,npc,tf,dydx)
683 f1 = finter_smooth(n5,vel*fcx,npc,tf,dydx)
690 skin_scalar(nskin)=aa
693 shift = nloadp_f+pblast%NLOADP_B
694 DO np=1+shift,nloadp_hyd+shift
695 isiz_seg = iloadp(1,np)/4
698 ninterp = iloadp(5,np)
700 ifload = iloadp(10,np)
705 n1 = lloadp(iad+4*(n-1))
706 n2 = lloadp(iad+4*(n-1)+1)
707 n3 = lloadp(iad+4*(n-1)+2)
708 n4 = lloadp(iad+4*(n-1)+3)
709 IF (n1==0.OR.n2==0.OR.n3==0) cycle
710 nskin = nskin0+ imapskp(np0+n)
711 IF (nodal_ipart(n1)>0)
THEN
712 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
719 ts = tt-sensor_tab(isens)%TSTART
722 n1 = lloadp(iad+4*(n-1))
723 n2 = lloadp(iad+4*(n-1)+1)
724 n3 = lloadp(iad+4*(n-1)+2)
725 n4 = lloadp(iad+4*(n-1)+3)
726 IF (n1==0.OR.n2==0.OR.n3==0) cycle
730 nskin = nskin0+ imapskp(np0)
731 f1 = finter(ifunc,ts*fcx,npc,tf,dydx)
743 IF(ninterp > 0 )
THEN
744 npl = loadp_hyd_inter(np)
746 segcont = tagncont(npl,n1) + tagncont(npl,n2) +
747 . tagncont(npl,n3)+tagncont(npl,n4)
748 IF(segcont >= 2 .AND.ifload==1)
THEN
750 ELSEIF(segcont <= 1.AND.ifload==2)
THEN
758 IF(segcont >= 2 .AND.ifload==1)
THEN
760 ELSEIF(segcont <= 1.AND.ifload==2)
THEN
769 skin_scalar(nskin)=skin_scalar(nskin)+aa*fp
775 isiz_seg = iloadp(1,nl)/4
778 n1 = lloadp(iad+4*(n-1))
779 n2 = lloadp(iad+4*(n-1)+1)
780 n3 = lloadp(iad+4*(n-1)+2)
781 n4 = lloadp(iad+4*(n-1)+3)
782 IF (n1==0.OR.n2==0.OR.n3==0) cycle
783 nskin = nskin0+ imapskp(np0+n)
784 IF (nodal_ipart(n1)>0)
THEN
785 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
796 fun_vel=iloadp(11,nl)
801 dir_vel=
max(iloadp(12,nl),1)
806 IF(iloadp(6,nl)==sensor_tab(k)%SENS_ID) isens=k
811 ts = tt-sensor_tab(isens)%TSTART
814 n1=lloadp(iloadp(4,nl)+4*(i-1))
815 n2=lloadp(iloadp(4,nl)+4*(i-1)+1)
816 n3=lloadp(iloadp(4,nl)+4*(i-1)+2)
817 n4=lloadp(iloadp(4,nl)+4*(i-1)+3)
818 IF (n1==0.OR.n2==0.OR.n3==0) cycle
821 nskin = nskin0+ imapskp(np0)
828 IF(n4/=0 .AND. n1/=n2 .AND. n1/=n3 .AND. n1/=n4 .AND.
829 . n2/=n3 .AND. n2/=n4 .AND. n3/=n4 )
THEN
836 coormean = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2
837 . (xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))/four)+
838 . (xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))/four)
839 aa = fcy*finter(fun_hsp,(coormean-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
841 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))
842 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))
843 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))
844 norm = sqrt(nx*nx+ny*ny+nz*nz)
845 aa = aa * half *
norm
851 nsign = (nx * xframe(k1,ifra2
852 . ny * xframe(k2,ifra2) +
853 . nz * xframe(k3,ifra2))
854 IF(nsign/=zero) nsign = sign(one,nsign)
856 vseg= (xframe(k1,ifra2)*
857 . (v(1,n1) + v(1,n2) + v(1,n3) + v(1,n4)) /four)+
859 . (v(2,n1) + v(2,n2) + v(2,n3) + v(2,n4)) /four)+
861 . (v(3,n1) + v(3,n2) + v(3,n3) + v(3,n4)) /four)
864 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx)- vseg
869 . pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-
870 . (ny/
norm)*vel*xframe(k2,ifra2)-
871 . (nz/
norm)*vel*xframe(k3,ifra2))**2 )* fcy1*
872 . finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
901 coormean = (xframe(k1,ifra1)*(x(1,n1)+x(1,n2)+x(1,n3
902 . (xframe(k2,ifra1)*(x(2,n1)+x(2,n2)+x(2,n3))/three)+
903 . (xframe(k3,ifra1)*(x(3,n1)+x(3,n2)+x(3,n3))/three)
904 aa = fcy*finter(fun_hsp,(coormean-xframe(9+dir_hsp,ifra1))*fcx,npc,tf,dydx)
906 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))
907 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))
908 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))
909 norm = sqrt(nx*nx+ny*ny+nz*nz)
910 aa = aa * half *
norm
916 nsign = (nx * xframe(k1,ifra2) +
917 . ny * xframe(k2,ifra2) +
918 . nz * xframe(k3,ifra2))
919 IF(nsign/=zero) nsign = sign(one,nsign)
921 vseg= (xframe(k1,ifra2)*
922 . (v(1,n1) + v(1,n2) + v(1,n3)) /three)+
924 . (v(2,n1) + v(2,n2) + v(2,n3)) /three)+
926 . (v(3,n1) + v(3,n2) + v(3,n3)) /three)
929 vel = fcy2*finter(fun_vel,tt*fcx2,npc,tf,dydx)- vseg
934 . pvel = ( (-(nx/
norm)*vel*xframe(k1,ifra2)-
935 . (ny/
norm)*vel*xframe(k2,ifra2)-
936 . (nz/
norm)*vel*xframe(k3,ifra2))**2 )* fcy1*
937 . finter(fun_cx,tt*fcx1,npc,tf,dydx)/two
939 skin_scalar(nskin)=skin_scalar(nskin)-aa+pvel*nsign
943 DO nl=1+nloadp_f,nloadp_f+pblast%NLOADP_B
945 isiz_seg = iloadp(1,nl)/4
948 n1 = lloadp(iad+4*(n-1))
949 n2 = lloadp(iad+4*(n-1)+1)
950 n3 = lloadp(iad+4*(n-1)+2)
951 n4 = lloadp(iad+4*(n-1)+3)
952 IF (n1==0.OR.n2==0.OR.n3==0) cycle
953 nskin = nskin0+ imapskp(np0+n)
954 IF (nodal_ipart(n1)>0)
THEN
955 IF (h3d_part(nodal_ipart(n1))=
964 nskin = nskin0+ imapskp(np0)
965 p = pblast%PBLAST_TAB(il)%PRES(i)
966 skin_scalar(nskin)= skin_scalar(nskin)-p
970 DO nl=1,loads%NLOAD_CYL
972 isiz_seg = loads%LOAD_CYL(nl)%NSEG
974 n1 = loads%LOAD_CYL(nl)%SEGNOD(n,1)
975 n2 = loads%LOAD_CYL(nl)%SEGNOD(n,2)
976 n3 = loads%LOAD_CYL(nl)%SEGNOD(n,3)
977 n4 = loads%LOAD_CYL(nl)%SEGNOD(n,4)
978 IF (n1==0.OR.n2==0.OR.n3==0) cycle
979 nskin = nskin0+ imapskp(np0+n)
980 IF (nodal_ipart(n1)>0)
THEN
981 IF (h3d_part(nodal_ipart(n1))==1) is_written_skin(nskin)=1
984 isens = loads%LOAD_CYL(nl)%ISENS
987 IF (sensor_tab(isens)%STATUS == 0)
THEN
992 ifra = loads%LOAD_CYL(nl)%IFRAME + 1
993 xfacr= loads%LOAD_CYL(nl)%XSCALE_R
994 xfact= loads%LOAD_CYL(nl)%XSCALE_T
995 yfac = loads%LOAD_CYL(nl)%YSCALE
996 ifun = loads%LOAD_CYL(nl)%ITABLE
997 ndim = table(ifun)%NDIM
998 npoint =
SIZE(table(ifun)%X(1)%VALUES)
999 rmax = table(ifun)%X(1)%VALUES(npoint)
1002 dirx = x(1,m1) - x(1,m2)
1003 diry = x(2,m1) - x(2,m2)
1004 dirz = x(3,m1) - x(3,m2)
1005 len = sqrt(dirx**2 + diry**2 + dirz**2)
1017 n1 = loads%LOAD_CYL(nl)%SEGNOD(n,1)
1018 n2 = loads%LOAD_CYL(nl)%SEGNOD(n,2)
1019 n3 = loads%LOAD_CYL(nl)%SEGNOD(n,3)
1020 n4 = loads%LOAD_CYL(nl)%SEGNOD(n,4)
1034 . ifun ,table ,xfacr ,xfact ,segp )
1035 press = abs(segp) * yfac
1041 m(1) = (x(1,n1) + x(1,n2) + x(1,n3) + x(1,n4)) * fourth
1042 m(2) = (x(2,n1) + x(2,n2) + x(2,n3) + x(2,n4)) * fourth
1043 m(3) = (x(3,n1) + x(3,n2) + x(3,n3) + x(3,n4)) * fourth
1046 . ifun ,table ,xfacr ,xfact ,segp )
1047 press = press + segp * fourth
1050 . ifun ,table ,xfacr ,xfact ,segp )
1051 press = press + segp * fourth
1054 . ifun ,table ,xfacr ,xfact ,segp )
1055 press = press + segp * fourth
1058 . ifun ,table ,xfacr ,xfact ,segp )
1059 press = abs(press) * yfac
1061 nskin = nskin0+ imapskp(np0)
1062 skin_scalar(nskin)= skin_scalar(nskin)+press