52 . IXS ,IXS10 ,IXS16 ,IXS20 ,IXQ ,
53 . IXC ,IXTG ,IXT ,IXP ,IXR ,
54 . X ,D ,V ,IAD_ELEM,FR_ELEM ,
55 . WEIGHT ,IPM ,IGEO ,STACK ,ITASK )
65#include "implicit_f.inc"
74#include "tabsiz_c.inc"
78 INTEGER,
INTENT(IN):: ITASK
79 INTEGER,
DIMENSION(NPARG,NGROUP) ,
INTENT(IN):: IPARG
80 INTEGER,
DIMENSION(NIXC,NUMELC) ,
INTENT(IN):: IXC
81 INTEGER,
DIMENSION(NIXTG,NUMELTG) ,
INTENT(IN):: IXTG
82 INTEGER,
DIMENSION(NIXS,NUMELS) ,
INTENT(IN):: IXS
83 INTEGER,
DIMENSION(NIXQ,NUMELQ) ,
INTENT(IN)::
84 INTEGER,
DIMENSION(NIXT,NUMELT) ,
INTENT(IN):: IXT
85 INTEGER,
DIMENSION(NIXP,NUMELP) ,
INTENT(IN):: IXP
86 INTEGER,
DIMENSION(NIXR,NUMELR) ,
INTENT(IN):: IXR
87 INTEGER,
DIMENSION(6,NUMELS10) ,
INTENT(IN):: IXS10
88 INTEGER,
DIMENSION(8,NUMELS16) ,
INTENT(IN):: IXS16
89 INTEGER,
DIMENSION(12,NUMELS20) ,
INTENT(IN):: IXS20
90 INTEGER,
DIMENSION(2,NSPMD+1) ,
INTENT(IN):: IAD_ELEM
91 INTEGERDIMENSION(SFR_ELEM) ,
INTENT(IN):: FR_ELEM
92 INTEGER,
DIMENSION(NUMNOD) ,
INTENT(IN):: WEIGHT
93 INTEGER,
DIMENSION(NPROPMI,NUMMAT) ,
INTENT(IN):: IPM
94 INTEGER,
DIMENSION(NPROPGI,NUMGEO) ,
INTENT(IN):: IGEO
95 my_real,
DIMENSION(NPROPG,NUMGEO) ,
INTENT(IN):: geo
96 my_real,
DIMENSION(NPROPM,NUMMAT) ,
INTENT(IN):: pm
97 my_real,
DIMENSION(3,NUMNOD) ,
INTENT(IN):: x,d,v
98 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
99 TYPE (STACK_PLY) :: STACK
103 INTEGER N, I, J,NG,ITY,NEL,IVISC,NFT,IFLU,MX,TSHELL,
104 . IGTYP,ISOLNOD,ISROT,NPTR,NPTS,NPTT,NLAY,NPT,
105 . JHBE,IMAT,,MATLY(*100),IPMAT,IADR,
107 INTEGER ,NODLTSK,NGFTSK,NGLTSK
108 TYPE(G_BUFEL_) ,
POINTER :: GBUF
109 TYPE(L_BUFEL_) ,
POINTER :: LBUF
110 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
113 . tp2(mvsiz,2),t2d1(mvsiz,3),t2d3(mvsiz,3),mass(mvsiz)
118 ngftsk = 1+itask*ngroup/ nthread
119 ngltsk = (itask+1)*ngroup/nthread
121 IF (iparg(8,ng)==1) cycle
123 IF (ity /= 1 .AND. ity /= 3 .AND. ity /= 7) cycle
128 iflu=iparg(7,ng)+iparg(11,ng)
129 isolnod = iparg(28,ng)
133 gbuf => elbuf_tab(ng)%GBUF
137 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp
138 nlay = elbuf_tab(ng)%NLAY
139 nptr = elbuf_tab(ng)%NPTR
140 npts = elbuf_tab(ng)%NPTS
141 nptt = elbuf_tab(ng)%NPTT
143 IF (jhbe==14 .OR. jhbe==15) nptt = 1
144 IF (jhbe==16) npts = 1
147 IF (isolnod==10 .OR. (isolnod==4 .AND. isrot
THEN
152 npt = nptt*npts*nptr*nlay
153 IF (gbuf%G_TM_YIELD>0 )
THEN
155 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
157 gbuf%TM_YIELD(1:nel)=
max(gbuf%TM_YIELD(1:nel),
VALUE(1:nel))
159 IF (gbuf%G_TM_EINT>0 )
THEN
161 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
162 IF (mtn == 151) cycle
166 value(1:nel) = gbuf%EINT(1:nel)/
max(em20,rho)
168 value(1:nel) = gbuf%EINT(1:nel)/
max(em20,gbuf%RHO(1:nel))
170 gbuf%TM_EINT(1:nel)=
max(gbuf%TM_EINT(1:nel),value(1:nel))
172 IF (gbuf%G_TM_SEQ>0 )
THEN
174 CALL tm_seq_solid(elbuf_tab(ng),nlay,nptr,npts,nptt,ivisc,
VALUE,nel)
175 gbuf%TM_SEQ(1:nel)=
max(gbuf%TM_SEQ(1:nel),value(1:nel))
177 IF (gbuf%G_TM_DMG>0 )
THEN
179 CALL tm_dmg_solid(elbuf_tab(ng),nlay,nptr,npts,nptt,
VALUE,nel)
180 gbuf%TM_DMG(1:nel)=
max(gbuf%TM_DMG(1:nel),value(1:nel))
182 IF (gbuf%G_TM_SIG>0)
THEN
183 CALL tm_sig_solid(elbuf_tab(ng),nlay,nptr,npts,nptt,ivisc,
184 . gbuf%TM_SIG1,gbuf%TM_SIG3,gbuf%TM_PSIG,nel)
186 IF (gbuf%G_TM_STRA>0)
THEN
188 . gbuf%TM_STRA1,gbuf%TM_STRA3,gbuf%TM_PSTRA,nel)
191 nlay = elbuf_tab(ng)%NLAY
192 nptr = elbuf_tab(ng)%NPTR
193 npts = elbuf_tab(ng)%NPTS
194 npt = elbuf_tab(ng)%BUFLY(1)%NPTT
195 isubstack = iparg(71,ng)
203 IF (gbuf%G_TM_YIELD>0 )
THEN
206 gbuf%TM_YIELD(1:nel)=
max(gbuf%TM_YIELD(1:nel),value(1:nel))
208 IF (gbuf%G_TM_EINT>0 )
THEN
210 IF (mtn == 151) cycle
213 mass(i) = rho*gbuf%VOL(i)
214 value(i) = (gbuf%EINT(i)+ gbuf%EINT
216 gbuf%TM_EINT(1:nel)=
max(gbuf%TM_EINT(1:nel),value(1:nel))
218 IF (gbuf%G_TM_SEQ>0 )
THEN
220 CALL tm_seq_shell(elbuf_tab(ng),nlay,nptr,npts,
VALUE,nel)
221 gbuf%TM_SEQ(1:nel)=
max(gbuf%TM_SEQ(1:nel),value(1:nel))
223 IF (gbuf%G_TM_DMG>0 )
THEN
239 matly(iadr+i)=igeo(ipmat+n,ipid)
252 . pm,matly,
VALUE,nel)
256 gbuf%TM_DMG(1:nel)=
max(gbuf%TM_DMG(1:nel),value(1:nel))
258 IF (gbuf%G_TM_SIG>0)
THEN
260 . gbuf%TM_SIG1,gbuf%TM_SIG3,gbuf%TM_PSIG,nel)
262 IF (gbuf%G_TM_STRA>0)
THEN
264 . gbuf%TM_STRA1,gbuf%TM_STRA3,gbuf%TM_PSTRA,nel)
270 nodftsk = 1+itask*numnod/ nthread
271 nodltsk = (itask+1)*numnod/nthread
276 CALL gps_solid(elbuf_tab,iparg ,geo ,pm ,
277 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
278 . ixc ,ixtg ,ixt ,ixp ,ixr ,
279 . x ,iad_elem,fr_elem ,weight ,gpstmp ,
igpstag )
290 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
291 . ixc ,ixtg ,ixt ,ixp ,ixr ,
292 . x ,iad_elem,fr_elem ,weight ,gpstmp ,
igpstratag)