34
35
36
38 use element_mod , only : nixs
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "com01_c.inc"
47#include "com04_c.inc"
48#include "param_c.inc"
49
50
51
52 INTEGER
53 . MONVOL(*), NODLOCAL(*), IXS(NIXS,*), PROC, NB_NODE,
54 . FVMAIN(*)
55
56
57
58 INTEGER NLOCAL
60
61
62
63 INTEGER K1, K2, IFV, I, ITYP, NN, KI1, , NMAX, PMAIN, , NN_L,
64 . PP, JJ, , NBA, NNA, KIA1, NNA_L,
65 . K, KK, NNSA, NNSA_L, KI2,
66 . NTGM, NNI, NTGI, NNI_L
67 INTEGER, DIMENSION(:), ALLOCATABLE :: IBUF, IBUFA,ITAG,REDIR,IBUFSA
68
69
70 ALLOCATE( itag(nb_node),redir(nb_node) )
71 ALLOCATE( ibufsa(nb_node) )
72
73
75
76
77 IF (proc==1)THEN
78 ntgm = 0
79 k1 = 1
80 DO i=1,nvolu
81 ityp=monvol(k1-1+2)
82 IF (ityp==6.OR.ityp==8) THEN
83 ntg=monvol(k1-1+33)
84 ELSE
85 ntg = 0
86 ENDIF
88 k1=k1+nimv
89 ENDDO
90 ENDIF
91
92 k1=1
93 k2=1+nimv*nvolu+licbag+libagjet+libaghol
94 ifv=0
95 DO i=1,nvolu
96 ityp=monvol(k1-1+2)
97 IF (ityp==6.OR.ityp==8) THEN
98 ifv=ifv+1
99 nn= monvol(k1-1+32)
100 ntg=monvol(k1-1+33)
101 nba=monvol(k1-1+62)
102 nna=monvol(k1-1+64)
103 nni=monvol(k1-1+68)
104 ntgi=monvol(k1-1+69)
105 ki1 =k2+monvol(k1-1+31)
106 kia1=k2+monvol(k1-1+20)-1
107
108 ALLOCATE(ibuf(nn+nni), ibufa(nna))
109 DO j=1,nn+nni
110 ibuf(j)=monvol(ki1-1+j)
111 ENDDO
112 DO j=1,nna
113 ibufa(j)=monvol(kia1-1+j)
114 ENDDO
115
116 nmax=0
117 pmain=1
118 DO p=1,nspmd
119 nn_l=0
120 DO j=1,nn
121 jj=ibuf(j)
123 DO pp = 1, p-1
125 GOTO 100
126 ENDIF
127 ENDDO
128 nn_l=nn_l+1
129 100 CONTINUE
130 ENDIF
131 ENDDO
132 nni_l=0
133 DO j=nn+1,nn+nni
134 jj=ibuf(j)
136 DO pp = 1, p-1
138 GOTO 200
139 ENDIF
140 ENDDO
141 nni_l=nni_l+1
142 200 CONTINUE
143 ENDIF
144 ENDDO
145 IF(nn_l+nni_l>nmax)THEN
146 pmain=p
147 nmax=nn_l+nni_l
148 ENDIF
149 ENDDO
150
151
152 IF ((ityp==6.OR.ityp==8) .AND. fvmain(ifv) >= 0) THEN
153
154 pmain = fvmain(ifv)
155 ENDIF
157
158 nn_l=0
159 DO j=1,nn
160 jj=ibuf(j)
161 IF (nodlocal(jj)/=0) nn_l=nn_l+1
162 ENDDO
163 nni_l=0
164 DO j=nn+1,nn+nni
165 jj=ibuf(j)
166 IF (nodlocal(jj)/=0) nni_l=nni_l+1
167 ENDDO
168 nna_l=0
169 DO j=1,nna
170 jj=ibufa(j)
171 IF (nodlocal(jj)/=0) nna_l=nna_l+1
172 ENDDO
176
177 ALLOCATE(
fvspmd(ifv)%IBUF_L(2,nn_l+nni_l),
178 .
fvspmd(ifv)%IBUFA_L(2,nna_l))
179 nn_l=0
180 DO j=1,nn+nni
181 jj=ibuf(j)
182 IF (nodlocal(jj)/=0) THEN
183 nn_l=nn_l+1
184 fvspmd(ifv)%IBUF_L(1,nn_l)=j
185 fvspmd(ifv)%IBUF_L(2,nn_l)=nodlocal(jj)
186 ENDIF
187 ENDDO
188 nna_l=0
189 DO j=1,nna
190 jj=ibufa(j)
191 IF (nodlocal(jj)/=0) THEN
192 nna_l=nna_l+1
193 fvspmd(ifv)%IBUFA_L(1,nna_l)=j
194 fvspmd(ifv)%IBUFA_L(2,nna_l)=nodlocal(jj)
195 ENDIF
196 ENDDO
197 DEALLOCATE(ibuf, ibufa)
198
203 IF (nba>0) THEN
204 IF (proc==pmain)
ALLOCATE(
fvspmd(ifv)%IXSA(8,nba))
205 kia1=k2+monvol(k1-1+19)-1
206 DO j=1,nb_node
207 itag(j)=0
208 redir(j)=0
209 ENDDO
210 DO j=1,nba
211 jj=monvol(kia1-1+2*(j-1)+1)
212 DO k=1,8
213 kk=ixs(1+k,jj)
214 itag(kk)=1
215 ENDDO
216 ENDDO
217 nnsa=0
218 DO j=1,nb_node
219 IF (itag(j)==1) THEN
220 nnsa=nnsa+1
221 redir(j)=nnsa
222 ibufsa(nnsa)=j
223 ENDIF
224 ENDDO
226 IF (proc==pmain) THEN
227 DO j=1,nba
228 jj=monvol(kia1-1+j)
229 DO k=1,8
230 kk=ixs(1+k,jj)
231 fvspmd(ifv)%IXSA(k,j)=redir(kk)
232 ENDDO
233 ENDDO
234
236 ALLOCATE(
fvspmd(ifv)%ELEMSA(3,ntg))
237 ki2=ki1+nn+nni
238 DO j=1,ntg
239 DO k=1,3
240 kk=monvol(ki2-1+3*(j-1)+k)
241 fvspmd(ifv)%ELEMSA(k,j)=redir(kk)
242 ENDDO
243 ENDDO
245 IF (
fvdata(ifv)%IFVNOD(1,j)==2)
THEN
246 jj=
fvdata(ifv)%IFVNOD(2,j)
247 fvdata(ifv)%IFVNOD(2,j)=redir(jj)
248 ENDIF
249 ENDDO
250 ENDIF
251 nnsa_l=0
252 DO j=1,nnsa
253 jj=ibufsa(j)
254 IF (nodlocal(jj)/=0) nnsa_l=nnsa_l+1
255 ENDDO
257 ALLOCATE(
fvspmd(ifv)%IBUFSA_L(2,nnsa_l))
258 nnsa_l=0
259 DO j=1,nnsa
260 jj=ibufsa(j)
261 IF (nodlocal(jj)/=0) THEN
262 nnsa_l=nnsa_l+1
263 fvspmd(ifv)%IBUFSA_L(1,nnsa_l)=j
264 fvspmd(ifv)%IBUFSA_L(2,nnsa_l)=nodlocal(jj)
265 ENDIF
266 ENDDO
267 ENDIF
268 ENDIF
269 k1=k1+nimv
270 ENDDO
271
272
273 DEALLOCATE( itag,redir )
274 DEALLOCATE( ibufsa )
275
276 RETURN
type(fvbag_spmd), dimension(:), allocatable fvspmd
type(fvbag_data), dimension(:), allocatable fvdata