31 1 IXS ,IXS10 ,IXS20 ,IXS16 ,IXQ ,
32 2 IXC ,IXT ,IXP ,IXR ,IXTG ,
33 3 MSS ,MSSX ,MSQ ,MSC ,
34 4 MST ,MSP ,MSR ,MSTG ,
35 5 PTG ,MS ,INDEX ,ITRI ,
36 6 GEO ,SH4TREE,SH3TREE,PARTSAV,IPMAS ,
37 7 IPARTS ,IPARTQ ,IPARTC ,IPARTT ,
38 8 IPARTP ,IPARTR ,IPARTTG,TOTADDMAS,
39 9 IPART ,THK ,PM ,PART_AREA,
40 A ADDEDMS,ITAB ,PARTSAV1_PON,ELE_AREA)
45 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr
49#include "implicit_f.inc"
56#include "remesh_c.inc"
60 INTEGER IXS(NIXS,*),IXS10(6,*),IXS20(12,*),IXS16(8,*),
61 . IXQ(NIXQ,*),IXC(NIXC,*),IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),
62 . IXTG(6,*),INDEX(*), ITRI(*),SH4TREE(KSH4TREE,*),
63 . SH3TREE(KSH3TREE,*),IPARTS(*),IPARTQ(*),IPARTC(*),
64 . IPARTT(*),IPARTP(*),IPARTR(*),IPARTTG(*),
65 . IPART(LIPART1,*),ITAB(*)
68 . MSS(8,*),MSSX(12,*),MSQ(*),MSC(*),MST(*),MSP(*),MSR(3,*),
69 . MSTG(*),PTG(3,*),MS(*),GEO(NPROPG,*),
70 . partsav(20,*),totaddmas,part_area(*),thk(*),
71 . addedms(*),pm(npropm,*),partsav1_pon(npart),ele_area(*)
74 TYPE (ADMAS_) ,
DIMENSION(NODMAS) :: IPMAS
78 INTEGER I, , K, N, II, IGTYP, WORK(70000),IP,KAD,IGM,IPM,NMAS,
91 CALL my_orders(0,work,itri,index,numels8,1)
97 index(ideb+j-1) = index(ideb+j-1)+numels8
100 ideb = ideb + numels10
101 CALL my_orders(0,work,itri(ideb),index(ideb),numels20,1)
103 index(ideb+j-1) = index(ideb+j-1)+numels8+numels10
106 ideb = ideb + numels20
107 CALL my_orders(0,work,itri(ideb),index(ideb),numels16,1)
109 index(ideb+j-1) = index(ideb+j-1)+numels8+numels10+numels20
113 nmas = ipmas(igm)%NPART
115 ipm = ipmas(igm)%PARTID(ii)
123 kmass = mss(k,i) /
max(em20,partsav1_pon(ip))
124 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
126 totaddmas = totaddmas + mass
137 n = ixs10(k,i-numels8)
138 kmass = mssx(k,i) /
max(em20,partsav1_pon(ip))
139 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
142 totaddmas = totaddmas + mass
151 i = index(numels8+numels10+j)
155 n = ixs20(k,i-numels8-numels10)
156 kmass = mssx(k,i) /
max(em20,partsav1_pon(ip))
157 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
160 totaddmas = totaddmas + mass
169 i = index(numels8+numels10+numels20+j)
173 n = ixs16(k,i-numels8-numels10-numels20)
174 kmass = mssx(k,i) /
max(em20,partsav1_pon(ip))
175 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
178 totaddmas = totaddmas + mass
190 CALL my_orders(0,work,itri,index,numelq,1)
193 nmas = ipmas(igm)%NPART
195 ipm = ipmas(igm)%PARTID(ii)
200 kmass = msq(i) /
max(em20,partsav1_pon(ip))
201 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
205 totaddmas = totaddmas + mass
219 CALL my_orders(0,work,itri,index,numeltg,1)
224 area_el = ele_area(i+numelc)
225 part_area(ip) = part_area(ip) + area_el
230 CALL my_orders(0,work,itri,index,numelc,1)
235 area_el = ele_area(i)
236 part_area(ip) = part_area(ip) + area_el
241 nmas = ipmas(igm)%NPART
242 flag = ipmas(igm)%WEIGHT_FLAG
244 ipm = ipmas(igm)%PARTID(ii)
251 kmass = msc(i) /
max(em20,partsav1_pon(ip))
252 ELSE IF(flag == 1)
THEN
253 area_el = ele_area(i)*fourth
254 kmass = area_el /
max(em20,part_area(ip
256 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
260 totaddmas = totaddmas + mass
269 IF(sh4tree(3,i) >= 0)
THEN
273 kmass = msc(i) /
max(em20,partsav1_pon(ip))
274 ELSE IF(flag == 1)
THEN
275 area_el = ele_area(i)*fourth
276 kmass = area_el /
max(em20,part_area(ip))
278 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
282 totaddmas = totaddmas + mass
290 IF(sh4tree(3,i) == 0 .OR. sh4tree(3,i) == -1)
THEN
294 kmass = msc(i) /
max(em20,partsav1_pon(ip))
295 ELSE IF(flag == 1)
THEN
296 area_el = ele_area(i)*fourth
297 kmass = area_el /
max(em20,part_area(ip))
299 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
303 totaddmas = totaddmas + mass
316 CALL my_orders(0,work,itri,index,numelt,1)
319 nmas = ipmas(igm)%NPART
321 ipm = ipmas(igm)%PARTID(ii)
326 kmass = mst(i) /
max(em20,partsav1_pon(ip))
327 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
331 totaddmas = totaddmas + mass
341 CALL my_orders(0,work,itri,index,numelp,1)
344 nmas = ipmas(igm)%NPART
346 ipm = ipmas(igm)%PARTID(ii)
351 kmass = msp(i) /
max(em20,partsav1_pon(ip))
352 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
355 totaddmas = totaddmas + mass
358 totaddmas = totaddmas + mass
367 CALL my_orders(0,work,itri,index,numelr,1)
370 nmas = ipmas(igm)%NPART
372 ipm = ipmas(igm)%PARTID(ii)
379 kmass = msr(k,i) /
max(em20,partsav1_pon(ip))
380 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
382 totaddmas = totaddmas + mass
384 igtyp = nint(geo(12,ixr(1,i)))
387 kmass = msr(3,i) /
max(em20,partsav1_pon(ip))
388 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
390 totaddmas = totaddmas + mass
400 CALL my_orders(0,work,itri,index,numeltg,1)
403 nmas = ipmas(igm)%NPART
405 ipm = ipmas(igm)%PARTID(ii)
413 kmass = mstg(i) /
max(em20,partsav1_pon(ip))
414 ELSEIF(flag == 1)
THEN
415 area_el = ele_area(i+numelc)
416 kmass = area_el /
max(em20,part_area(ip))
418 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
422 ms(n) = ms(n) + mass*ptg(k,i)
423 totaddmas = totaddmas + mass*ptg(k,i)
431 IF(sh3tree(3,i) >= 0)
THEN
436 kmass = mstg(i) /
max(em20,partsav1_pon(ip))
437 ELSEIF(flag == 1)
THEN
438 area_el = ele_area(i+numelc)
439 kmass = area_el /
max(em20,part_area(ip))
441 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
445 ms(n) = ms(n) + mass*ptg(k,i)
446 totaddmas = totaddmas + mass*ptg(k,i)
454 IF(sh3tree(3,i) == 0 .OR. sh3tree(3,i) == -1)
THEN
459 kmass = mstg(i) /
max(em20,partsav1_pon(ip))
460 ELSEIF(flag == 1)
THEN
461 area_el = ele_area(i+numelc)
462 kmass = area_el /
max(em20,part_area(ip))
464 mass = kmass * ipmas(igm)%PART(ii)%RPMAS
468 ms(n) = ms(n) + mass*ptg(k,i)
469 totaddmas = totaddmas + mass*ptg(k,i)
480 IF(addedms(i) > zero)
THEN
481 partsav(1,i) = partsav(1,i) + addedms(i)
482 partsav1_pon(i) = partsav1_pon(i) + addedms(i)
496 1 IXS ,IXS10 ,IXS20 ,IXS16 ,IXQ ,
497 2 IXC ,IXT ,IXP ,IXR ,IXTG ,
498 3 MSS ,MSSX ,MSQ ,MSC ,
499 4 MST ,MSP ,MSR ,MSTG ,
500 5 INDEX ,ITRI ,GEO ,PARTSAV1_PON ,IPARTS ,
501 6 IPARTQ ,IPARTC ,IPARTT ,IPARTP ,IPARTR ,
503 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr
507#include "implicit_f.inc"
511#include "com04_c.inc"
512#include "param_c.inc"
513#include "scr17_c.inc"
517 INTEGER IXS(NIXS,*),IXS10(6,*),IXS20(12,*),IXS16(8,*),
518 . IXQ(NIXQ,*),IXC(NIXC,*),IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),
519 . IXTG(6,*),INDEX(*), ITRI(*),
520 . iparts(*),ipartq(*),ipartc(*),
521 . ipartt(*),ipartp(*),ipartr(*),iparttg(*),
525 . mss(8,*),mssx(12,*),msq(*),msc(*),mst(*),msp(*),msr(3,*),
526 . mstg(*),geo(npropg,*),partsav1_pon(npart)
532 INTEGER I, J, K, N, II, IGTYP, WORK(70000),IP,KAD,IGM,IPM,NMAS,
536 partsav1_pon(1:npart)=zero
542 CALL my_orders(0,work,itri,index,numels8,1)
545 CALL my_orders(0,work,itri(ideb),index(ideb),numels10,1)
548 index(ideb+j-1) = index(ideb+j-1)+numels8
551 ideb = ideb + numels10
552 CALL my_orders(0,work,itri(ideb),index(ideb),numels20,1)
554 index(ideb+j-1) = index(ideb+j-1)+numels8+numels10
557 ideb = ideb + numels20
558 CALL my_orders(0,work,itri(ideb),index(ideb),numels16,1)
560 index(ideb+j-1) = index(ideb+j-1)+numels8+numels10+numels20
567 partsav1_pon(ip)=partsav1_pon(ip)+mss(k,i)
577 partsav1_pon(ip)=partsav1_pon(ip)+mssx(k,i)
584 i = index(numels8+numels10+j)
587 partsav1_pon(ip)=partsav1_pon(ip)+mssx(k,i)
594 i = index(numels8+numels10+numels20+j)
597 partsav1_pon(ip)=partsav1_pon(ip)+mssx(k,i)
606 CALL my_orders(0,work,itri,index,numelq,1)
611 partsav1_pon(ip)=partsav1_pon(ip)+ four * msq(i)
618 CALL my_orders(0,work,itri,index,numelc,1)
623 partsav1_pon(ip)=partsav1_pon(ip)+ four * msc(i)
630 CALL my_orders(0,work,itri,index,numelt,1)
635 partsav1_pon(ip)=partsav1_pon(ip)+ two * mst(i)
642 CALL my_orders(0,work,itri,index,numelp,1)
647 partsav1_pon(ip)=partsav1_pon(ip)+ two * msp(i)
654 CALL my_orders(0,work,itri,index,numelr,1)
659 igtyp = nint(geo(12,ixr(1,i)))
666 partsav1_pon(ip)=partsav1_pon(ip)+msr(ii,i)
674 CALL my_orders(0,work,itri,index,numeltg,1)
679 partsav1_pon(ip)=partsav1_pon(ip)+mstg(i)
subroutine spmd_msin_addmass(ixs, ixs10, ixs20, ixs16, ixq, ixc, ixt, ixp, ixr, ixtg, mss, mssx, msq, msc, mst, msp, msr, mstg, ptg, ms, index, itri, geo, sh4tree, sh3tree, partsav, ipmas, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, iparttg, totaddmas, ipart, thk, pm, part_area, addedms, itab, partsav1_pon, ele_area)