42 USE my_alloc_mod
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "com01_c.inc"
51#include "com04_c.inc"
52#include "param_c.inc"
53#include "task_c.inc"
54
55
56
57
59 . x(*),d(*),xnorm(3,*),cdg(*)
60 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),IPARG(NPARG,*),
61 . INVERT(*), EL2FA(*),MATER(*),
62 . IPARTC(*),NODGLOB(*),
63 . NEL_PLY,IDPLY,IADPLY(*),IADPLYG(*),PLYNUMC,
64 . NBF_PXFEMG
65
66 INTEGER GET_PLY_NODID
68 INTEGER GET_PLY_NOD
70
71
73 INTEGER II(4),IE,NG, ITY, LFT, LLT, N, I, J,
74 . IPRT, NEL, IAD, NPAR, NFT, IMID,IALEL,MTN,
75 . NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,NN10,
76 . JJ, K, SH_IH,BUF,ISHPLYXFEM,
77 . IPT,ELC,PLYS,IPLY,IE_EL2FA,
78 . ,IDPLYN
79 INTEGER EMPL
80 INTEGER,DIMENSION(:),ALLOCATABLE::NP
81 INTEGER,DIMENSION(:),ALLOCATABLE::PLYELEMS
82
83
84
85 CALL my_alloc(plyelems, numelc)
86 CALL my_alloc(np, plynumc*4)
87 npcc = 0
90 npcc = npcc +
plyshell(iply)%PLYNUMSHELL
91 ENDDO
92
93 jj = 0
94 nel_ply = 0
95 ie=0
98 plyelems=0
102 plyelems(elc)=ipt
103 ENDDO
104
105 ie_el2fa=0
106 npar = 0
107
108
109 DO 490 ng=1,ngroup
110 mtn =iparg(1,ng)
111 nel =iparg(2,ng)
112 nft =iparg(3,ng)
113 iad =iparg(4,ng)
114 ity =iparg(5,ng)
115 ishplyxfem = iparg(50,ng)
116 lft=1
117 llt=nel
118
119
120
121
122 IF(ishplyxfem > 0) THEN
123 IF(ity==3)THEN
124
125
126
127
128
129
130 DO 130 i=lft,llt
131 n = i + nft
132 IF(plyelems(n) == 0)GOTO 130
133
134 ii(1) = ixc(2,n)
135 ii(2) = ixc(3,n)
136 ii(3) = ixc(4,n)
137 ii(4) = ixc(5,n)
138 ie = ie + 1
139 ie_el2fa = ie_el2fa + 1
140
141 IF (nspmd == 1) THEN
147 ELSE
149 np(jj+1) =
plynod(iply)%PLYNODID(empl)
150
152 np(jj+2) =
plynod(iply)%PLYNODID(empl)
153
155 np(jj+3) =
plynod(iply)%PLYNODID(empl)
156
158 np(jj+4) =
plynod(iply)%PLYNODID(empl)
159
160 END IF
161 el2fa(nel_ply+ie_el2fa) = ie
162 jj = jj + 4
163 130 CONTINUE
164
165
166
167 ELSEIF(ity==7)THEN
168 ENDIF
169 ENDIF
170 490 CONTINUE
171
172
173 iadply(plys) = ie
174 nel_ply = nel_ply +
plyshell(iply)%PLYNUMSHELL
175 ENDDO
176
177 IF (nspmd > 1) THEN
178
179
180 IF (ispmd==0) THEN
182 buf = nbf_pxfemg*4
183 idplyn = idply - 1
185 ELSE
187 buf=1
188 idplyn = idply - 1
190 ENDIF
191
192 ENDIF
193 DEALLOCATE(plyelems)
194 DEALLOCATE(np)
195
196 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)