42
43
44
46 USE elbufdef_mod
47 USE my_alloc_mod
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "com01_c.inc"
56#include "param_c.inc"
57#include "units_c.inc"
58#include "task_c.inc"
59#include "scr14_c.inc"
60#include "scr16_c.inc"
61#include "vect01_c.inc"
62#include "scr17_c.inc"
63
64
65
66 INTEGER SIZLOC,SIZP0,IGLOB,IDEL
67 INTEGER IXS(NIXS,*),
68 . IPARG(NPARG,*),IPM(NPROPMI,*),(NPROPGI,*),
69 . IPARTS(*), IPART_STATE(*), STAT_INDXS(*),IPART(LIPART1,*)
71 . x(3,*)
72 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
73 double precision WA(*),WAP0(*)
74
75
76
77 INTEGER I,N,J,K,II(6),JJ,LEN,ISOLNOD,IUS, NPTR, NPTS, NPTT, NPTG,
78 . NG, NEL, MLW,ID, IPRT0, IPRT, NPG,IPG,IPT, NUVAR,IE,
79 . NLAY,IP,IL,IR,IS,IT,PID,ICSIG,IOFF
80 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA
81 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA_P0
83 . gama(6)
84 CHARACTER*100 DELIMIT,LINE
85 DATA delimit(1:60)
86 ./'#---1----|----2----|----3----|----4----|----5----|----6----|'/
87 DATA delimit(61:100)
88 ./'----7----|----8----|----9----|----10---|'/
89
90 TYPE(L_BUFEL_) ,POINTER :: LBUF
91 TYPE(G_BUFEL_) ,POINTER :: GBUF
92
93
94
95 CALL my_alloc(ptwa,stat_numels)
96 ALLOCATE(ptwa_p0(0:
max(1,stat_numels_g)))
97
98 jj = 0
99 IF(stat_numels==0) GOTO 200
100
101 ie=0
102 DO ng=1,ngroup
103 ity =iparg(5,ng)
104 isolnod = iparg(28,ng)
105 mlw =iparg(1,ng)
106 nel =iparg(2,ng)
107 nft =iparg(3,ng)
108 iad =iparg(4,ng)
109 icsig =iparg(17,ng)
110 lft=1
111 llt = nel
112
113 IF (ity == 1) THEN
115 2 mlw ,nel ,nft ,iad ,ity ,
116 3 npt ,jale ,ismstr ,jeul ,jtur ,
117 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
118 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
119 6 irep ,iint ,igtyp ,israt ,isrot ,
120 7 icsen ,isorth ,isorthg ,ifailure,jsms )
121
122 iprt=iparts(lft+nft)
123 pid = ipart(2,iprt)
124
125
126 IF (jhbe==17.AND.iint==2) jhbe = 18
127 IF (jhbe==1.AND.iint==3) jhbe = 5
128 gbuf => elbuf_tab(ng)%GBUF
129 lbuf
130 IF(igtyp == 22) THEN
131 nlay = elbuf_tab(ng)%NLAY
132 ELSE
133 nlay = 1
134 ENDIF
135 nptr = elbuf_tab(ng)%NPTR
136 npts = elbuf_tab(ng)%NPTS
137 nptt = elbuf_tab(ng)%NPTT
138 npt = nptr * npts * nptt * nlay
139
140 DO j=1,6
141 ii(j) = nel*(j-1)
142 ENDDO
143
144
145 DO i=lft,llt
146 n = i + nft
147 iprt=iparts(n)
148 IF(ipart_state(iprt)==0)cycle
149
150 wa(jj+ 1)= iprt
151 wa(jj+ 2)= ixs(nixs,n)
152 wa(jj+ 3)= isorth
153 wa(jj+ 4)= nlay
154 wa(jj+ 5)= nptr
155 wa(jj+ 6)= npts
156 wa(jj+ 7)= nptt
157 wa(jj+ 8)= isolnod
158 wa(jj+ 9)= jhbe
159 wa(jj+10)= igtyp
160 wa(jj+11)= gbuf%OFF(i)
161 jj = jj + 11
162
163 DO j=1,nlay
164 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(1,1,1)
165 IF (isorth == 1) THEN
166 IF(igtyp == 21 .OR. igtyp == 22) THEN
167 IF (iglob == 1)THEN
168 IF (igtyp == 22) THEN
169 gama(1)= lbuf%GAMA(ii(1)+i)
170 gama(2)= lbuf%GAMA(ii(2)+i)
171 ELSEIF (igtyp == 21) THEN
172 gama(1)= gbuf%GAMA(ii(1)+i)
173 gama(2)= gbuf%GAMA(ii(2)+i)
174 ENDIF
175 gama(3)= zero
176 gama(4)= zero
177 gama(5)= zero
178 gama(6)= zero
179 CALL srotorth(x,ixs(1,n),gama,jhbe,igtyp,
180 . icsig)
181 wa(jj+1)=gama(1)
182 wa(jj+2)=gama(2)
183 wa(jj+3)=gama(3)
184 wa(jj+4)=gama(4)
185 wa(jj+5)=gama(5)
186 wa(jj+6)=gama(6)
187 ELSE
188 IF (igtyp == 22) THEN
189 wa(jj+1)= lbuf%GAMA(ii(1)+i)
190 wa(jj+2)= lbuf%GAMA(ii(2)+i)
191 ELSEIF (igtyp == 21) THEN
192 wa(jj+1)= gbuf%GAMA(ii(1)+i)
193 wa(jj+2)= gbuf%GAMA(ii(2)+i)
194 ENDIF
195 wa(jj+3)= zero
196 wa(jj+4)= zero
197 wa(jj+5)= zero
198 wa(jj+6)= zero
199 ENDIF
200 ELSEIF (jhbe == 1 .OR.
201 . jhbe == 2 .OR. jhbe == 12) THEN
202 wa(jj+1)= gbuf%GAMA(ii(1)+i)
203 wa(jj+2)= gbuf%GAMA(ii(2)+i)
204 wa(jj+3)= gbuf%GAMA(ii(3)+i)
205 wa(jj+4)= gbuf%GAMA(ii(4)+i)
206 wa(jj+5)= gbuf%GAMA(ii(5)+i)
207 wa(jj+6)= gbuf%GAMA(ii(6)+i)
208 ELSE
209 gama(1) = gbuf%GAMA(ii(1)+i)
210 gama(2) = gbuf%GAMA(ii(2)+i)
211 gama(3) = gbuf%GAMA(ii(3)+i)
212 gama(4) = gbuf%GAMA(ii(4)+i)
213 gama(5) = gbuf%GAMA(ii(5)+i)
214 gama(6) = gbuf%GAMA(ii(6)+i)
215 CALL srotorth(x,ixs(1,n),gama,jhbe,igtyp,
216 . icsig)
217 wa(jj+1)=gama(1)
218 wa(jj+2)=gama(2)
219
220 wa(jj+4)=gama(4)
221 wa(jj+5)=gama(5)
222 wa(jj+6)=gama(6)
223 ENDIF
224 ELSE
225 wa(jj+1)= zero
226 wa(jj+2)= zero
227 wa(jj+3)= zero
228 wa(jj+4)= zero
229 wa(jj+5)= zero
230 wa(jj+6)= zero
231 ENDIF
232 jj = jj + 6
233 ENDDO
234 ie=ie+1
235
236 ptwa(ie)=jj
237 ENDDO
238 ENDIF
239 ENDDO
240 200 CONTINUE
241
242 IF(nspmd == 1)THEN
243
244 ptwa_p0(0)=0
245 DO n=1,stat_numels
246 ptwa_p0(n)=ptwa(n)
247 END DO
248 len=jj
249 DO j=1,len
250 wap0(j)=wa(j)
251 END DO
252 ELSE
253
255 len = 0
257 END IF
258 IF(ispmd==0.AND.len>0) THEN
259 iprt0=0
260 DO n=1,stat_numels_g
261
262 k=stat_indxs(n)
263
264 j=ptwa_p0(k-1)
265
266 iprt = nint(wap0(j + 1))
267 id = nint(wap0(j + 2))
268 isorth = nint(wap0(j + 3))
269 nlay = nint(wap0(j + 4))
270 nptr = nint(wap0(j + 5))
271 npts = nint(wap0(j + 6))
272 nptt = nint(wap0(j + 7))
273 isolnod= nint(wap0(j + 8))
274 jhbe = nint(wap0(j + 9))
275 igtyp = nint(wap0(j +10))
276 ioff = nint(wap0(j + 11))
277 IF(idel==0.OR.(idel==1.AND.ioff >=1))THEN
278
279 IF(iprt /= iprt0 .AND. isorth /= 0)THEN
280 IF (izipstrs == 0) THEN
281 WRITE(iugeo,'(A)') delimit
282 IF(iglob==1.) THEN
283 WRITE(iugeo,'(A)')'/INIBRI/ORTHO_FGLO'
284 ELSE
285 WRITE(iugeo,'(A)')'/INIBRI/ORTHO'
286 ENDIF
287 WRITE(iugeo,'(A)')
288 . '# BRICKID NLAY ISOLNOD IGTYP JJHBE'
289 WRITE(iugeo,'(A)')
290 .'#------------------------ REPEAT --------------------------'
291 IF(iglob==1.OR.(igtyp /= 21 .AND. igtyp /= 22)) THEN
292 WRITE(iugeo,'(A)')
293 . '# X1, Y1, Z1, X2, Y2'
294 WRITE(iugeo,'(A)')
295 . '# Z2'
296 ELSE
297 WRITE(iugeo,'(A)')
298 . '# COS(PHI), SIN(PHI)'
299 ENDIF
300 WRITE(iugeo,'(A)')
301 .'#---------------------- END REPEAT ------------------------'
302 WRITE(iugeo,'(A)') delimit
303 ELSE
304 WRITE(line,'(A)') delimit
306 IF(iglob==1.) THEN
307 WRITE(line,'(A)')'/INIBRI/ORTHO_FGLO'
308 ELSE
309 WRITE(line,'(A)')'/INIBRI/ORTHO'
310 ENDIF
312 WRITE(line,'(A)')
313 . '#------------------------ REPEAT --------------------------'
315 WRITE(line,'(A)')
316 . '# BRICKID NLAY ISOLNOD IGTYP JJHBE'
318 IF(igtyp /= 21 .AND. igtyp /= 22) THEN
319 WRITE(line,'(A)')
320 . '# X1, Y1, Z1, X2, Y2'
322 WRITE(line,'(A)')
323 . '# Z2'
325 ELSE
326 WRITE(line,'(A)')
327 . '# COS(PHI), SIN(PHI)'
329 ENDIF
330 WRITE(line,'(A)')
331 . '#------------------------ REPEAT --------------------------'
333 WRITE(line,'(A)') delimit
335 END IF
336 iprt0=iprt
337 END IF
338 IF(isorth == 1)THEN
339 IF (izipstrs == 0) THEN
340 WRITE(iugeo,
'(5I10)')
id,nlay,isolnod,igtyp,jhbe
341 ELSE
342 WRITE(line,
'(5I10)')
id,nlay,isolnod,igtyp,jhbe
344 ENDIF
345 j = j + 11
346 IF(iglob==1.OR.(igtyp /= 21 .AND. igtyp /= 22)) THEN
347 jj = j
348 DO i=1,nlay
349 IF (izipstrs == 0) THEN
350 WRITE(iugeo,'(1P5E20.13)')(wap0(jj + k),k=1,5)
351 WRITE(iugeo,'(1PE20.13)')(wap0(jj + k),k=6,6)
352 ELSE
355 ENDIF
356 jj = jj + 6
357 ENDDO
358 ELSE
359 jj = j
360 DO i=1,nlay
361 IF (izipstrs == 0) THEN
362 WRITE(iugeo,'(1P2E20.13)')(wap0(jj + k),k=1,2)
363 ELSE
365 ENDIF
366 jj = jj + 6
367 ENDDO
368
369 ENDIF
370 ENDIF
371 ENDIF
372 ENDDO
373 ENDIF
374
375 DEALLOCATE(ptwa)
376 DEALLOCATE(ptwa_p0)
377
378 RETURN
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine spmd_rgather9_dp(v, len, vp0, lenp0, iad)
subroutine spmd_stat_pgather(ptv, ptlen, ptv_p0, ptlen_p0)
subroutine srotorth(x, ixs, gama, khbe, ityp, icsig)
subroutine strs_txt50(text, length)
subroutine tab_strs_txt50(wap0, cpt, j, sizp0, nbpline)