35
36
37
39 USE user_interface_mod
41 USE output_mod , ONLY : output_
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "task_c.inc"
50#include "com01_c.inc"
51#include "com04_c.inc"
52#include "com08_c.inc"
53#include "com10_c.inc"
54#include "commandline.inc"
55#include "scr02_c.inc"
56#include "scr11_c.inc"
57#include "spmd_c.inc"
58#include "chara_c.inc"
59#include "drape_c.inc"
60#include "submodel.inc"
61
62
63
64 INTEGER IH3DREADER,N,IMVW
66
67
68
69 INTEGER IOUTREP,LEN_CWD, OUT_TMP, IS_MESSAGE, IS_WARNING,IS_FILE_FOUND, IEND
70 INTEGER*4 GETCWD, STATUS
71 CHARACTER FILNAM*100,MVWNAM*100
72 CHARACTER(LEN=LPATH) :: CWD
73 CHARACTER*8 DATE
74 CHARACTER*10 TIME
75 CHARACTER ELTYP(0:105)*5
76 CHARACTER*256 OUTNAME
77 CHARACTER*120 CART
78 my_real entot, entot1, err, err1, x99, emass,entot1b,dm_inout,de_inout
79 DOUBLE PRECISION ENTOTB
80 INTEGER :: LEN_TMP_NAME
81 CHARACTER(len=2148) :: TMP_NAME
82 TYPE(OUTPUT_),INTENT(IN) :: OUTPUT
83
84 DATA eltyp/'FIXED',
85 1 'SOLID','QUAD ','SHELL','TRUSS','BEAM ',
86 2 'SPRIN','SH_3N',' ','AIRBA','INTER',
87 3 'NODE ',' ',' ',' ',' ',
88 4 ' ',' ',' ',' ',' ',
89 5 ' ',' ',' ',' ',' ',
90 6 ' ',' ',' ',' ',' ',
91 7 ' ',' ',' ',' ',' ',
92 8 ' ',' ',' ',' ',' ',
93 9 ' ',' ',' ',' ',' ',
94 a ' ',' ',' ',' ',' ',
95 b 'SPCEL','FVBAG',' ',' ',' ',
96 c ' ',' ',' ',' ',' ',
97 d ' ',' ',' ',' ',' ',
98 e ' ',' ',' ',' ',' ',
99 f ' ',' ',' ',' ',' ',
100 g ' ',' ',' ',' ',' ',
101 h ' ',' ',' ',' ',' ',
102 i ' ',' ',' ',' ',' ',
103 j ' ',' ',' ',' ',' ',
104 k ' ',' ',' ',' ','XELEM',
105 k 'IGE3D',' ',' ',' ',' '/
106
107 DATA x99/99.9/
108
109 out_tmp = 777777
110 IF(ispmd == 0) THEN
111
112 entot = encin + enint + enrot
113 entotb = entot + encin2 + enrot2
114 de_inout = output%DATA%INOUT%DE_IN + output%DATA%INOUT%DE_OUT
115 entot1=entot0 + wfext + de_inout
116 entot1b=entot0 + wfext + deltae + wfext_md + de_inout
117 IF(abs(entot1b)>em20)THEN
118 err = entotb/entot1b - one
119 err1 =
max(-x99,
min(x99,err*hundred))
120 ELSE
121 err = zero
122 err1 =zero
123 ENDIF
124 dm_inout = output%DATA%INOUT%DM_IN + output%DATA%INOUT%DM_OUT
125 emass = (xmass - (mass0+dm_inout)) / (mass0+dm_inout)
126
127 CALL date_and_time(date,time)
128 status = getcwd(cwd)
129 len_cwd = len_trim(cwd)
130 filnam=rootnam(1:rootlen)//'_report.html'
131 mvwnam=rootnam(1:rootlen)//'.mvw'
132 ioutrep = 123124
133
136
137 OPEN(unit=ioutrep,file=tmp_name(1:len_tmp_name),
138 . access='SEQUENTIAL',
139 . form='FORMATTED',status='UNKNOWN')
140
141 WRITE(ioutrep,'(A)')'<html>'
142 WRITE(ioutrep,'(A)')'<head>'
143 IF(got_inspire_alm == 1)THEN
144 WRITE(ioutrep,'(A,I4,A)')'<title>Altair Solver ',2022,' Report</title>'
145 ELSE
146 WRITE(ioutrep,'(A,I4,A)')'<title>Altair Radioss(TM) ',2022,' Report</title>'
147 ENDIF
148 WRITE(ioutrep,'(A)')'<script language="JavaScript">'
149 WRITE(ioutrep,'(A)')'function h3d()'
150 WRITE(ioutrep,'(A)')'{'
151 WRITE(ioutrep,'(A)')'winProps = "height=600,width=520,location=no,scrollbars=no,menubars=no,toolbars=no,
152 . status=no,resizable=yes";'
153 WRITE(ioutrep,'(A,A,A)')'window.open("',rootnam(1:rootlen),'_frames.html","H3D",winProps);'
154 WRITE(ioutrep,'(A)')'}'
155 WRITE(ioutrep,'(A)')'</script>'
156 WRITE(ioutrep,'(A)')'</head>'
157 WRITE(ioutrep,'(A)')' '
158 WRITE(ioutrep,'(A)')'<body bgcolor="#FFFFFF" text="#000000">'
159 WRITE(ioutrep,'(A)')' '
160 WRITE(ioutrep,'(A)')'<table>'
161 WRITE(ioutrep,'(A)')'<tr>'
162 WRITE(ioutrep,'(A)')'<td>'
163 IF(GOT_INSPIRE_ALM == 1)THEN
164 WRITE(IOUTREP,'(a,i10,a)
')'<font face=
"Arial" size=
"5"><b><i>altair solver
',2022,' report</i></b></font><br>
'
165 ELSE
166 WRITE(IOUTREP,'(a,i10,a)
')'<font face=
"Arial" size=
"5"><b><i>altair
radioss(tm)
',2022,' report</i></b></font><br>
'
167 ENDIF
168 WRITE(IOUTREP,'(a)')'<font face="Arial" size="4"><b><i> </i></b></font>'
169 WRITE(IOUTREP,'(a)')'</td></tr>'
170 WRITE(IOUTREP,'(a)')'</table>'
171 WRITE(IOUTREP,'(a)')' '
172 WRITE(IOUTREP,'(a)')'<hr size="3" color="#000000" noshade>'
173 WRITE(IOUTREP,'(a)')'<font face="Arial" size="2">'
174 WRITE(ioutrep,'(11A)')'Run submitted ',date(1:4),'/',date(5:6),'/',date(7:8),' , ',time(1:2),'h',time(3:4),'mn'
175 WRITE(ioutrep,'(A)')'<p>'
176 IF(got_inspire_alm == 1)THEN
177 WRITE(ioutrep,'(4A)')'Solver Input file : ',cwd(1:len_cwd),'/',rootnam(1:rootlen),'_0000.rad'
178 WRITE(ioutrep,'(A)')'<p>'
179 WRITE(ioutrep,'(4A)')'Solver Input file : ',cwd(1:len_cwd),'/',rootnam(1:rootlen),'_0001.rad'
180 WRITE(ioutrep,'(A)')'<p>'
181 ELSE
182 WRITE(ioutrep,'(4A)')'Starter Input file : ',cwd(1:len_cwd),'/',rootnam(1:rootlen),'_0000.rad'
183 WRITE(ioutrep,'(A)')'<p>'
184 WRITE(ioutrep,'(4A)')'Engine Input file : ',cwd(1:len_cwd),'/',rootnam(1:rootlen),'_0001.rad'
185 WRITE(ioutrep,'(A)')'<p>'
186 ENDIF
187 WRITE(ioutrep,'(A)')'<br>'
188 WRITE(ioutrep,'(A)')' '
189 WRITE(ioutrep,'(A)')'<font face="Arial" size="4"><b><i>Run summary</i></b></font>'
190 WRITE(ioutrep,'(A)')'<hr size="1" color="#000000" noshade>'
191 WRITE(ioutrep,'(A)')'<p>'
192 WRITE(ioutrep,'(A)')' '
193 WRITE(ioutrep,'(A)')'<li type="square">'
194 WRITE(ioutrep,'(A)')'<font face="Arial" size="3"><b>Finite element model information</b></font>'
195 WRITE(ioutrep,'(A)')'<font face="Arial" size="2">'
196 WRITE(ioutrep,'(A)')'<ul>'
197 WRITE(ioutrep,'(A)')'<table cellspacing="0" cellpadding="0">'
198
199
200 WRITE(ioutrep,'(A)')'<p>'
201 WRITE(ioutrep,'(A)')'<li><b>Model Information</b>'
202 WRITE(ioutrep,'(A)')'<table cellspacing="0" cellpadding="0">'
203 WRITE(ioutrep,'(A)')'<tr>'
204 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of parts: </td>'
205 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',npart,'</td>'
206 WRITE(ioutrep,'(A)')'</tr>'
207 IF(nummat-1 >= 1)THEN
208 WRITE(ioutrep,'(A)')'<tr>'
209 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of Material laws: </td>'
210 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',nummat-1,'</td>'
211 WRITE(ioutrep,'(a)')'</tr>'
212 ENDIF
213 IF(NUMGEO /= 0)THEN
214 WRITE(IOUTREP,'(a)')'<tr>'
215 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of properties: </td>'
216 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMGEO,'</td>'
217 WRITE(IOUTREP,'(a)')'</tr>'
218 ENDIF
219 IF(NFUNCT /= 0)THEN
220 WRITE(IOUTREP,'(a)')'<tr>'
221 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of functions: </td>'
222 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NFUNCT,'</td>'
223 WRITE(IOUTREP,'(a)')'</tr>'
224 ENDIF
225 WRITE(IOUTREP,'(a)')'</table>'
226 WRITE(IOUTREP,'(a)')' '
227
228
229 WRITE(IOUTREP,'(a)')'<p>'
230 WRITE(IOUTREP,'(a)')'<li><b>mesh information</b>'
231 WRITE(IOUTREP,'(a)')'<table cellspacing="0" cellpadding="0">'
232 WRITE(IOUTREP,'(a)')'<tr>'
233 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of nodes: </td>'
234 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMNODG,'</td>'
235 WRITE(IOUTREP,'(a)')'</tr>'
236 WRITE(IOUTREP,'(a)')'<tr>'
237 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of elements: </td>'
238 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMELQG+NUMELSG+NUMELCG+NUMELTG+NUMELPG+NUMELRG,'</td>'
239 WRITE(IOUTREP,'(a)')'</tr>'
240 WRITE(IOUTREP,'(a)')'<tr>'
241 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of parts: </td>'
242 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NPART,'</td>'
243 WRITE(IOUTREP,'(a)')'</tr>'
244 IF(NRBODY /= 0)THEN
245 WRITE(IOUTREP,'(a)')'<tr>'
246 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of rigid bodies: </td>'
247 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NRBODY,'</td>'
248 WRITE(IOUTREP,'(a)')'</tr>'
249 ENDIF
250 IF(NRBE2G /= 0)THEN
251 WRITE(IOUTREP,'(a)')'<tr>'
252 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of Rbe2s: </td>'
253WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',nrbe2g,'</td>'
254 WRITE(ioutrep,'(A)')'</tr>'
255 ENDIF
256 IF(nrbe3g /= 0)THEN
257 WRITE(ioutrep,'(A)')'<tr>'
258 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of Rbe3s: </td>'
259 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',nrbe3g,'</td>'
260 WRITE(ioutrep,'(A)''</tr>'
261 ENDIF
262 WRITE(ioutrep,'(A)')'</table>'
263 WRITE(ioutrep,'(A)')' '
264 WRITE(ioutrep,'(A)')'<p>'
265 WRITE(ioutrep,'(A)')'<li><b>Elements</b>'
266 WRITE(ioutrep,'(A)')'<table cellspacing="0" cellpadding="0">'
267 IF(numelqg /= 0)THEN
268 WRITE(ioutrep,'(A)')'<tr>'
269 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of 2D solid elements: </td>'
270 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',numelqg,'</td>'
271 WRITE(ioutrep,'(A)')'</tr>'
272 ENDIF
273 IF(numelsg /= 0)THEN
274 WRITE(ioutrep,'(A)')'<tr>'
275 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of 3D solid elements (TETRA4 & BRICK): </td>'
276 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',numelsg,'</td>'
277 WRITE(ioutrep,'(A)')'</tr>'
278 ENDIF
279 IF(numels10g /= 0)THEN
280 WRITE(ioutrep,'(A)')'<tr>'
281 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of 3D solid elements (TETRA10): </td>'
282 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',numels10g,'</td>'
283 WRITE(ioutrep,'(A)')'</tr>'
284 ENDIF
285 IF(numels16g /= 0)THEN
286 WRITE(ioutrep,'(A)')'<tr>'
287 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">number of 3d solid elements(solid16): </td>'
288 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMELS16G,'</td>'
289 WRITE(IOUTREP,'(a)')'</tr>'
290 ENDIF
291 IF(NUMELS20G /= 0)THEN
292 WRITE(IOUTREP,'(a)')'<tr>'
293 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of 3d solid elements(solid20): </td>'
294 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMELS20G,'</td>'
295 WRITE(IOUTREP,'(a)')'</tr>'
296 ENDIF
297 IF(NUMELCG /= 0)THEN
298 WRITE(IOUTREP,'(a)')'<tr>'
299 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of 3d shell elements(4-nodes): </td>'
300 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',numelcg,'</td>'
301 WRITE(ioutrep,'(A)')'</tr>'
302 ENDIF
303 IF(numeltgg /= 0)THEN
304 WRITE(ioutrep,'(A)')'<tr>'
305 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of 3D shell elements (3-NODES): </td>'
306 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',numeltgg,'</td>'
307 WRITE(ioutrep,'(A)')'</tr>'
308 ENDIF
309 IF(numeltrg /= 0)THEN
310 WRITE(ioutrep,'(A)')'<tr>'
311 WRITE(ioutrep,'(A)')'<td><font face="Arial" size="2">Number of 3D truss elements: </td>'
312 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',numeltrg,'</td>'
313 WRITE(ioutrep,'(a)')'</tr>'
314 ENDIF
315 IF(NUMELPG /= 0)THEN
316 WRITE(IOUTREP,'(a)')'<tr>'
317 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of 3d beam elements: </td>'
318 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMELPG,'</td>'
319 WRITE(IOUTREP,'(a)')'</tr>'
320 ENDIF
321 IF(NUMELRG /= 0)THEN
322 WRITE(IOUTREP,'(a)')'<tr>'
323 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of 3d spring elements: </td>'
324 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMELRG,'</td>'
325 WRITE(IOUTREP,'(a)')'</tr>'
326 ENDIF
327 IF(NUMELXG /= 0)THEN
328 WRITE(IOUTREP,'(a)')'<tr>'
329 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of multipurpose elements: </td>'
330 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMELXG,'</td'
331 WRITE(IOUTREP,'(a)')'</tr>'
332 ENDIF
333 IF(NUMELIG3D /= 0)THEN
334 WRITE(IOUTREP,'(a)')'<tr>'
335 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">number of iso-geometrics elements: </td>'
336 WRITE(IOUTREP,'(a,i10,a)')'<td><font face="Arial" size="2">',NUMELIG3D,'</td>'
337 WRITE(IOUTREP,'(a)')'</tr>'
338 ENDIF
339 IF(NUMSPHG /= 0)THEN
340 WRITE(IOUTREP,'(a)')'<tr>'
341 WRITE(IOUTREP,'(a)')'<td><font face="Arial" size="2">Number of smooth particles (SPH CELLS): </td>'
342 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NUMSPHG,'</td>'
343 WRITE(IOUTREP,'(A)')'</tr>'
344 ENDIF
345 WRITE(IOUTREP,'(A)')'</table>'
346 WRITE(IOUTREP,'(A)')' '
347
348 WRITE(IOUTREP,'(A)')'<p>'
349 WRITE(IOUTREP,'(A)')'<li><b>Loads and boundaries</b>'
350 WRITE(IOUTREP,'(A)')'<table cellspacing="0" cellpadding="0">'
351 IF(NUMBCS /= 0)THEN
352 WRITE(IOUTREP,'(A)')'<tr>'
353 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of Boundary conditions : </td>'
354 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NUMBCS,'</td>'
355 WRITE(IOUTREP,'(A)')'</tr>'
356 ENDIF
357 IF(NCONLD /= 0)THEN
358 WRITE(IOUTREP,'(A)')'<tr>'
359 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of cloads : </td>'
360 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NCONLD,'</td>'
361 WRITE(IOUTREP,'(A)')'</tr>'
362 ENDIF
363 IF(NINTER /= 0)THEN
364 WRITE(IOUTREP,'(A)')'<tr>'
365 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of interfaces : </td>'
366 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NINTER,'</td>'
367 WRITE(IOUTREP,'(A)')'</tr>'
368 ENDIF
369 IF(NFXBODY /= 0)THEN
370 WRITE(IOUTREP,'(A)')'<tr>'
371 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of flexible bodies : </td>'
372 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NFXBODY,'</td>'
373 WRITE(IOUTREP,'(A)')'</tr>'
374 ENDIF
375 IF(NGRAV /= 0)THEN
376 WRITE(IOUTREP,'(A)')'<tr>'
377 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of gravities : </td>'
378 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRAV,'</td>'
379 WRITE(IOUTREP,'(A)')'</tr>'
380 ENDIF
381 IF(NFXVEL /= 0)THEN
382 WRITE(IOUTREP,'(A)')'<tr>'
383 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of imposed disp/vel/acc : </td>'
384 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NFXVEL,'</td>'
385 WRITE(IOUTREP,'(A)')'</tr>'
386 ENDIF
387 IF(NINVEL /= 0)THEN
388 WRITE(IOUTREP,'(A)')'<tr>'
389 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of Initial velocities : </td>'
390 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NINVEL,'</td>'
391 WRITE(IOUTREP,'(A)')'</tr>'
392 ENDIF
393 IF(NVOLU /= 0)THEN
394 WRITE(IOUTREP,'(A)')'<tr>'
395 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of monitored volumes: </td>'
396 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NVOLU,'</td>'
397 WRITE(IOUTREP,'(A)')'</tr>'
398 ENDIF
399 IF(NRWALL /= 0)THEN
400 WRITE(IOUTREP,'(A)')'<tr>'
401 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of Rigid walls: </td>'
402 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NRWALL,'</td>'
403 WRITE(IOUTREP,'(A)')'</tr>'
404 ENDIF
405 WRITE(IOUTREP,'(A)')'</table>'
406 WRITE(IOUTREP,'(A)')' '
407 WRITE(IOUTREP,'(A)')'<p>'
408
409 WRITE(IOUTREP,'(A)')'<p>'
410 IF(GOT_INSPIRE_ALM == 1)THEN
411 WRITE(IOUTREP,'(A)')'<li><b>Solver tools</b>'
412 ELSE
413 WRITE(IOUTREP,'(A)')'<li><b>Radioss tools</b>'
414 ENDIF
415 WRITE(IOUTREP,'(A)')'<table cellspacing="0" cellpadding="0">'
416 IF(NCLUSTER /= 0)THEN
417 WRITE(IOUTREP,'(A)')'<tr>'
418 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of Clusters: </td>'
419 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NCLUSTER,'</td>'
420 WRITE(IOUTREP,'(A)')'</tr>'
421 ENDIF
422 IF(NDRAPE /= 0)THEN
423 WRITE(IOUTREP,'(A)')'<tr>'
424 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of drapes: </td>'
425 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NDRAPE,'</td>'
426 WRITE(IOUTREP,'(A)')'</tr>'
427 ENDIF
428 IF(NUMPLY /= 0)THEN
429 WRITE(IOUTREP,'(A)')'<tr>'
430 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of plies: </td>'
431 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NUMPLY,'</td>'
432 WRITE(IOUTREP,'(A)')'</tr>'
433 ENDIF
434 IF(NUMSTACK /= 0)THEN
435 WRITE(IOUTREP,'(A)')'<tr>'
436 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of stacks: </td>'
437 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NUMSTACK,'</td>'
438 WRITE(IOUTREP,'(A)')'</tr>'
439 ENDIF
440 IF(NGRNOD /= 0)THEN
441 WRITE(IOUTREP,'(A)')'<tr>'
442 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of node groups: </td>'
443 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRNOD,'</td>'
444 WRITE(IOUTREP,'(A)')'</tr>'
445 ENDIF
446 IF(NGRBRIC /= 0)THEN
447 WRITE(IOUTREP,'(A)')'<tr>'
448 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of brick groups: </td>'
449 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRBRIC,'</td>'
450 WRITE(IOUTREP,'(A)')'</tr>'
451 ENDIF
452 IF(NGRQUAD /= 0)THEN
453 WRITE(IOUTREP,'(A)')'<tr>'
454 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of quad groups: </td>'
455 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRQUAD,'</td>'
456 WRITE(IOUTREP,'(A)')'</tr>'
457 ENDIF
458 IF(NGRSHEL /= 0)THEN
459 WRITE(IOUTREP,'(A)')'<tr>'
460 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of shell groups: </td>'
461 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRSHEL,'</td>'
462 WRITE(IOUTREP,'(A)')'</tr>'
463 ENDIF
464 IF(NGRSH3N /= 0)THEN
465 WRITE(IOUTREP,'(A)')'<tr>'
466 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of 3 node shell groups: </td>'
467 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRSH3N,'</td>'
468 WRITE(IOUTREP,'(A)')'</tr>'
469 ENDIF
470 IF(NGRTRUS /= 0)THEN
471 WRITE(IOUTREP,'(A)')'<tr>'
472 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of truss groups: </td>'
473 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRTRUS,'</td>'
474 WRITE(IOUTREP,'(A)')'</tr>'
475 ENDIF
476 IF(NGRBEAM /= 0)THEN
477 WRITE(IOUTREP,'(A)')'<tr>'
478 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of beam groups: </td>'
479 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRBEAM,'</td>'
480 WRITE(IOUTREP,'(A)')'</tr>'
481 ENDIF
482 IF(NGRSPRI /= 0)THEN
483 WRITE(IOUTREP,'(A)')'<tr>'
484 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of spring groups: </td>'
485 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRSPRI,'</td>'
486 WRITE(IOUTREP,'(A)')'</tr>'
487 ENDIF
488 IF(NGRPART /= 0)THEN
489 WRITE(IOUTREP,'(A)')'<tr>'
490 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of part groups: </td>'
491 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NGRPART,'</td>'
492 WRITE(IOUTREP,'(A)')'</tr>'
493 ENDIF
494 IF(NSURF /= 0)THEN
495 WRITE(IOUTREP,'(A)')'<tr>'
496 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of surface groups: </td>'
497 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NSURF,'</td>'
498 WRITE(IOUTREP,'(A)')'</tr>'
499 ENDIF
500 IF(NSLIN /= 0)THEN
501 WRITE(IOUTREP,'(A)')'<tr>'
502 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of line groups: </td>'
503 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NSLIN,'</td>'
504 WRITE(IOUTREP,'(A)')'</tr>'
505 ENDIF
506 IF(SENSORS%NSENSOR /= 0)THEN
507 WRITE(IOUTREP,'(A)')'<tr>'
508 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of sensors: </td>'
509 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',SENSORS%NSENSOR,'</td>'
510 WRITE(IOUTREP,'(A)')'</tr>'
511 ENDIF
512 IF(NUMSKW /= 0)THEN
513 WRITE(IOUTREP,'(A)')'<tr>'
514 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of skews: </td>'
515 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NUMSKW,'</td>'
516 WRITE(IOUTREP,'(A)')'</tr>'
517 ENDIF
518 IF(NUMFRAM /= 0)THEN
519 WRITE(IOUTREP,'(A)')'<tr>'
520 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of frames: </td>'
521 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NUMFRAM,'</td>'
522 WRITE(IOUTREP,'(A)')'</tr>'
523 ENDIF
524 IF(NSUBMOD /= 0)THEN
525 WRITE(IOUTREP,'(A)')'<tr>'
526 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of submodels: </td>'
527 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NSUBMOD,'</td>'
528 WRITE(IOUTREP,'(A)')'</tr>'
529 ENDIF
530 WRITE(IOUTREP,'(A)')'</table>'
531 WRITE(IOUTREP,'(A)')' '
532
533
534 WRITE(IOUTREP,'(A)')'<p>'
535 WRITE(IOUTREP,'(A)')'<li><b>Data history</b>'
536 WRITE(IOUTREP,'(A)')'<table cellspacing="0" cellpadding="0">'
537 IF(NTHGRP /= 0)THEN
538 WRITE(IOUTREP,'(A)')'<tr>'
539 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of th groups: </td>'
540 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NTHGRP,'</td>'
541 WRITE(IOUTREP,'(A)')'</tr>'
542 ENDIF
543 IF(NSECT /= 0)THEN
544 WRITE(IOUTREP,'(A)')'<tr>'
545 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of sections: </td>'
546 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NSECT,'</td>'
547 WRITE(IOUTREP,'(A)')'</tr>'
548 ENDIF
549 IF(NACCELM /= 0)THEN
550 WRITE(IOUTREP,'(A)')'<tr>'
551 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of accelerometers: </td>'
552 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NACCELM,'</td>'
553 WRITE(IOUTREP,'(A)')'</tr>'
554 ENDIF
555 IF(NBGAUGE /= 0)THEN
556 WRITE(IOUTREP,'(A)')'<tr>'
557 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Number of gauges: </td>'
558 WRITE(IOUTREP,'(A,I10,A)')'<td><font face="arial" size="2">',NBGAUGE,'</td>'
559 WRITE(IOUTREP,'(A)')'</tr>'
560 ENDIF
561 WRITE(IOUTREP,'(A)')'</table>'
562 WRITE(IOUTREP,'(A)')' '
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601 WRITE(IOUTREP,'(A)')'<p>'
602
603
604 OUTNAME = ROOTNAM(1:ROOTLEN)//'_0000.out'
605
606 IS_FILE_FOUND = 0
607
608 OPEN (UNIT=OUT_TMP,STATUS='OLD',FORM='FORMATTED',FILE=OUTNAME,ERR=100)
609 IS_FILE_FOUND = 1
610 IS_WARNING = 0
611 IS_MESSAGE = 0
612 IEND = 0
613 DO WHILE (IS_MESSAGE == 0)
614 READ(OUT_TMP,'(A)',END=100)CART
615 IF (CART(1:29) == ' TERMINATION WITH WARNING') IS_WARNING = 1
616 IF (CART(1:29) == '| ERROR(S) SUMMARY') IS_MESSAGE = 1
617 END DO
618
619 IF(IS_WARNING == 1)THEN
620 WRITE(IOUTREP,'(A)')' '
621 WRITE(IOUTREP,'(A)')'<li type="square">'
622 IF(GOT_INSPIRE_ALM == 1)THEN
623 WRITE(IOUTREP,'(A)')'<font face="arial" size="3"><b>Solver : Warning(s) :</b></font>'
624 ELSE
625 WRITE(IOUTREP,'(A)')'<font face="arial" size="3"><b>Starter : Warning(s) :</b></font>'
626 ENDIF
627 WRITE(IOUTREP,'(A)')'</li>'
628 WRITE(IOUTREP,'(A)')'<p>'
629 WRITE(IOUTREP,'(A)')'<table cellspacing="0" cellpadding="0">'
630 ENDIF
631
632 READ(OUT_TMP,'(A)',END=100)CART
633 DO WHILE (IEND /= 1)
634 WRITE(IOUTREP,'(A)')'<tr>'
635 IF (CART /= ' ' . AND.
636 . CART(61:118) /= '---------------------------------------------------------')
637 . WRITE(IOUTREP,'(A)')'<td><font face="arial" size="1"> ',CART(63:119),' </td>'
638 WRITE(IOUTREP,'(A)')'</tr>'
639 READ(OUT_TMP,'(A)',END=100)CART
640 IF (CART(1:29) == '-----------------------------')IEND = 1
641 END DO
642 100 CONTINUE
643 IF ( IS_FILE_FOUND == 0 )THEN
644 WRITE(IOUTREP,'(A)')' '
645 WRITE(IOUTREP,'(A)')'<li type="square">'
646 IF(GOT_INSPIRE_ALM == 1)THEN
647 WRITE(IOUTREP,'(A)')'<font face="arial" size="3"><b>Solver : Warning(s) :</b></font>'
648 ELSE
649 WRITE(IOUTREP,'(A)')'<font face="arial" size="3"><b>Starter : Warning(s) :</b></font>'
650 ENDIF
651 WRITE(IOUTREP,'(A)')'</li>'
652 WRITE(IOUTREP,'(A)')'<p>'
653 WRITE(IOUTREP,'(A)')'<tr>'
654 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">No 0.out file found !!! </td>'
655 WRITE(IOUTREP,'(A)')'</tr>'
656 WRITE(IOUTREP,'(A)')'<tr>'
657 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">Not able to write information !!! </td>'
658 WRITE(IOUTREP,'(A)')'</tr>'
659
660 ENDIF
661
662
663 IF(NTHGRP /= 0)THEN
664 WRITE(IOUTREP,'(A)')'</table>'
665 ENDIF
666
667 CLOSE (OUT_TMP)
668
669
670
671
672
673
674
675 WRITE(IOUTREP,'(A)')'<li type="square">'
676 IF(GOT_INSPIRE_ALM == 1)THEN
677 WRITE(IOUTREP,'(A)')'<font face="arial" size="3"><b>Solver : Last cycle information :</b></font>'
678 ELSE
679 WRITE(IOUTREP,'(A)')'<font face="arial" size="3"><b>Engine : Last cycle information :</b></font>'
680 ENDIF
681 WRITE(IOUTREP,'(A)')'</li>'
682 WRITE(IOUTREP,'(A)')'<p>'
683
684.OR..OR..OR. IF(N == 2 N == 4 N == 5 N == 20)THEN
685 WRITE(IOUTREP,'(A)')'<tr>'
686 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">ERROR TERMINATION </td>'
687 WRITE(IOUTREP,'(A)')'</tr>'
688 ELSEIF(N == 3)THEN
689 WRITE(IOUTREP,'(A)')'<tr>'
690 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">USER BREAK </td>'
691 WRITE(IOUTREP,'(A)')'</tr>'
692 ELSE
693 WRITE(IOUTREP,'(A)')'<tr>'
694 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">NORMAL TERMINATION </td>'
695 WRITE(IOUTREP,'(A)')'</tr>'
696 ENDIF
697
698 WRITE(IOUTREP,'(A)')'<p>'
699 WRITE(IOUTREP,'(A)')'<table cellspacing="0" cellpadding="0">'
700 WRITE(IOUTREP,'(A)')'<tr>'
701 WRITE(IOUTREP,'(A)')'<td><font face="arial" size="2">'
702 WRITE(IOUTREP,'(A)')'CYCLE '
703 WRITE(IOUTREP,'(A)')'</td><td><font face="arial" size="2">'
704 WRITE(IOUTREP,'(A)')'FINAL TIME '
705 WRITE(IOUTREP,'(A)')'</td><td><font face="arial" size="2">'
706 WRITE(IOUTREP,'(A)')'TIME-STEP '
707 WRITE(IOUTREP,'(A)')'</td><td align="right"><font face="arial" size="2">'
708 WRITE(IOUTREP,'(A)')'ELEMENT '
709 WRITE(IOUTREP,'(A)')'</td><td align="right"><font face="arial" size="2">'
710 WRITE(IOUTREP,'(A)')'%ERROR '
711 WRITE(IOUTREP,'(A)')'</td><td align="right"><font face="arial" size="2">'
712 WRITE(IOUTREP,'(A)')'I-ENERGY '
713 WRITE(IOUTREP,'(A)')'</td><td align="right"><font face="arial" size="2">'
714 WRITE(IOUTREP,'(A)')'K-ENERGY T '
715 WRITE(IOUTREP,'(A)')'</td><td align="right"><font face="arial" size="2">'
716 WRITE(IOUTREP,'(A)')'K-ENERGY R '
717 WRITE(IOUTREP,'(A)')'</td><td align="right"><font face="arial" size="2">'
718 WRITE(IOUTREP,'(A)')'EXT-WORK '
719 WRITE(IOUTREP,'(A)')'</td><td align="right"><font face="arial" size="2">'
720 WRITE(IOUTREP,'(A)')'MAS.ERR'
721 WRITE(IOUTREP,'(A)')'</td></tr>'
722 WRITE(IOUTREP,'(A)')'<tr><td colspan=10>'
723 WRITE(IOUTREP,'(A)')'<hr size="1" color="#000000" noshade>'
724 WRITE(ioutrep,'(A)')'</td></tr>'
725 WRITE(ioutrep,'(A)')'<tr align="center">'
726
727 WRITE(ioutrep,'(A,I10,A)')'<td><font face="Arial" size="2">',ncycle,'</td>'
728 WRITE(ioutrep,'(A,G11.4,A)')'<td><font face="Arial" size="2">',tt,'</td>'
729 WRITE(ioutrep,'(A,G11.4,A)')'<td><font face="Arial" size="2">',dt2,'</td>'
730 WRITE(ioutrep,'(2A,I10,A)')'<td><font face="Arial" size="2">',eltyp(itypts),nelts,'</td>'
731 WRITE(ioutrep,'(A,G11.4,A)')'<td><font face="Arial" size="2">',err1,'</td>'
732 WRITE(ioutrep,'(A,G11.4,A)')'<td><font face="Arial" size="2">',enint,'</td>'
733 WRITE(ioutrep,'(A,G11.4,A)')'<td><font face="Arial" size="2">',encin,'</td>'
734 WRITE(ioutrep,'(A,G11.4,A)')'<td><font face="Arial" size="2">',enrot,'</td>'
735 WRITE(ioutrep,'(A,G11.4,A)')'<td><font face="Arial" size="2">',wfext,'</td>'
736 WRITE(ioutrep,'(A,G11.4,A)')'<td align="right"><font face="Arial" size="2">',emass,'</td>'
737 WRITE(ioutrep,'(A)')'</tr>'
738 WRITE(ioutrep,'(A)')'</table>'
739 WRITE(ioutrep,'(A)')'</li>'
740 WRITE(ioutrep,'(A)')'</ul>'
741 WRITE(ioutrep,'(A)')'<p>'
742
743 IF (ih3dreader /= 0 .OR. imvw /= 0) THEN
744
745 WRITE(ioutrep,'(A)')' '
746 WRITE(ioutrep,'(A)')'<font face="Arial" size="4"><b><i>Results summary</i></b></font>'
747 WRITE(ioutrep,'(A)')'<hr size="1" color="#000000" noshade>'
748 WRITE(ioutrep,'(A)')'<p>'
749 ENDIF
750
751 IF ( imvw /= 0) THEN
752 WRITE(ioutrep,'(A)')'<a href="',mvwnam(1:rootlen+4),'">Open '' with Hyperview</a>'
753 WRITE(ioutrep,'(A)')'<p>'
754 ENDIF
755
756 IF (ih3dreader /= 0) THEN
757 WRITE(ioutrep,'(A)')'<OBJECT ID="HVPControl" WIDTH=800 HEIGHT=600'
758 WRITE(ioutrep,'(A)')'classid="clsid:D28D4D39-57F5-4DFB-8832-C8CB1B1DC410">'
759 WRITE(ioutrep,'(3A)')'<PARAM name="src" value="',rootnam(1:rootlen),'.h3d" />'
760 IF (ih3dreader == 1) WRITE(ioutrep,'(A)')'<PARAM name="inplace" value="1" />'
761 IF (ih3dreader == 2) WRITE(ioutrep,'(A)')'<PARAM name="inplace" value="0" />'
762 WRITE(ioutrep,'(A)')'<PARAM name="launch_size" value="800x600" />'
763
764
765
766
767
768
769 WRITE(ioutrep,'(A)')'<EMBED type="application/x-h3d"'
770 WRITE(ioutrep,'(A)')'pluginspage="http://www.altair.com"'
771 WRITE(ioutrep,'(A)')'width=800 height=600'
772 WRITE(ioutrep,'(A)')'src="',rootnam(1:rootlen),'h3d"'
773 IF (ih3dreader == 1) WRITE(ioutrep,'(A)')'inplace=1'
774 IF (ih3dreader == 2) WRITE(ioutrep,'(A)')'inplace=0'
775 WRITE(ioutrep,'(A)')'launch_size="800x600"'
776 WRITE(ioutrep,'(A)')'>'
777 WRITE(ioutrep,'(A)')'</OBJECT>'
778 WRITE(ioutrep,'(A)')'<p>'
779
780
781
782
783
784
785 ENDIF
786
787 IF (ih3dreader /= 0 .OR. imvw /= 0) THEN
788 WRITE(ioutrep,'(A)')'</font>'
789 ENDIF
790
791 WRITE(ioutrep,'(A)')'<p>'
792 WRITE(ioutrep,'(A)')' '
793 WRITE(ioutrep,'(A)')'<br>'
794 WRITE(ioutrep,'(A)')'<hr size="1" color="#000000" width="50%" noshade>'
795 WRITE(ioutrep,'(A)')'<center>'
796 WRITE(ioutrep,'(A)')'<font face="Arial" size="1">'
797 WRITE(ioutrep,'(A)')'<b>© 1996-2022 Altair Engineering, Inc.</b>'
798 WRITE(ioutrep,'(A)')'</font> '
799 WRITE(ioutrep,'(A)')'</center> '
800 WRITE(ioutrep,'(A)')'</body>'
801 WRITE(ioutrep,'(A)')'</html>'
802
803
804
805 CLOSE(unit=ioutrep)
806
807
808 ENDIF
809
810 RETURN
character(len=outfile_char_len) outfile_name
subroutine report(ih3dreader, n, imvw, wfext, wfext_md, output)