40
41
42
43 USE elbufdef_mod
44 USE my_alloc_mod
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "com01_c.inc"
53#include "param_c.inc"
54#include "units_c.inc"
55#include "scr14_c.inc"
56#include "scr16_c.inc"
57#include "task_c.inc"
58
59
60
61 INTEGER SIZLOC,SIZP0
62 INTEGER IXP(NIXP,*),
63 . IPARG(NPARG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*),
64 . IPARTP(*),IPART_STATE(*),STAT_INDXP(*)
65 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
66 double precision WA(*),WAP0(*)
67
68
69
70 INTEGER I,N,J,K,JJ,LEN,IOFF,NG,NEL,NFT,ITY,LFT,LLT,ID,IPRT0,IPRT,IE,
71 . NPT,IR,IS,IPT,IL,IVAR,NUVAR,MY_NUVAR,IGTYP,IPROP,MLW
72 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA
73 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA_P0
74 CHARACTER*100 DELIMIT,LINE
75 TYPE(G_BUFEL_) ,POINTER :: GBUF
77 . DIMENSION(:) ,POINTER :: uvar
78
79 DATA delimit(1:60)
80 ./'#---1----|----2----|----3----|----4----|----5----|----6----|'/
81 DATA delimit(61:100)
82 ./'----7----|----8----|----9----|----10---|'/
83
84
85
86 CALL my_alloc(ptwa,stat_numelp)
87 ALLOCATE(ptwa_p0(0:
max(1,stat_numelp_g)))
88
89 jj = 0
90
91 IF (stat_numelp /= 0) THEN
92
93 ie=0
94 DO ng=1,ngroup
95 ity = iparg(5,ng)
96 IF (ity == 5) THEN
97 gbuf => elbuf_tab(ng)%GBUF
98 mlw = iparg(1,ng)
99 nel = iparg(2,ng)
100 nft = iparg(3,ng)
101 npt = iparg(6,ng)
102 iprop = ixp(5,nft+1)
103 igtyp = igeo(11,iprop)
104 lft=1
105 llt=nel
106
107 DO i=lft,llt
108 n = i + nft
109 iprt=ipartp(n)
110 IF (ipart_state(iprt) /= 0) THEN
111 wa(jj + 1) = gbuf%OFF(i)
112 wa(jj + 2) = iprt
113 wa(jj + 3) = ixp(nixp,n)
114 wa(jj + 4) = igtyp
115 wa(jj + 5) = npt
116 jj = jj + 5
117
118 IF (mlw == 36) THEN
119
120 my_nuvar = ipm(8,ixp(1,n))
121 jj = jj + 1
122 wa(jj) = my_nuvar
123
124 DO ipt=1,npt
125 il = 1
126 ir = 1
127 is = 1
128
129 uvar => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,ipt)%VAR
130 DO ivar=1,my_nuvar
131 jj = jj + 1
132 wa(jj) = uvar((ivar-1)*nel + i)
133 ENDDO
134 ENDDO
135
136 ELSE
137
138 my_nuvar = 0
139 jj = jj + 1
140 wa(jj) = my_nuvar
141 ENDIF
142
143 ie=ie+1
144
145 ptwa(ie)=jj
146 ENDIF
147 ENDDO
148 ENDIF
149 ENDDO
150 ENDIF
151
152
153
154 IF (nspmd == 1) THEN
155
156 ptwa_p0(0)=0
157 DO n=1,stat_numelp
158 ptwa_p0(n)=ptwa(n)
159 ENDDO
160 len=jj
161 DO j=1,len
162 wap0(j)=wa(j)
163 ENDDO
164 ELSE
165
167 len = 0
169 END IF
170
171 IF (ispmd == 0 .AND. len > 0) THEN
172 iprt0 = 0
173 DO n=1,stat_numelp_g
174
175 k=stat_indxp(n)
176
177 j=ptwa_p0(k-1)
178
179 ioff = nint(wap0(j + 1))
180 my_nuvar = nint(wap0(j + 6))
181 IF (ioff >= 1 .AND. my_nuvar /= 0) THEN
182 iprt = nint(wap0(j + 2))
183 IF (iprt /= iprt0) THEN
184 IF (izipstrs == 0) THEN
185 WRITE(iugeo,'(A)') delimit
186 WRITE(iugeo,'(A)')'/INIBEAM/AUX'
187 WRITE(iugeo,'(A)')
188 .'#------------------------ REPEAT --------------------------'
189 WRITE(iugeo,'(A)')
190 . '# BEAMID NPT PROP_TYPE NVAR'
191 WRITE(iugeo,'(A/A)')
192 .'# THE CONTENT OF THE FOLLOWING CARDS WILL NOT BE DISCLOSED',
193 .'# THEY MUST NOT BE CHANGED.'
194 WRITE(iugeo,'(A)')
195 .'#---------------------- END REPEAT ------------------------'
196 WRITE(iugeo,'(A)') delimit
197 ELSE
198 WRITE(line,'(A)') delimit
200 WRITE(line,'(A)')'/INIBEAM/AUX'
202 WRITE(line,'(A)')
203 .'#------------------------ REPEAT --------------------------'
205 WRITE(line,'(A)')
206 . '# BEAMID NPT PROP_TYPE NVAR'
208 WRITE(line,'(A)')
209 .'# THE CONTENT OF THE FOLLOWING CARDS WILL NOT BE DISCLOSED'
211 WRITE(line,'(A)')
212 .'# THEY MUST NOT BE CHANGED.'
214 WRITE(line,'(A)')
215 .'#---------------------- END REPEAT ------------------------'
217 WRITE(line,'(A)') delimit
219 ENDIF
220 iprt0=iprt
221 ENDIF
222 id = nint(wap0(j + 3))
223 igtyp = nint(wap0(j + 4))
224 npt = nint(wap0(j + 5))
225 my_nuvar = nint(wap0(j + 6))
226 j = j + 6
227 IF (izipstrs == 0) THEN
228 WRITE(iugeo,
'(4I10)')
id,npt,igtyp,my_nuvar
229 ELSE
230 WRITE(line,
'(4I10)')
id,npt,igtyp,my_nuvar
232 ENDIF
233 DO jj=1,npt
234 IF (izipstrs == 0) THEN
235 WRITE(iugeo,'(1P5E20.13)')(wap0(j + k),k=1,my_nuvar)
236 ELSE
238 ENDIF
239 j=j+my_nuvar
240 ENDDO
241 ENDIF
242 ENDDO
243 ENDIF
244
245 DEALLOCATE(ptwa)
246 DEALLOCATE(ptwa_p0)
247
248 RETURN
subroutine spmd_rgather9_dp(v, len, vp0, lenp0, iad)
subroutine spmd_stat_pgather(ptv, ptlen, ptv_p0, ptlen_p0)
subroutine strs_txt50(text, length)
subroutine tab_strs_txt50(wap0, cpt, j, sizp0, nbpline)