OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat11.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat11 (lsubmodel, mtag, unitab, ipm, pm, mat_id, titr, matparam)

Function/Subroutine Documentation

◆ hm_read_mat11()

subroutine hm_read_mat11 ( type(submodel_data), dimension(*), intent(in) lsubmodel,
type(mlaw_tag_), intent(inout) mtag,
type (unit_type_), intent(in) unitab,
integer, dimension(npropmi), intent(inout) ipm,
intent(inout) pm,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
type(matparam_struct_), intent(inout) matparam )

Definition at line 39 of file hm_read_mat11.F.

41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE unitab_mod
45 USE elbuftag_mod
46 USE message_mod
47 USE submodel_mod
48 USE ale_mod
49 USE matparam_def_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "units_c.inc"
59#include "param_c.inc"
60C-----------------------------------------------
61C D u m m y A r g u m e n t s
62C-----------------------------------------------
63 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
64 INTEGER, INTENT(IN) :: MAT_ID
65 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
66 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
67 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
68 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
69 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
70 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MATPARAM
71C-----------------------------------------------
72C D e s c r i p t i o n
73C-----------------------------------------------
74C
75C INITIALISATION MATERIAU 11 LOI SPECIALE CONDITIONS AUX LIMITES
76C ISENTHALPIQUES FLUIDES PARFAIT
77C
78C ITYP = 0 - (GAS) INLET USING STAGNATION POINT STATE
79C ITYP = 1 - (LIQUID)INLET USING STAGNATION POINT STATE
80C ITYP = 2 - GENERAL INLET/OUTLET APPLYING USER FUNCTIONS
81C ITYP = 3 - NON RFLECTING FRONTIER (NRF)
82C
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 INTEGER IFR, IFP, IFE, IFT, IFQ, ITYP, INOD, ICOMP
88 . gam, vcrt2, gamrp, gam1, p0, c1, ssp2, ef,
89 . rho0, psh, carl, gam2, e0, vcrt, rcrt, pcrt, ssp,
90 . t0, dc, alp0, rhoc,
91 . tscal,rhor,
92 . fac_length_, fac_time_
93 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
94C-----------------------------------------------
95C S o u r c e L i n e s
96C-----------------------------------------------
97
98 is_encrypted = .false.
99 is_available = .false.
100 fac_length_ = one
101 fac_time_ = one
102
103C Check input encryption
104 CALL hm_option_is_encrypted(is_encrypted)
105C Initial and reference density
106 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
108 IF (rhor == zero) THEN
109 rhor = rho0
110 ENDIF
111 pm(1) = rhor
112 pm(89) = rho0
113 ale%GLOBAL%IS_BOUNDARY_MATERIAL = .true.
114C
115 carl = zero
116 t0 = zero
117 gam = zero
118 vcrt2 = zero
119 gamrp = zero
120 gam1 = zero
121 p0 = zero
122 c1 = zero
123 ssp = zero
124 ssp2 = zero
125 ef = zero
126 e0 = zero
127 dc = zero
128 rhoc = zero
129 alp0 = infinity
130 ifr = 0
131 ifp = 0
132 ife = 0
133 ift = 0
134 ifq = 0
135 ityp = 0
136 inod = 0
137 icomp = 0
138
139C Formulation type
140 CALL hm_get_intv('Itype', ityp, is_available, lsubmodel)
141C
142 CALL hm_get_floatv('MAT_PSH', psh, is_available, lsubmodel, unitab)
143 CALL hm_get_floatv('SCALE', tscal, is_available, lsubmodel, unitab)
144 CALL hm_get_floatv_dim('SCALE', fac_time_, is_available, lsubmodel, unitab)
145 CALL hm_get_floatv_dim('h', fac_length_, is_available, lsubmodel, unitab)
146
147C Switch according to input type
148 SELECT CASE(ityp)
149 CASE (0)
150 CALL hm_get_intv('NODE1', inod, is_available, lsubmodel)
151 CALL hm_get_floatv('GAMMA', gam, is_available, lsubmodel, unitab)
152 CALL hm_get_floatv('K_cdi', dc, is_available, lsubmodel, unitab)
153
154 CALL hm_get_intv('FUN_A1', ifr, is_available, lsubmodel)
155
156 CALL hm_get_intv('FUN_A2', ifp, is_available, lsubmodel)
157 CALL hm_get_floatv('MAT_PScale', p0, is_available, lsubmodel, unitab)
158 CASE (1)
159 CALL hm_get_intv('NODE1', inod, is_available, lsubmodel)
160 CALL hm_get_floatv('MAT_C1', c1, is_available, lsubmodel, unitab)
161 CALL hm_get_floatv('K_cdi', dc, is_available, lsubmodel, unitab)
162
163 CALL hm_get_intv('FUN_A1', ifr, is_available, lsubmodel)
164
165 CALL hm_get_intv('FUN_A2', ifp, is_available, lsubmodel)
166 CALL hm_get_floatv('MAT_PScale', p0, is_available, lsubmodel, unitab)
167
168 CALL hm_get_intv('FUN_A6', ife, is_available, lsubmodel)
169 CALL hm_get_floatv('MAT_E0', e0, is_available, lsubmodel, unitab)
170 CASE (2)
171 CALL hm_get_intv('FUN_A1', ifr, is_available, lsubmodel)
172
173 CALL hm_get_intv('FUN_A2', ifp, is_available, lsubmodel)
174 CALL hm_get_floatv('MAT_PScale', p0, is_available, lsubmodel, unitab)
175
176 CALL hm_get_intv('FUN_A6', ife, is_available, lsubmodel)
177 CALL hm_get_floatv('mat_e0', E0, IS_AVAILABLE, LSUBMODEL, UNITAB)
178 CASE (3)
179 CALL HM_GET_FLOATV('mat_c0', SSP, IS_AVAILABLE, LSUBMODEL, UNITAB)
180 CALL HM_GET_FLOATV('h', CARL, IS_AVAILABLE, LSUBMODEL, UNITAB)
181 IF(CARL*SSP==ZERO)THEN
182 CALL ANCMSG(MSGID=304,
183 . MSGTYPE=MSGERROR,
184 . ANMODE=ANINFO,
185 . I2=MAT_ID,
186 . C1=TITR)
187 ENDIF
188 CASE DEFAULT
189 CALL ANCMSG(MSGID=1665, MSGTYPE=MSGERROR, ANMODE=ANINFO,
190 . I1=MAT_ID,
191 . I2 = ITYP,
192 . C1=TITR)
193 END SELECT
194
195 CALL HM_GET_INTV('xt_fun', IFT, IS_AVAILABLE, LSUBMODEL)
196 CALL HM_GET_INTV('yt_fun', IFQ, IS_AVAILABLE, LSUBMODEL)
197
198C----------------------
199C DEFAULT VALUES
200C----------------------
201 IF(CARL==ZERO)CARL = EM01 * FAC_LENGTH_
202 IF(T0==ZERO) T0 = THREE100
203 IF(TSCAL == ZERO) TSCAL = ONE * FAC_TIME_
204 SELECT CASE(ITYP)
205 CASE (0)
206 GAM1 = ONE/(GAM - ONE)
207 GAM2 = HALF/GAM
208 GAMRP= GAM2*(GAM-ONE)
209 E0 = GAM1*(P0+PSH)
210 EF = GAM1*(PSH)
211 SSP2 = GAM*P0/RHO0
212 VCRT2= TWO*GAM*(P0+PSH)/RHO0/(GAM + ONE)
213 VCRT = SQRT(VCRT2)
214 RCRT = (ONE-GAMRP*RHO0*VCRT2/(P0+PSH))**GAM1
215 PCRT = (P0+PSH)*RCRT**GAM
216 RCRT = RHO0*RCRT
217 CASE (1)
218 SSP2 = C1/RHO0
219 GAM1 = ONE
220 CASE (2)
221 GAM1 = ONE
222 SSP2 = SSP**2
223 CASE (3)
224 IF(CARL>ZERO)ALP0=HALF*SSP/CARL
225 RHOC=RHO0*SSP
226 CASE DEFAULT
227C Already exited at input reading
228 END SELECT
229
230C----------------------
231C PRINTOUT
232C----------------------
233 WRITE(IOUT, 800)TRIM(TITR),MAT_ID,11
234
235 IF(IS_ENCRYPTED)THEN
236 WRITE(IOUT,900)
237 WRITE(IOUT,'(5x,a,//)')'confidential data'
238 ELSE
239 WRITE(IOUT,1000)ITYP,PSH,TSCAL
240 WRITE(IOUT, 850) RHO0,RHOR
241 SELECT CASE(ITYP)
242 CASE(0)
243 WRITE(IOUT,1100)GAM,P0,E0,VCRT,RCRT,PCRT,INOD
244 WRITE(IOUT,1350)EF,DC
245 WRITE(IOUT,1300)IFR,IFP
246 CASE(1)
247 WRITE(IOUT,1200)C1,P0,E0,INOD
248 WRITE(IOUT,1349)DC
249 WRITE(IOUT,1301)IFR,IFP,IFE
250 CASE(2)
251 WRITE(IOUT,1400)P0,E0
252 WRITE(IOUT,1302)IFR,IFP,IFE
253 CASE(3)
254 WRITE(IOUT,1353)SSP,CARL,INOD
255 CASE DEFAULT
256C Already exited at input reading
257 END SELECT
258 IF(ITYP/=3)WRITE(IOUT,2001) IFT,IFQ
259 ENDIF
260
261C----------------------
262C STORAGE
263C----------------------
264 IPM(11) = IFR
265 IPM(12) = IFP
266 IPM(13) = IFE
267 IPM(14) = IFT
268 IPM(17) = IFQ
269
270 PM(23) = E0
271 PM(25) = GAM
272 PM(27) = VCRT2
273 PM(28) = GAMRP
274 PM(29) = GAM1
275 PM(31) = P0
276 PM(32) = C1
277 PM(34) = -HALF*SSP2/CARL**2
278 PM(37) = EF
279 PM(40) = ONE/TSCAL
280 PM(50) = ITYP
281 PM(51) = INOD ! USR2SYS APRES FSDCOD, IF(IFORM8==2) INOD=USR2SYS(INOD,ITABM1,MESS)
282 PM(79) = T0
283 PM(80) = EP30
284 PM(88) = PSH
285 PM(97) = RHOC
286 PM(98) = ALP0
287 PM(99) = DC+ONE
288
289C----------------------
290C MATERIAL BUFFER
291C----------------------
292 MTAG%G_RK = 1
293 MTAG%G_RE = 1
294 MTAG%G_TEMP = 1
295 MTAG%L_RK = 1
296 MTAG%L_TEMP = 1
297 MTAG%L_RE = 1
298 MTAG%L_VK = 1
299 MTAG%L_EINS = 1
300
301 ! EOS/Thermo keyword for pressure treatment in elements
302 CALL INIT_MAT_KEYWORD(MATPARAM,"HYDRO_EOS")
303
304 CALL INIT_MAT_KEYWORD(MATPARAM,"INCOMPRESSIBLE")
305
306 ! Properties compatibility
307 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
308C--------------------------------
309 RETURN
310
311C----------------------
312C FORMAT
313C----------------------
314 800 FORMAT(/
315 & 5X,A,/,
316 & 5X,'material number. . . . . . . . . . . . . . .=',I10/,
317 & 5X,'material law . . . . . . . . . . . . . . . .=',I10/)
318 850 FORMAT(
319 & 5X,'initial density . . . . . . . . . . . .=',1PG20.13/,
320 & 5X,'reference density . . . . . . . . . . .=',1PG20.13/)
321 900 FORMAT(
322 & 5X,40H LAW FOR FLUID BOUNDARY ELEMENTS ,/,
323 & 5X,40H ------------------------------- ,/)
324 1000 FORMAT(
325 & 5X,40H LAW FOR FLUID BOUNDARY ELEMENTS ,/,
326 & 5X,40H ------------------------------- ,/,
327 & 5X,40HITYP. . . . . . . . . . . . . . . . . .=,I10/,
328 & 5X,'ityp = 0 : gas inlet',/,
329 & 5X,'ityp = 1 : liquid inlet',/,
330 & 5X,'ityp = 2 : imposed inlet/outlet - time dependent',/,
331 & 5X,'ityp = 3 : non-reflecting boundary',/,
332 & 5X,'psh: pressure shift . . . . . . . . . .=',1PG20.13/,
333 & 5X,'time scale factor . . . . . . . . . . .=',1PG20.13/)
334 1100 FORMAT(
335 & 5X,40HGAMMA CONSTANT. . . . . . . . . . . . .=,E12.4/,
336 & 5X,40HSTAGNATION PRESSURE . . . . . . . . . .=,E12.4/,
337 & 5X,40HSTAGNATION ENERGY . . . . . . . . . . .=,E12.4/,
338 & 5X,40HCRITICAL VELOCITY . . . . . . . . . . .=,E12.4/,
339 & 5X,40HCRITICAL DENSITY. . . . . . . . . . . .=,E12.4/,
340 & 5X,40HCRITICAL PRESSURE . . . . . . . . . . .=,E12.4/,
341 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
342 1200 FORMAT(
343 & 5X,40HBULK MODULUS. . . . . . . . . . . . . .=,E12.4/,
344 & 5X,40HSTAGNATION PRESSURE . . . . . . . . . .=,E12.4/,
345 & 5X,40HSTAGNATION ENERGY . . . . . . . . . . .=,E12.4/,
346 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
347 1300 FORMAT(
348 & 5X,40HSTAGNATION DENSITY LOAD CURVE. . . . .=,I10/,
349 & 5X,40HSTAGNATION PRESSURE LOAD CURVE. . . . .=,I10/)
350 1301 FORMAT(
351 & 5X,40HSTAGNATION DENSITY LOAD CURVE. . . . .=,I10/,
352 & 5X,40HSTAGNATION PRESSURE LOAD CURVE. . . . .=,I10/,
353 & 5X,40HSTAGNATION ENERGY LOAD CURVE. . . . .=,I10/)
354 1302 FORMAT(
355 & 5X,40HDENSITY LOAD CURVE . . . . . . . . .=,I10/,
356 & 5X,40HPRESSURE LOAD CURVE . . . . . . . . .=,I10/,
357 & 5X,40HENERGY LOAD CURVE . . . . . . . . .=,I10/)
358 1349 FORMAT(
359 & 5X,40HDISCHARGE COEFFICIENT (ENTRY LOSS). . .=,E12.4/)
360 1350 FORMAT(
361 & 5X,40HFINAL STAGNATION ENERGY . . . . . . . .=,E12.4/,
362 & 5X,40HDISCHARGE COEFFICIENT (ENTRY LOSS). . .=,E12.4/)
363 1353 FORMAT(
364 & 5X,40HCHARACTERISTIC SOUND SPEED. . . . . . .=,E12.4/,
365 & 5X,40HCHARACTERISTIC LENGTH . . . . . . . . .=,E12.4/,
366 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
367 1400 FORMAT(
368 & 5X,40HINITIAL PRESSURE(P-PSH) . . . . . . . .=,E12.4/,
369 & 5X,40HINITIAL ENERGY. . . . . . . . . . . . .=,E12.4/)
370 2001 FORMAT(
371 & 5X,' thermal boundary ',/,
372 & 5X,' ---------------- ',/,
373 & 5X,'temperature load curve. . . . . . . . .=',I10/,
374 & 5X,'flux load curve. . . . . . . . . . . .=',I10/)
375C-----------
376 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
type(ale_) ale
Definition ale_mod.F:253
integer, parameter nchartitle