43 USE my_alloc_mod
44 use element_mod , only : nixc,nixtg
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "com01_c.inc"
53#include "com04_c.inc"
54#include "param_c.inc"
55#include "task_c.inc"
56
57
58
59
61 . x(*),d(*),xnorm(3,*),cdg(*)
62 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),IPARG(NPARG,*),
63 . INVERT(*), EL2FA(*),MATER(*),
64 . IPARTC(*),NODGLOB(*),
65 . NEL_PLY,IDPLY,IADPLY(*),IADPLYG(*),PLYNUMC,
66 . NBF_PXFEMG
67
68 INTEGER GET_PLY_NODID
70 INTEGER GET_PLY_NOD
72
73
74 INTEGER II(4), IE, NG, ITY, LFT, LLT, N, I,
75 . NEL, IAD, NPAR, NFT,MTN,
76 . NN90,
77 . JJ,BUF,ISHPLYXFEM,
78 . IPT,ELC,PLYS,IPLY,IE_EL2FA,
79 . NPCC,IDPLYN
80 INTEGER EMPL
81 INTEGER,DIMENSION(:),ALLOCATABLE::NP
82 INTEGER,DIMENSION(:),ALLOCATABLE::PLYELEMS
83
84
85
86 CALL my_alloc(plyelems, numelc)
87 CALL my_alloc(np, plynumc*4)
88 npcc = 0
91 npcc = npcc +
plyshell(iply)%PLYNUMSHELL
92 ENDDO
93
94 jj = 0
95 nel_ply = 0
96 ie=0
99 plyelems=0
103 plyelems(elc)=ipt
104 ENDDO
105
106 ie_el2fa=0
107 npar = 0
108
109
110 DO 490 ng=1,ngroup
111 mtn =iparg(1,ng)
112 nel =iparg(2,ng)
113 nft =iparg(3,ng)
114 iad =iparg(4,ng)
115 ity =iparg(5,ng)
116 ishplyxfem = iparg(50,ng)
117 lft=1
118 llt=nel
119
120
121
122
123 IF(ishplyxfem > 0) THEN
124 IF(ity==3)THEN
125
126
127
128
129
130
131 DO 130 i=lft,llt
132 n = i + nft
133 IF(plyelems(n) == 0)GOTO 130
134
135 ii(1) = ixc(2,n)
136 ii(2) = ixc(3,n)
137 ii(3) = ixc(4,n)
138 ii(4) = ixc(5,n)
139 ie = ie + 1
140 ie_el2fa = ie_el2fa + 1
141
142 IF (nspmd == 1) THEN
148 ELSE
150 np(jj+1) =
plynod(iply)%PLYNODID(empl)
151
153 np(jj+2) =
plynod(iply)%PLYNODID(empl)
154
156 np(jj+3) =
plynod(iply)%PLYNODID(empl)
157
159 np(jj+4) =
plynod(iply)%PLYNODID(empl)
160
161 END IF
162 el2fa(nel_ply+ie_el2fa) = ie
163 jj = jj + 4
164 130 CONTINUE
165
166
167
168 ELSEIF(ity==7)THEN
169 ENDIF
170 ENDIF
171 490 CONTINUE
172
173
174 iadply(plys) = ie
175 nel_ply = nel_ply +
plyshell(iply)%PLYNUMSHELL
176 ENDDO
177
178 IF (nspmd > 1) THEN
179
180
181 IF (ispmd==0) THEN
183 buf = nbf_pxfemg*4
184 idplyn = idply - 1
186 ELSE
188 buf=1
189 idplyn = idply - 1
191 ENDIF
192
193 ENDIF
194 DEALLOCATE(plyelems)
195 DEALLOCATE(np)
196
197 RETURN
type(plynods), dimension(:), allocatable plynod
integer, dimension(:), allocatable indx_ply
type(plyshells), dimension(:), allocatable plyshell
subroutine spmd_iget_partn_ply(size, nbf_l, np, nbpart, iadg, srbuf, iflag, idply)
subroutine spmd_iglob_partn(iad, nbpart, iadg, sbuf)
integer function get_ply_nodid(iply, nodid, offset)
integer function get_ply_nod(iply, nodid)
void write_i_c(int *w, int *len)