37
38
39
42 USE my_alloc_mod
44 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "com04_c.inc"
53#include "param_c.inc"
54#include "scr17_c.inc"
55#include "scr23_c.inc"
56#include "sphcom.inc"
57
58
59
60 INTEGER, INTENT(IN) :: IXS(NIXS,*), IXS10(6,*), IPM(NPROPMI,*), IGEO(NPROPGI,*)
61 INTEGER, INTENT(IN) :: ITAB(*), ISOLNOD(*),IXR_KJ(5,*)
62 INTEGER, INTENT(IN) :: IXR(NIXR,*), R_SKEW(*), ISKWN(LISKN,*), IXP(NIXP,*), IXT(NIXT,*),
63 . IXC(NIXC,*),IXTG(NIXTG,*),KXSP(NISP,*),IPARTSP(*),IPART(LIPART1,*),
64 . KXX(NIXX,*),IXX(*),IPARTX(*),IXRI(4,*),IXS16(8,*),IXQ(NIXQ,*)
65 INTEGER, INTENT(IN) :: IBEAM_VECTOR(NUMELP)
67 . x(3,numnod),
68 . thke(*),thkec(*),sh4ang(*),sh3ang(*)
69 my_real,
INTENT(IN) :: rbeam_vector(3,numelp)
70
71
72
73 INTEGER I, J, MY_ID, TEMP_INT, NS, MY_MID, MY_PID, MY_NOD, MY_SKEW,NC
74 INTEGER :: WORK(70000),NUMEL_KJ
75 INTEGER, ALLOCATABLE, DIMENSION(:) :: INDEX,ITR1
76 CHARACTER(LEN=NCHARTITLE)::TITR
77 CHARACTER (LEN=255) :: VARNAME
78 DOUBLE PRECISION TEMP_DOUBLE
79 INTEGER ITETRA4(4),IPENTA6(6)
80 DATA itetra4/2,4,7,6/,ipenta6/2,3,4,6,7,8/
81
82
83
84
86
87
88
89
90
91 CALL my_alloc(index,2*numels)
92 CALL my_alloc(itr1,numels)
93
94 DO i=1,numels8
95 itr1(i)=ixs(nixs,i)
96 ENDDO
97 CALL my_orders(0,work,itr1,index,numels8,1)
98 DO i=1,numels8
99 ns=index(i)
100
101 my_id = ixs(nixs,ns)
102 CALL qaprint(
'A_SOLID_ELEMENT_ID', my_id,0.0_8)
103
104 my_mid = ipm(1,ixs(1,ns))
105 CALL qaprint(
'A_SOLID_ELEMENT_MID', my_mid,0.0_8)
106
107 my_pid = igeo(1,ixs(10,ns))
108 CALL qaprint(
'A_SOLID_ELEMENT_PID', my_pid,0.0_8)
109
110 IF(isolnod(ns)==4)THEN
111 DO j=1,4
112 IF(ixs(itetra4(j),ns)/=0)THEN
113
114
115
116 my_nod = itab(ixs(itetra4(j),ns))
117 WRITE(varname,'(A,I0)') 'NODE_',j
118 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
119 END IF
120 END DO
121 ELSEIF(isolnod(ns)==6)THEN
122 DO j=1,6
123 IF(ixs(ipenta6(j),ns)/=0)THEN
124
125
126
127 my_nod = itab(ixs(ipenta6(j),ns))
128 WRITE(varname,'(A,I0)') 'NODE_',j
129 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
130 END IF
131 END DO
132 ELSEIF(isolnod(ns)==8)THEN
133 DO j=2,9
134 IF(ixs(j,ns)/=0)THEN
135
136
137
138 my_nod = itab(ixs(j,ns))
139 WRITE(varname,'(A,I0)') 'NODE_',j-1
140 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
141 END IF
142 END DO
143 END IF
144
145 END DO
146
147
148
149
150 DO i=1,numels10
151 itr1(i)=ixs(nixs,numels8+i)
152 ENDDO
153 CALL my_orders(0,work,itr1,index,numels10,1)
154
155 DO i=1,numels10
156 ns=index(i)
157
158 my_id = ixs(nixs,numels8+ns)
159 CALL qaprint(
'A_TETRA10_ELEMENT_ID', my_id,0.0_8)
160
161 my_mid = ipm(1,ixs(1,numels8+ns))
162 CALL qaprint(
'A_TETRA10_ELEMENT_MID', my_mid,0.0_8)
163
164 my_pid = igeo(1,ixs(10,numels8+ns))
165 CALL qaprint(
'A_TETRA10_ELEMENT_PID', my_pid,0.0_8)
166
167 DO j=1,4
168 IF(ixs(itetra4(j),numels8+ns)/=0)THEN
169
170
171
172 my_nod = itab(ixs(itetra4(j),numels8+ns))
173 WRITE(varname,'(A,I0)') 'NODE_',j
174 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
175 END IF
176 END DO
177
178 DO j=1,6
179 IF(ixs10(j,ns)/=0)THEN
180
181
182
183 my_nod = itab(ixs10(j,ns))
184 WRITE(varname,'(A,I0)') 'NODE_',j+4
185 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
186 END IF
187 END DO
188
189 END DO
190
191
192
193 DO i=1,numels16
194 itr1(i)=ixs(nixs,numels8+numels10+numels20+i)
195 ENDDO
196 CALL my_orders(0,work,itr1,index,numels16,1)
197
198 DO i=1,numels16
199 ns=index(i)
200
201 my_id = ixs(nixs,numels8+numels10+numels20+ns)
202 CALL qaprint(
'A_SHEL16_ELEMENT_ID', my_id,0.0_8)
203
204 my_mid = ipm(1,ixs(1,numels8+numels10+numels20+ns))
205 CALL qaprint(
'A_SHEL16_ELEMENT_MID', my_mid,0.0_8)
206
207 my_pid = igeo(1,ixs(10,numels8+numels10+numels20+ns))
208 CALL qaprint(
'A_SHEL16_ELEMENT_PID', my_pid,0.0_8)
209
210 DO j=2,9
211 IF(ixs(j,numels8+numels10+numels20+ns)/=0)THEN
212
213
214
215 my_nod = itab(ixs(j,numels8+numels10+numels20+ns))
216 WRITE(varname,'(A,I0)') 'NODE_',j
217 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
218 END IF
219 END DO
220
221 DO j=1,8
222 IF(ixs16(j,ns)/=0)THEN
223
224
225
226 my_nod = itab(ixs16(j,ns))
227 WRITE(varname,'(A,I0)') 'NODE_',j+8
228 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
229 END IF
230 END DO
231
232 END DO
233
234 DEALLOCATE(index,itr1)
235
236
237
238
239
240 CALL my_alloc(index,2*numelr)
241 CALL my_alloc(itr1,numelr)
242
243 DO i=1,numelr
244 itr1(i)=ixr(nixr,i)
245 ENDDO
246 CALL my_orders(0,work,itr1,index,numelr,1)
247
248 DO i=1,numelr
249 ns=index(i)
250
251 my_id = ixr(nixr,ns)
252 CALL qaprint(
'A_SPRING_ELEMENT_ID', my_id,0.0_8)
253
254 my_mid = 0
255 IF (ixr(5,ns) > 0) my_mid = ipm(1,ixr(5,ns))
256 CALL qaprint(
'A_SPRING_ELEMENT_MID', my_mid,0.0_8)
257
258 my_pid = igeo(1,ixr(1,ns))
259 CALL qaprint(
'A_SPRING_ELEMENT_PID', my_pid,0.0_8)
260
261 DO j=2,3
262 IF(ixr(j,ns)/=0)THEN
263 my_nod = itab(ixr(j,ns))
264 WRITE(varname,'(A,I0)') 'NODE_',j-1
265 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
266 END IF
267 END DO
268
269 IF(ixr(4,ns)/=0)THEN
270 my_nod = itab(ixr(4,ns))
271 WRITE(varname,'(A,I0)') 'NODE_',3
272 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
273
274 temp_double = x(1,ixr(4,ns))-x(1,ixr(2,ns))
275 CALL qaprint(
'--> VEC_N1N3_X', 0,temp_double)
276 temp_double = x(2,ixr(4,ns))-x(2,ixr(2,ns))
277 CALL qaprint(
'--> VEC_N1N3_Y', 0,temp_double)
278 temp_double = x(3,ixr(4,ns))-x(3,ixr(2,ns))
279 CALL qaprint(
'--> VEC_N1N3_Z', 0,temp_double)
280 END IF
281
282 IF(r_skew(ns)/=0)THEN
283 my_skew = iskwn(4,r_skew(ns))
284 WRITE(varname,'(A,I0)') 'SKEW_',j-1
285 CALL qaprint(varname(1:len_trim(varname)), my_skew,0.0_8)
286 END IF
287
288 END DO
289
290 DEALLOCATE(index,itr1)
291
292
293
294 IF (numelr > 0) THEN
295
296 numel_kj = ixr_kj(1,numelr+1)
297 CALL my_alloc(index,2*numel_kj)
298 CALL my_alloc(itr1,numel_kj)
299
300 DO i=1,numel_kj
301 itr1(i)=ixr_kj(4,i)
302 ENDDO
303 CALL my_orders(0,work,itr1,index,numel_kj,1)
304
305 DO i=1,numel_kj
306 ns=index(i)
307
308 DO j=1,3
309 IF(ixr_kj(j,ns)/=0)THEN
310 my_nod = itab(ixr_kj(j,ns))
311 WRITE(varname,'(A,X,I0,X,A,I0)') 'KJOINT_ID',ixr_kj(4,ns),'ADDITIONAL_NODE_',3+j
312 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
313 END IF
314 END DO
315
316 ENDDO
317
318 DEALLOCATE(index,itr1)
319
320 ENDIF
321
322
323
324
325
326 CALL my_alloc(index,2*numelp)
327 CALL my_alloc(itr1,numelp)
328
329 DO i=1,numelp
330 itr1(i)=ixp(nixp,i)
331 ENDDO
332 CALL my_orders(0,work,itr1,index,numelp,1)
333
334 DO i=1,numelp
335 ns=index(i)
336
337 my_id = ixp(nixp,ns)
338 CALL qaprint(
'A_BEAM_ELEMENT_ID', my_id,0.0_8)
339
340 my_mid = ipm(1,ixp(1,ns))
341 CALL qaprint(
'A_BEAM_ELEMENT_MID', my_mid,0.0_8)
342
343 my_pid = igeo(1,ixp(5,ns))
344 CALL qaprint(
'A_BEAM_ELEMENT_PID', my_pid,0.0_8)
345
346 DO j=2,3
347 IF(ixp(j,ns)/=0)THEN
348 my_nod = itab(ixp(j,ns))
349 WRITE(varname,'(A,I0)') 'NODE_',j-1
350 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
351 END IF
352 END DO
353
354 IF (ibeam_vector(ns) == 1) THEN
355 temp_double = rbeam_vector(1,ns)
356 CALL qaprint(
'--> INPUT_VEC_X', 0,temp_double)
357 temp_double = rbeam_vector(2,ns)
358 CALL qaprint(
'--> INPUT_VEC_Y', 0,temp_double)
359 temp_double = rbeam_vector(3,ns)
360 CALL qaprint(
'--> INPUT_VEC_Z', 0,temp_double)
361 ELSEIF(ixp(4,ns)/=0)THEN
362 my_nod = itab(ixp(4,ns))
363 WRITE(varname,'(A,I0)') 'NODE_',j-1
364 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
365
366 temp_double = x(1,ixp(4,ns))-x(1,ixp(2,ns))
367 CALL qaprint(
'--> VEC_N1N3_X', 0,temp_double)
368 temp_double = x(2,ixp(4,ns))-x(2,ixp(2,ns))
369 CALL qaprint(
'--> VEC_N1N3_Y', 0,temp_double)
370 temp_double = x(3,ixp(4,ns))-x(3,ixp(2,ns))
371 CALL qaprint(
'--> VEC_N1N3_Z', 0,temp_double)
372 END IF
373
374 END DO
375
376 DEALLOCATE(index,itr1)
377
378
379
380
381
382 CALL my_alloc(index,2*numelt)
383 CALL my_alloc(itr1,numelt)
384
385 DO i=1,numelt
386 itr1(i)=ixt(nixt,i)
387 ENDDO
388 CALL my_orders(0,work,itr1,index,numelt,1)
389
390 DO i=1,numelt
391 ns=index(i)
392
393 my_id = ixt(nixt,ns)
394 CALL qaprint(
'A_TRUSS_ELEMENT_ID', my_id,0.0_8)
395
396 my_mid = ipm(1,ixt(1,ns))
397 CALL qaprint(
'A_TRUSS_ELEMENT_MID', my_mid,0.0_8)
398
399 my_pid = igeo(1,ixt(4,ns))
400 CALL qaprint(
'A_TRUSS_ELEMENT_PID', my_pid,0.0_8)
401
402 DO j=2,3
403 IF(ixt(j,ns)/=0)THEN
404 my_nod = itab(ixt(j,ns))
405 WRITE(varname,'(A,I0)') 'NODE_',j-1
406 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
407 END IF
408 END DO
409
410 END DO
411
412 DEALLOCATE(index,itr1)
413
414
415
416
417 CALL my_alloc(index,2*numelc)
418 CALL my_alloc(itr1,numelc)
419
420 DO i=1,numelc
421 itr1(i)=ixc(nixc,i)
422 ENDDO
423
424 CALL my_orders(0,work,itr1,index,numelc,1)
425 DO i=1,numelc
426 nc=index(i)
427
428 my_id = ixc(nixc,nc)
429 CALL qaprint(
'A_SHELL_ELEMENT_ID', my_id,0.0_8)
430
431 my_mid = ipm(1,ixc(1,nc))
432 CALL qaprint(
'A_SHELL_ELEMENT_MID', my_mid,0.0_8)
433
434 my_pid = igeo(1,ixc(6,nc))
435 CALL qaprint(
'A_SHELL_ELEMENT_PID', my_pid,0.0_8)
436
437 DO j=1,4
438 my_nod = itab(ixc(j+1,nc))
439 WRITE(varname,'(A,I0)') 'NODE_',j
440 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
441 END DO
442
443 WRITE(varname,'(A,I0)') 'THK_'
444 temp_double = thke(nc)
445 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
446
447 WRITE(varname,'(A,I0)') 'ANGLE_'
448 temp_double = sh4ang(nc)
449 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
450
451 ENDDO
452 DEALLOCATE(index,itr1)
453
454
455
456 CALL my_alloc(index,2*numelq)
457 CALL my_alloc(itr1,numelq)
458
459 DO i=1,numelq
460 itr1(i)=ixq(nixq,i)
461 ENDDO
462
463 CALL my_orders(0,work,itr1,index,numelq,1)
464 DO i=1,numelq
465 nc=index(i)
466
467 my_id = ixq(nixq,nc)
468 CALL qaprint(
'A_QUAD_ELEMENT_ID', my_id,0.0_8)
469
470 my_mid = ipm(1,ixq(1,nc))
471 CALL qaprint(
'A_QUAD_ELEMENT_MID', my_mid,0.0_8)
472
473 my_pid = igeo(1,ixq(6,nc))
474 CALL qaprint(
'A_QUAD_ELEMENT_PID', my_pid,0.0_8)
475
476 DO j=1,4
477 my_nod = itab(ixq(j+1,nc))
478 WRITE(varname,'(A,I0)') 'NODE_',j
479 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8
480 END DO
481
482 ENDDO
483 DEALLOCATE(index,itr1)
484
485
486
487 CALL my_alloc(index,2*numeltg)
488 CALL my_alloc(itr1,numeltg)
489
490 DO i=1,numeltg
491 itr1(i)=ixtg(nixtg,i)
492 ENDDO
493
494 CALL my_orders(0,work,itr1,index,numeltg,1)
495 DO i=1,numeltg
496 nc=index(i)
497
498 my_id = ixtg(nixtg,nc)
499 CALL qaprint(
'A_SH3N_ELEMENT_ID', my_id,0.0_8)
500
501 my_mid = ipm(1,ixtg(1,nc))
502 CALL qaprint(
'A_SH3N_ELEMENT_MID', my_mid,0.0_8)
503
504 my_pid = igeo(1,ixtg(5,nc))
505 CALL qaprint(
'A_SH3N_ELEMENT_PID', my_pid,0.0_8)
506
507 DO j=1,3
508 my_nod = itab(ixtg(j+1,nc))
509 WRITE(varname,'(A,I0)') 'NODE_',j
510 CALL qaprint(varname(1:len_trim(varname)), my_nod,0.0_8)
511 END DO
512
513 WRITE(varname,'(A,I0)') 'THK_'
514 temp_double = thkec(nc)
515 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
516
517 WRITE(varname,'(A,I0)') 'ANGLE_'
518 temp_double = sh3ang(nc)
519 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
520
521 ENDDO
522 DEALLOCATE(index,itr1)
523
524
525
526
527 CALL my_alloc(index,2*numsph)
528 CALL my_alloc(itr1,numsph)
529
530 DO i=1,numsph
531 itr1(i)=kxsp(nisp,i)
532 ENDDO
533 CALL my_orders(0,work,itr1,index,numsph,1)
534
535 DO i=1,numsph
536
537 ns=index(i)
538
539 my_id = kxsp(nisp,ns)
540 CALL qaprint(
'A_SPH_CELL_ELEMENT_ID', my_id,0.0_8)
541
542 my_id = ipartsp(ns)
543 CALL qaprint(
'A_SPH_CELL_PART_ID', my_id,0.0_8)
544
545 my_mid = ipart(1,ipartsp(ns))
546 CALL qaprint(
'A_SPH_CELL_MID', my_mid,0.0_8)
547
548 my_pid = igeo(1,ipart(2,ipartsp(ns)))
549 CALL qaprint(
'A_SPH_CELL_PID', my_pid,0.0_8)
550
551 DO j=2,7
552 my_id = kxsp(j,ns)
553 IF (my_id /= 0) THEN
554 WRITE(varname,'(A,I0)') 'KXSP_',j
555 CALL qaprint(varname(1:len_trim(varname)), my_id,0.0_8)
556 ENDIF
557 ENDDO
558
559 ENDDO
560 DEALLOCATE(index,itr1)
561
562
563
564 CALL my_alloc(index,2*numelx)
565 CALL my_alloc(itr1,numelx)
566
567 DO i=1,numelx
568 itr1(i)=kxx(nixx,i)
569 ENDDO
570 CALL my_orders(0,work,itr1,index,numelx,1)
571
572 DO i=1,numelx
573
574 ns=index(i)
575
576 my_id = kxx(nixx,ns)
577 CALL qaprint(
'A_XELEM_ELEMENT_ID', my_id,0.0_8)
578
579 my_id = ipartx(ns)
580 CALL qaprint(
'A_XELEM_PART_ID', my_id,0.0_8)
581
582 DO j=1,kxx(3,ns)
583 my_id = itab(ixx(kxx(4,ns)+j-1))
584 IF (my_id /= 0) THEN
585 WRITE(varname,'(A,I0)') 'IXX_',kxx(4,ns)+j
586 CALL qaprint(varname(1:len_trim(varname)), my_id,0.0_8)
587 ENDIF
588 ENDDO
589
590 ENDDO
591 DEALLOCATE(index,itr1)
592
593
594
595 CALL my_alloc(index,2*nrivet)
596 CALL my_alloc(itr1,nrivet)
597
598 DO i=1,nrivet
599 itr1(i)=ixri(4,i)
600 ENDDO
601 CALL my_orders(0,work,itr1,index,nrivet,1)
602
603 DO i=1,nrivet
604
605 ns=index(i)
606
607 my_id = ixri(4,ns)
608 CALL qaprint(
'A_RIVET_ELEMENT_ID', my_id,0.0_8)
609
610 my_id = igeo(1,ixri(1,ns))
611 CALL qaprint(
'A_RIVET_PID', my_id,0.0_8)
612
613 DO j=1,2
614 my_id = itab(ixri(j+1,ns))
615 IF (my_id /= 0) THEN
616 WRITE(varname,'(A,I0)') 'IXRI_',j
617 CALL qaprint(varname(1:len_trim(varname)), my_id,0.0_8)
618 ENDIF
619 ENDDO
620
621 ENDDO
622 DEALLOCATE(index,itr1)
623
624 END IF
625
626 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter nchartitle
logical function myqakey(value)
@purpose Check if a given value is part of the values set by env variable Useful to make a condition ...
subroutine qaprint(name, idin, value)
@purpose print one entry to QA extract file example of call for real print CALL QAPRINT('MY_LABEL',...