OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fill_gr.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!|| fill_gr ../starter/source/model/sets/fill_gr.F
25!||--- called by ------------------------------------------------------
26!|| fill_igr ../starter/source/model/sets/fill_igr.F
27!||--- calls -----------------------------------------------------
28!||--- uses -----------------------------------------------------
29!|| message_mod ../starter/share/message_module/message_mod.F
30!||====================================================================
31 SUBROUTINE fill_gr(IGRELE, NGRELEM ,IELT,
32 . SET_ID ,SET_TITLE,GETELEM, NELEM,SET_GREID)
33C-----------------------------------------------
34C ROUTINE DESCRIPTION :
35C ===================
36C Merge one SET type in Group
37C-----------------------------------------------
38C DUMMY ARGUMENTS DESCRIPTION:
39C ===================
40C
41C NAME DESCRIPTION
42C
43C SET Set Structure - Current SET
44C IGRxxx SURFACES & Groups
45C============================================================================
46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE my_alloc_mod
50 USE message_mod
51 USE groupdef_mod
52 USE setdef_mod
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER,INTENT(IN) :: SET_ID
65 INTEGER,INTENT(INOUT) :: NGRELEM
66 INTEGER,INTENT(IN) :: NELEM,IELT
67 INTEGER,INTENT(IN) :: GETELEM(*)
68 INTEGER,INTENT(OUT) :: SET_GREID
69C-----------------------------------------------
70 TYPE (GROUP_) , TARGET ,INTENT(INOUT):: IGRELE(*)
71 CHARACTER(LEN=NCHARTITLE)::SET_TITLE
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER I,IGRE
76C-----------------------------------------------
77 !IF (NELEM == 0) RETURN create even if empty
78!
79! NELEM ==> nb of the elemes of the new group of element (IGRBRIC, ...)
80! (from /SET)
81!
82 igre = ngrelem
83!
84! create new grelem (IGRBRIC, etc) from elems of /SET
85!
86!---
87 igre = igre + 1
88!---
89 igrele(igre)%ID = set_id
90 igrele(igre)%TITLE = set_title
91 igrele(igre)%NENTITY = nelem
92 igrele(igre)%GRTYPE = ielt
93
94! not printout empty group
95 IF (nelem == 0) igrele(igre)%SET_GROUP = 1
96!
97 IF (nelem > 0) THEN
98 CALL my_alloc(igrele(igre)%ENTITY,nelem)
99 igrele(igre)%ENTITY(1:nelem) = getelem(1:nelem)
100 ENDIF
101
102 ! increment NGRELEM
103 ngrelem = igre
104
105 ! In SET save GRID
106 set_greid = igre
107C-----
108 RETURN
109 END
110!||====================================================================
111!|| fill_surf ../starter/source/model/sets/fill_gr.F
112!||--- called by ------------------------------------------------------
113!|| fill_igr ../starter/source/model/sets/fill_igr.F
114!||--- calls -----------------------------------------------------
115!||--- uses -----------------------------------------------------
116!|| message_mod ../starter/share/message_module/message_mod.F
117!||====================================================================
118 SUBROUTINE fill_surf(SET,IGRSURF,IGRS)
119C-----------------------------------------------
120C ROUTINE DESCRIPTION :
121C ===================
122C Merge SET%SURFACE into Radioss Surface
123C-----------------------------------------------
124C DUMMY ARGUMENTS DESCRIPTION:
125C ===================
126C
127C NAME DESCRIPTION
128C
129C SET Set Structure - Current SET
130C IGRSURF SURFACES
131C============================================================================
132C-----------------------------------------------
133C M o d u l e s
134C-----------------------------------------------
135 USE my_alloc_mod
136 USE message_mod
137 USE groupdef_mod
138 USE setdef_mod
139 USE qa_out_mod
140C-----------------------------------------------
141C I m p l i c i t T y p e s
142C-----------------------------------------------
143#include "implicit_f.inc"
144C-----------------------------------------------
145C D u m m y A r g u m e n t s
146C-----------------------------------------------
147 INTEGER IGRS
148 TYPE (SURF_) , TARGET ,INTENT(INOUT):: IGRSURF(*)
149 TYPE (SET_) , INTENT(INOUT) :: SET
150C-----------------------------------------------
151C L o c a l V a r i a b l e s
152C-----------------------------------------------
153 LOGICAL LINE_SEG, SURF_SEG
154 INTEGER NSEG
155 CHARACTER MESS*40
156 DATA mess/'set surf group definition '/
157C-----------------------------------------------
158!
159! create new grelem (IGRBRIC, etc) from elems of /SET
160!
161 ! 3D or 2D
162 SURF_SEG = .FALSE.
163 LINE_SEG = .FALSE.
164 NSEG = 0
165 IF(SET%NB_SURF_SEG > 0) THEN
166 !3D case
167 NSEG = SET%NB_SURF_SEG
168 SURF_SEG = .TRUE.
169 ELSEIF(SET%NB_LINE_SEG > 0)THEN
170 !2D case
171 NSEG = SET%NB_LINE_SEG
172 LINE_SEG = .TRUE.
173 ENDIF
174 !IF (NSEG == 0) RETURN ! create a Surface if empty
175!---
176 IGRS = IGRS + 1
177!
178 IGRSURF(IGRS)%ID = SET%SET_ID
179 IGRSURF(IGRS)%TITLE = SET%TITLE
180 IGRSURF(IGRS)%NSEG = NSEG
181!
182 IGRSURF(IGRS)%TYPE = 0
183 IGRSURF(IGRS)%ID_MADYMO = 0
184 IGRSURF(IGRS)%IAD_BUFR = 0
185 IGRSURF(IGRS)%NB_MADYMO = 0
186 IGRSURF(IGRS)%TYPE_MADYMO = 0
187 IGRSURF(IGRS)%LEVEL = 1
188 IGRSURF(IGRS)%TH_SURF = 0
189 IGRSURF(IGRS)%ISH4N3N = 0
190 IGRSURF(IGRS)%NSEG_R2R_ALL = 0
191 IGRSURF(IGRS)%NSEG_R2R_SHARE = 0
192!
193! not printout empty group
194!
195 IF (NSEG == 0) IGRSURF(IGRS)%SET_GROUP = 1
196!
197!
198 IF (NSEG > 0) THEN
199!
200 IF (ALLOCATED(IGRSURF(IGRS)%NODES)) DEALLOCATE(IGRSURF(IGRS)%NODES)
201 IF (ALLOCATED(IGRSURF(IGRS)%ELTYP)) DEALLOCATE(IGRSURF(IGRS)%ELTYP)
202 IF (ALLOCATED(IGRSURF(IGRS)%ELEM)) DEALLOCATE(IGRSURF(IGRS)%ELEM)
203!
204 CALL MY_ALLOC(IGRSURF(IGRS)%NODES,NSEG,4)
205 CALL MY_ALLOC(IGRSURF(IGRS)%ELTYP,NSEG)
206 CALL MY_ALLOC(IGRSURF(IGRS)%ELEM,NSEG)
207!
208 IF(SURF_SEG)THEN
209 IGRSURF(IGRS)%NODES(1:NSEG,1) = SET%SURF_NODES(1:NSEG,1)
210 IGRSURF(IGRS)%NODES(1:NSEG,2) = SET%SURF_NODES(1:NSEG,2)
211 IGRSURF(IGRS)%NODES(1:NSEG,3) = SET%SURF_NODES(1:NSEG,3)
212 IGRSURF(IGRS)%NODES(1:NSEG,4) = SET%SURF_NODES(1:NSEG,4)
213 IGRSURF(IGRS)%ELTYP(1:NSEG) = SET%SURF_ELTYP(1:NSEG)
214 IGRSURF(IGRS)%ELEM(1:NSEG) = SET%SURF_ELEM(1:NSEG)
215 IGRSURF(IGRS)%EXT_ALL = SET%EXT_ALL
216 ENDIF
217
218 IF(LINE_SEG)THEN
219 IGRSURF(IGRS)%NODES(1:NSEG,1) = SET%LINE_NODES(1:NSEG,1)
220 IGRSURF(IGRS)%NODES(1:NSEG,2) = SET%LINE_NODES(1:NSEG,2)
221 IGRSURF(IGRS)%NODES(1:NSEG,3) = 0
222 IGRSURF(IGRS)%NODES(1:NSEG,4) = 0
223 IGRSURF(IGRS)%ELTYP(1:NSEG) = SET%LINE_ELTYP(1:NSEG)
224 IGRSURF(IGRS)%ELEM(1:NSEG) = SET%LINE_ELEM(1:NSEG)
225 ENDIF
226
227 ENDIF ! IF (NSEG > 0)
228
229 SET%SET_NSURF_ID = IGRS
230 SET%HAS_SURF_SEG = NSEG
231
232C-----
233 RETURN
234 END
235!||====================================================================
236!|| fill_line ../starter/source/model/sets/fill_gr.F
237!||--- called by ------------------------------------------------------
238!|| fill_igr ../starter/source/model/sets/fill_igr.F
239!||--- calls -----------------------------------------------------
240!||--- uses -----------------------------------------------------
241!|| message_mod ../starter/share/message_module/message_mod.F
242!||====================================================================
243 SUBROUTINE FILL_LINE(SET,IGRSLIN ,IGRL)
244C-----------------------------------------------
245C ROUTINE DESCRIPTION :
246C ===================
247C Merge SET%LINE into Radioss Lines
248C-----------------------------------------------
249C DUMMY ARGUMENTS DESCRIPTION:
250C ===================
251C
252C NAME DESCRIPTION
253C
254C SET Set Structure - Current SET
255C IGRSURF SURFACES
256C============================================================================
257C-----------------------------------------------
258C M o d u l e s
259C-----------------------------------------------
260 USE MY_ALLOC_MOD
261 USE MESSAGE_MOD
262 USE GROUPDEF_MOD
263 USE SETDEF_MOD
264C-----------------------------------------------
265C I m p l i c i t T y p e s
266C-----------------------------------------------
267#include "implicit_f.inc"
268C-----------------------------------------------
269C D u m m y A r g u m e n t s
270C-----------------------------------------------
271 INTEGER,INTENT(INOUT) :: IGRL
272C-----------------------------------------------
273 TYPE (SURF_) , INTENT(INOUT) :: IGRSLIN(*)
274 TYPE (SET_) , INTENT(INOUT) :: SET
275 CHARACTER(LEN=NCHARTITLE)::SET_TITLE
276C-----------------------------------------------
277C L o c a l V a r i a b l e s
278C-----------------------------------------------
279 INTEGER NSEG
280 CHARACTER MESS*40
281 DATA MESS/'set line group definition '/
282C-----------------------------------------------
283!
284 NSEG = SET%NB_LINE_SEG
285 !IF (NSEG == 0) RETURN ! create a Surface if empty
286
287 IGRL = IGRL + 1
288!
289!
290 IGRSLIN(IGRL)%ID = SET%SET_ID
291 IGRSLIN(IGRL)%TITLE = SET%TITLE
292 IGRSLIN(IGRL)%NSEG = NSEG
293!
294 IGRSLIN(IGRL)%TYPE = 0
295 IGRSLIN(IGRL)%LEVEL = 1
296 IGRSLIN(IGRL)%NSEG_R2R_ALL = 0
297 IGRSLIN(IGRL)%NSEG_R2R_SHARE = 0
298!
299! not printout empty group
300!
301 IF (NSEG == 0) IGRSLIN(IGRL)%SET_GROUP = 1
302!
303!
304 IF (NSEG > 0) THEN
305!
306 IF (ALLOCATED(IGRSLIN(IGRL)%NODES)) DEALLOCATE(IGRSLIN(IGRL)%NODES)
307 IF (ALLOCATED(IGRSLIN(IGRL)%ELTYP)) DEALLOCATE(IGRSLIN(IGRL)%ELTYP)
308 IF (ALLOCATED(IGRSLIN(IGRL)%ELEM)) DEALLOCATE(IGRSLIN(IGRL)%ELEM)
309 IF (ALLOCATED(IGRSLIN(IGRL)%PROC)) DEALLOCATE(IGRSLIN(IGRL)%PROC)
310!
311 CALL MY_ALLOC(IGRSLIN(IGRL)%NODES,NSEG,2)
312 CALL MY_ALLOC(IGRSLIN(IGRL)%ELTYP,NSEG)
313 CALL MY_ALLOC(IGRSLIN(IGRL)%ELEM,NSEG)
314 CALL MY_ALLOC(IGRSLIN(IGRL)%PROC,NSEG)
315!
316 IGRSLIN(IGRL)%NODES(1:NSEG,1) = SET%LINE_NODES(1:NSEG,1)
317 IGRSLIN(IGRL)%NODES(1:NSEG,2) = SET%LINE_NODES(1:NSEG,2)
318 IGRSLIN(IGRL)%ELTYP(1:NSEG) = SET%LINE_ELTYP(1:NSEG)
319 IGRSLIN(IGRL)%ELEM(1:NSEG) = SET%LINE_ELEM(1:NSEG)
320 IGRSLIN(IGRL)%PROC(1:NSEG) = 0
321 ENDIF ! IF (NSEG > 0)
322C-----
323 SET%SET_NSLIN_ID=IGRL
324 SET%HAS_LINE_SEG = NSEG
325
326 RETURN
327 END
328
subroutine fill_gr(igrele, ngrelem, ielt, set_id, set_title, getelem, nelem, set_greid)
Definition fill_gr.F:33
subroutine fill_surf(set, igrsurf, igrs)
Definition fill_gr.F:119
integer, parameter nchartitle