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