OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
read_monvol.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!|| read_monvol ../starter/source/airbag/read_monvol.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| fretitl ../starter/source/starter/freform.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!|| hm_read_monvol_type1 ../starter/source/airbag/hm_read_monvol_type1.F
33!|| hm_read_monvol_type10 ../starter/source/airbag/hm_read_monvol_type10.F
34!|| hm_read_monvol_type11 ../starter/source/airbag/hm_read_monvol_type11.F
35!|| hm_read_monvol_type2 ../starter/source/airbag/hm_read_monvol_type2.f
36!|| hm_read_monvol_type3 ../starter/source/airbag/hm_read_monvol_type3.F
37!|| hm_read_monvol_type4 ../starter/source/airbag/hm_read_monvol_type4.F
38!|| hm_read_monvol_type5 ../starter/source/airbag/hm_read_monvol_type5.F
39!|| hm_read_monvol_type6 ../starter/source/airbag/hm_read_monvol_type6.F
40!|| hm_read_monvol_type7 ../starter/source/airbag/hm_read_monvol_type7.F
41!|| hm_read_monvol_type8 ../starter/source/airbag/hm_read_monvol_type8.F
42!|| hm_read_monvol_type9 ../starter/source/airbag/hm_read_monvol_type9.F
43!|| hm_sz_r2r ../starter/source/coupling/rad2rad/routines_r2r.F
44!||--- uses -----------------------------------------------------
45!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
46!|| hm_read_monvol_type10_mod ../starter/source/airbag/hm_read_monvol_type10.F
47!|| hm_read_monvol_type11_mod ../starter/source/airbag/hm_read_monvol_type11.F
48!|| hm_read_monvol_type1_mod ../starter/source/airbag/hm_read_monvol_type1.F
49!|| hm_read_monvol_type2_mod ../starter/source/airbag/hm_read_monvol_type2.F
50!|| hm_read_monvol_type3_mod ../starter/source/airbag/hm_read_monvol_type3.F
51!|| hm_read_monvol_type4_mod ../starter/source/airbag/hm_read_monvol_type4.F
52!|| hm_read_monvol_type5_mod ../starter/source/airbag/hm_read_monvol_type5.F
53!|| hm_read_monvol_type6_mod ../starter/source/airbag/hm_read_monvol_type6.F
54!|| hm_read_monvol_type7_mod ../starter/source/airbag/hm_read_monvol_type7.F
55!|| hm_read_monvol_type8_mod ../starter/source/airbag/hm_read_monvol_type8.F
56!|| hm_read_monvol_type9_mod ../starter/source/airbag/hm_read_monvol_type9.F
57!|| message_mod ../starter/share/message_module/message_mod.F
58!|| monvol_struct_mod ../starter/share/modules1/monvol_struct_mod.F
59!|| r2r_mod ../starter/share/modules1/r2r_mod.F
60!|| submodel_mod ../starter/share/modules1/submodel_mod.F
61!||====================================================================
62 SUBROUTINE read_monvol(T_MONVOL, T_MONVOL_METADATA, ITAB, ITABM1, IPM, IGEO,
63 . X, PM, GEO, IXC, IXTG, SENSORS,
64 . UNITAB, NPC, NPT, PLD, IGRSURF, IGRBRIC, NOM_OPT,IFRAME, XFRAME,
65 . LSUBMODEL)
66C-----------------------------------------------
67C M o d u l e s
68C-----------------------------------------------
69 USE unitab_mod
70 USE r2r_mod
71 USE message_mod
72 USE groupdef_mod , only:group_,surf_
74 USE submodel_mod
76 USE sensor_mod
89 use element_mod , only : nixc,nixtg
90C-----------------------------------------------
91C I m p l i c i t T y p e s
92C-----------------------------------------------
93#include "implicit_f.inc"
94C-----------------------------------------------
95C C o m m o n B l o c k s
96C-----------------------------------------------
97C NVOLU
98#include "com04_c.inc"
99C KMONVO, IREC
100#include "scr17_c.inc"
101C NSUBDOM
102#include "r2r_c.inc"
103C NIMV, NRVOLU
104#include "param_c.inc"
105C LUNIT, NUNITS
106C IOUT
107#include "units_c.inc"
108C-----------------------------------------------
109C D u m m y A r g u m e n t s
110C-----------------------------------------------
111 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU + NMONVOL), INTENT(INOUT) :: T_MONVOL
112 TYPE(MONVOL_METADATA_), INTENT(INOUT) :: T_MONVOL_METADATA
113 TYPE(UNIT_TYPE_), INTENT(IN) :: UNITAB
114 my_real, INTENT(IN) :: x(3, numnod), geo(npropg, numgeo), pm(npropm, nummat), pld(2, *),
115 . xframe(nxframe,*)
116 INTEGER, INTENT(IN) :: NPC(*), NPT(*), ITAB(*), ITABM1(*),
117 . ixc(nixc, numelc), ixtg(nixtg, numeltg),ipm(npropmi, nummat),
118 . igeo(npropgi, numgeo),iframe(liskn,*)
119 INTEGER, INTENT(INOUT) :: NOM_OPT(LNOPT1, *)
120 TYPE (SURF_), INTENT(INOUT), DIMENSION(NSURF) :: IGRSURF
121 TYPE (GROUP_), DIMENSION(NGRBRIC), INTENT(IN) :: IGRBRIC
122 TYPE (SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
123 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
124C-----------------------------------------------
125C L o c a l V a r i a b l e s
126C-----------------------------------------------
127 INTEGER :: II, JJ
128 INTEGER :: NVB, ITYPE, ID, UID, LOCAL_UID
129 CHARACTER(len=ncharkey) :: KEY
130 CHARACTER(len=nchartitle) :: TITR
131 LOGICAL :: FOUND
132C-----------------------------------------------
133C B e g i n n i n g o f s o u r c e
134C-----------------------------------------------
135C Beginning of MONVOL cards in the IIN file
136 WRITE(iout, 1000)
137 t_monvol_metadata%LCA = 0
138 nvb = 0
139C
140! ************************** !
141! MONVOL read with hm reader !
142! ************************** !
143 CALL hm_option_start('/MONVOL')
144 DO ii = 1, nmonvol
145 nvb = nvb + 1
146C Multidomain -> skip untagged monvols
147 IF (nsubdom > 0) THEN
148 IF( tagmon(nvb) == 0) THEN
149 CALL hm_sz_r2r(tagmon, nvb, lsubmodel)
150 ENDIF
151 ENDIF
152 CALL hm_option_read_key(lsubmodel, option_id = id, unit_id = uid, option_titr = titr,
153 . keyword2 = key)
154 nom_opt(1, ii) = id
155 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,ii),ltitr)
156C Check units
157 found = .false.
158 DO jj = 1,unitab%NUNITS
159 IF (unitab%UNIT_ID(jj) == uid) THEN
160 found = .true.
161 local_uid = jj
162 EXIT
163 ENDIF
164 ENDDO
165 IF (.NOT. found) THEN
166 CALL ancmsg(msgid = 659, anmode = aninfo, msgtype = msgerror,
167 . i2 = uid, i1 = id, c1 = 'MONITORED VOLUME', c2 = 'MONITORED VOLUME', c3=titr)
168 ENDIF
169 IF (key(1:4) == 'AREA') THEN
170 itype = 1
171 ELSEIF (key(1:4) == 'PRES') THEN
172 itype = 2
173 ELSEIF (key(1:3) == 'GAS') THEN
174 itype = 3
175 ELSEIF (key(1:7) == 'AIRBAG1') THEN
176 itype = 7
177 ELSEIF (key(1:6) == 'AIRBAG') THEN
178 itype = 4
179 ELSEIF (key(1:6) == 'COMMU1') THEN
180 itype = 9
181 ELSEIF (key(1:5) == 'COMMU') THEN
182 itype = 5
183 ELSEIF (key(1:7) == 'FVMBAG2') THEN
184 itype = 11
185 ELSEIF (key(1:7) == 'FVMBAG1') THEN
186 itype = 8
187 ELSEIF (key(1:6) == 'FVMBAG') THEN
188 itype = 6
189 ELSEIF (key(1:6) == 'LFLUID') THEN
190 itype = 10
191 ELSE
192 itype = 0
193 CALL ancmsg(msgid=7,anmode=aninfo,msgtype=msgerror,
194 . i1=id,c1=titr)
195 ENDIF
196
197 t_monvol(ii)%ID = id
198 t_monvol(ii)%IVOLU(1) = id
199 t_monvol(ii)%IVOLU(27) = -1 !ID_DT_OPTION ( /DT/FVMBAG/[id_dt_option] )
200 t_monvol(ii)%TYPE = itype
201 t_monvol(ii)%IVOLU(2) = itype
202 t_monvol(ii)%TITLE = trim(titr)
203
204 WRITE(iout,1001) id, t_monvol(ii)%TITLE, key(1:len_trim(key))
205
206 SELECT CASE(itype)
207 CASE(1)
208! ************ !
209! /MONVOL/AREA !
210! ************ !
211 CALL hm_read_monvol_type1(t_monvol(ii),
212 . unitab, local_uid, igrsurf,
213 . itab, x, pm, geo, ixc, ixtg,lsubmodel)
214 CASE(2)
215! ************ !
216! /MONVOL/PRES !
217! ************ !
218 CALL hm_read_monvol_type2(t_monvol(ii),
219 . unitab, local_uid, npc, igrsurf,
220 . itab, x, pm, geo, ixc, ixtg,lsubmodel)
221 CASE(3)
222! *********** !
223! /MONVOL/GAS !
224! *********** !
225 CALL hm_read_monvol_type3(t_monvol(ii),
226 . unitab, local_uid, npc, igrsurf,
227 . itab, x, pm, geo, ixc, ixtg, lsubmodel)
228 CASE(4)
229! ************** !
230! /MONVOL/AIRBAG !
231! ************** !
232 CALL hm_read_monvol_type4(t_monvol(ii), itabm1,
233 . sensors, npt, pld, unitab, local_uid, npc, igrsurf,
234 . itab, x, pm, geo, ixc, ixtg, lsubmodel)
235 CASE(5)
236! ************* !
237! /MONVOL/COMMU !
238! ************* !
239 CALL hm_read_monvol_type5(t_monvol(ii), t_monvol_metadata, itabm1,
240 . sensors, npt, pld,
241 . unitab, local_uid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg,
242 . lsubmodel)
243 CASE(6)
244! ************** !
245! /MONVOL/FVMBAG !
246! ************** !
247 CALL hm_read_monvol_type6(t_monvol(ii),
248 . sensors, npt, pld, igrbric,
249 . unitab, npc, igrsurf, itab, x, pm, geo, ixc, ixtg,
250 . lsubmodel)
251 CASE(7)
252! *************** !
253! /MONVOL/AIRBAG1 !
254! *************** !
255 CALL hm_read_monvol_type7(t_monvol(ii), ipm, igeo, itabm1,
256 . sensors,
257 . unitab, local_uid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg,
258 . lsubmodel)
259 CASE(8)
260! *************** !
261! /MONVOL/FVMBAG1 !
262! *************** !
263 CALL hm_read_monvol_type8(t_monvol(ii), ipm, igeo, itabm1,
264 . sensors, iframe, xframe, igrbric,
265 . unitab, local_uid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg,
266 . lsubmodel)
267
268 CASE(9)
269! ************** !
270! /MONVOL/COMMU1 !
271! ************** !
272 CALL hm_read_monvol_type9(t_monvol(ii), t_monvol_metadata, ipm, igeo, itabm1,
273 . sensors,
274 . unitab, local_uid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg,
275 . lsubmodel)
276 CASE(10)
277! ************** !
278! /MONVOL/LFLUID !
279! ************** !
280 CALL hm_read_monvol_type10(t_monvol(ii),
281 . unitab, npc, igrsurf, itab, x, pm, geo, ixc, ixtg,lsubmodel)
282 CASE(11)
283! *************** !
284! /MONVOL/FVMBAG2 !
285! *************** !
286 CALL hm_read_monvol_type11(t_monvol(ii), ipm, igeo, itabm1,
287 . sensors, xframe, igrbric,
288 . unitab, local_uid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg,
289 . lsubmodel)
290 END SELECT
291 ENDDO
292
293 nvolu = nvolu + nmonvol
294
295 RETURN
296 1000 FORMAT(
297 . //,' MONITORED VOLUME DEFINITION '/
298 . ' ---------------------------- ')
299 1001 FORMAT(//5x,'VOLUME NUMBER ',i10,
300 . / 5x,'------------------------',
301 . / 5x,'TITLE: ',a,
302 . / 5x,'TYPE OF MONITORED VOLUME. . . . . . . .=',a10)
303 END SUBROUTINE read_monvol
#define my_real
Definition cppsort.cpp:32
subroutine hm_option_start(entity_type)
subroutine hm_read_monvol_type10(t_monvoln, unitab, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type11(t_monvoln, ipm, igeo, itabm1, sensors, xframe, igrbric, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type1(t_monvoln, unitab, luid, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type2(t_monvoln, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type3(t_monvoln, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type4(t_monvoln, itabm1, sensors, npt, pld, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type5(t_monvoln, t_monvol_metadata, itabm1, sensors, npt, pld, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type6(t_monvoln, sensors, npt, pld, igrbric, unitab, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type7(t_monvoln, ipm, igeo, itabm1, sensors, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type8(t_monvoln, ipm, igeo, itabm1, sensors, iframe, xframe, igrbric, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
subroutine hm_read_monvol_type9(t_monvoln, t_monvol_metadata, ipm, igeo, itabm1, sensors, unitab, luid, npc, igrsurf, itab, x, pm, geo, ixc, ixtg, lsubmodel)
integer, parameter nchartitle
integer, parameter ncharkey
integer, dimension(:), allocatable tagmon
Definition r2r_mod.F:132
subroutine read_monvol(t_monvol, t_monvol_metadata, itab, itabm1, ipm, igeo, x, pm, geo, ixc, ixtg, sensors, unitab, npc, npt, pld, igrsurf, igrbric, nom_opt, iframe, xframe, lsubmodel)
Definition read_monvol.F:66
subroutine hm_sz_r2r(tag, val, lsubmodel)
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
subroutine fretitl(titr, iasc, l)
Definition freform.F:615
program starter
Definition starter.F:39