37 SUBROUTINE eloff(IXS ,IXQ ,IXC ,IXP ,IXT ,
39 . IACTIV ,TIME ,IFLAG ,NN ,ELBUF_TAB,
40 . X ,TEMP ,MCP ,PM ,IGROUPS ,
41 . MCP_OFF ,IGRBRIC ,IGRQUAD ,IGRSH4N ,IGRSH3N ,
42 . IGRTRUSS,IGRBEAM ,IGRSPRING,ITHERM_FE)
48 use element_mod ,
only : nixs,nixq,nixc,nixt,nixr,nixp,nixtg
52#include "implicit_f.inc"
67 INTEGER ,
INTENT(IN) :: ITHERM_FE
68 INTEGER IACTIV(LACTIV,*),IPARG(NPARG,*),
69 . IXS(NIXS,*), IXQ(NIXQ,*),IXC(NIXC,*),
70 . IXT(NIXT,*),IXP(NIXP,*), IXR(NIXR,*), IXTG(NIXTG,*),
73 my_real time, x(3,*), temp(*), mcp(*), pm(npropm,*),mcp_off(*)
74 TYPE(elbuf_struct_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
80 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
81 TYPE (GROUP_) ,
DIMENSION(NGRQUAD) :: IGRQUAD
82 TYPE (GROUP_) ,
DIMENSION(NGRSHEL) :: IGRSH4N
83 TYPE (GROUP_) ,
DIMENSION(NGRSH3N) :: IGRSH3N
84 TYPE (GROUP_) ,
DIMENSION(NGRTRUS) :: IGRTRUSS
85 TYPE (GROUP_) ,
DIMENSION(NGRBEAM) :: IGRBEAM
86 TYPE (GROUP_) ,
DIMENSION(NGRSPRI) :: IGRSPRING
90 INTEGER I,II,J,NG,NEL,MLW,NFT,ITY,IGOF,
91 . igsh,igsh3,igbr,igqu,igbm,igtr,igsp,
92 . jthe, iform, isolnod, itetra4
93 INTEGER NELA,NPTR,NPTS,,IR,IS,IT,IP,K,KK
95 INTEGER NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ),
96 . NC5(MVSIZ), NC6(MVSIZ), NC7(MVSIZ), NC8(MVSIZ)
97 my_real VOLGN(MVSIZ), VOLPN(MVSIZ,8), TEMPN(MVSIZ,8), MCPS, RHOCP
98 my_real nxt4(mvsiz,4,4), facvol
99 my_real,
DIMENSION(:),
POINTER :: offg
100 my_real,
DIMENSION(:),
POINTER :: volg
101 my_real,
DIMENSION(:),
POINTER :: volp
102 my_real,
DIMENSION(:),
POINTER :: teip
103 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: INDEX2
105 IF( iflag == 0 .OR. iflag == 1)
THEN
113 iform = iactiv(10,nn)
115 ALLOCATE(index2(1+mvsiz,ngroup))
125 DO j=1,igrbric(igbr)%NENTITY
126 ii = igrbric(igbr)%ENTITY(j)
130 IF (mlw == 0 .OR. mlw == 13) cycle
132 index2(1,ng) = index2(1,ng) + 1
134 index2(nela+1,ng) = i
135 WRITE(iout,
'(A,I10,A,G13.5)')
' BRICK ACTIVATION:',ixs(11,ii),
' AT TIME:',time
136 offg => elbuf_tab(ng)%GBUF%OFF
147 IF (mlw == 0 .OR. mlw == 13) cycle
153 offg => elbuf_tab(ng)%GBUF%OFF
155 index(1:nela) = index2(2:nela+1,ng)
159 IF(itherm_fe > 0)
THEN
160 volg => elbuf_tab(ng)%GBUF%VOL
161 nptr = elbuf_tab(ng)%NPTR
162 npts = elbuf_tab(ng)%NPTS
163 nptt = elbuf_tab(ng)%NPTT
165 IF(isolnod == 4 .AND. itetra4 == 1) facvol=four
178 mcp_off(nc1(i)) = one
179 mcp_off(nc2(i)) = one
180 mcp_off(nc3(i)) = one
181 mcp_off(nc4(i)) = one
182 mcp_off(nc5(i)) = one
183 mcp_off(nc6(i)) = one
184 mcp_off(nc7(i)) = one
185 mcp_off(nc8(i)) = one
189 rhocp=pm(69,ixs(1,1+nft))
192 mcps=one_over_8*rhocp*volg(j)*facvol
193 mcp(nc1(i)) = mcp(nc1(i)) + mcps
194 mcp(nc2(i)) = mcp(nc2(i)) + mcps
195 mcp(nc3(i)) = mcp(nc3(i)) + mcps
196 mcp(nc4(i)) = mcp(nc4(i)) + mcps
197 mcp(nc5(i)) = mcp(nc5(i)) + mcps
198 mcp(nc6(i)) = mcp(nc6(i)) + mcps
199 mcp(nc7(i)) = mcp(nc7(i)) + mcps
200 mcp(nc8(i)) = mcp(nc8(i)) + mcps
206 IF(isolnod == 4)
THEN
214 CALL s4volume(x, volgn, nela, nc1, nc2, nc3, nc4)
216 IF(itetra4 == 1)
THEN
217 IF(jthe < 0)
CALL s10nxt4(nxt4,nela)
220 volpn(i,ip) = fourth*volgn(i)
222 tempn(i,ip) = nxt4(i,1,ip)*temp(nc1(i))+nxt4(i,2,ip)*temp(nc2(i))+
223 . nxt4(i,3,ip)*temp(nc3(i))+nxt4(i,4,ip)*temp(nc4(i))
228 volpn(i,1) = volgn(i)
230 tempn(i,1) = fourth*(temp(nc1(i))+temp(nc2(i))+temp(nc3(i))+temp(nc4(i)))
234 CALL s8evolume(x, volgn, volpn, nela, nptr, npts, nptt,
235 . nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8 )
237 CALL s8etemper(temp, tempn, nela, nptr, npts, nptt,
238 . nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8 )
244 volg(j) = volgn(i)/facvol
250 ip = ir + ( (is-1) + (it-1)*npts )*nptr
251 volp => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)%VOL
252 IF(jthe < 0 ) teip => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)%TEMP
255 volp(j) = volpn(i,ip)
256 IF(jthe < 0 ) teip(j) = tempn(i,ip)
266 IF (offg(i) /= zero) igof=0
273 offg => elbuf_tab(ng)%GBUF%OFF
277 DO j=1,igrquad(igqu)%NENTITY
278 IF (ii == igrquad(igqu)%ENTITY(j))
THEN
280 WRITE(iout,
'(A,I10,A,G13.5)')
' QUAD ACTIVATION:',ixq(7,ii),
' AT TIME:',time
288 IF (offg(i) /= zero) igof=0
294 offg => elbuf_tab(ng)%GBUF%OFF
298 DO j=1,igrsh4n(igsh)%NENTITY
299 IF (ii == igrsh4n(igsh)%ENTITY(j))
THEN
300 offg(i) = abs(offg(i))
301 WRITE(iout,
'(A,I10,A,G13.5)')
' SHELL ACTIVATION:',ixc(7,ii),
' AT TIME:',time
309 IF (offg(i) > zero) igof=0
315 offg => elbuf_tab(ng)%GBUF%OFF
319 DO j=1,igrtruss(igtr)%NENTITY
320 IF (ii == igrtruss(igtr)%ENTITY(j))
THEN
322 WRITE(iout,
'(A,I10,A,G13.5)')
' TRUSS ACTIVATION:',ixt(5,ii),
' AT TIME:',time
330 IF (offg(i) /= zero) igof=0
336 offg => elbuf_tab(ng)%GBUF%OFF
340 DO j=1,igrbeam(igbm)%NENTITY
341 IF (ii == igrbeam(igbm)%ENTITY(j))
THEN
343 WRITE(iout,
'(A,I10,A,G13.5)')
' BEAM ACTIVATION:'' AT TIME:',time
351 IF(offg(i) > zero) igof=0
357 offg => elbuf_tab(ng)%GBUF%OFF
365 DO j=1,igrspring(igsp)%NENTITY
366 IF (ii == igrspring(igsp)%ENTITY(j))
THEN
368 WRITE(iout,
'(A,I10,A,G13.5)')
' SPRING ACTIVATION:',ixr(nixr,ii),
' AT TIME:',time
378 offg => elbuf_tab(ng)%GBUF%OFF
382 DO j=1,igrsh3n(igsh3)%NENTITY
383 IF (ii == igrsh3n(igsh3)%ENTITY(j))
THEN
385 WRITE(iout,
'(A,I10,A,G13.5)')
' SH_3N ACTIVATION:',ixtg(6,ii),
' AT TIME:',time
393 IF (offg(i) /= zero) igof=0
399 ELSE IF (iflag == 1)
THEN
405 DO j=1,igrbric(igbr)%NENTITY
406 ii = igrbric(igbr)%ENTITY(j)
408 offg => elbuf_tab(ng)%GBUF%OFF
409 volg => elbuf_tab(ng)%GBUF%VOL
416 IF (mlw == 0 .OR. mlw == 13) cycle
419 WRITE(iout,
'(A,I10,A,G13.5)')
' BRICK DEACTIVATION:',ixs(11,ii),
' AT TIME:',time
420 IF(itherm_fe > 0 .AND. iform == 2)
THEN
422 IF(isolnod == 4 .AND. itetra4 == 1) facvol=four
423 rhocp=pm(69,ixs(1,ii))
424 mcps=one_over_8*rhocp*volg(i)*facvol
427 mcp(kk) = mcp(kk) - mcps
438 IF (mlw == 0 .OR. mlw == 13) cycle
441 offg => elbuf_tab(ng)%GBUF%OFF
442 volg => elbuf_tab(ng)%GBUF%VOL
446 IF (offg(i) > zero) igof=0
452 offg => elbuf_tab(ng)%GBUF%OFF
456 DO j=1,igrquad(igqu)%NENTITY
457 IF (ii == igrquad(igqu)%ENTITY(j))
THEN
459 WRITE(iout,
'(A,I10,A,G13.5)')
' QUAD DEACTIVATION:',ixq(7,ii),
' AT TIME:',time
467 IF (offg(i) /= zero) igof=0
473 offg => elbuf_tab(ng)%GBUF%OFF
477 DO j=1,igrsh4n(igsh)%NENTITY
478 IF (ii == igrsh4n(igsh)%ENTITY(j))
THEN
479 offg(i) = -abs(offg(i))
481 WRITE(iout,
'(A,I10,A,G13.5)')
' SHELL DEACTIVATION:',ixc(7,ii),
' AT TIME:',time
489 IF (offg(i) > zero) igof=0
495 offg => elbuf_tab(ng)%GBUF%OFF
499 DO j=1,igrtruss(igtr)%NENTITY
500 IF (ii == igrtruss(igtr)%ENTITY(j))
THEN
502 WRITE(iout,
'(A,I10,A,G13.5)')
' TRUSS DEACTIVATION:',ixt(5,ii),
' AT TIME:',time
510 IF(offg(i) /= zero) igof=0
516 offg => elbuf_tab(ng)%GBUF%OFF
520 DO j=1,igrbeam(igbm)%NENTITY
521 IF (ii == igrbeam(igbm)%ENTITY(j))
THEN
523 WRITE(iout,
'(A,I10,A,G13.5)')
' BEAM DEACTIVATION:',ixp(6,ii),
' AT TIME:',time
531 IF(offg(i) > zero) igof=0
537 offg => elbuf_tab(ng)%GBUF%OFF
545 DO j=1,igrspring(igsp)%NENTITY
546 IF (ii == igrspring(igsp)%ENTITY(j))
THEN
548 WRITE(iout,
'(A,I10,A,G13.5)')
' SPRING DEACTIVATION:',ixr(nixr,ii),
' AT TIME:',time
559 offg => elbuf_tab(ng)%GBUF%OFF
563 DO j=1,igrsh3n(igsh3)%NENTITY
564 IF (ii == igrsh3n(igsh3)%ENTITY(j))
THEN
566 WRITE(iout,
'(A,I10,A,G13.5)')
' SH_3N DEACTIVATION:',ixtg(6,ii),
' AT TIME:',time
574 IF (offg(i) /= zero) igof=0
581 IF(itherm_fe > 0 )
THEN
583 mcp_off(1:numnod) = one
586 offg => elbuf_tab(ng)%GBUF%OFF
592 IF(offg(i) == 0)
THEN
603 offg => elbuf_tab(ng)%GBUF%OFF
609 IF(offg(i) /= 0)
THEN
623 IF(iflag == 1 .OR. iflag == 0)
DEALLOCATE(index2)