OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_prelecgrns.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| hm_prelecgrns ../starter/source/groups/hm_prelecgrns.f
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| hm_get_int_array_index ../starter/source/devtools/hm_reader/hm_get_int_array_index.F
29!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
30!|| hm_option_read_key ../starter/source/devtools/hm_reader/hm_option_read_key.F
31!|| hm_option_start ../starter/source/devtools/hm_reader/hm_option_start.F
32!|| usr2sys ../starter/source/system/sysfus.F
33!||--- uses -----------------------------------------------------
34!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
35!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_prelecgrns(ITABM1 ,IGRNOD ,LSUBMODEL)
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
159 END
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)
subroutine hm_prelecgrns(itabm1, igrnod, lsubmodel)
integer, parameter nchartitle
integer, parameter ncharkey
program starter
Definition starter.F:39