OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_set.F File Reference
#include "implicit_f.inc"
#include "radioss_maptable.inc"
#include "com04_c.inc"
#include "scr17_c.inc"
#include "param_c.inc"
#include "sphcom.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_set (set, lsubmodel, inv_group, map_tables, ipart, igrsurf, igrnod, igrslin, igrpart, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, ixs, ixs10, ixc, ixtg, knod2els, nod2els, knod2elc, nod2elc, knod2eltg, nod2eltg, ipartc, ipartg, iparts, sh4tree, sh3tree, ixq, knod2elq, nod2elq, x, ixt, ixp, ixr, ixx, kxx, kxsp, ixs20, ixs16, geo, itabm1, ibox, skew, ipartq, ipartt, ipartp, ipartr, subset, rby_msn, iskn, rtrans, unitab, bufsf, iad, siskwn, sskew, rootnam, rootlen, infile_name, infile_name_len)

Function/Subroutine Documentation

◆ hm_set()

subroutine hm_set ( type (set_), dimension(nsets), intent(inout) set,
type(submodel_data), dimension(*), intent(in) lsubmodel,
type(invertgroup_struct_), intent(in) inv_group,
type(mapping_struct_) map_tables,
integer, dimension(lipart1,npart) ipart,
type (surf_), dimension(*), intent(inout) igrsurf,
type (group_), dimension(*), intent(inout) igrnod,
type (surf_), dimension(*), intent(inout) igrslin,
type (group_), dimension(*), intent(inout) igrpart,
type (group_), dimension(*), intent(inout) igrbric,
type (group_), dimension(*), intent(inout) igrquad,
type (group_), dimension(*), intent(inout) igrsh4n,
type (group_), dimension(*), intent(inout) igrsh3n,
type (group_), dimension(*), intent(inout) igrtruss,
type (group_), dimension(*), intent(inout) igrbeam,
type (group_), dimension(*), intent(inout) igrspring,
integer, dimension(nixs,*), intent(in) ixs,
integer, dimension(6,*), intent(in) ixs10,
integer, dimension(nixc,*), intent(in) ixc,
integer, dimension(nixtg,*), intent(in) ixtg,
integer, dimension(*), intent(in) knod2els,
integer, dimension(*), intent(in) nod2els,
integer, dimension(*), intent(in) knod2elc,
integer, dimension(*), intent(in) nod2elc,
integer, dimension(*), intent(in) knod2eltg,
integer, dimension(*), intent(in) nod2eltg,
integer, dimension(*), intent(in) ipartc,
integer, dimension(*), intent(in) ipartg,
integer, dimension(*), intent(in) iparts,
integer, dimension(*), intent(in) sh4tree,
integer, dimension(*), intent(in) sh3tree,
integer, dimension(nixq,*), intent(in) ixq,
integer, dimension(*), intent(in) knod2elq,
integer, dimension(*), intent(in) nod2elq,
x,
integer, dimension(nixt,*), intent(in) ixt,
integer, dimension(nixp,*), intent(in) ixp,
integer, dimension(nixr,*), intent(in) ixr,
integer, dimension(*), intent(in) ixx,
integer, dimension(*), intent(in) kxx,
integer, dimension(nisp,*), intent(in) kxsp,
integer, dimension(12,*), intent(in) ixs20,
integer, dimension(8,*), intent(in) ixs16,
geo,
integer, dimension(2*numnod), intent(in) itabm1,
type (box_), dimension(nbbox) ibox,
skew,
integer, dimension(*), intent(in) ipartq,
integer, dimension(*), intent(in) ipartt,
integer, dimension(*), intent(in) ipartp,
integer, dimension(*), intent(in) ipartr,
type (subset_), dimension(*), intent(inout) subset,
integer, dimension(2*nrbody), intent(in) rby_msn,
integer, dimension(liskn,siskwn/liskn), intent(in) iskn,
dimension(ntransf,nrtrans), intent(in) rtrans,
type (unit_type_), intent(in) unitab,
dimension(lisurf1*(nsurf+nsets)), intent(inout) bufsf,
integer, intent(inout) iad,
integer, intent(in) siskwn,
integer, intent(in) sskew,
character(len=rootlen), intent(in) rootnam,
integer, intent(in) rootlen,
character(len=infile_name_len), intent(in) infile_name,
integer, intent(in) infile_name_len )

Definition at line 75 of file hm_set.F.

