34 2 INTLIST ,NBINTC ,X ,IADS ,
35 3 FORNEQS ,FORNEQSKY,ITAB ,IXS ,
36 4 IADS10 ,IADS20 ,IADS16 ,NFACNIT )
46#include "implicit_f.inc"
55 INTEGER IPARIT, NBINTC, NFACNIT
56 INTEGER IPARI(NPARI,*) ,INTLIST(*) ,IADS(8,*) ,ITAB(*),IXS(NIXS,*),
57 . IADS10(6,*),IADS20(12,*),IADS16(8,*)
58 my_real stressmean(6,*) ,x(3,*) ,forneqs(3,*) ,forneqsky(3*nfacnit,*)
59 TYPE(intbuf_struct_) INTBUF_TAB(*)
63 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: ITAG
64 INTEGER I ,J ,NI , ,NTY ,NSN ,NRTS ,SN ,IE ,NF ,N1 ,N2 ,N3 ,N4 ,
65 . N ,K1 ,K2 ,K3 ,K4 ,INTNITSCHE ,ADS1 ,ADS2 ,ADS3 ,ADS4 ,IE10,
68 . sx1 ,sy1 ,sz1 ,sx2 ,sy2 ,sz2 ,sx3 ,sy3 ,
69 . sz3 ,areas ,xns ,yns ,zns ,
for ,forx ,fory ,forz,
76 ALLOCATE(itag(numnod))
84 intnitsche = ipari(86,nin)
85 IF(nty==24 .AND.intnitsche > 0)
THEN
87 ie = intbuf_tab(nin)%IELNRTS(i)
89 ns1 = intbuf_tab(nin)%IRECTS(4*(i-1)+1)
90 ns2 = intbuf_tab(nin)%IRECTS(4*(i-1)+2)
91 ns3 = intbuf_tab(nin)%IRECTS(4*(i-1)+3)
92 ns4 = intbuf_tab(nin)%IRECTS(4*(i-1)+4)
94 n1 = intbuf_tab(nin)%NSV(ns1)
95 n2 = intbuf_tab(nin)%NSV(ns2)
96 n3 = intbuf_tab(nin)%NSV(ns3)
97 n4 = intbuf_tab(nin)%NSV(ns4)
99 ads1 = intbuf_tab(nin)%ADRECTS(4*(i-1)+1)
100 ads2 = intbuf_tab(nin)%ADRECTS(4*(i-1)+2)
101 ads3 = intbuf_tab(nin)%ADRECTS(4*(i-1)+3)
102 ads4 = intbuf_tab(nin)%ADRECTS(4*(i-1)+4)
107 sx1 = x(1,n3) - x(1,n1)
108 sy1 = x(2,n3) - x(2,n1)
109 sz1 = x(3,n3) - x(3,n1)
110 sx2 = x(1,n4) - x(1,n2)
111 sy2 = x(2,n4) - x(2,n2)
112 sz2 = x(3,n4) - x(3,n2)
113 sx3 = sy1*sz2 - sz1*sy2
114 sy3 = sz1*sx2 - sx1*sz2
115 sz3 = sx1*sy2 - sy1*sx2
119 signx = stressmean(1,ie)*sx3 + stressmean(4,ie)*sy3 +stressmean(6,ie)*sz3
120 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
121 signz = stressmean(6,ie)*sx3 + stressmean(5,ie)*sy3 +stressmean(3,ie)*sz3
126 forx = one_over_16*signx
127 fory = one_over_16*signy
128 forz = one_over_16*signz
131 IF(itag(n1)==0.AND.ads1 < 10)
THEN
132 forneqs(1,n1) = forneqs(1,n1) + forx
133 forneqs(2,n1) = forneqs(2,n1) + fory
134 forneqs(3,n1) = forneqs(3,n1) + forz
135 ELSEIF(itag(n1)==0)
THEN
136 forneqs(1,n1) = forneqs(1,n1) + half*forx
137 forneqs(2,n1) = forneqs(2,n1) + half*fory
138 forneqs(3,n1) = forneqs(3,n1) + half*forz
140 IF(itag(n2)==0.AND.ads2 < 10)
THEN
141 forneqs(1,n2) = forneqs(1,n2) + forx
142 forneqs(2,n2) = forneqs(2,n2) + fory
143 forneqs(3,n2) = forneqs(3,n2) + forz
144 ELSEIF(itag(n2)==0)
THEN
145 forneqs(1,n2) = forneqs(1,n2) + half*forx
146 forneqs(2,n2) = forneqs(2,n2) + half*fory
147 forneqs(3,n2) = forneqs(3,n2) + half*forz
149 IF(itag(n3)==0.AND.ads3 < 10)
THEN
150 forneqs(1,n3) = forneqs(1,n3) + forx
151 forneqs(2,n3) = forneqs(2,n3) + fory
152 forneqs(3,n3) = forneqs(3,n3) + forz
153 ELSEIF(itag(n3)==0)
THEN
154 forneqs(1,n3) = forneqs(1,n3) + half*forx
155 forneqs(2,n3) = forneqs(2,n3) + half*fory
156 forneqs(3,n3) = forneqs(3,n3) + half*forz
158 IF (itag(n4)==0.AND.ads1 < 10)
THEN
159 forneqs(1,n4) = forneqs(1,n4) + forx
160 forneqs(2,n4) = forneqs(2,n4) + fory
161 forneqs(3,n4) = forneqs(3,n4) + forz
162 ELSEIF(itag(n4)==0)
THEN
163 forneqs(1,n4) = forneqs(1,n4) + half*forx
164 forneqs(2,n4) = forneqs(2,n4) + half*fory
165 forneqs(3,n4) = forneqs(3,n4) + half*forz
170 sx1 = x(1,n2) - x(1,n1)
171 sy1 = x(2,n2) - x(2,n1)
172 sz1 = x(3,n2) - x(3,n1)
173 sx2 = x(1,n3) - x(1,n1)
174 sy2 = x(2,n3) - x(2,n1)
175 sz2 = x(3,n3) - x(3,n1)
176 sx3 = sy1*sz2 - sz1*sy2
177 sy3 = sz1*sx2 - sx1*sz2
178 sz3 = sx1*sy2 - sy1*sx2
181 signx = stressmean(1,ie)*sx3 + stressmean(4,ie)*sy3 +stressmean(6,ie)*sz3
182 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
183 signz = stressmean(6,ie)*sx3 + stressmean(5,ie)*sy3 +stressmean(3,ie)*sz3
186 forx = one_over_8*signx
187 fory = one_over_8*signy
188 forz = one_over_8*signz
190 IF(itag(n1)==0.AND.ads1 < 10)
THEN
192 forneqs(2,n1) = forneqs(2,n1) + fory
193 forneqs(3,n1) = forneqs(3,n1) + forz
194 ELSEIF(itag(n1)==0)
THEN
195 forneqs(1,n1) = forneqs(1,n1) + third*forx
196 forneqs(2,n1) = forneqs(2,n1) + third*fory
197 forneqs(3,n1) = forneqs(3,n1) + third*forz
199 IF(itag(n2)==0.AND.ads2 < 10)
THEN
200 forneqs(1,n2) = forneqs(1,n2) + forx
201 forneqs(2,n2) = forneqs(2,n2) + fory
202 forneqs(3,n2) = forneqs(3,n2) + forz
203 ELSEIF(itag(n2)==0)
THEN
204 forneqs(1,n2) = forneqs(1,n2) + third*forx
205 forneqs(2,n2) = forneqs(2,n2) + third*fory
206 forneqs(3,n2) = forneqs(3,n2) + third*forz
208 IF(itag(n3)==0.AND.ads3 < 10)
THEN
209 forneqs(1,n3) = forneqs(1,n3) + forx
210 forneqs(2,n3) = forneqs(2,n3) + fory
211 forneqs(3,n3) = forneqs(3,n3) + forz
212 ELSEIF(itag(n3)==0)
THEN
213 forneqs(1,n3) = forneqs(1,n3) + third*forx
214 forneqs(2,n3) = forneqs(2,n3) + third*fory
215 forneqs(3,n3) = forneqs(3,n3) + third*forz
223 sn = intbuf_tab(nin)%NSV(n)
236 intnitsche = ipari(86,nin)
237 IF(nty==24 .AND.intnitsche > 0)
THEN
239 ie = intbuf_tab(nin)%IELNRTS(i)
240 nf = intbuf_tab(nin)%FACNRTS(i)
241 ns1 = intbuf_tab(nin)%IRECTS(4*(i-1)+1)
242 ns2 = intbuf_tab(nin)%IRECTS(4*(i-1)+2)
243 ns3 = intbuf_tab(nin)%IRECTS(4*(i-1)+3)
244 ns4 = intbuf_tab(nin)%IRECTS(4*(i-1)+4)
246 n1 = intbuf_tab(nin)%NSV(ns1)
247 n2 = intbuf_tab(nin)%NSV(ns2)
248 n3 = intbuf_tab(nin)%NSV(ns3)
249 n4 = intbuf_tab(nin)%NSV(ns4)
251 ads1 = intbuf_tab(nin)%ADRECTS(4*(i-1)+1)
252 ads2 = intbuf_tab(nin)%ADRECTS(4*(i-1)+2)
253 ads3 = intbuf_tab(nin)%ADRECTS(4*(i-1)+3)
254 ads4 = intbuf_tab(nin)%ADRECTS(4*(i-1)+4)
260 sx1 = x(1,n3) - x(1,n1)
261 sy1 = x(2,n3) - x(2,n1)
262 sz1 = x(3,n3) - x(3,n1)
263 sx2 = x(1,n4) - x(1,n2)
264 sy2 = x(2,n4) - x(2,n2)
265 sz2 = x(3,n4) - x(3,n2)
266 sx3 = sy1*sz2 - sz1*sy2
267 sy3 = sz1*sx2 - sx1*sz2
268 sz3 = sx1*sy2 - sy1*sx2
271 signx = stressmean(1,ie)*sx3 + stressmean(4,ie)*sy3 +stressmean(6,ie)*sz3
272 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
273 signz = stressmean(6,ie)*sx3 + stressmean(5,ie)*sy3 +stressmean(3,ie)*sz3
276 forx = one_over_16*signx
277 fory = one_over_16*signy
278 forz = one_over_16*signz
283 ELSEIF(ads1 < 40)
THEN
284 k1 = iads20(ads1-20,ie)
285 ELSEIF(ads1 < 50)
THEN
286 k1 = iads16(ads1-40,ie)
291 ELSEIF(ads1 < 40)
THEN
292 k2 = iads20(ads2-20,ie)
293 ELSEIF(ads1 < 50)
THEN
294 k2 = iads16(ads2-40,ie)
299 ELSEIF(ads3 < 40)
THEN
300 k3 = iads20(ads3-20,ie)
301 ELSEIF(ads3 < 50)
THEN
302 k3 = iads16(ads3-40,ie)
307 ELSEIF(ads3 < 40)
THEN
308 k4 = iads20(ads4-20,ie)
309 ELSEIF(ads1 < 50)
THEN
310 k4 = iads16(ads4-40,ie)
315 forneqsky(3*(nf-1)+1,k1) = forx
316 forneqsky(3*(nf-1)+2,k1) = fory
317 forneqsky(3*(nf-1)+3,k1) = forz
319 forneqsky(3*(nf-1)+1,k1) = half*forx
320 forneqsky(3*(nf-1)+2,k1) = half*fory
321 forneqsky(3*(nf-1)+3,k1) = half*forz
325 forneqsky(3*(nf-1)+1,k2) = forx
326 forneqsky(3*(nf-1)+2,k2) = fory
327 forneqsky(3*(nf-1)+3,k2) = forz
329 forneqsky(3*(nf-1)+1,k2) = half*forx
330 forneqsky(3*(nf-1)+2,k2) = half*fory
331 forneqsky(3*(nf-1)+3,k2) = half*forz
335 forneqsky(3*(nf-1)+1,k3) = forx
336 forneqsky(3*(nf-1)+2,k3) = fory
337 forneqsky(3*(nf-1)+3,k3) = forz
339 forneqsky(3*(nf-1)+1,k3) = half*forx
340 forneqsky(3*(nf-1)+2,k3) = half*fory
341 forneqsky(3*(nf-1)+3,k3) = half*forz
345 forneqsky(3*(nf-1)+1,k4
346 forneqsky(3*(nf-1)+2,k4) = fory
347 forneqsky(3*(nf-1)+3,k4) = forz
349 forneqsky(3*(nf-1)+1,k4) = half*forx
350 forneqsky(3*(nf-1)+2,k4) = half*fory
351 forneqsky(3*(nf-1)+3,k4) = half*forz
356 sx1 = x(1,n2) - x(1,n1)
357 sy1 = x(2,n2) - x(2,n1)
358 sz1 = x(3,n2) - x(3,n1)
359 sx2 = x(1,n3) - x(1,n1)
360 sy2 = x(2,n3) - x(2,n1)
361 sz2 = x(3,n3) - x(3,n1)
362 sx3 = sy1*sz2 - sz1*sy2
363 sy3 = sz1*sx2 - sx1*sz2
364 sz3 = sx1*sy2 - sy1*sx2
367 signx = stressmean(1,ie)*sx3 + stressmean
368 signy = stressmean(4,ie)*sx3 + stressmean(2,ie)*sy3 +stressmean(5,ie)*sz3
369 signz = stressmean(6,ie)*sx3 + stressmean(5,ie)*sy3 +stressmean(3,ie)*sz3
372 forx = one_over_8*signx
373 fory = one_over_8*signy
374 forz = one_over_8*signz
376 IF(ie > numels8) ie10 = ie - numels8
381 k1 = iads10(ads1-10,ie10)
387 k2 = iads10(ads2-10,ie10)
398 forneqsky(3*(nf-1)+1,k1) = forx
399 forneqsky(3*(nf-1)+2,k1) = fory
400 forneqsky(3*(nf-1)+3,k1) = forz
402 forneqsky(3*(nf-1)+1,k1) = third*forx
403 forneqsky(3*(nf-1)+2,k1) = third*fory
404 forneqsky(3*(nf-1)+3,k1) = third*forz
408 forneqsky(3*(nf-1)+1,k2) = forx
409 forneqsky(3*(nf-1)+2,k2) = fory
410 forneqsky(3*(nf-1)+3,k2) = forz
412 forneqsky(3*(nf-1)+1,k2) = third*forx
413 forneqsky(3*(nf-1)+2,k2) = third*fory
414 forneqsky(3*(nf-1)+3,k2) = third*forz
418 forneqsky(3*(nf-1)+1,k3) = forx
419 forneqsky(3*(nf-1)+2,k3) = fory
420 forneqsky(3*(nf-1)+3,k3) = forz
422 forneqsky(3*(nf-1)+1,k3) = third*forx
423 forneqsky(3*(nf-1)+2,k3) = third*fory
424 forneqsky(3*(nf-1)+3,k3) = third*forz
434 sn = intbuf_tab(nin)%NSV(n)
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)