36
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "param_c.inc"
46#include "com01_c.inc"
47#include "com04_c.inc"
48#include "com_xfem1.inc"
49#include "task_c.inc"
50
51
52
53 INTEGER IPARG(NPARG,*),EL2FA(*),IAD_CRKG(NSPMD,*),IEL_CRK(*),
54 . INDX_CRK(*),INUM(*)
55 INTEGER NBF_L,NBF
56
57 INTEGER I, N, , NG, ITY, NEL, NFT, IXFEM, IDCMAX, CRKS, , ELEM, ICRK,
58 . NEL_CRK,NLEVXF
59
60
62
63
64 nel_crk = 0
65 DO crks= 1,ncrkpart
66 icrk = indx_crk(crks)
67 ii = 0
68 DO ng=1,ngroup
69 ixfem = iparg(54,ng)
70 nlevxf = iparg(65,ng)
71 IF (ixfem > 0) THEN
72 IF (ixfem == 2 .AND. icrk > nlevxf) cycle
73 nel = iparg(2,ng)
74 nft = iparg(3,ng)
75 ity = iparg(5,ng)
76
77
78
79 IF (ity == 3) THEN
80 DO i=1,nel
81 n = i + nft
82 elem = iel_crk(n)
83 IF (iel_crk(n) > 0) THEN
84 ii = ii + 1
85 inum(el2fa(nel_crk + ii)) =
86 *
crkshell(icrk)%CRKSHELLID(elem)+idcmax
87 ENDIF
88 ENDDO
89
90
91
92 ELSEIF (ity == 7) THEN
93 DO i=1,nel
94 n = i + nft
95 elem = iel_crk(n+numelc)
96 IF(iel_crk(n+numelc) > 0) THEN
97 ii = ii + 1
98 inum(el2fa(nel_crk + ii)) =
100 ENDIF
101 ENDDO
102 ENDIF
103 ENDIF
104 ENDDO
105
106 nel_crk = nel_crk +
crkshell(icrk)%CRKNUMSHELL
107 ENDDO
108
109 IF (nspmd == 1) THEN
111 idcmax = 0
112 DO i=1,nbf
113 idcmax =
max(idcmax,inum(i))
114 ENDDO
115 ELSE
116 IF (ispmd == 0) THEN
117 rbuf = nbf
118 ELSE
119 rbuf = 1
120 END IF
122 ENDIF
123
124 RETURN
type(xfem_shell_), dimension(:), allocatable crkshell
subroutine spmd_iget_partn(size, nbf_l, np, nbpart, iadg, srbuf, iflag)
subroutine spmd_max_xfe_i(int)
void write_i_c(int *w, int *len)