82
83
84
85 USE elbufdef_mod
89 USE output_mod , ONLY : output_
90
91
92
93#include "implicit_f.inc"
94
95
96
97#include "com01_c.inc"
98#include "com04_c.inc"
99
100#include "com08_c.inc"
101#include "com09_c.inc"
102#include "param_c.inc"
103#include "units_c.inc"
104#include "scr03_c.inc"
105#include "scr11_c.inc"
106#include "scr14_c.inc"
107#include "scr16_c.inc"
108#include "scr17_c.inc"
109#include "chara_c.inc"
110#include "task_c.inc"
111#include "sphcom.inc"
112#include "filescount_c.inc"
113
114
115
116 INTEGER IPARG(*),IPART(LIPART1,*),
117 . IXS(NIXS,*),IXQ(NIXQ,*),IXC(NIXC,*),IXTG(NIXTG,*),
118 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),ITAB(*),
119 . WEIGHT(*), DD_IAD(*),IPM(*),IGEO(*),KXSP(NISP,*),
120 . LENG,NODGLOB(*), NOM_OPT(*), NPBY(*)
122 . x(*), d(*), v(*), vr(*), a(*),
123 . pm(npropm,*), ms(*),anin(*),
124 . cont(*), partsav(*),fint(*),fext(*),tani(6,*),eani(*),
125 . spbuf(*), fopt(*), fncont(3,*), ftcont(3,*),geo(*),thke(*)
126 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
127 TYPE (STACK_PLY) :: STACK
128 TYPE(DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
129 TYPE(DRAPEG_) :: DRAPEG
130 TYPE(OUTPUT_),INTENT(INOUT) :: OUTPUT
131
132
133
134 CHARACTER CHOUTP*4,FILNAM*100,T10*10,MES*40,VAR_CHAR*11,CHAR_JJ*2,
135 . TITRE*40
136 INTEGER FILEN,I,INNODA,J,JJ
137 INTEGER LENR,SIZLOC,SIZP0,SIZP0_95_96
138 INTEGER I161,I16A,I16B,I16C,I16D,I16E,I16F,I16G,I16H,I16I
139 INTEGER SIZWR_CT(3),SIZP0_CT(3),SIZLOC_CT(3),
140 . SIZWR_CS(2),SIZP0_CS(2),SIZLOC_CS(2),
141 . SIZWR_SS(2),SIZP0_SS(2),SIZLOC_SS(2),
142 . SIZWR_ST(3),SIZP0_ST(3),SIZLOC_ST(3)
143 INTEGER SIZW_P0
144 INTEGER, DIMENSION(:), ALLOCATABLE :: SIZLOC_WRITE
145 INTEGER OUTPSIZE
146 INTEGER, DIMENSION(:), ALLOCATABLE :: ITABG
147 INTEGER :: LEN_TMP_NAME
148 CHARACTER(len=2148) :: TMP_NAME
149
150 ALLOCATE(itabg(leng))
151 i161=1
152 i16a=i161+lnopt1*nrbody0
153 i16b=i16a+lnopt1*naccelm
154 i16c=i16b+lnopt1*nvolu
155 i16d=i16c+lnopt1*(ninter+nintsub)
156 i16e=i16d+lnopt1*nrwall
157 i16f=i16e
158 i16g=i16f+lnopt1*njoint
159 i16h=i16g+lnopt1*nsect
160 i16i=i16h+lnopt1*nlink
161
162
163
164 IF(ispmd == 0) THEN
165 IF(irootyy == 2)THEN
166 IF(ioutp>=1000)ioutp=1
167 WRITE(choutp,'(I3.3)')ioutp
168 filnam=rootnam(1:rootlen)//'Y'//choutp
169 filen = rootlen + 4
170 ELSE
171 IF(ioutp>=10000)ioutp=1
172 WRITE(choutp,'(I4.4)')ioutp
173 filnam=rootnam(1:rootlen)//'_'//choutp//'.sty'
174 filen = rootlen + 9
175 ENDIF
178 OPEN(unit=iugeo,file=tmp_name(1:len_tmp_name),
179 . access='SEQUENTIAL',
180 . form='FORMATTED',status='UNKNOWN')
181
182
183
184 WRITE(iugeo,'(2a)')'#RADIOSS OUTPUT FILE V21 ',
185 . filnam(1:filen)
186
187
188
189 WRITE(iugeo,'(A)')'/GLOBAL '
190 WRITE(iugeo,'(A)')' '
191 WRITE(iugeo,'(A)')'#FORMAT: (1P5E16.9)'
192 WRITE(iugeo,'(2A)')'# TIME INTERNAL_ENERGY',
193 . ' KINETIC_ENERGY ROT_KINE_ENERGY EXTE_FORCE_WORK'
194 WRITE(iugeo,'(1P5E16.9)') tt,enint,encin,enrot,output%TH%WFEXT
195 ENDIF
196
197
198
199 CALL outp_mt(pm,npart,partsav,ipart,ipm)
200
201
202
203 IF (nspmd > 1)
206 . ' Coordinates ',
207 . 20,x,numnod,itab,
208 . itabg,leng,nodglob,weight)
209
210 IF(outp_v(1) == 1)
CALL outp_n_v(
'VELOCITY ',
211 . ' Velocity ',
212 . 20,v,numnod,itab,
213 . itabg,leng,nodglob,weight)
214
215 IF(outp_v(2) == 1)
CALL outp_n_v(
'DISPLACEME',
216 . ' Displacement ',
217 . 20,d,numnod,itab,
218 . itabg,leng,nodglob,weight)
219
220 IF(outp_v(3) == 1)
CALL outp_n_v(
'ACCELERATI',
221 . ' Acceleration ',
222 . 20,a,numnod,itab,
223 . itabg,leng,nodglob,weight)
224
225 IF(outp_v(4) == 1)
CALL outp_n_vc(
'CONT_FORCE',
226 . ' Contact Forces ',
227 . 20,cont,numnod,itab,
228 . itabg,leng,nodglob,weight)
229
230 IF(outp_v(5) == 1)
CALL outp_n_v(
'INTE_FORCE',
231 . ' Internal Forces ',
232 . 20,fint,numnod,itab,
233 . itabg,leng,nodglob,weight)
234
235 IF(outp_v(6) == 1)
CALL outp_n_v(
'EXTE_FORCE',
236 . ' External Forces ',
237 . 20,fext,numnod,itab,
238 . itabg,leng,nodglob,weight)
239
240 IF(outp_v(9) == 1 .AND. (idrot==1 .OR. isecut>0 .OR. iisrot>0 .OR. impose_dr>0 ) .AND. iroddl/=0)
242 . ' Rotational Velocity ',
243 . 20,vr,numnod,itab,
244 . itabg,leng,nodglob,weight)
245
246 IF(outp_v(12) == 1) THEN
248 . ' Contact Pressure from Normal Contact Forces ',
249 . 50,fncont,numnod,itab,
250 . itabg,leng,nodglob,weight)
252 . ' Contact Pressure from Tangential Contact Forces ',
253 . 50,ftcont,numnod,itab,
254 . itabg,leng,nodglob,weight)
255 END IF
256
257
258
259
260
261 innoda=0
262 IF(outp_n(1) == 1)
CALL outp_no(
'NODAL_DT ',
263 . ' Nodal Time Step ',
264 . 20,anin,numnod,itab,innoda,
265 . itabg,leng,nodglob,weight)
266
267 IF(outp_n(1)+anim_n(1)>=1)
268 . innoda=innoda+numnod
269
270 IF(outp_n(2) == 1)
CALL outp_no(
'NOD_ADMAS ',
271 . ' Added Mass ',
272 . 20,anin,numnod,itab,innoda,
273 . itabg,leng,nodglob,weight)
274
275 IF(outp_n(2)+anim_n(2)>=1)
276 . innoda=innoda+numnod
277
278 IF(outp_n(3) == 1)
CALL outp_no(
'NOD_ADINER',
279 . ' Added Inertia ',
280 . 20,anin,numnod,itab,innoda,
281 . itabg,leng,nodglob,weight)
282
283
284
285
286
287
288
289 IF (nspmd > 1) THEN
290 CALL outp_arsz_ss(iparg,dd_iad,ipm,ixs,sizp0_ss,sizloc_ss,sizwr_ss)
291 ELSE
292 ALLOCATE(sizloc_write(2*nspgroup+2))
293 CALL count_arsz_ss(iparg,dd_iad,ipm,ixs,sizloc_ss,sizloc_write)
294 sizp0_ss(:)=sizloc_ss(:)
295 sizwr_ss(1:2) = -1
296 DO i=1,nspgroup
297 sizwr_ss(1) =
max(sizwr_ss(1),sizloc_write(i))
298 sizwr_ss(2) =
max(sizwr_ss(2),sizloc_write(nspgroup+i))
299 ENDDO
300 sizwr_ss(1) = sizwr_ss(1)+6
301 sizwr_ss(2) = sizwr_ss(2)+6
302 DEALLOCATE(sizloc_write)
303 ENDIF
304 IF(outp_ss(1) == 1)
CALL outp_s_s( 1,
'OFF ',
305 . ' Delete flag (1.0:On 0.0:Off) '
306 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
307
308 IF(outp_ss(2) == 1)
CALL outp_s_s(10,
'EPSP ',
309 . ' Plastic Strain '
310 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
311
312 IF(outp_ss(3) == 1)
CALL outp_s_s( 3,
'ENER ',
313 . ' Internal Specific Energy '
314 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
315
316 IF(outp_ss(4) == 1)
CALL outp_s_s( 4,
'DENS ',
317 . ' Density '
318 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
319
320 IF(outp_ss(5) == 1)
CALL outp_s_s(11,
'TEMP ',
321 . ' Temperature '
322 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
323
324 IF(outp_ss(6) == 1)
CALL outp_s_s( 2,
'PRES ',
325 . ' Pressure '
326 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
327
328 IF(outp_ss(7) == 1)
CALL outp_s_s(-2,
'VONM ',
329 . ' Von Mises Stress '
330 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
331
332 IF(outp_ss(25) == 1)
CALL outp_s_s(25,
'HOUR ',
333 . ' Hourglass Specific Energy '
334 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
335
336 IF(outp_ss(20) == 1)
CALL outp_s_s(20,
'USER1 ',
337 . ' User Variable 1 '
338 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
339
340 IF(outp_ss(21) == 1)
CALL outp_s_s(21,
'USER2 ',
341 . ' User Variable 2 '
342 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
343
344 IF(outp_ss(22) == 1)
CALL outp_s_s(22,
'USER3 ',
345 . ' User Variable 3 '
346 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
347
348 IF(outp_ss(23) == 1)
CALL outp_s_s(23,
'USER4 ',
349 . ' User Variable 4 '
350 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
351
352 IF(outp_ss(24) == 1)
CALL outp_s_s(24,
'USER5 ',
353 . ' User Variable 5 '
354 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(1),sizp0_ss(1),sizwr_ss(1))
355
356 IF(outp_ss(26) == 1)
CALL outp_s_s(26,
'USERS ',
357 . ' All User Variable '
358 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(2),sizp0_ss(2),sizwr_ss(2))
359
360
361
362 IF(outp_ss(27) == 1)
CALL outp_s_s(26,
'EQ stress ',
363 . ' Equivalent Stress '
364 . ,elbuf_tab,iparg,eani,ixs, ipm,dd_iad,sizloc_ss(2),sizp0_ss(2),sizwr_ss(2))
365
366
367
368
369 IF (nspmd > 1) THEN
371 . sizp0_cs,sizloc_cs,sizwr_cs)
372 ELSE
373 ALLOCATE(sizloc_write(2*nspgroup+2))
375 . sizloc_cs,sizloc_write)
376 sizp0_cs(1:2)=sizloc_cs(1:2)+6
377 sizwr_cs(1:2) = -1
378 DO i=1,nspgroup
379 sizwr_cs(1) =
max(sizwr_cs(1),sizloc_write(i))
380 sizwr_cs(2) =
max(sizwr_cs(2),sizloc_write(nspgroup+i))
381 ENDDO
382 sizwr_cs(1) = sizwr_cs(1)+6
383 sizwr_cs(2) = sizwr_cs(2)+6
384 DEALLOCATE(sizloc_write)
385 ENDIF
386
387 IF (outp_cs(1) == 1)
CALL outp_c_s( 6,
'OFF ',
388 . ' Delete flag (1.0:On 0.0:Off) '
389 . ,elbuf_tab,iparg,eani ,ipm ,igeo,
390 . ixc ,ixtg ,dd_iad,sizloc_cs(1),sizp0_cs(1),thke,sizwr_cs(1))
391
392 IF (outp_cs(2) == 1) THEN
394 . ' Plastic Strain '
395 . ,elbuf_tab,iparg,eani ,ipm ,igeo,ixc ,ixtg ,dd_iad,sizloc_cs(1),
396 . sizp0_cs(1),thke,sizwr_cs(1) )
397
399 . ' Maximum Plastic Strain '
400 . ,elbuf_tab,iparg,eani ,ipm ,igeo,ixc ,ixtg ,dd_iad,sizloc_cs(1),
401 . sizp0_cs(1),thke,sizwr_cs(1) )
402
403 ENDIF
404
405 IF (outp_cs(3) == 1)
CALL outp_c_s( 5,
'ENER ',
406 . ' Internal Energy '
407 . ,elbuf_tab,iparg,eani ,ipm ,igeo,
408 . ixc ,ixtg ,dd_iad,sizloc_cs(1),sizp0_cs(1),thke,sizwr_cs(1) )
409
410 IF (outp_cs(4) == 1)
CALL outp_c_s( 3,
'THICK ',
411 . ' Thickness '
412 . ,elbuf_tab,iparg,eani ,ipm ,igeo,
413 . ixc ,ixtg ,dd_iad,sizloc_cs(1),sizp0_cs(1),thke,sizwr_cs(1) )
414
415 IF (outp_cs(7) == 1)
CALL outp_c_s( 1,
'VONM ',
416 . ' Membrane Von Mises Stress '
417 . ,elbuf_tab,iparg,eani ,ipm ,igeo,
418 . ixc ,ixtg ,dd_iad,sizloc_cs(1),sizp0_cs(1),thke,sizwr_cs(1))
419
420 IF (outp_cs(25) == 1)
CALL outp_c_s(25,
'HOUR ',
421 . ' Hourglass Energy '
422 . ,elbuf_tab,iparg,eani ,ipm ,igeo,
423 . ixc ,ixtg ,dd_iad,sizloc_cs(1),sizp0_cs(1),thke,sizwr_cs(1))
424
425 IF (outp_cs(20) == 1) THEN
427 . ' user variable 1 '
428 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
429 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
430
431 CALL OUTP_C_S(-20,'user1_max ',
432 . ' maximum user variable 1 '
433 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
434 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1))
435
436 ENDIF
437
438 IF (OUTP_CS(21) == 1) THEN
439 CALL OUTP_C_S(21,'user2 ',
440 . ' user variable 2 '
441 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
442 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
443
444 CALL OUTP_C_S(-21,'user2_max ',
445 . ' maximum user variable 2 '
446 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
447 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
448
449 ENDIF
450
451 IF (OUTP_CS(22) == 1) THEN
452 CALL OUTP_C_S(22,'user3 ',
453 . ' user variable 3 '
454 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
455 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1))
456
457 CALL OUTP_C_S(-22,'user3_max ',
458 . ' maximum user variable 3 '
459 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
460 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
461
462 ENDIF
463
464 IF (OUTP_CS(23) == 1) THEN
465 CALL OUTP_C_S(23,'user4 ',
466 . ' user variable 4 '
467 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
468 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
469
470 CALL OUTP_C_S(-23,'user4_max ',
471 . ' maximum user variable 4 '
472 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
473 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
474
475 ENDIF
476
477 IF (OUTP_CS(24) == 1) THEN
478 CALL OUTP_C_S(24,'user5 ',
479 . ' user variable 5 '
480 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
481 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
482
483 CALL OUTP_C_S(-24,'user5_max ',
484 . ' maximum user variable 5 '
485 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
486 . SIZLOC_CS(1),SIZP0_CS(1),THKE,SIZWR_CS(1) )
487
488 ENDIF
489
490 IF (OUTP_CS(26) == 1)CALL OUTP_C_S(26,'users ',
491 . ' all user variables '
492 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
493 . SIZLOC_CS(2),SIZP0_CS(2),THKE,SIZWR_CS(2) )
494 DO J = 27, 86
495 JJ = J - 26
496 write(CHAR_JJ,'(i2.2)')JJ
497 VAR_CHAR = 'user'//CHAR_JJ//'_full'
498 TITRE = ' user variable'//CHAR_JJ//' '
499 IF(OUTP_CS(J) == 1)CALL OUTP_C_S(J,VAR_CHAR,
500 . TITRE ,
501 . ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,IXC ,IXTG ,DD_IAD,
502 . SIZLOC_CS(2),SIZP0_CS(2),THKE,SIZWR_CS(2) )
503 ENDDO
504
505
506
507 IF (OUTP_CS(87) == 1) CALL OUTP_C_S(87,'eq stress ',
508 . ' membrane equivalent stress '
509 . ,ELBUF_TAB,IPARG,EANI ,IPM ,IGEO,
510 . IXC ,IXTG ,DD_IAD,SIZLOC_CS(2),SIZP0_CS(2),THKE,SIZWR_CS(2) )
511
512
513
514 IF (NSPMD > 1) THEN
515 CALL OUTP_ARSZ_SPS(IPARG,DD_IAD,SIZLOC,SIZP0,SIZW_P0)
516 ELSE
517 ALLOCATE(SIZLOC_WRITE(NSPGROUP+1))
518 CALL COUNT_ARSZ_SPS(IPARG,DD_IAD,SIZLOC,SIZLOC_WRITE)
519 SIZP0 = SIZLOC
520 SIZW_P0 = -1
521 DO I=1,NSPGROUP
522 SIZW_P0 = MAX(SIZW_P0,SIZLOC_WRITE(I))
523 ENDDO
524 SIZW_P0 = SIZW_P0 + 6
525 DEALLOCATE(SIZLOC_WRITE)
526 ENDIF
527
528 IF(OUTP_SPS(1) == 1) CALL OUTP_SP_S( 1,'off ',
529 . ' delete flag(1.0:on 0.0:off) '
530 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
531
532 IF(OUTP_SPS(2) == 1) CALL OUTP_SP_S(10,'epsp ',
533 . ' plastic strain '
534 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
535
536 IF(OUTP_SPS(3) == 1) CALL OUTP_SP_S( 3,'ener ',
537 . ' internal specific energy '
538 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
539
540 IF(OUTP_SPS(4) == 1) CALL OUTP_SP_S( 4,'dens ',
541 . ' density '
542 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
543
544 IF(OUTP_SPS(5) == 1) CALL OUTP_SP_S(11,'temp ',
545 . ' temperature '
546 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
547
548 IF(OUTP_SPS(6) == 1) CALL OUTP_SP_S( 2,'pres ',
549 . ' pressure '
550 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
551
552 IF(OUTP_SPS(7) == 1) CALL OUTP_SP_S(-2,'vonm ',
553 . ' von mises stress '
554 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
555
556 IF(OUTP_SPS(25) == 1) CALL OUTP_SP_S(25,'slen ',
557 . ' smoothing length '
558 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
559
560 IF(OUTP_SPS(20) == 1) CALL OUTP_SP_S(20,'user1 ',
561 . ' user variable 1 '
562 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
563
564 IF(OUTP_SPS(21) == 1) CALL OUTP_SP_S(21,'user2 ',
565 . ' user variable 2 '
566 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
567
568 IF(OUTP_SPS(22) == 1) CALL OUTP_SP_S(22,'user3 ',
569 . ' user variable 3 '
570 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
571
572 IF(OUTP_SPS(23) == 1) CALL OUTP_SP_S(23,'user4 ',
573 . ' user variable 4 '
574 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
575
576 IF(OUTP_SPS(24) == 1) CALL OUTP_SP_S(24,'user5 ',
577 . ' user variable 5 '
578 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
579
580
581
582 IF(OUTP_SPS(26) == 1) CALL OUTP_SP_S(24,'eq stress ',
583 . ' equivalent stress '
584 . ,ELBUF_TAB,IPARG,EANI,DD_IAD,KXSP,IPM,SPBUF,SIZLOC,SIZP0,SIZW_P0)
585
586
587
588 IF (NSPMD > 1) THEN
589 CALL OUTP_ARSZ_ST(IPARG,DD_IAD,SIZLOC_ST,SIZWR_ST,SIZP0_ST)
590 ELSE
591 SIZP0_ST = -1
592 SIZLOC_ST = -1
593 ALLOCATE( SIZLOC_WRITE(3*NSPGROUP+3) )
594 CALL COUNT_ARSZ_ST(IPARG,DD_IAD,SIZLOC_ST,SIZLOC_WRITE)
595 SIZP0_ST(1:3) = SIZLOC_WRITE(3*NSPGROUP+1:3*NSPGROUP+3)+8
596 SIZWR_ST(1:3) = -1
597 DO I=1,NSPGROUP
598 SIZWR_ST(1) = MAX(SIZWR_ST(1),SIZLOC_WRITE(I))
599 SIZWR_ST(2) = MAX(SIZWR_ST(2),SIZLOC_WRITE(NSPGROUP+I))
600 SIZWR_ST(3) = MAX(SIZWR_ST(3),SIZLOC_WRITE(2*NSPGROUP+I))
601 ENDDO
602 SIZWR_ST(1:3)= SIZWR_ST(1:3)+8
603 DEALLOCATE( SIZLOC_WRITE )
604 ENDIF
605
606 IF(OUTP_ST(1) == 1) CALL OUTP_S_T( 2,'stress ',
607 . ' stress ',
608 . ELBUF_TAB,IPARG,DD_IAD,SIZLOC_ST(1),SIZP0_ST(1),SIZWR_ST(1))
609
610 IF(OUTP_ST(2) == 1) CALL OUTP_S_TT( 2,'str_ful ',
611 . ' full stress tensor + plastic strain ',
612 . ELBUF_TAB,IPARG,DD_IAD,IPM, IXS,
613 . SIZLOC_ST(2),SIZP0_ST(2),SIZWR_ST(2))
614
615 IF(OUTP_ST(3) == 1) CALL OUTP_S_TT( 3,'strain_ful ',
616 . ' full strain tensor ',
617 . ELBUF_TAB,IPARG,DD_IAD,IPM, IXS,
618 . SIZLOC_ST(3),SIZP0_ST(3),SIZWR_ST(3))
619
620
621
622 IF (NSPMD > 1) THEN
623 CALL OUTP_ARSZ_CT(IPARG,DD_IAD,SIZLOC_CT,SIZP0_CT,SIZWR_CT,ELBUF_TAB)
624 ELSE
625 ALLOCATE(SIZLOC_WRITE(3*NSPGROUP+3))
626 CALL COUNT_ARSZ_CT(IPARG,DD_IAD,SIZLOC_CT,SIZLOC_WRITE,ELBUF_TAB)
627 SIZP0_CT(1)=SIZLOC_CT(1)
628 SIZP0_CT(2:3)=SIZLOC_CT(2:3)
629 SIZWR_CT(1:3)=-1
630 DO I=1,NSPGROUP
631 SIZWR_CT(1) = MAX(SIZWR_CT(1),SIZLOC_WRITE(I))
632 SIZWR_CT(2) = MAX(SIZWR_CT(2),SIZLOC_WRITE(NSPGROUP+I))
633 SIZWR_CT(3) = MAX(SIZWR_CT(3),SIZLOC_WRITE(2*NSPGROUP+I))
634 ENDDO
635 SIZWR_CT(1) = SIZWR_CT(1) + 6
636 DEALLOCATE(SIZLOC_WRITE)
637 ENDIF
638
639 IF(OUTP_CT(1) == 1) CALL OUTP_C_T( 1,'stress_mem',
640 . ' membrane stress ',
641 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
642
643 IF(OUTP_CT(2) == 1) CALL OUTP_C_T( 2,'stress_ben',
644 . ' bending stress ',
645 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
646
647 IF(OUTP_CT(3) == 1) CALL OUTP_C_T( 3,'stress_upp',
648 . ' upper surface stress ',
649 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
650
651 IF(OUTP_CT(4) == 1) CALL OUTP_C_T( 4,'stress_low',
652 . ' lower surface stress ',
653 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
654
655 IF(OUTP_CT(5) == 1) CALL OUTP_C_T( 5,'strain_mem',
656 . ' membrane strain ',
657 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
658
659 IF(OUTP_CT(6) == 1) CALL OUTP_C_T( 6,'strain_ben',
660 . ' bending strain ',
661 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
662
663 IF(OUTP_CT(7) == 1) CALL OUTP_C_T( 7,'strain_upp',
664 . ' upper surface strain ',
665 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
666
667 IF(OUTP_CT(8) == 1) CALL OUTP_C_T( 8,'strain_low',
668 . ' lower surface strain ',
669 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
670
671 IF(OUTP_CT(91) == 1) CALL OUTP_C_T(91,'epsdot_mem',
672 . ' membrane strain rate ',
673 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
674
675 IF(OUTP_CT(92) == 1) CALL OUTP_C_T(92,'epsdot_ben',
676 . ' bending strain rate ',
677 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1))
678
679 IF(OUTP_CT(93) == 1) CALL OUTP_C_T(93,'epsdot_upp',
680 . ' upper surface strain rate ',
681 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1))
682
683 IF(OUTP_CT(94) == 1) CALL OUTP_C_T(94,'epsdot_low',
684 . ' lower surface strain rate ',
685 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
686
687 DO I=1,30
688 IF(OUTP_CT(10+I) == 1)THEN
689 WRITE(MES,'(a,i2,a)')
690 . ' stress(layer',I,') '
691 WRITE(T10,'(a,i2)')'stress_l',I
692 CALL OUTP_C_T( 10+I,T10 ,MES,
693 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
694 ENDIF
695
696 IF(OUTP_CT(50+I) == 1)THEN
697 WRITE(MES,'(a,i2,a)')
698 . ' strain(layer',I,') '
699 WRITE(T10,'(a,i2)')'strain_l',I
700 CALL OUTP_C_T( 50+I,T10 ,MES,
701 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
702 ENDIF
703
704 IF(OUTP_CT(100+I) == 1)THEN
705 WRITE(MES,'(a,i2,a)')
706 . ' epsdot(layer',I,') '
707 WRITE(T10,'(a,i2)')'epsdot_l',I
708 CALL OUTP_C_T( 100+I,T10 ,MES,
709 . ELBUF_TAB,IPARG,TANI,DD_IAD,SIZLOC_CT(1),SIZP0_CT(1),SIZWR_CT(1) )
710 ENDIF
711 ENDDO
712 IF(OUTP_CT(95) == 1) CALL OUTP_C_TF(95,'stress_ful',
713 . ' full stress tensor + plastic strain ',
714 . ELBUF_TAB,IPARG ,DD_IAD,SIZLOC_CT(2),SIZP0_CT(2),THKE,GEO,
715 . IGEO ,STACK ,DRAPE_SH4N, DRAPE_SH3N,IXC ,IXTG,SIZWR_CT(2),
716 . DRAPEG )
717
718
719 IF(OUTP_CT(96) == 1) CALL OUTP_C_TF(96,'strain_ful',
720 . ' full strain tensor + plastic strain ',
721 . ELBUF_TAB,IPARG ,DD_IAD,SIZLOC_CT(3),SIZP0_CT(3),THKE,GEO,
722 . IGEO ,STACK ,DRAPE_SH4N, DRAPE_SH3N,IXC ,IXTG,SIZWR_CT(3),
723 . DRAPEG )
724
725
726
727
728 IF (NSPMD > 1) THEN
729 CALL OUTP_ARSZ_SPT(IPARG,DD_IAD,SIZLOC,SIZP0,SIZW_P0)
730 ELSE
731 ALLOCATE(SIZLOC_WRITE(NSPGROUP+1))
732 CALL COUNT_ARSZ_SPT(IPARG,DD_IAD,SIZLOC,SIZLOC_WRITE)
733 SIZP0 = SIZLOC
734 SIZW_P0 = -1
735 DO I=1,NSPGROUP
736 SIZW_P0 = MAX(SIZW_P0,SIZLOC_WRITE(I))
737 ENDDO
738 SIZW_P0 = SIZW_P0 + 6
739 DEALLOCATE(SIZLOC_WRITE)
740 ENDIF
741
742 IF(OUTP_SPT(1) == 1) CALL OUTP_SP_T('stress ',
743 . ' stress ',
744 . ELBUF_TAB,IPARG,DD_IAD,SIZLOC,SIZP0,SIZW_P0)
745
746 IF (NSPMD > 1) THEN
747 CALL OUTP_ARSZ_SPTT(IPARG,DD_IAD,SIZLOC,SIZP0,SIZW_P0)
748 ELSE
749 ALLOCATE(SIZLOC_WRITE(NSPGROUP+1))
750 CALL COUNT_ARSZ_SPTT(IPARG,DD_IAD,SIZLOC,SIZLOC_WRITE)
751 SIZP0 = SIZLOC
752 SIZW_P0 = -1
753 DO I=1,NSPGROUP
754 SIZW_P0 = MAX(SIZW_P0,SIZLOC_WRITE(I))
755 ENDDO
756 DEALLOCATE(SIZLOC_WRITE)
757 ENDIF
758
759 IF(OUTP_SPT(2) == 1) CALL OUTP_SP_TT('str_ful ',
760 . ' full stress tensor + plastic strain ',
761 . ELBUF_TAB,IPARG,DD_IAD,IPM, KXSP,SPBUF,SIZLOC,SIZP0,SIZW_P0)
762
763
764
765 IF (NSPMD > 1) THEN
766 CALL OUTP_ARSZ_RS(IPARG,DD_IAD,SIZLOC,SIZP0,SIZW_P0)
767 ELSE
768 ALLOCATE(SIZLOC_WRITE(NSPGROUP+1))
769 CALL COUNT_ARSZ_RS(IPARG,DD_IAD,SIZLOC,SIZLOC_WRITE)
770 SIZP0 = SIZLOC_WRITE(NSPGROUP+1)
771 SIZW_P0 = -1
772 DO I=1,NSPGROUP
773 SIZW_P0 = MAX(SIZW_P0,SIZLOC_WRITE(I))
774 ENDDO
775 SIZW_P0 = SIZW_P0 + 6
776 DEALLOCATE(SIZLOC_WRITE)
777 ENDIF
778
779 IF(OUTP_RS(1) == 1)CALL OUTP_R_S(1,'off ',
780 . ' delete flag(1.0:on 0.0:off) '
781 . ,ELBUF_TAB,IPARG,DD_IAD,SIZLOC,SIZP0,SIZW_P0)
782
783
784
785
786 IF (NSPMD > 1) THEN
787 CALL OUTP_ARSZ_RT(IPARG,IGEO,GEO,IXR,DD_IAD,
788 . SIZLOC,SIZP0,SIZW_P0)
789 ELSE
790 ALLOCATE(SIZLOC_WRITE(NSPGROUP+1))
791 CALL COUNT_ARSZ_RT(IPARG,IGEO,GEO,IXR,DD_IAD,
792 . SIZLOC,SIZLOC_WRITE)
793 SIZP0 = SIZLOC
794 SIZW_P0 = -1
795 DO I=1,NSPGROUP
796 SIZW_P0 = MAX(SIZW_P0,SIZLOC_WRITE(I))
797 ENDDO
798 SIZW_P0 = SIZW_P0 + 6
799 DEALLOCATE(SIZLOC_WRITE)
800 ENDIF
801
802 IF(OUTP_RS(2) == 1)CALL OUTP_R_T('full ',
803 . ' forces and moments ',
804 . ELBUF_TAB,IPARG,DD_IAD,IXR,IGEO,GEO,SIZLOC,SIZP0,SIZW_P0)
805
806
807
808
809 IF(OUTP_V(8) == 1)
810 . CALL OUTP_N_V2(FOPT ,NPBY ,NOM_OPT(I16G),NOM_OPT(I16D))
811
812
813
814
815 IF(ISPMD == 0) THEN
816 WRITE(IUGEO,'(a)')'/enddata '
817 CLOSE(UNIT=IUGEO)
818 CALL FILELEN_SYS(FILNAM,FILEN, OUTPSIZE)
819 OUTPFILESIZE=OUTPFILESIZE + OUTPSIZE/1024
820 WRITE (IOUT,1000) FILNAM(1:FILEN)
821 WRITE (ISTDO,1000) FILNAM(1:FILEN)
822 ENDIF
823 1000 FORMAT (4X,' output file:',1X,A,' written')
824
825 RETURN
character(len=outfile_char_len) outfile_name
subroutine outp_c_s(nbxx, key, text, elbuf_tab, iparg, eani, ipm, igeo, ixc, ixtg, dd_iad, sizloc, sizp0, thke, siz_wr)
subroutine count_arsz_cs(iparg, ixc, ixtg, igeo, ipm, dd_iad, wasz, siz_write_loc)
subroutine outp_mt(pm, npart, partsav, ipart, ipm)
subroutine outp_n_vc(key, text, len, vect, numnod, itab, itabg, leng, nodglob, weight)
subroutine outp_n_v(key, text, len, vect, numnod, itab, itabg, leng, nodglob, weight)
subroutine outp_no(key, text, len, anin, numnod, itab, innoda, itabg, leng, nodglob, weight)
subroutine outp_s_s(nbx, key, text, elbuf_tab, iparg, eani, ixs, ipm, dd_iad, sizloc, sizp0, siz_wr)
subroutine count_arsz_ss(iparg, dd_iad, ipm, ixs, wasz, siz_write_loc)
subroutine outp_arsz_cs(iparg, ixc, ixtg, igeo, ipm, dd_iad, p0ars, wasz, wasz_wr)
subroutine spmd_outpitab(v, weight, nodglob, vglob)
subroutine outp_arsz_ss(iparg, dd_iad, ipm, ixs, p0ars, wasz, wasz_wr)
subroutine slen(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, j, area, aream)