53 . IXS ,IXS10 ,IXS16 ,IXS20 ,IXQ ,
54 . IXC ,IXTG ,IXT ,IXP ,IXR ,
55 . X ,D ,V ,IAD_ELEM,FR_ELEM ,
56 . WEIGHT ,IPM ,IGEO ,STACK ,ITASK )
63 use element_mod ,
only : nixs,nixq,nixc,nixp,nixr,nixt,nixtg
67#include "implicit_f.inc"
76#include "tabsiz_c.inc"
80 INTEGER,
INTENT(IN):: ITASK
81 INTEGER,
DIMENSION(NPARG,NGROUP) ,
INTENT(IN):: IPARG
82 INTEGER,
DIMENSION(NIXC,NUMELC) ,
INTENT(IN):: IXC
83 INTEGER,
DIMENSION(NIXTG,NUMELTG) ,
INTENT(IN):: IXTG
84 INTEGER,
DIMENSION(NIXS,NUMELS) ,
INTENT(IN):: IXS
85 INTEGER,
DIMENSION(NIXQ,NUMELQ) ,
INTENT(IN):: IXQ
86 INTEGER,
DIMENSION(NIXT,NUMELT) ,
INTENT(IN):: IXT
87 INTEGER,
DIMENSION(NIXP,NUMELP) ,
INTENT(IN):: IXP
88 INTEGER,
DIMENSION(NIXR,NUMELR) ,
INTENT(IN):: IXR
89 INTEGER,
DIMENSION(6,NUMELS10) ,
INTENT(IN):: IXS10
90 INTEGER,
DIMENSION(8,NUMELS16) ,
INTENT(IN):: IXS16
91 INTEGER,
DIMENSION(12,NUMELS20) ,
INTENT(IN):: IXS20
92 INTEGER,
DIMENSION(2,NSPMD+1) ,
INTENT(IN):: IAD_ELEM
93 INTEGER,
DIMENSION(SFR_ELEM) ,
INTENT(IN):: FR_ELEM
94 INTEGER,
DIMENSION(NUMNOD) ,
INTENT(IN):: WEIGHT
95 INTEGER,
DIMENSION(NPROPMI,NUMMAT) ,
INTENT(IN):: IPM
96 INTEGER,
DIMENSION(NPROPGI,NUMGEO) ,
INTENT(IN):: IGEO
97 my_real,
DIMENSION(NPROPG,NUMGEO) ,
INTENT(IN):: geo
98 my_real,
DIMENSION(NPROPM,NUMMAT) ,
INTENT(IN):: pm
99 my_real,
DIMENSION(3,NUMNOD) ,
INTENT(IN):: x,d,v
100 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET ::
101 TYPE (STACK_PLY) :: STACK
105 INTEGER N, I, NG, ITY, NEL, IVISC, NFT, IFLU, MX, TSHELL,
106 . IGTYP,ISOLNOD,ISROT,NPTR,NPTS,NPTT,NLAY,NPT,
107 . JHBE,IMAT,IPID,MATLY(MVSIZ*100),IPMAT,IADR,
109 INTEGER NODFTSK,NODLTSK,NGFTSK,NGLTSK
110 TYPE(G_BUFEL_) ,
POINTER :: GBUF
111 TYPE(L_BUFEL_) ,
POINTER :: LBUF
120 ngftsk = 1+itask*ngroup/ nthread
121 ngltsk = (itask+1)*ngroup/nthread
123 IF (iparg(8,ng)==1) cycle
125 IF (ity /= 1 .AND. ity /= 3 .AND. ity /= 7) cycle
130 iflu=iparg(7,ng)+iparg(11,ng)
131 isolnod = iparg(28,ng)
135 gbuf => elbuf_tab(ng)%GBUF
139 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp==22) tshell = 1
140 nlay = elbuf_tab(ng)%NLAY
141 nptr = elbuf_tab(ng)%NPTR
142 npts = elbuf_tab(ng)%NPTS
143 nptt = elbuf_tab(ng)%NPTT
145 IF (jhbe==14 .OR. jhbe==15) nptt = 1
146 IF (jhbe==16) npts = 1
149 IF (isolnod==10 .OR. (isolnod==4 .AND. isrot==1))
THEN
154 npt = nptt*npts*nptr*nlay
155 IF (gbuf%G_TM_YIELD>0 )
THEN
157 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
159 gbuf%TM_YIELD(1:nel)=
max(gbuf%TM_YIELD(1:nel),value(1:nel))
161 IF (gbuf%G_TM_EINT>0 )
THEN
163 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
164 IF (mtn == 151) cycle
168 value(1:nel) = gbuf%EINT(1:nel)/
max(em20,rho)
170 value(1:nel) = gbuf%EINT(1:nel)/
max(em20,gbuf%RHO(1:nel))
172 gbuf%TM_EINT(1:nel)=
max(gbuf%TM_EINT(1:nel),value(1:nel))
174 IF (gbuf%G_TM_SEQ>0 )
THEN
176 CALL tm_seq_solid(elbuf_tab(ng),nlay,nptr,npts,nptt,ivisc,
VALUE,nel)
177 gbuf%TM_SEQ(1:nel)=
max(gbuf%TM_SEQ(1:nel),value(1:nel))
179 IF (gbuf%G_TM_DMG>0 )
THEN
181 CALL tm_dmg_solid(elbuf_tab(ng),nlay,nptr,npts,nptt,
VALUE,nel)
182 gbuf%TM_DMG(1:nel)=
max(gbuf%TM_DMG(1:nel),value(1:nel))
184 IF (gbuf%G_TM_SIG>0)
THEN
185 CALL tm_sig_solid(elbuf_tab(ng),nlay,nptr,npts,nptt,ivisc,
186 . gbuf%TM_SIG1,gbuf%TM_SIG3,gbuf%TM_PSIG,nel)
188 IF (gbuf%G_TM_STRA>0)
THEN
190 . gbuf%TM_STRA1,gbuf%TM_STRA3,gbuf%TM_PSTRA,nel)
193 nlay = elbuf_tab(ng)%NLAY
194 nptr = elbuf_tab(ng)%NPTR
195 npts = elbuf_tab(ng)%NPTS
196 npt = elbuf_tab(ng)%BUFLY(1)%NPTT
197 isubstack = iparg(71,ng)
205 IF (gbuf%G_TM_YIELD>0 )
THEN
208 gbuf%TM_YIELD(1:nel)=
max(gbuf%TM_YIELD(1:nel),value(1:nel))
210 IF (gbuf%G_TM_EINT>0 )
THEN
212 IF (mtn == 151) cycle
215 mass(i) = rho*gbuf%VOL(i)
216 value(i) = (gbuf%EINT(i)+ gbuf%EINT(i+nel))/
max(em20,mass(i))
218 gbuf%TM_EINT(1:nel)=
max(gbuf%TM_EINT(1:nel),value(1:nel))
220 IF (gbuf%G_TM_SEQ>0 )
THEN
222 CALL tm_seq_shell(elbuf_tab(ng),nlay,nptr,npts,
VALUE,nel)
223 gbuf%TM_SEQ(1:nel)=
max(gbuf%TM_SEQ(1:nel),value(1:nel))
225 IF (gbuf%G_TM_DMG>0 )
THEN
241 matly(iadr+i)=igeo(ipmat+n,ipid)
249 matly(iadr+i) = stack%IGEO(ipmat+n,isubstack)
254 . pm,matly,
VALUE,nel)
258 gbuf%TM_DMG(1:nel)=
max(gbuf%TM_DMG(1:nel),value(1:nel))
260 IF (gbuf%G_TM_SIG>0)
THEN
262 . gbuf%TM_SIG1,gbuf%TM_SIG3,gbuf%TM_PSIG,nel)
264 IF (gbuf%G_TM_STRA>0)
THEN
266 . gbuf%TM_STRA1,gbuf%TM_STRA3,gbuf%TM_PSTRA,nel)
272 nodftsk = 1+itask*numnod/ nthread
273 nodltsk = (itask+1)*numnod/nthread
278 CALL gps_solid(elbuf_tab,iparg ,geo ,pm ,
279 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
280 . ixc ,ixtg ,ixt ,ixp ,ixr ,
281 . x ,iad_elem,fr_elem ,weight ,gpstmp ,
igpstag )
284 CALL upd_tmtens(gpstmp,p2tmp,tm_nsig1,tm_nsig3,tm_pnsig,nodftsk,nodltsk
292 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
293 . ixc ,ixtg ,ixt ,ixp ,ixr ,
294 . x ,iad_elem,fr_elem ,weight ,gpstmp ,
igpstratag)