OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_leak.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_read_leak ../starter/source/airbag/hm_read_leak.F
25!||--- called by ------------------------------------------------------
26!|| read_material_models ../starter/source/materials/read_material_models.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
30!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
31!|| hm_option_count ../starter/source/devtools/hm_reader/hm_option_count.F
32!|| hm_option_read_key ../starter/source/devtools/hm_reader/hm_option_read_key.F
33!|| hm_option_start ../starter/source/devtools/hm_reader/hm_option_start.F
34!||--- uses -----------------------------------------------------
35!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
36!|| message_mod ../starter/share/message_module/message_mod.F
37!|| submodel_mod ../starter/share/modules1/submodel_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_leak(IPM,PM,UNITAB,LSUBMODEL)
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE unitab_mod
44 USE message_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 "units_c.inc"
56#include "com04_c.inc"
57#include "param_c.inc"
58C-----------------------------------------------
59C D u m m y A r g u m e n t s
60C-----------------------------------------------
61 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
62 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
63 INTEGER IPM(NPROPMI,*)
64 my_real pm(npropm,*)
65C-----------------------------------------------
66C L o c a l V a r i a b l e s
67C-----------------------------------------------
68 INTEGER UID,HM_NLEAK,IFLAGUNIT,IUNIT
69 INTEGER I, K, ILAW, IMID, IMAT, ILEAKAGE, IFTLC, IFTAC, IFTACP,
70 . NFUNC
71 my_real ascalet, ascalep, scalelc, scaleac, flc, fac,
72 . x0, x1, x2, x3, lr1, fthk, c1, c2, c3, facp, scaleacp
73
74 CHARACTER(len=nchartitle) :: TITR
75 LOGICAL :: IS_AVAILABLE
76 is_available = .false.
77C=================================================================================
78C START READING
79C=================================================================================
80
81 ! Count number of /LEAK
82 CALL hm_option_count('/LEAK/MAT',hm_nleak)
83
84 ! Start reading /LEAK
85 CALL hm_option_start('/LEAK/MAT')
86
87 ! Loop over /LEAK cards
88 DO k = 1, hm_nleak
89c
90 ! Read keys
91 titr = ''
92 CALL hm_option_read_key(lsubmodel, option_id=imat, option_titr=titr, unit_id=uid)
93c
94 ! Checking unit IDs
95 iflagunit = 0
96 DO iunit=1,unitab%NUNITS
97 IF (unitab%UNIT_ID(iunit) == uid) THEN
98 iflagunit = 1
99 EXIT
100 ENDIF
101 ENDDO
102 IF (uid/=0.AND.iflagunit==0) THEN
103 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
104 . i2=uid,i1=imat,
105 . c1='LEAK',c2='LEAK',
106 . c3=titr)
107 ENDIF
108c
109 ! Initialization of Material ID
110 imid=0
111 ! Loop over all materials
112 DO i=1,nummat-1
113 ! If the material exist, the reading pursue
114 IF(ipm(1,i)==imat)THEN
115 imid=imat
116 WRITE(iout,1000)trim(titr),imid
117 ilaw = ipm(2,i)
118c
119 ! Material law must be /MAT/LAW19 or /MAT/LAW58
120 IF(ilaw==19.OR.ilaw==58)THEN
121c
122 ! Read first card
123 CALL hm_get_intv ('Ileakage' ,ileakage ,is_available, lsubmodel)
124 CALL hm_get_floatv('scale1' ,ascalet ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('scale2' ,ascalep ,is_available, lsubmodel, unitab)
126 ! Checking, writing and saving the values
127 IF(ascalet == zero) ascalet=one
128 IF(ascalep == zero) ascalep=one
129 WRITE(iout,1010)ileakage, ascalet, ascalep
130 ipm(4,i)=ileakage
131 pm(160,i)= ascalet
132 pm(161,i)= ascalep
133 ipm(6,i)=ipm(6,i)+3
134 nfunc=ipm(10,i)+ipm(6,i)
135c
136 ! Read second card
137 CALL hm_get_floatv('Acoeft1' ,facp ,is_available, lsubmodel, unitab)
138 CALL hm_get_intv ('MAT_fct_IDE' ,iftacp ,is_available, lsubmodel)
139 CALL hm_get_floatv('FScale11' ,scaleacp ,is_available, lsubmodel, unitab)
140 ! Checking, writing and saving the values
141 IF(scaleacp == zero) scaleacp=one
142 IF(facp > 0) iftacp=0
143 IF(facp > one) facp=one
144 IF(facp < zero) facp=zero
145 pm(162,i)= facp
146 pm(163,i)= scaleacp
147 ipm(10+nfunc,i)=iftacp
148 WRITE(iout,1020) facp, iftacp, scaleacp
149C
150 ! First case
151 IF(ileakage==1) THEN
152 ! Read third card
153 CALL hm_get_floatv('Bcoeft1' ,flc ,is_available, lsubmodel, unitab)
154 CALL hm_get_floatv('Acoeft2' ,fac ,is_available, lsubmodel, unitab)
155 ! Checking, writing and saving the values
156 pm(164,i)= flc
157 pm(165,i)= fac
158 WRITE(iout,2010) flc, fac
159 ! Second, third and fourth case
160 ELSEIF(ileakage==2.OR.ileakage==3.OR.ileakage==4) THEN
161 ! Read third card
162 CALL hm_get_intv ('LEAK_FCT_IDLC' ,iftlc ,is_available, lsubmodel)
163 CALL hm_get_intv ('FUN_B1' ,iftac ,is_available, lsubmodel)
164 CALL hm_get_floatv('FScale22' ,scalelc ,is_available, lsubmodel, unitab)
165 CALL hm_get_floatv('FScale33' ,scaleac ,is_available, lsubmodel, unitab)
166 ! Checking, writing and saving the values
167 IF(scalelc == zero) scalelc=one
168 IF(scaleac == zero) scaleac=one
169 pm(164,i)= scalelc
170 pm(165,i)= scaleac
171 ipm(10+nfunc-1,i)=iftlc
172 ipm(10+nfunc-2,i)=iftac
173 WRITE(iout,2020) ileakage,iftlc,scalelc,iftac,scaleac
174 ! Fifth case
175 ELSEIF(ileakage==5) THEN
176 ! Read third card
177 CALL hm_get_floatv('LENGTH' ,lr1 ,is_available, lsubmodel, unitab)
178 CALL hm_get_floatv('THICK1' ,fthk ,is_available, lsubmodel, unitab)
179 ! Read fourth card
180 CALL hm_get_floatv('C1' ,c1 ,is_available, lsubmodel, unitab)
181 CALL hm_get_floatv('C2' ,c2 ,is_available, lsubmodel, unitab)
182 CALL hm_get_floatv('C3' ,c3 ,is_available, lsubmodel, unitab)
183 ! Checking, writing and saving the values
184 IF (fthk > lr1) THEN
185 fthk = lr1
186 CALL ancmsg(msgid=885,
187 . msgtype=msgwarning,
188 . anmode=aninfo_blind_1,
189 . i1=imat,
190 . c1=titr)
191 END IF
192 IF (lr1 == zero) lr1 = one
193 IF (fthk == zero) fthk = lr1
194 IF (c2 == zero) c2 = one
195 pm(164,i)= lr1
196 pm(166,i)= fthk
197 pm(167,i)= c1
198 pm(168,i)= c2
199 pm(169,i)= c3
200 WRITE(iout,2050) lr1,fthk,c1,c2,c3
201 ! Sixth case
202 ELSEIF(ileakage==6) THEN
203 ! Read third case
204 CALL hm_get_floatv('X0' ,x0 ,is_available, lsubmodel, unitab)
205 CALL hm_get_floatv('VX1' ,x1 ,is_available, lsubmodel, unitab)
206 CALL hm_get_floatv('ex2' ,x2 ,is_available, lsubmodel, unitab)
207 CALL hm_get_floatv('VX3' ,x3 ,is_available, lsubmodel, unitab)
208 ! Checking, writing and saving the values
209 pm(164,i)= x0
210 pm(165,i)= x1
211 pm(166,i)= x2
212 pm(167,i)= x3
213 WRITE(iout,2060) x0,x1,x2,x3
214 ELSE
215 ipm(4,i)=0
216 ENDIF
217 ELSE
218 CALL ancmsg(msgid=923,
219 . msgtype=msgerror,
220 . anmode=aninfo,
221 . i1=imat,
222 . c1=titr)
223 ENDIF
224 ENDIF
225 ENDDO
226 IF (imid == 0) THEN
227 CALL ancmsg(msgid=924,
228 . msgtype=msgerror,
229 . anmode=aninfo,
230 . i1=imat,
231 . c1=titr)
232 ENDIF
233 ENDDO
234C
235 RETURN
236C
237 1000 FORMAT(//
238 & 5x,' FABRIC LEAKAGE MODEL ',/,
239 & 5x,' -------------------- ',/,
240 & 5x, a ,/,
241 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10)
242 1010 FORMAT(
243 & 5x,'MODEL NUMBER . . . . . . . . .. . . . .=',i10/
244 & 5x,'ABCISSA TIME SCALE FACTOR . . . . . . .=',1pg20.13/
245 & 5x,'ABCISSA PRESSURE SCALE FACTOR . . . . .=',1pg20.13/)
246 1020 FORMAT(
247 & 5x,'AREA COEFFICIENT FOR FABRIC IN CONTACT: ',/,
248 & 5x,'CONSTANT COEFFICIENT FOR FABRIC IN CONTACT. .=',1pg20.13/
249 & 5x,'COEFFICIENT TIME FUNCTION NUMBER. . . . . . .=',i10/
250 & 5x,' FUNCTION SCALE FACTOR. . . .=',1pg20.13/)
251 2010 FORMAT(
252 & 5x,' MODEL # 1 ',/,
253 & 5x,' --------- ',/,
254 & 5x,'FABRIC LEAKAGE COEFFICIENT LC . . . . .=',1pg20.13/
255 & 5x,'FABRIC AREA COEFFICIENT AC. . . . . . .=',1pg20.13/)
256 2020 FORMAT(
257 & 5x,' MODEL #', i2 /,
258 & 5x,' ------------',/,
259 & 5x,'FABRIC LEAKAGE COEFFICIENT FUNCTION OF TIME . .=',i10/
260 & 5x,' FUNCTION SCALE FACTOR. . . .=',1pg20.13/
261 & 5x,'FABRIC AREA COEFFICIENT FUNCTION OF PRESSURE. .=',i10/
262 & 5x,' FUNCTION SCALE FACTOR. . . .=',1pg20.13)
263 2050 FORMAT(
264 & 5x,' AUTOLIV MODEL ',/,
265 & 5x,' ------------- ',/,
266 & 5x,'MESH SIZE L . . . . . . . . . . . . . .=',1pg20.13/
267 & 5x,'FIBER THICKNESS R . . . . . . . . . . .=',1pg20.13/
268 & 5x,'FABRIC LEAKAGE COEFFICIENT C1 . . . . .=',1pg20.13/
269 & 5x,'FABRIC LEAKAGE COEFFICIENT C2 . . . . .=',1pg20.13/
270 & 5x,'FABRIC LEAKAGE COEFFICIENT C3 . . . . .=',1pg20.13/)
271 2060 FORMAT(
272 & 5x,' ANAGONYE WANG MODEL ',/,
273 & 5x,' ------------------- ',/,
274 & 5x,'FABRIC LEAKAGE COEFFICIENT X0 . . . . .=',1pg20.13/
275 & 5x,'FABRIC LEAKAGE COEFFICIENT X1 . . . . .=',1pg20.13/
276 & 5x,'FABRIC LEAKAGE COEFFICIENT X2 . . . . .=',1pg20.13/
277 & 5x,'FABRIC LEAKAGE COEFFICIENT X3 . . . . .=',1pg20.13/)
278 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_start(entity_type)
subroutine hm_read_leak(ipm, pm, unitab, lsubmodel)
integer, parameter nchartitle
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:889