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