OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_prelecgrns.F File Reference
#include "implicit_f.inc"
#include "com04_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_prelecgrns (itabm1, igrnod, lsubmodel)

Function/Subroutine Documentation

◆ hm_prelecgrns()

subroutine hm_prelecgrns ( integer, dimension(*) itabm1,
type (group_), dimension(ngrnod) igrnod,
type(submodel_data), dimension(*) lsubmodel )

Definition at line 38 of file hm_prelecgrns.F.

39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE my_alloc_mod
43 USE message_mod
44 USE groupdef_mod
45 USE submodel_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "com04_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER ITABM1(*)
60C-----------------------------------------------
61 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
62 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
63C-----------------------------------------------
64C L o c a l V a r i a b l e s
65C-----------------------------------------------
66 INTEGER J10(10)
67 INTEGER I,J,K,ID,NNOD,NL,IGS,KK,JJ,NENTITY,UID,NN
68 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
69 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
70 CHARACTER MESS*40
71 LOGICAL IS_AVAILABLE
72C-----------------------------------------------
73C E x t e r n a l F u n c t i o n s
74C-----------------------------------------------
75 INTEGER USR2SYS
76 DATA mess/'NODENS GROUP DEFINITION '/
77C-----------------------------------------------
78C IGRNOD(IGS)%ID : GROUP identifier
79C IGRNOD(IGS)%TITLE : GROUP title
80C IGRNOD(IGS)%NENTITY : Entities (nodes) number of the GROUP
81C IGRNOD(IGS)%GRTYPE : TYPE ( 0-NOEUDS, 1-BRIC, 2-QUAD, 3-SHELL_4N,
82! 4-TRUSS, 5-BEAM, 6-SPRINGS,7-SHELL_3N )
83!! GRTYPE --- > OBSOLETE
84C IGRNOD(IGS)%SORTED : FLAG for sorted/unsorted nodes
85! = 0 -> sorted
86! = 1 -> unsorted
87C IGRNOD(IGS)%GRPGRP : TYPE of nodal GROUP
88! = 1 FOR /GRNOD/NOD
89! = 2 FOR /GRNOD/GNROD
90! = 0 ALL THE REST
91C IGRNOD(IGS)%LEVEL : Hierarchy level
92! (FLAG 'SUBLEVEL DONE' FOR GROUPS OF GROUPS)
93! = 0 ---> not yet initialized
94! = 1 ---> done
95! - R2R -
96! ! R2R_ALL <--- IGROUP2(8,I) = IGROUP2(2,I) -- before splitting
97! ! R2R_SHARE <--- IGROUP2(9,I) (shared on boundary subdomain)
98C IGRNOD(IGS)%R2R_ALL ! Multidomaines -> number of node(elems, parts) before split
99C IGRNOD(IGS)%R2R_SHARE ! shared on boundary subdomain
100C-----------------------------------------------
101 is_available = .false.
102C=======================================================================
103C groupes de noeuds(type NODE,NODENS) + init IGRNOD(IGS)%ID
104C=======================================================================
105 igs=0
106 titr1='NODENS GROUP'
107!
108 CALL hm_option_start('/GRNOD')
109!
110C
111 ! Loop over all GRNOD
112 DO i=1,ngrnod
113C
114 ! Read keys and uid
115 CALL hm_option_read_key(lsubmodel,
116 . option_id = id,
117 . option_titr = titr ,
118 . unit_id = uid,
119 . keyword2 = key ,
120 . keyword3 = key2)
121C
122 ! Increasing the counter
123 igs=igs+1
124C
125 ! Initialization of data structure
126 igrnod(igs)%ID=id
127 igrnod(igs)%GRTYPE=0 !!! obsolete
128 igrnod(igs)%SORTED=0
129 igrnod(igs)%LEVEL=1
130 igrnod(igs)%TITLE=titr
131 nn=0
132 nnod=0
133 !-----------------------------------------------------------------
134 ! GRNOD from NODENS
135 IF(key(1:6) == 'NODENS') THEN
136! groupe de noeuds (non sorted)
137 CALL hm_get_intv('idsmax' ,nentity,is_available,lsubmodel)
138 DO kk = 1,nentity
139 CALL hm_get_int_array_index ('ids',jj ,kk,is_available,lsubmodel)
140 IF (jj /= 0) THEN
141 nnod = nnod + 1
142 ENDIF
143 ENDDO
144 igrnod(igs)%NENTITY = nnod
145 igrnod(igs)%GRPGRP = 1
146 CALL my_alloc(igrnod(igs)%ENTITY,nnod)
147 igrnod(igs)%SORTED = 1
148 DO kk = 1,nentity
149 CALL hm_get_int_array_index ('ids',jj ,kk,is_available,lsubmodel)
150 IF (jj /= 0) THEN
151 nn = nn + 1
152 igrnod(igs)%ENTITY(nn)=usr2sys(jj,itabm1,mess,id)
153 ENDIF
154 ENDDO
155 ENDIF ! IF(LINE(1:1) == '/')
156 ENDDO
157!-----
158 RETURN
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_start(entity_type)
initmumps id
integer, parameter nchartitle
integer, parameter ncharkey
integer function usr2sys(iu, itabm1, mess, id)
Definition sysfus.F:160