31 1 IXS ,IXQ ,IXC ,IXT ,IXP ,
32 2 IXR ,IXTG ,MSS ,MSQ ,
33 3 MSC ,MST ,MSP ,MSR ,MSTG ,
34 4 INC ,INP ,INR ,INTG ,
35 5 INDEX,ITRI ,MS ,IN ,
36 6 PTG ,GEO ,IXS10,IXS20,
37 7 IXS16,MSSX ,MSNF ,MSSF ,VNS ,
38 8 VNSX ,STC ,STT ,STP ,STR ,
39 9 STTG ,STUR ,BNS ,BNSX ,VOLNOD ,
40 A BVOLNOD ,ETNOD ,STIFINT,INS ,
41 B MCPC ,MCP ,MCPS ,MCPSX ,
42 C MCPTG,SH4TREE,SH3TREE,MS_LAYERC,ZI_LAYERC,
43 D MS_LAYER , ZI_LAYER,MSZ2C,MSZ2,ZPLY,
44 E KXIG3D ,IXIG3D ,MSIG3D,NCTRLMAX,STRC,
45 F STRP,STRR,STRTG,STIFINTR,NSHNOD,VNIGE,BNIGE,
47 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr
52#include "implicit_f.inc"
60#include "remesh_c.inc"
64 INTEGER IXS(NIXS,*), IXQ(NIXQ,*), IXC(NIXC,*),
65 . IXT(NIXT,*),IXP(NIXP,*), IXR(NIXR,*), IXTG(6,*),
67 . IXS10(6,*),IXS20(12,*),IXS16(8,*),
68 . SH4TREE(KSH4TREE,*), SH3TREE(KSH3TREE,*),KXIG3D(NIXIG3D,*),
70 INTEGER,
INTENT(IN) :: ITHERM_FE
73 . MSS(8,*), MSQ(*),MSC(*),MST(*),MSP(*),(3,*),
74 . MSTG(*),MSSX(12,*),INC(*),
75 . INP(*),INR(3,*),INTG(*),
76 . MS(*), IN(*),PTG(3,*), GEO(NPROPG,*),
78 . VNS(8,*) ,VNSX(12,*) ,STC(*) ,STT(*) ,STP(*) ,STR(*) ,
79 . STTG(*) ,STUR(*) ,BNS(8,*) ,BNSX(12,*) ,
80 . volnod(*) ,bvolnod(*) ,etnod(*), stifint(*), ins(8,*),
81 . mcp(*),mcpc(*),mcps(8,*),mcpsx(12,*),mcptg(*),
82 . ms_layerc(numelc,*),zi_layerc(numelc,*),
83 . ms_layer(numnod,*),zi_layer(numnod,*),msz2c(*),msz2(*),
84 . zply(*),msig3d(numelig3d,nctrlmax),strc(*),strp(*),
strr(*),
85 . strtg(*),stifintr(*), vnige(nctrlmax,*),bnige(nctrlmax,*),
92 INTEGER I, J, K, N, IGTYP, WORK(70000),IP
98 CALL my_orders(0,work,itri,index,numels8,1)
101 CALL my_orders(0,work,itri(ideb),index(ideb),numels10,1)
104 index(ideb+j-1) = index(ideb+j-1)+numels8
107 ideb = ideb + numels10
108 CALL my_orders(0,work,itri(ideb),index(ideb),numels20,1)
110 index(ideb+j-1) = index(ideb+j-1)+numels8+numels10
113 ideb = ideb + numels20
114 CALL my_orders(0,work,itri(ideb),index(ideb),numels16,1)
116 index(ideb+j-1) = index(ideb+j-1)+numels8+numels10+numels20
119 IF(itherm_fe == 0 )
THEN
124 ms(n) = ms(n) + mss(k,i)
132 ms(n) = ms(n) + mss(k,i)
133 mcp(n) = mcp(n) + mcps(k,i)
138 IF(iale==1.OR.ieuler==1 .OR. ialelag==1)
THEN
143 msnf(n) = msnf(n) + mssf(k,i)
148 IF(itherm_fe== 0 )
THEN
153 n = ixs10(k,i-numels8)
155 ms(n) = ms(n) + mssx(k,i)
163 i = index(numels8+numels10+j)
165 n = ixs20(k,i-numels8-numels10)
167 ms(n) = ms(n) + mssx(k,i)
175 i = index(numels8+numels10+numels20+j)
177 n = ixs16(k,i-numels8-numels10-numels20)
179 ms(n) = ms(n) + mssx(k,i)
192 n = ixs10(k,i-numels8)
194 ms(n) = ms(n) + mssx(k,i)
195 mcp(n) = mcp(n) + mcpsx(k,i)
203 i = index(numels8+numels10+j)
205 n = ixs20(k,i-numels8-numels10)
207 ms(n) = ms(n) + mssx(k,i)
208 mcp(n) = mcp(n) + mcpsx(k,i)
216 i = index(numels8+numels10+numels20+j)
218 n = ixs16(k,i-numels8-numels10-numels20)
220 ms(n) = ms(n) + mssx(k,i)
221 mcp(n) = mcp(n) + mcpsx(k,i)
230 DO j=1,numels8+numels10
234 in(n) = in(n) + ins(k,i)
244 volnod(n) = volnod(n) + vns(k,i)
245 bvolnod(n) = bvolnod(n) + bns(k,i)
253 n = ixs10(k,i-numels8)
255 volnod(n) = volnod(n) + vnsx(k,i)
256 bvolnod(n) = bvolnod(n) + bnsx(k,i)
264 i = index(numels8+numels10+j)
266 n = ixs20(k,i-numels8-numels10)
268 volnod(n) = volnod(n) + vnsx(k,i)
269 bvolnod(n) = bvolnod(n) + bnsx(k,i)
277 i = index(numels8+numels10+numels20+j)
279 n = ixs16(k,i-numels8-numels10-numels20)
281 volnod(n) = volnod(n) + vnsx(k,i)
282 bvolnod(n) = bvolnod(n) + bnsx(k,i)
290 itri(i) = kxig3d(5,i)
292 CALL my_orders(0,work,itri,index,numelig3d,1)
296 n = ixig3d(kxig3d(4,i)+k-1)
298 volnod(n) = volnod(n) + vnige(k,i)
299 bvolnod(n) = bvolnod(n) + bnige(k,i)
309 CALL my_orders(0,work,itri,index,numelq,1)
314 ms(n) = ms(n) + msq(i)
322 CALL my_orders(0,work,itri,index,numelc,1)
324 IF(itherm_fe == 0 )
THEN
330 ms(n) = ms(n) + msc(i)
331 in(n) = in(n) + inc(i)
338 IF(sh4tree(3,i) >= 0)
THEN
341 ms(n) = ms(n) + msc(i)
342 in(n) = in(n) + inc(i)
349 IF(sh4tree(3,i) == 0 .OR. sh4tree(3,i) == -1)
THEN
352 ms(n) = ms(n) + msc(i)
353 in(n) = in(n) + inc(i)
365 ms(n) = ms(n) + msc(i)
367 mcp(n) = mcp(n) + mcpc(i)
374 IF(sh4tree(3,i) >= 0)
THEN
377 ms(n) = ms(n) + msc(i)
378 in(n) = in(n) + inc(i)
379 mcp(n) = mcp(n) + mcpc(i)
386 IF(sh4tree(3,i) == -1)
THEN
389 ms(n) = ms(n) + msc(i)
390 in(n) = in(n) + inc(i)
392 ELSEIF(sh4tree(3,i) == 0)
THEN
395 ms(n) = ms(n) + msc(i)
396 in(n) = in(n) + inc(i)
397 mcp(n) = mcp(n) + mcpc(i)
399 ELSEIF(sh4tree(3,i) > 0)
THEN
402 mcp(n) = mcp(n) + mcpc(i)
410 IF(iplyxfem > 0)
THEN
416 ms_layer(n,ip) = ms_layer(n,ip) + ms_layerc(i,ip)
417 IF(zi_layerc(i,ip) == zero)
THEN
418 zi_layer(n,ip) = zply(ip)
431 msz2(n) = msz2(n) + msz2c(i)
442 etnod(n) = etnod(n) + stc(i)
443 stifintr(n) = stifintr(n) + strc(i)/nshnod(n)
452 CALL my_orders(0,work,itri,index,numelt,1)
457 ms(n) = ms(n) + mst(i)
466 stifint(n) = stifint(n) + stt(i)
474 CALL my_orders(0,work,itri,index,numelp,1)
475 IF(itherm_fe == 0)
THEN
479 ms(n) = ms(n) + msp(i)
480 in(n) = in(n) + inp(i)
482 ms(n) = ms(n) + msp(i)
483 in(n) = in(n) + inp(i)
489 ms(n) = ms(n) + msp(i)
490 in(n) = in(n) + inp(i)
491 mcp(n) = mcp(n) + mcpp(i)
493 ms(n) = ms(n) + msp(i)
494 in(n) = in(n) + inp(i)
495 mcp(n) = mcp(n) + mcpp(i)
503 stifint(n) = stifint(n) + stp(i)
504 stifintr(n) = stifintr(n) + strp(i)
506 stifint(n) = stifint(n) + stp(i)
507 stifintr(n) = stifintr(n) + strp(i)
514 CALL my_orders(0,work,itri,index,numelr,1)
519 ms(n) = ms(n) + msr(k,i)
520 in(n) = in(n) + inr(k,i)
522 igtyp = nint(geo(12,ixr(1,i)))
525 ms(n) = ms(n) + msr(3,i)
526 in(n) = in(n) + inr(3,i)
535 stifint(n) = stifint(n) + str(i)
536 stifintr(n) = stifintr(n) +
strr(i)
538 igtyp = nint(geo(12,ixr(1,i)))
541 stifint(n) = stifint(n) + two*str(i)
549 CALL my_orders(0,work,itri,index,numeltg,1)
550 IF(itherm _fe== 0 )
THEN
556 ms(n) = ms(n) + mstg(i)*ptg(k,i)
557 in(n) = in(n) + intg(i)*ptg(k,i)
564 IF(sh3tree(3,i) >= 0)
THEN
567 ms(n) = ms(n) + mstg(i)*ptg(k,i)
568 in(n) = in(n) + intg(i)*ptg(k,i)
575 IF(sh3tree(3,i) == 0 .OR. sh3tree(3,i) == -1)
THEN
578 ms(n) = ms(n) + mstg(i)*ptg(k,i)
579 in(n) = in(n) + intg(i)*ptg(k,i)
591 ms(n) = ms(n) + mstg(i)*ptg(k,i)
592 mcp(n) = mcp(n) + mcptg(i)*ptg(k,i)
599 IF(sh3tree(3,i) >= 0)
THEN
602 ms(n) = ms(n) + mstg(i)*ptg(k,i)
603 mcp(n) = mcp(n) + mcptg(i)*ptg(k,i)
610 IF(sh3tree(3,i) == -1)
THEN
613 ms(n) = ms(n) + mstg(i)*ptg(k,i)
615 ELSEIF(sh3tree(3,i) == 0)
THEN
618 ms(n) = ms(n) + mstg(i)*ptg(k,i)
619 mcp(n) = mcp(n) + mcptg(i)*ptg(k,i)
621 ELSEIF(sh3tree(3,i) > 0)
THEN
624 mcp(n) = mcp(n) + mcptg(i)*ptg(k,i)
637 etnod(n) = etnod(n) + sttg(i)
638 stifintr(n) = stifintr(n) + strtg(i)/nshnod(n)
644 itri(i) = kxig3d(5,i)
646 CALL my_orders(0,work,itri,index,numelig3d,1)
650 n = ixig3d(kxig3d(4,i)+k-1)
651 ms(n) = ms(n) + msig3d(i,k)
subroutine spmd_msin(ixs, ixq, ixc, ixt, ixp, ixr, ixtg, mss, msq, msc, mst, msp, msr, mstg, inc, inp, inr, intg, index, itri, ms, in, ptg, geo, ixs10, ixs20, ixs16, mssx, msnf, mssf, vns, vnsx, stc, stt, stp, str, sttg, stur, bns, bnsx, volnod, bvolnod, etnod, stifint, ins, mcpc, mcp, mcps, mcpsx, mcptg, sh4tree, sh3tree, ms_layerc, zi_layerc, ms_layer, zi_layer, msz2c, msz2, zply, kxig3d, ixig3d, msig3d, nctrlmax, strc, strp, strr, strtg, stifintr, nshnod, vnige, bnige, mcpp, itherm_fe)