34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "task_c.inc"
42#include "com01_c.inc"
43#include "com04_c.inc"
44#include "param_c.inc"
45#include "scr17_c.inc"
46#include "scr18_c.inc"
47#include "spmd_c.inc"
48#include "units_c.inc"
49
50
51
53 . v(3,*),ms(*),ms0(*),pm(npropm,*),partsav(npsav,*)
54 INTEGER
55 . NODGLOB(*),WEIGHT(*),ITAB(*),PARAM,
56 . IPART(LIPART1,*),IGEO(NPROPGI,*)
57
58
59
60 INTEGER
61 . I,J,K,LENG,FLAG,ISMASSCHANGE,PROPID,MATID
63 . maxvel(param),vel,
64 . maxencin(param),encin,vel2,
65 . maxmass(param),mass,
66 . maxdmass(param),dmass,
67 . maxenint(param),enint
68 INTEGER
69 . IDNOD(PARAM),IDPART(PARAM)
70
71 IF(ispmd == 0) WRITE(iout,3000)
72 IF(ispmd == 0) WRITE(iout,3100)
73
75
76 idpart = 0
77 maxencin = zero
78 DO i=1,npart
79 flag = 0
80 encin= partsav(2,i)
81 DO j=1,param
82 IF(encin > maxencin(j) .AND. flag == 0) THEN
83 DO k=1,param-j
84 idpart(param-k+1) = idpart
85 maxencin(param-k+1) = maxencin(param-k)
86 ENDDO
87 idpart(j) = i
88 maxencin(j) = encin
89 flag = 1
90 ENDIF
91 ENDDO
92 ENDDO
93 IF(ispmd == 0) WRITE(iout,3000)
94 IF(ispmd == 0) WRITE(iout,1800)
95 IF(ispmd == 0) WRITE(iout,3000)
96 IF(ispmd == 0) WRITE(iout,1801)
97
98 DO i=1,param
99 IF(maxencin(i) /= zero) THEN
100 matid = nint(pm(19,ipart(1,idpart(i))))
101 propid = igeo(11,ipart(2,idpart(i)))
102 WRITE(iout,1900)ipart(4,idpart(i)),maxencin(i),
103 . ipart(6,idpart(i)),propid,
104 . ipart(5,idpart(i)),matid
105 ENDIF
106 ENDDO
107
108 1800 FORMAT('*** PARTS WITH HIGHEST KINETIC ENERGY')
109 1801 FORMAT(' PART_ID K-ENERGY PROP_ID PROP_TYPE MAT_ID
110 . MAT_TYPE')
111 1900 FORMAT(i10,g11.4,4i10)
112
113 idpart = 0
114 maxenint = zero
115 DO i=1,npart
116 flag = 0
117 enint= partsav(1,i)+partsav(24,i)+partsav(26,i)
118 DO j=1,param
119 IF(enint > maxenint(j) .AND. flag == 0) THEN
120 DO k=1,param-j
121 idpart(param-k+1) = idpart(param-k)
122 maxenint(param-k+1) = maxenint(param-k)
123 ENDDO
124 idpart(j) = i
125 maxenint(j) = enint
126 flag = 1
127 ENDIF
128 ENDDO
129 ENDDO
130 IF(ispmd == 0) WRITE(iout,3000)
131 IF(ispmd == 0) WRITE(iout,2000)
132 IF(ispmd == 0) WRITE(iout,3000)
133 IF(ispmd == 0) WRITE(iout,2001)
134 DO i=1,param
135 IF(maxenint(i) /= zero) THEN
136 matid = nint(pm(19,ipart(1,idpart(i))))
137 propid = igeo(11,ipart(2,idpart(i)))
138 WRITE(iout,2100)ipart(4,idpart(i)),maxenint(i),
139 . ipart(6,idpart(i)),propid,
140 . ipart(5,idpart(i)),matid
141 ENDIF
142 ENDDO
143
144 2000 FORMAT('*** PARTS WITH HIGHEST INTERNAL ENERGY')
145 2001 FORMAT(' PART_ID I-ENERGY PROP_ID PROP_TYPE MAT_ID
146 . MAT_TYPE')
147 2100 FORMAT(i10,g11.4,4i10)
148
149 idnod = 0
150 maxvel = zero
151 IF (nspmd == 1) THEN
152 DO i=1,numnod
153 flag = 0
154 vel=sqrt(v(1,i)**2+v(2,i)**2+v(3,i)**2)
155 DO j=1,param
156 IF(vel > maxvel(j) .AND. flag == 0) THEN
157 DO k=1,param-j
158 idnod(param-k+1) = idnod(param-k)
159 maxvel(param-k+1) = maxvel(param-k)
160 ENDDO
161 idnod(j) = i
162 maxvel(j) = vel
163 flag = 1
164 ENDIF
165 ENDDO
166 ENDDO
167 WRITE(iout,3000)
168 WRITE(iout,1000)
169 WRITE(iout,3000)
170 WRITE(iout,1001)
171 DO i=1,param
172 IF(maxvel(i) /= zero)THEN
173 encin = half * ms(idnod(i))*maxvel(i)**2
174 WRITE(iout,1100) itab(idnod(i)),maxvel(i),encin,
175 . ms(idnod(i)),ms0(idnod(i)),
176 . (ms(idnod(i))-ms0(idnod(i)))/
max(em20,ms0(idnod(i)))
177 ENDIF
178 ENDDO
179 ELSE
180 IF (ispmd==0) THEN
181 leng = numnodg
182 ELSE
183 leng = 0
184 ENDIF
186 ENDIF
187 1000 FORMAT('*** NODES WITH HIGHEST VELOCITY')
188 1001 FORMAT(' NODE VELOCITY K-ENER MASS MASS0
189 . DM/MASS0')
190 1100 FORMAT(i10,5g11.4)
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270 idnod = 0
271 maxdmass = zero
272 IF(idtmin(11) == 3 .OR. idtmin(11) == 8) THEN
273 IF (nspmd == 1) THEN
274 DO i=1,numnod
275 flag = 0
276 dmass=(ms(i)-ms0(i))/
max(ms0(i),em20)
277 DO j=1,param
278 IF(dmass > maxdmass(j) .AND. flag == 0) THEN
279 DO k=1,param-j
280 idnod(param-k+1) = idnod(param-k)
281 maxdmass(param-k+1) = maxdmass(param-k)
282 ENDDO
283 idnod(j) = i
284 maxdmass(j) = dmass
285 flag = 1
286 ENDIF
287 ENDDO
288 ENDDO
289 ismasschange = 0
290 DO i=1,param
291 IF(maxdmass(i) /=zero) ismasschange = 1
292 ENDDO
293 IF(ismasschange /= 0)THEN
294 WRITE(iout,3000)
295 WRITE(iout,1600)
296 WRITE(iout,3000)
297 WRITE(iout,1601)
298 DO i=1,param
299 IF(maxdmass(i) /= zero)
300 . WRITE(iout,1700) itab(idnod(i)),ms(idnod(i)),ms0(idnod(i)),
301 . maxdmass(i)
302 ENDDO
303 ENDIF
304 ELSE
305 IF (ispmd==0) THEN
306 leng = numnodg
307 ELSE
308 leng = 0
309 ENDIF
311 ENDIF
312 ENDIF
313 IF(ispmd == 0) CALL flush(iout)
314
315 1600 FORMAT('*** NODES WITH HIGHEST MASS CHANGE')
316 1601 FORMAT(' NODE MASS MASS0 DM/MASS0')
317 1700 FORMAT(i10,3g11.4)
318
319 3000 FORMAT(' ')
320 3100 FORMAT(' ** STATISTICS **')
321
322 RETURN
subroutine spmd_glob_dsum9(v, len)
subroutine spmd_vgath_err(x, ms, msini, nodglob, weight, num, iflag, itab, leng)