43 . ELBUF_TAB, NODAL_TENSOR, IFUNC , IPARG , GEO ,
44 . MASS , PM , ITAB , NODE_ID ,
45 . INFO1 , INFO2 , IS_WRITTEN_NODE, H3D_PART , IPARTC ,
46 . IPARTTG , IXC , IXTG , TEMP , IFLOW ,
47 . RFLOW , IXS , IXQ , NV46,MONVOL, VOLMON ,
48 . DIAG_SMS , MS , PDAMA2 , X ,
49 . STIFR , STIFN , A , D , V ,
50 . CONT , FCONTG , FINT , FEXT , KEYWORD ,
51 . BUFMAT , IXS10 , IXS16 , IXS20 , IXT ,
52 . IXP , IXR , IAD_ELEM , FR_ELEM , WEIGHT ,
53 . IPARTSP , IPARTR , IPARTP , IPARTT , IPARTS ,
54 . IPARTQ , KXSP , N_H3D_PART_LIST)
61 use element_mod ,
only : nixs,nixq,nixc,nixt,nixr,nixp,nixtg
65#include "implicit_f.inc"
76 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP) :: ELBUF_TAB
78 . NODAL_TENSOR(*),MASS(*),GEO(NPROPG,*),
79 . PM(NPROPM,*),TEMP(*),RFLOW(*),VOLMON(*), DIAG_SMS(*),MS(*),
80 . PDAMA2(2,*),X(*),(*),STIFN(*),A(3,*),D(3,*),V(3,*),
81 . CONT(3,*),FCONTG(3,*), FINT(3,*), FEXT(3,*),BUFMAT(*)
82 INTEGER IPARG(NPARG,*),IFUNC,NODE_ID(*),
83 . INFO1,INFO2,IS_WRITTEN_NODE(*),H3D_PART(*),ITAB(*),
84 . IXC(NIXC,*),IXTG(NIXTG,*),IPARTC(*),IPARTTG(*),IFLOW(*),
85 . IXS(NIXS,*),IXQ(NIXQ,*),NV46,MONVOL(*),
86 . IXS10(6,*) ,IXS16(8,*) ,IXS20(12,*) ,
87 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),IAD_ELEM(2,*),FR_ELEM(*),WEIGHT(*)
88 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
89 INTEGER ,
INTENT(IN) :: IPARTSP(NUMSPH),IPARTR(NUMELR),IPARTP(NUMELP),
90 . IPARTT(NUMELT),IPARTS(NUMELS),IPARTQ(NUMELQ)
91 INTEGER ,
INTENT(IN) :: KXSP(NISP,NUMSPH)
92 INTEGER ,
INTENT(IN) :: N_H3D_PART_LIST
97 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGPS, IOK_PART
99 . ,
DIMENSION(:,:),
ALLOCATABLE :: AFLU, VFLU,VALUES
101 . ,
DIMENSION(:),
ALLOCATABLE :: vgps
104 ALLOCATE(aflu(3,numnod))
105 ALLOCATE(vflu(3,numnod))
106 ALLOCATE(itagps(numnod))
107 ALLOCATE(vgps(numnod))
108 ALLOCATE(values(6,numnod))
109 ALLOCATE(iok_part(numnod))
112 values(1:6,1:numnod) = zero
117 is_written_node(i) = 0
120 IF(n_h3d_part_list .NE. 0)
THEN
122 IF ( h3d_part(ipartsp(i)) == 1)
THEN
123 IF(kxsp(2,i) > 0 )iok_part(kxsp(2,i)) = 1
128 IF ( h3d_part(ipartr(i)) == 1)
THEN
130 IF(ixr(j,i) > 0 )iok_part(ixr(j,i)) = 1
136 IF ( h3d_part(ipartp(i))
THEN
138 IF(ixp(j,i) > 0 )iok_part(ixp(j,i
144 IF ( h3d_part(ipartt(i)) == 1)
THEN
146 IF(ixt(j,i) > 0 )iok_part(ixt(j,i)) = 1
152 IF ( h3d_part(ipartc(i)) == 1)
THEN
154 IF(ixc(j,i) > 0 )iok_part(ixc(j,i)) = 1
160 IF ( h3d_part(iparttg(i)) == 1)
THEN
162 IF(ixtg(j,i) > 0 )iok_part(ixtg(j,i)) = 1
168 IF ( h3d_part(iparts(i)) == 1)
THEN
170 IF(ixs(j,i) > 0 )iok_part(ixs(j,i)) = 1
176 IF ( h3d_part(ipartq(i)) == 1)
THEN
178 IF(ixq(j,i) > 0 )iok_part(ixq(j,i)) = 1
183 iok_part(1:numnod) = 1
187 IF(keyword ==
'GPS')
THEN
198 CALL tensgps3(elbuf_tab,vflu ,aflu ,iparg ,geo ,
199 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
200 . ixc ,ixtg ,ixt ,ixp ,ixr ,
204 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
213 IF (itagps(n)>0) values(j,n)=vflu(j,n)/itagps(n)
218 IF (itagps(n)>0) values(j,n)=aflu(j-3,n)/itagps(n)
222 ELSEIF(keyword ==
'GPS1')
THEN
233 CALL tensgps1(vflu ,aflu ,iparg ,geo ,
234 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
235 . ixc ,ixtg ,ixt ,ixp ,ixr ,
236 . x ,itagps ,elbuf_tab)
239 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
249 IF (itagps(n)>0) values(j,n)=vflu(j,n)/itagps(n)
254 IF (itagps(n)>0) values(j,n)=aflu(j-3,n)/itagps(n)
258 ELSEIF(keyword ==
'GPS2')
THEN
269 CALL tensgps2(vflu ,aflu ,iparg ,geo ,
270 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
271 . ixc ,ixtg ,ixt ,ixp ,ixr ,
272 . x ,vgps ,elbuf_tab )
275 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
285 IF (vgps(n)>zero) values(j,n)=vflu(j,n)/vgps(n)
290 IF (vgps(n)>zero) values(j,n)=aflu(j-3,n)/vgps(n)
294 ELSEIF(keyword ==
'GPSTRAIN')
THEN
306 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
307 . ixc ,ixtg ,ixt ,ixp ,ixr ,
311 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
321 IF (itagps(n)>0) values(j,n)=vflu(j,n)/itagps(n)
326 IF (itagps(n)>0) values(j,n)=aflu(j-3,n)/itagps(n)
330 ELSEIF(keyword ==
'GPS/TMAX')
THEN
334 ELSEIF(keyword ==
'GPS/TMIN')
THEN
338 ELSEIF(keyword ==
'GPSTRAIN/TMAX')
THEN
342 ELSEIF(keyword ==
'GPSTRAIN/TMIN')
THEN
subroutine h3d_nodal_tensor(elbuf_tab, nodal_tensor, ifunc, iparg, geo, mass, pm, itab, node_id, info1, info2, is_written_node, h3d_part, ipartc, iparttg, ixc, ixtg, temp, iflow, rflow, ixs, ixq, nv46, monvol, volmon, diag_sms, ms, pdama2, x, stifr, stifn, a, d, v, cont, fcontg, fint, fext, keyword, bufmat, ixs10, ixs16, ixs20, ixt, ixp, ixr, iad_elem, fr_elem, weight, ipartsp, ipartr, ipartp, ipartt, iparts, ipartq, kxsp, n_h3d_part_list)