88C-----------------------------------------------
89C ROUTINE DESCRIPTION :
90C ===================
91C Main Routine for SET read & treatments
92C-----------------------------------------------
93C DUMMY ARGUMENTS DESCRIPTION:
94C ===================
95C
96C NAME DESCRIPTION
97C
98C SET Set Structure
99C LSUBMODEL Submodel Structure
100C IPARTM1 PART Map table UID -> Internal ID
101C IGRxxx Radioss Structures Groups of Nodes, Parts, Elements, Surfaces and lines
102C===========================================================================================
103C-----------------------------------------------
104C M o d u l e s
105C-----------------------------------------------
107 USE setdef_mod
108 USE submodel_mod
111 USE groupdef_mod
112 USE optiondef_mod
113 USE message_mod
115 USE unitab_mod
116 USE create_plane_clause_mod
117 USE create_nodens_clause_mod
119 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
120C-----------------------------------------------
121C I m p l i c i t T y p e s
122C-----------------------------------------------
123#include "implicit_f.inc"
124C-----------------------------------------------
125C C o m m o n B l o c k s
126C-----------------------------------------------
127#include "radioss_maptable.inc"
128#include "com04_c.inc"
129#include "scr17_c.inc"
130#include "param_c.inc"
131#include "sphcom.inc"
132C-----------------------------------------------
133C D u m m y A r g u m e n t s
134C-----------------------------------------------
135 TYPE (SET_), DIMENSION(NSETS),INTENT(INOUT) :: SET
136 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
137 TYPE(INVERTGROUP_STRUCT_),INTENT(IN) :: INV_GROUP
138 TYPE(MAPPING_STRUCT_) :: MAP_TABLES
139 TYPE (BOX_) , DIMENSION(NBBOX) :: IBOX
140 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
141
142 TYPE (GROUP_) , INTENT(INOUT):: IGRNOD(*)
143 TYPE (SURF_) , INTENT(INOUT):: IGRSURF(*)
144 TYPE (SURF_) , INTENT(INOUT):: IGRSLIN(*)
145 TYPE (GROUP_) , INTENT(INOUT):: IGRPART(*)
146 TYPE (GROUP_) , INTENT(INOUT):: IGRBRIC(*)
147 TYPE (GROUP_) , INTENT(INOUT):: IGRQUAD(*)
148 TYPE (GROUP_) , INTENT(INOUT):: IGRSH4N(*)
149 TYPE (GROUP_) , INTENT(INOUT):: IGRSH3N(*)
150 TYPE (GROUP_) , INTENT(INOUT):: IGRTRUSS(*)
151 TYPE (GROUP_) , INTENT(INOUT):: IGRBEAM(*)
152 TYPE (GROUP_) , INTENT(INOUT):: IGRSPRING(*)
153 TYPE (SUBSET_) , INTENT(INOUT) :: SUBSET(*)
154
155 INTEGER, INTENT(INOUT) :: IAD
156 my_real, INTENT(INOUT) :: bufsf(lisurf1*(nsurf+nsets))
157 INTEGER, DIMENSION(2*NUMNOD), INTENT(IN) :: ITABM1
158 INTEGER, DIMENSION(2*NRBODY), INTENT(IN) :: RBY_MSN
159
160 INTEGER IPART(LIPART1,NPART)
161 INTEGER, INTENT(IN) :: IXS(NIXS,*),IXS10(6,*),IXS16(8,*),IXS20(12,*),
162 . IXC(NIXC,*),IXTG(NIXTG,*),KNOD2ELS(*),KNOD2ELC(*),KNOD2ELTG(*),
163 . NOD2ELS(*),NOD2ELC(*),NOD2ELTG(*),IPARTC(*),IPARTG(*),IPARTS(*),
164 . SH4TREE(*),SH3TREE(*),KNOD2ELQ(*),NOD2ELQ(*),IXQ(NIXQ,*),
165 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),IXX(*),KXX(*),KXSP(NISP,*),
166 . IPARTQ(*),IPARTT(*),IPARTP(*),IPARTR(*)
167 INTEGER, INTENT(IN) :: SISKWN,SSKEW
168 my_real
169 . x(3,*),geo(npropg,*),skew(lskew,*)
170 INTEGER, INTENT(IN) :: ISKN(LISKN,SISKWN/LISKN)
171 my_real, INTENT(IN) :: rtrans(ntransf,nrtrans)
172
173 INTEGER, INTENT(IN) :: ROOTLEN,INFILE_NAME_LEN
174 CHARACTER(LEN=ROOTLEN), INTENT(IN) :: ROOTNAM
175 CHARACTER(LEN=INFILE_NAME_LEN), INTENT(IN) :: INFILE_NAME
176C-----------------------------------------------
177C L o c a l V a r i a b l e s
178C-----------------------------------------------
179 INTEGER IGS, I, J, SUB_ID
180 INTEGER SET_ID,ISET_TYPE,CLAUSES_MAX,ITMP,ICODE,SETL_SIZE
181 INTEGER OPT_D,OPT_O,OPT_G,OPT_B,OPT_A,OPT_E,OPT_I,OPT_C
182 INTEGER , DIMENSION(:), ALLOCATABLE :: SET_LIST,SETL
183 INTEGER IDEBUG
184 LOGICAL IS_AVAILABLE
185 TYPE (SET_) :: CLAUSE
186 INTEGER CLAUSE_OPERATOR
187 INTEGER ADMBID
188 INTEGER DUMMY_ARRAY(10),DSZ
189 DATA admbid/0/
190 TYPE (SET_SCRATCH) :: DELBUF
191C-----------------CREATE_SET_ARRAY------------------------------
192C Characters
193 CHARACTER MESS*40
194 CHARACTER(LEN=NCHARFIELD) :: KEYSET,SET_TYPE,KEY_TYPE
195 CHARACTER(LEN=NCHARKEY) :: KEY,KEYPART
196 CHARACTER(LEN=NCHARTITLE) :: TITLE,SET_TITLE,TITLE2
197
198C-----------------------------------------------
199C Initialization / SET Dependency build
200C-----------------------------------------------
201
202 idebug = 0
203 IF (idebug == 1) THEN
204 print*,'------------- SET NG -------------'
205 ENDIF
206
207
208C-------------------------------------------
209C Reorder Sets to take care of dependencies
210C-------------------------------------------
211 ALLOCATE(set_list(nsets))
212 CALL sort_set(lsubmodel ,map_tables, set_list,set,clause)
213
214C-----------------------------------------------
215C SET MAIN LOOP
216C-----------------------------------------------
217 CALL hm_option_start_list('/SET')
218
219 ! ------------------------
220 ! Initial CLAUSE init
221 ! ------------------------
222
223
224 DO i = 1,nsets
225 igs = set_list(i)
226
227 set_type = ' '
228 keyset = ' '
229 key = ' '
230
231 CALL hm_option_read_key (lsubmodel,
232 . option_id = set_id,
233 . option_titr = set_title,
234 . keyword2 = key,
235 . opt_pos = igs,
236 . submodel_id = sub_id)
237 CALL hm_get_string('set_Type' , set_type ,ncharfield, is_available)
238 CALL hm_get_intv ('iset_Type', iset_type,is_available,lsubmodel)
239
240 ! --------------------
241 ! Current SET_INIT
242 ! --------------------
243 CALL set_init(set ,igs ,set_id, set_title, iset_type)
244
245
246 CALL hm_get_intv('clausesmax',clauses_max,is_available,lsubmodel)
247
248 IF (idebug == 1)THEN
249 print*,'--------------------------------------------'
250 print*,'IGS =',igs
251 print*,'MY_SET_ID =',set_id
252 print*,'SET_TITLE =',trim(set_title)
253 print*,' KEY =',key(1:len_trim(key))
254 print*,'SET_TYPE =',set_type(1:len_trim(set_type))
255 print*,'CLAUSE_MAX=',clauses_max
256 print*,'SET_ACTIVE=',set(igs)%SET_ACTIV
257 print*,' '
258 ENDIF
259
260 DO j=1,clauses_max ! max KEY's of the current /SET
261
262 CALL clause_init(clause)
263
264 CALL hm_get_string_index('KEY_type', keyset, j, ncharline, is_available)
265
266 IF(keyset(1:len_trim(keyset)) == '') cycle
267
268 CALL hm_get_int_array_index('opt_D',opt_d,j,is_available,lsubmodel)
269 CALL hm_get_int_array_index('opt_O',opt_o,j,is_available,lsubmodel)
270 CALL hm_get_int_array_index('opt_G',opt_g,j,is_available,lsubmodel)
271 CALL hm_get_int_array_index('opt_B',opt_b,j,is_available,lsubmodel)
272 CALL hm_get_int_array_index('opt_A',opt_a,j,is_available,lsubmodel)
273 CALL hm_get_int_array_index('opt_E',opt_e,j,is_available,lsubmodel)
274 CALL hm_get_int_array_index('opt_I',opt_i,j,is_available,lsubmodel)
275 CALL hm_get_int_array_index('opt_C',opt_c,j,is_available,lsubmodel)
276
277 !-----------------------
278 ! issue 'KEY' ---> read one more character than the KEY
279 ! ===> workaround
280
281 itmp = len(trim(keyset))
282 icode = iachar(keyset(itmp:itmp))
283 IF (icode == 0) THEN
284 keyset(itmp:itmp)=' '
285 ENDIF
286
287 !---------------------
288 ! Clause Operator
289 !---------------------
290 CALL set_operator( opt_d,opt_o,opt_g, ! CLAUSE_OPERATOR = SET_ADD (1)
291 * opt_b,opt_a,opt_e, ! SET_DELETE (2)
292 * opt_i,opt_c, ! SET_INTERSECT (3)
293 * clause_operator )
294
295 ! -----------------------------------------------------
296 IF (idebug == 1)THEN
297 WRITE(6,'(A,I6,A)' ) ' ',j,' --------'
298 WRITE(6,'(A,A)') ' ',trim(keyset)
299 WRITE(6,'(A,I2)') ' OP :',clause_operator
300 ENDIF
301 ! -----------------------------------------------------
302 ! To issue error & Warnings, initialize Clause ID & Title with SET_ID + TITLE
303 clause%SET_ID = set(igs)%SET_ID
304 clause%TITLE = trim(set(igs)%TITLE)
305
306 ! Clause Treatment
307 !------------------------
308
309 SELECT CASE (trim(keyset))
310
311 CASE ( 'PART' )
312
313 ! PART LIST FROM CLAUSE
314 !-----------------------
316 . clause ,map_tables%IPARTM ,j ,opt_g ,is_available ,
317 . lsubmodel)
318
319 ! Element from PART
320 !-------------------
321 CALL create_element_from_part(clause ,inv_group,numsph)
322
323 ! Surface from ELEMENT
324 !-------------------
326 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
327 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
328 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
329 . ipart ,clause ,opt_a ,opt_o ,ixq ,
330 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
331 . .false. ,ipartq )
332
333
334 ! Line from 1D_ELEMENT
335 !-------------------
336 CALL create_line_from_element(ixt ,ixp ,ixr ,clause,delbuf ,
337 . .false.)
338
339 ! Line from SURFACE
340 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
341 . .false.)
342
343 ! Node from ELEMENT
345 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
346 . ixc ,ixtg ,ixt ,ixp ,ixr ,
347 . ixx ,kxx ,kxsp ,clause ,geo,
348 . dummy_array ,dsz ,.false. )
349
350
351 CASE ( 'NODE' )
352
353 ! NODE LIST FROM CLAUSE
354 !-----------------------
356 . clause ,itabm1 ,j ,opt_g ,is_available ,
357 . lsubmodel,opt_b ,ibox ,x ,skew ,
358 . set_title,keyset )
359
360
361 CASE ( 'SOLID' )
362
363 ! SOLID LIST FROM CLAUSE
364 !-----------------------
366 . clause, elt_solid,
367 . map_tables%ISOLM, numels,
368 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
369 . opt_c ,ibox ,x ,skew ,set_title,
370 . keyset ,nixs ,ixs ,8 ,iparts ,
371 . ipart ,admbid ,admbid ,admbid )
372
373 ! Surface from ELEMENT
374 !-------------------
376 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
377 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
378 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
379 . ipart ,clause ,opt_a ,opt_o ,ixq ,
380 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
381 . .false. ,ipartq )
382
383 ! Line from SURFACE
384 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
385 . .false.)
386
387 ! node from element
389 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
390 . ixc ,ixtg ,ixt ,ixp ,ixr ,
391 . ixx ,kxx ,kxsp ,clause ,geo ,
392 . dummy_array ,dsz ,.false. )
393
394
395
396 CASE ( 'QUAD' )
397
398 ! QUAD LIST FROM CLAUSE
399 !-----------------------
401 . clause, elt_quad,
402 . map_tables%IQUADM, numelq,
403 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
404 . opt_c ,ibox ,x ,skew ,set_title,
405 . keyset ,nixq ,ixq ,4 ,ipartq ,
406 . ipart ,admbid ,admbid ,admbid )
407
408 ! Surface from ELEMENT
409 !-------------------
411 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
412 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
413 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
414 . ipart ,clause ,opt_a ,opt_o ,ixq ,
415 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
416 . .false. ,ipartq )
417
418 ! Line from SURFACE
419 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
420 . .false.)
421
422 ! Node from ELEMENT
424 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
425 . ixc ,ixtg ,ixt ,ixp ,ixr ,
426 . ixx ,kxx ,kxsp ,clause ,geo ,
427 . dummy_array ,dsz ,.false. )
428
429
430
431 CASE ( 'SHELL' )
432
433 ! SHELL LIST FROM CLAUSE
434 !-----------------------
436 . clause, elt_sh4n,
437 . map_tables%ISH4NM, numelc,
438 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
439 . opt_c ,ibox ,x ,skew ,set_title,
440 . keyset ,nixc ,ixc ,4 ,ipartc ,
441 . ipart ,3 ,sh4tree ,ksh4tree )
442
443
444 ! Surface from ELEMENT
445 !-------------------
447 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
448 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
449 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
450 . ipart ,clause ,opt_a ,opt_o ,ixq ,
451 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
452 . .false. ,ipartq )
453
454 ! Line from SURFACE
455 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
456 . .false.)
457
458 ! Node from ELEMENT
460 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
461 . ixc ,ixtg ,ixt ,ixp ,ixr ,
462 . ixx ,kxx ,kxsp ,clause ,geo ,
463 . dummy_array ,dsz ,.false. )
464
465
466
467 CASE ( 'SH3N' )
468
469 ! SH3N LIST FROM CLAUSE
470 !-----------------------
472 . clause, elt_sh3n,
473 . map_tables%ISH3NM, numeltg,
474 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
475 . opt_c ,ibox ,x ,skew ,set_title,
476 . keyset ,nixtg ,ixtg ,3 ,ipartg ,
477 . ipart ,3 ,sh3tree ,ksh3tree )
478
479 ! Surface from ELEMENT
480 !-------------------
482 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
483 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
484 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
485 . ipart ,clause ,opt_a ,opt_o ,ixq ,
486 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
487 . .false. ,ipartq )
488
489 ! Line from SURFACE
490 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
491 . .false.)
492
493 ! Node from ELEMENT
495 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
496 . ixc ,ixtg ,ixt ,ixp ,ixr ,
497 . ixx ,kxx ,kxsp ,clause ,geo ,
498 . dummy_array ,dsz ,.false. )
499
500
501
502 CASE ( 'TRIA' )
503
504 ! SH3N LIST FROM CLAUSE
505 !-----------------------
507 . clause, elt_tria,
508 . map_tables%ITRIAM, numeltria,
509 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
510 . opt_c ,ibox ,x ,skew ,set_title,
511 . keyset ,nixtg ,ixtg ,3 ,ipartg ,
512 . ipart ,admbid ,admbid ,admbid )
513
514 ! No surfaces, no lines
515
516 ! Node from ELEMENT
518 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
519 . ixc ,ixtg ,ixt ,ixp ,ixr ,
520 . ixx ,kxx ,kxsp ,clause ,geo ,
521 . dummy_array ,dsz ,.false. )
522
523
524 CASE ( 'TRUSS' )
525
526 ! TRUSS LIST FROM CLAUSE
527 !-----------------------
529 . clause, elt_truss,
530 . map_tables%ITRUSSM, numelt,
531 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
532 . opt_c ,ibox ,x ,skew ,set_title,
533 . keyset ,nixt ,ixt ,2 ,ipartt ,
534 . ipart ,admbid ,admbid ,admbid )
535
536 ! Line from 1D_ELEMENT
537 !-------------------
538 CALL create_line_from_element(ixt ,ixp ,ixr ,clause,delbuf ,
539 . .false.)
540
541 ! Node from ELEMENT
543 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
544 . ixc ,ixtg ,ixt ,ixp ,ixr ,
545 . ixx ,kxx ,kxsp ,clause ,geo ,
546 . dummy_array ,dsz ,.false. )
547
548
549 CASE ( 'BEAM' )
550
551 ! BEAM LIST FROM CLAUSE
552 !-----------------------
554 . clause, elt_beam,
555 . map_tables%IBEAMM, numelp,
556 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
557 . opt_c ,ibox ,x ,skew ,set_title,
558 . keyset ,nixp ,ixp ,2 ,ipartp ,
559 . ipart ,admbid ,admbid ,admbid )
560
561 ! Line from 1D_ELEMENT
562 !-------------------
563 CALL create_line_from_element(ixt ,ixp ,ixr ,clause,delbuf ,
564 . .false.)
565
566 ! Node from ELEMENT
568 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
569 . ixc ,ixtg ,ixt ,ixp ,ixr ,
570 . ixx ,kxx ,kxsp ,clause ,geo ,
571 . dummy_array ,dsz ,.false. )
572
573 CASE ( 'SPRING' )
574
575 ! SPRING LIST FROM CLAUSE
576 !-----------------------
578 . clause, elt_spring,
579 . map_tables%ISPRINGM, numelr,
580 . j ,opt_g ,is_available,lsubmodel ,opt_b ,
581 . opt_c ,ibox ,x ,skew ,set_title,
582 . keyset ,nixr ,ixr ,2 ,ipartr ,
583 . ipart ,admbid ,admbid ,admbid )
584
585 ! Line from 1D_ELEMENT
586 !-------------------
587 CALL create_line_from_element(ixt ,ixp ,ixr ,clause,delbuf ,
588 . .false.)
589
590 ! Node from ELEMENT
592 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
593 . ixc ,ixtg ,ixt ,ixp ,ixr ,
594 . ixx ,kxx ,kxsp ,clause ,geo ,
595 . dummy_array ,dsz ,.false. )
596
597
598 CASE ('SET')
599
600 ALLOCATE(setl(nsets))
601 setl_size=0
602
603 CALL create_set_array(setl ,setl_size, ! Read the clause & compute the list of SETs
604 . map_tables%ISETM , map_tables%NSET_GENERAL,
605 . j ,opt_g ,is_available ,
606 . lsubmodel,clause,1)
607
608 CALL create_set_clause( set,
609 * setl ,setl_size,
610 * clause,
611 * ixs ,ixs10 , ixq ,
612 * ixc ,ixtg ,ixt ,ixp ,ixr ,
613 * sh4tree,
614 * sh3tree ,knod2els ,nod2els ,knod2elc ,nod2elc,
615 * knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
616 * ipart ,opt_a ,opt_o ,knod2elq ,nod2elq,
617 * x ,keyset ,opt_e ,delbuf ,ipartq ,
618 * numelq )
619
620 DEALLOCATE(setl)
621
622 CASE ('SETCOL')
623
624 ALLOCATE(setl(nsets))
625 setl_size=0
626
627 CALL create_setcol_array(set,setl, setl_size ,
628 * map_tables%ISETCOLM,map_tables%NSET_COLLECT,
629 * j,opt_g ,is_available ,
630 * lsubmodel)
631
632 ! At this stage we have list of SETs with internal IDs
633 ! The merge is same for SETs
634 ! -----------------------------------------------------
635 CALL create_set_clause( set,
636 * setl ,setl_size,
637 * clause,
638 * ixs ,ixs10 , ixq ,
639 * ixc ,ixtg ,ixt ,ixp ,ixr ,
640 * sh4tree,
641 * sh3tree ,knod2els ,nod2els ,knod2elc ,nod2elc,
642 * knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
643 * ipart ,opt_a ,opt_o ,knod2elq ,nod2elq,
644 * x ,keyset ,opt_e ,delbuf ,ipartq ,
645 * numelq )
646
647 CASE ( 'SEG' )
648
649 ! Surfaces and lines LIST FROM CLAUSE
650 !-----------------------
651 CALL create_seg_clause(clause, itabm1, j, is_available, lsubmodel)
652
653 ! Line from SURFACE
654 ! ELTYP_SEG = 0
655 IF (clause%NB_SURF_SEG > 0)CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf,.false.)
656
657 ! Node from SEG (SURF or LINE)
658 CALL create_node_from_seg( clause )
659
660
661 CASE ( 'ALL' )
662
663 !-----------------------
664 ! ALL model
665 !-----------------------
666
667 ! PART LIST FROM CLAUSE
668 !-----------------------
669 CALL create_part_all_clause( clause )
670
671 ! Element from PART
672 !-------------------
673 CALL create_elem_all_clause( clause )
674
675 ! Surface from ELEMENT
676 !-------------------
678 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
679 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
680 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
681 . ipart ,clause ,opt_a ,opt_o ,ixq ,
682 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
683 . .false. ,ipartq )
684
685
686 ! Line from 1D_ELEMENT
687 !-------------------
688 CALL create_line_from_element(ixt ,ixp ,ixr ,clause,delbuf ,
689 . .false.)
690
691 ! Line from SURFACE
692!! ELTYP_ALL = 0
693 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
694 . .false.)
695
696 ! Node ( 1 ... NUMNOD )
697 CALL create_node_all_clause( clause )
698
699
700 !IF (IDEBUG == 1)THEN
701 ! print*,'Check_ALL_model'
702 ! print*,'---------------'
703 ! print*,'NUMNOD = ' ,NUMNOD, 'CLAUSE%NB_NODE = ' ,CLAUSE%NB_NODE
704 ! print*,'NPART = ' ,NPART, 'CLAUSE%NB_PART = ' ,CLAUSE%NB_PART
705 ! print*,'SOLID = ' ,NUMELS, 'CLAUSE%NB_SOLID = ' ,CLAUSE%NB_SOLID
706 ! print*,'QUAD = ' ,NUMELQ, 'CLAUSE%NB_QUAD = ' ,CLAUSE%NB_QUAD
707 ! print*,'SHELL = ' ,NUMELC, 'CLAUSE%NB_SH4N = ' ,CLAUSE%NB_SH4N
708 ! print*,'SH3N = ' ,NUMELTG, 'CLAUSE%NB_SH3N = ' ,CLAUSE%NB_SH3N
709 ! print*,'TRIA = ' ,NUMELTRIA, 'CLAUSE%NB_TRIA = ' ,CLAUSE%NB_TRIA
710 ! print*,'TRUSS = ' ,NUMELT, 'CLAUSE%NB_TRUSS = ' ,CLAUSE%NB_TRUSS
711 ! print*,'BEAM = ' ,NUMELP, 'CLAUSE%NB_BEAM = ' ,CLAUSE%NB_BEAM
712 ! print*,'SPRING = ',NUMELR, 'CLAUSE%NB_SPRING = ',CLAUSE%NB_SPRING
713 !ENDIF
714
715 CASE ( 'BOX', 'BOX2' )
716
717 CALL create_box_clause(
718 * clause ,j ,is_available,lsubmodel ,keyset ,
719 * itabm1 ,ibox ,x ,skew ,ixs10 ,
720 * set_title,ipart ,sh4tree ,sh3tree ,iparts ,
721 * ipartq ,ipartc ,ipartg ,ipartt ,ipartp ,
722 * ipartr ,ixs ,ixq ,ixc ,ixtg ,
723 * ixt ,ixp ,ixr ,knod2els ,nod2els ,
724 * knod2elc ,nod2elc ,knod2eltg ,nod2eltg ,knod2elq ,
725 * nod2elq ,opt_a ,opt_o ,opt_e ,delbuf ,
726 * rby_msn ,map_tables%IRBODYM)
727
728
729 CASE ( 'SUBS' )
730
731 ! PART LIST FROM CLAUSE
732 !-----------------------
734 . clause ,map_tables%ISUBSM ,j ,opt_g ,is_available ,
735 . lsubmodel,subset )
736
737 ! Element from PART
738 !-------------------
739 CALL create_element_from_part(clause ,inv_group,numsph)
740
741 ! Surface from ELEMENT
742 !-------------------
744 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
745 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
746 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
747 . ipart ,clause ,opt_a ,opt_o ,ixq ,
748 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
749 . .false. ,ipartq )
750
751
752 ! Line from 1D_ELEMENT
753 !-------------------
754 CALL create_line_from_element(ixt ,ixp ,ixr ,clause,delbuf ,
755 . .false.)
756
757 ! Line from SURFACE
758 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
759 . .false.)
760
761 ! Node from ELEMENT
763 . ixs ,ixs10 ,ixs20 ,ixs16 ,ixq ,
764 . ixc ,ixtg ,ixt ,ixp ,ixr ,
765 . ixx ,kxx ,kxsp ,clause ,geo ,
766 . dummy_array ,dsz ,.false. )
767
768
769 CASE ( 'SUBM' )
770
771
772 ! PART LIST FROM CLAUSE
773 !-----------------------
775 . clause ,map_tables%ISUBMM ,j ,opt_g ,is_available ,
776 . lsubmodel,ipart )
777
778 ! Element from PART
779 !-------------------
780 CALL create_element_from_part(clause ,inv_group,numsph)
781
782 ! Surface from ELEMENT
783 !-------------------
785 . ixs ,ixs10 ,sh4tree ,sh3tree ,ixc ,
786 . ixtg ,knod2els ,nod2els ,knod2elc ,nod2elc ,
787 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
788 . ipart ,clause ,opt_a ,opt_o ,ixq ,
789 . knod2elq ,nod2elq ,x ,keyset ,delbuf ,
790 . .false. ,ipartq )
791
792
793 ! Line from 1D_ELEMENT
794 !-------------------
795 CALL create_line_from_element(ixt ,ixp ,ixr ,clause,delbuf ,
796 . .false.)
797
798 ! Line from SURFACE
799 CALL create_line_from_surface(clause,keyset,opt_a,opt_e,delbuf ,
800 . .false.)
801
802
803
804 CASE ( 'RBODY' )
805
806 ! RBODY LIST FROM CLAUSE
808 . clause ,map_tables%IRBODYM ,j ,opt_g ,is_available ,
809 . lsubmodel,opt_b ,ibox,x ,skew ,
810 . set_title,keyset ,rby_msn )
811
812 ! Main node from RBODY
813 CALL create_node_from_rbody(rby_msn,clause)
814
815
816 CASE ( 'ELLIPS' )
817
818 ! Hyper-Ellipsoid Surface Definition
819 !-----------------------
820 set(igs)%NB_ELLIPSE = 1
821 CALL create_ellipse_clause(clause%SET_ID,clause%TITLE ,sub_id ,skew ,rtrans,
822 . clause ,nrtrans ,lsubmodel,unitab ,iskn ,
823 . iad ,ntransf ,numskw ,liskn ,lskew ,
824 . sskew ,siskwn ,nspcond ,numsph )
825
826 CASE ( 'PLANE' )
827
828 ! Plane Surface Definition
829 !-----------------------
830 set(igs)%NB_PLANE = 1
831 CALL create_plane_clause(clause%SET_ID ,clause%TITLE ,sub_id ,clause ,lsubmodel,
832 . unitab ,iad ,nrtrans ,ntransf,rtrans )
833
834 CASE ( 'NODENS' )
835
836 ! NODENS -> UNSTABLE NODE LIST
837 !-----------------------
838 CALL create_nodens_clause(clause ,itabm1 ,j ,is_available ,lsubmodel ,numnod)
839
840 CASE DEFAULT
841
842 CALL ancmsg(msgid=1906,anmode=anstop,
843 . msgtype=msgerror,
844 . i1 = clause%SET_ID,
845 . c1=trim(clause%TITLE),
846 . c2=trim(keyset) )
847
848
849 END SELECT
850
851C -----------------------------------------------------
852 CALL insert_clause_in_set(set(igs) ,clause ,clause_operator,
853 . ixs ,ixs10 , ixq ,
854 . ixc ,ixtg ,ixt ,ixp ,ixr ,
855 . sh4tree,
856 . sh3tree ,knod2els ,nod2els ,knod2elc ,nod2elc,
857 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
858 . ipart ,opt_a ,opt_o ,knod2elq ,nod2elq,
859 . x ,keyset ,opt_e ,delbuf ,ipartq)
860C -----------------------------------------------------
861!
862 ENDDO ! DO J=1,CLAUSES_MAX
863
864 IF( trim(key) == 'COLLECT' ) THEN
865
866 IF (set(igs)%SET_ACTIV == 1)THEN ! Merge the Collect SETs only if Active
867
868 CALL create_set_collect(set ,set_id ,igs ,map_tables%ISETCOLM ,map_tables%NSET_COLLECT,
869 * ixs ,ixs10 , ixq ,
870 * ixc ,ixtg ,ixt ,ixp ,ixr ,
871 * sh4tree,
872 . sh3tree ,knod2els ,nod2els ,knod2elc ,nod2elc,
873 . knod2eltg ,nod2eltg ,ipartc ,ipartg ,iparts ,
874 . ipart ,opt_a ,opt_o ,knod2elq ,nod2elq,
875 . x ,keyset ,opt_e ,delbuf ,ipartq ,
876 * numelq )
877
878 ENDIF
879
880 ENDIF
881
882 ENDDO ! DO IGS=1,NSETS
883
884 CALL clause_init(clause)
885
886
887
888 ! -----------------------------------------------------
889 !IF (IDEBUG == 1)THEN
890 ! DO IGS=1,NSETS
891 ! print*,'-----------'
892 ! print*,IGS
893 ! print*,'NB_PART=',SET(IGS)%NB_PART
894 ! IF(SET(IGS)%NB_PART > 0)THEN
895 ! DO I=1,SET(IGS)%NB_PART
896 ! print*,'PARTS:',SET(IGS)%PART(I),IPART(4,SET(IGS)%PART(I))
897 ! ENDDO
898 ! ENDIF
899 ! ENDDO
900 ! print*,'-----------'
901 ! print*,' '
902 !ENDIF
903 ! -----------------------------------------------------
904
905 ! Fill Radioss Group, surface lines
906 ! -----------------------------------------------------
907 CALL fill_igr(set,
908 . igrsurf ,igrnod ,igrslin ,igrpart ,igrbric, igrquad ,
909 . igrsh4n ,igrsh3n ,igrtruss ,igrbeam ,igrspring,bufsf ,
910 . lisurf1 ,rootnam ,rootlen ,infile_name ,infile_name_len)
911
912
subroutine clause_init(clause)
Definition clause_init.F:31
#define my_real
Definition cppsort.cpp:32
subroutine create_box_clause(clause, jclause, is_available, lsubmodel, keyset, itabm1, ibox, x, skew, ixs10, set_title, ipart, sh4tree, sh3tree, iparts, ipartq, ipartc, ipartg, ipartt, ipartp, ipartr, ixs, ixq, ixc, ixtg, ixt, ixp, ixr, knod2els, nod2els, knod2elc, nod2elc, knod2eltg, nod2eltg, knod2elq, nod2elq, opt_a, opt_o, opt_e, delbuf, rby_msn, irbodym)
subroutine create_elem_all_clause(clause)
subroutine create_elt_clause(clause, eltyp, map, mapsize, jclause, opt_g, is_available, lsubmodel, opt_b, opt_c, ibox, x, skew, set_title, keyset, nix, ix, nix1, iparte, ipart, klevtree, eltree, keltree)
subroutine create_element_from_part(clause, inv_group, numsph)
subroutine create_ellipse_clause(id, title, sub_id, skew, rtrans, clause, nrtrans, lsubmodel, unitab, iskn, iad, ntransf, numskw, liskn, lskew, sskew, siskwn, nspcond, numsph)
subroutine create_line_from_element(ixt, ixp, ixr, clause, delbuf, go_in_array)
subroutine create_line_from_surface(clause, keyset, opt_a, opt_e, delbuf, go_in_array)
subroutine create_node_all_clause(clause)
subroutine create_node_clause(clause, itabm1, jclause, opt_g, is_available, lsubmodel, opt_b, ibox, x, skew, set_title, keyset)
subroutine create_node_from_element(ixs, ixs10, ixs20, ixs16, ixq, ixc, ixtg, ixt, ixp, ixr, ixx, kxx, kxsp, clause, geo, array, sz, go_in_array)
subroutine create_node_from_rbody(rby_msn, clause)
subroutine create_node_from_seg(clause)
subroutine create_part_all_clause(clause)
subroutine create_part_clause(clause, ipartm1, jclause, opt_g, is_available, lsubmodel)
subroutine create_rbody_clause(clause, irbodym, jclause, opt_g, is_available, lsubmodel, opt_b, ibox, x, skew, set_title, keyset, rby_msn)
subroutine create_seg_clause(clause, itabm1, jclause, is_available, lsubmodel)
subroutine create_set_array(set_array, array_size, isetm, nset_general, jclause, opt_g, is_available, lsubmodel, clause, flag)
subroutine create_set_clause(set, setl, setl_size, clause, ixs, ixs10, ixq, ixc, ixtg, ixt, ixp, ixr, sh4tree, sh3tree, knod2els, nod2els, knod2elc, nod2elc, knod2eltg, nod2eltg, ipartc, ipartg, iparts, ipart, opt_a, opt_o, knod2elq, nod2elq, x, keyset, opt_e, delbuf, ipartq, numelq)
subroutine create_setcol_array(set, setcol_array, array_size, isetcolm, nset_collect, jclause, opt_g, is_available, lsubmodel)
subroutine create_set_collect(set, set_id, igs, setcol_array, array_size, ixs, ixs10, ixq, ixc, ixtg, ixt, ixp, ixr, sh4tree, sh3tree, knod2els, nod2els, knod2elc, nod2elc, knod2eltg, nod2eltg, ipartc, ipartg, iparts, ipart, opt_a, opt_o, knod2elq, nod2elq, x, keyset, opt_e, delbuf, ipartq, numelq)
subroutine create_subm_clause(clause, isubmm, jclause, opt_g, is_available, lsubmodel, ipart)
subroutine create_subs_clause(clause, isubsm, jclause, opt_g, is_available, lsubmodel, subset)
subroutine create_surface_from_element(ixs, ixs10, sh4tree, sh3tree, ixc, ixtg, knod2els, nod2els, knod2elc, nod2elc, knod2eltg, nod2eltg, ipartc, ipartg, iparts, ipart, clause, opt_a, opt_o, ixq, knod2elq, nod2elq, x, keyset, delbuf, go_in_array, ipartq)
subroutine fill_igr(set, igrsurf, igrnod, igrslin, igrpart, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, bufsf, lisurf1, rootnam, rootlen, infile_name, infile_name_len)
Definition fill_igr.F:45
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string(name, sval, size, is_available)
subroutine hm_get_string_index(name, sval, index, size, is_available)
subroutine hm_option_start_list(entity_type)
subroutine insert_clause_in_set(set, clause, clause_operator, ixs, ixs10, ixq, ixc, ixtg, ixt, ixp, ixr, sh4tree, sh3tree, knod2els, nod2els, knod2elc, nod2elc, knod2eltg, nod2eltg, ipartc, ipartg, iparts, ipart, opt_a, opt_o, knod2elq, nod2elq, x, keyset, opt_e, delbuf, ipartq)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
integer, parameter ncharline
integer nsets
Definition setdef_mod.F:120
subroutine set_init(set, igs, set_id, set_title, iset_type)
Definition set_init.F:32
subroutine set_operator(opt_d, opt_o, opt_g, opt_b, opt_a, opt_e, opt_i, opt_c, clause_operator)
subroutine sort_set(lsubmodel, map_tables, set_list, set, clause)
Definition sort_sets.F:45
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:895