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, JTHE, ICOMP
87 INTEGER ID
89 . gam, vcrt2, gamrp, gam1, p0, c1, ssp2, ef,
90 . rho0, psh, carl, gam2, e0, vcrt, rcrt, pcrt, ssp,
91 . t0, dc, alp0, rhoc,
92 . tscal, tref,gama,rhor,
93 . fac_length_, fac_time_
94 LOGICAL :: IS_ENCRYPTED, IS_AVAILABLE
95C-----------------------------------------------
96C S o u r c e L i n e s
97C-----------------------------------------------
98
99 is_encrypted = .false.
100 is_available = .false.
101 fac_length_ = one
102 fac_time_ = one
103
104C Check input encryption
105 CALL hm_option_is_encrypted(is_encrypted)
106C Initial and reference density
107 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
109 IF (rhor == zero) THEN
110 rhor = rho0
111 ENDIF
112 pm(1) = rhor
113 pm(89) = rho0
114 ale%GLOBAL%IS_BOUNDARY_MATERIAL = .true.
115C
116 carl = zero
117 t0 = zero
118 gam = zero
119 vcrt2 = zero
120 gamrp = zero
121 gam1 = zero
122 p0 = zero
123 c1 = zero
124 ssp = zero
125 ssp2 = zero
126 ef = zero
127 e0 = zero
128 dc = zero
129 rhoc = zero
130 alp0 = infinity
131 ifr = 0
132 ifp = 0
133 ife = 0
134 ift = 0
135 ifq = 0
136 ityp = 0
137 inod = 0
138 icomp = 0
139
140C Formulation type
141 CALL hm_get_intv('Itype', ityp, is_available, lsubmodel)
142C
143 CALL hm_get_floatv('MAT_PSH', psh, is_available, lsubmodel, unitab)
144 CALL hm_get_floatv('SCALE', tscal, is_available, lsubmodel, unitab)
145 CALL hm_get_floatv_dim('SCALE', fac_time_, is_available, lsubmodel, unitab)
146 CALL hm_get_floatv_dim('h', fac_length_, is_available, lsubmodel, unitab)
147
148C Switch according to input type
149 SELECT CASE(ityp)
150 CASE (0)
151 CALL hm_get_intv('NODE1', inod, is_available, lsubmodel)
152 CALL hm_get_floatv('GAMMA', gam, is_available, lsubmodel, unitab)
153 CALL hm_get_floatv('K_cdi', dc, is_available, lsubmodel, unitab)
154
155 CALL hm_get_intv('FUN_A1', ifr, is_available, lsubmodel)
156
157 CALL hm_get_intv('FUN_A2', ifp, is_available, lsubmodel)
158 CALL hm_get_floatv('MAT_PScale', p0, is_available, lsubmodel, unitab)
159 CASE (1)
160 CALL hm_get_intv('NODE1', inod, is_available, lsubmodel)
161 CALL hm_get_floatv('MAT_C1', c1, is_available, lsubmodel, unitab)
162 CALL hm_get_floatv('K_cdi', dc, is_available, lsubmodel, unitab)
163
164 CALL hm_get_intv('FUN_A1', ifr, is_available, lsubmodel)
165
166 CALL hm_get_intv('FUN_A2', ifp, is_available, lsubmodel)
167 CALL hm_get_floatv('MAT_PScale', p0, is_available, lsubmodel, unitab)
168
169 CALL hm_get_intv('FUN_A6', ife, is_available, lsubmodel)
170 CALL hm_get_floatv('MAT_E0', e0, is_available, lsubmodel, unitab)
171 CASE (2)
172 CALL hm_get_intv('FUN_A1', ifr, is_available, lsubmodel)
173
174 CALL hm_get_intv('FUN_A2', ifp, is_available, lsubmodel)
175 CALL hm_get_floatv('MAT_PScale', p0, is_available, lsubmodel, unitab)
176
177 CALL hm_get_intv('FUN_A6', ife, is_available, lsubmodel)
178 CALL hm_get_floatv('MAT_E0', e0, is_available, lsubmodel, unitab)
179 CASE (3)
180 CALL hm_get_floatv('MAT_C0', ssp, is_available, lsubmodel, unitab)
181 CALL hm_get_floatv('h', carl, is_available, lsubmodel, unitab)
182 IF(carl*ssp==zero)THEN
183 CALL ancmsg(msgid=304,
184 . msgtype=msgerror,
185 . anmode=aninfo,
186 . i2=mat_id,
187 . c1=titr)
188 ENDIF
189 CASE DEFAULT
190 CALL ancmsg(msgid=1665, msgtype=msgerror, anmode=aninfo,
191 . i1=mat_id,
192 . i2 = ityp,
193 . c1=titr)
194 END SELECT
195
196 CALL hm_get_intv('Xt_fun', ift, is_available, lsubmodel)
197 CALL hm_get_intv('Yt_fun', ifq, is_available, lsubmodel)
198
199C----------------------
200C DEFAULT VALUES
201C----------------------
202 IF(carl==zero)carl = em01 * fac_length_
203 IF(t0==zero) t0 = three100
204 IF(tscal == zero) tscal = one * fac_time_
205 SELECT CASE(ityp)
206 CASE (0)
207 gam1 = one/(gam - one)
208 gam2 = half/gam
209 gamrp= gam2*(gam-one)
210 e0 = gam1*(p0+psh)
211 ef = gam1*(psh)
212 ssp2 = gam*p0/rho0
213 vcrt2= two*gam*(p0+psh)/rho0/(gam + one)
214 vcrt = sqrt(vcrt2)
215 rcrt = (one-gamrp*rho0*vcrt2/(p0+psh))**gam1
216 pcrt = (p0+psh)*rcrt**gam
217 rcrt = rho0*rcrt
218 CASE (1)
219 ssp2 = c1/rho0
220 gam1 = one
221 CASE (2)
222 gam1 = one
223 ssp2 = ssp**2
224 CASE (3)
225 IF(carl>zero)alp0=half*ssp/carl
226 rhoc=rho0*ssp
227 CASE DEFAULT
228C Already exited at input reading
229 END SELECT
230
231C----------------------
232C PRINTOUT
233C----------------------
234 WRITE(iout, 800)trim(titr),mat_id,11
235
236 IF(is_encrypted)THEN
237 WRITE(iout,900)
238 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
239 ELSE
240 WRITE(iout,1000)ityp,psh,tscal
241 WRITE(iout, 850) rho0,rhor
242 SELECT CASE(ityp)
243 CASE(0)
244 WRITE(iout,1100)gam,p0,e0,vcrt,rcrt,pcrt,inod
245 WRITE(iout,1350)ef,dc
246 WRITE(iout,1300)ifr,ifp
247 CASE(1)
248 WRITE(iout,1200)c1,p0,e0,inod
249 WRITE(iout,1349)dc
250 WRITE(iout,1301)ifr,ifp,ife
251 CASE(2)
252 WRITE(iout,1400)p0,e0
253 WRITE(iout,1302)ifr,ifp,ife
254 CASE(3)
255 WRITE(iout,1353)ssp,carl,inod
256 CASE DEFAULT
257C Already exited at input reading
258 END SELECT
259 IF(ityp/=3)WRITE(iout,2001) ift,ifq
260 ENDIF
261
262C----------------------
263C STORAGE
264C----------------------
265 ipm(11) = ifr
266 ipm(12) = ifp
267 ipm(13) = ife
268 ipm(14) = ift
269 ipm(17) = ifq
270
271 pm(23) = e0
272 pm(25) = gam
273 pm(27) = vcrt2
274 pm(28) = gamrp
275 pm(29) = gam1
276 pm(31) = p0
277 pm(32) = c1
278 pm(34) = -half*ssp2/carl**2
279 pm(37) = ef
280 pm(40) = one/tscal
281 pm(50) = ityp
282 pm(51) = inod ! USR2SYS APRES FSDCOD, IF(IFORM8==2) INOD=USR2SYS(INOD,ITABM1,MESS)
283 pm(79) = t0
284 pm(80) = ep30
285 pm(88) = psh
286 pm(97) = rhoc
287 pm(98) = alp0
288 pm(99) = dc+one
289
290C----------------------
291C MATERIAL BUFFER
292C----------------------
293 mtag%G_RK = 1
294 mtag%G_RE = 1
295 mtag%G_TEMP = 1
296 mtag%L_RK = 1
297 mtag%L_TEMP = 1
298 mtag%L_RE = 1
299 mtag%L_VK = 1
300 mtag%L_EINS = 1
301
302 ! EOS/Thermo keyword for pressure treatment in elements
303 CALL init_mat_keyword(matparam,"HYDRO_EOS")
304
305 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
306
307 ! Properties compatibility
308 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
309C--------------------------------
310 RETURN
311
312C----------------------
313C FORMAT
314C----------------------
315 800 FORMAT(/
316 & 5x,a,/,
317 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
318 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
319 850 FORMAT(
320 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
321 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13/)
322 900 FORMAT(
323 & 5x,40h law for fluid boundary elements ,/,
324 & 5x,40h ------------------------------- ,/)
325 1000 FORMAT(
326 & 5x,40h law for fluid boundary elements ,/,
327 & 5x,40h ------------------------------- ,/,
328 & 5x,40hityp. . . . . . . . . . . . . . . . . .=,i10/,
329 & 5x,'ITYP = 0 : GAS INLET',/,
330 & 5x,'ITYP = 1 : LIQUID INLET',/,
331 & 5x,'ITYP = 2 : IMPOSED INLET/OUTLET - TIME DEPENDENT',/,
332 & 5x,'ityp = 3 : non-reflecting boundary',/,
333 & 5X,'psh: pressure shift . . . . . . . . . .=',1PG20.13/,
334 & 5X,'time scale factor . . . . . . . . . . .=',1PG20.13/)
335 1100 FORMAT(
336 & 5X,40HGAMMA CONSTANT. . . . . . . . . . . . .=,E12.4/,
337 & 5X,40HSTAGNATION PRESSURE . . . . . . . . . .=,E12.4/,
338 & 5X,40HSTAGNATION ENERGY . . . . . . . . . . .=,E12.4/,
339 & 5X,40HCRITICAL VELOCITY . . . . . . . . . . .=,E12.4/,
340 & 5X,40HCRITICAL DENSITY. . . . . . . . . . . .=,E12.4/,
341 & 5X,40HCRITICAL PRESSURE . . . . . . . . . . .=,E12.4/,
342 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
343 1200 FORMAT(
344 & 5X,40HBULK MODULUS. . . . . . . . . . . . . .=,E12.4/,
345 & 5X,40HSTAGNATION PRESSURE . . . . . . . . . .=,E12.4/,
346 & 5X,40HSTAGNATION ENERGY . . . . . . . . . . .=,E12.4/,
347 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
348 1300 FORMAT(
349 & 5X,40HSTAGNATION DENSITY LOAD CURVE. . . . .=,I10/,
350 & 5X,40HSTAGNATION PRESSURE LOAD CURVE. . . . .=,I10/)
351 1301 FORMAT(
352 & 5X,40HSTAGNATION DENSITY LOAD CURVE. . . . .=,I10/,
353 & 5X,40HSTAGNATION PRESSURE LOAD CURVE. . . . .=,I10/,
354 & 5X,40HSTAGNATION ENERGY LOAD CURVE. . . . .=,I10/)
355 1302 FORMAT(
356 & 5X,40HDENSITY LOAD CURVE . . . . . . . . .=,I10/,
357 & 5X,40HPRESSURE LOAD CURVE . . . . . . . . .=,I10/,
358 & 5X,40HENERGY LOAD CURVE . . . . . . . . .=,I10/)
359 1349 FORMAT(
360 & 5X,40HDISCHARGE COEFFICIENT (ENTRY LOSS). . .=,E12.4/)
361 1350 FORMAT(
362 & 5X,40HFINAL STAGNATION ENERGY . . . . . . . .=,E12.4/,
363 & 5X,40HDISCHARGE COEFFICIENT (ENTRY LOSS). . .=,E12.4/)
364 1353 FORMAT(
365 & 5X,40HCHARACTERISTIC SOUND SPEED. . . . . . .=,E12.4/,
366 & 5X,40HCHARACTERISTIC LENGTH . . . . . . . . .=,E12.4/,
367 & 5X,40HREFERENCE NODE (VELOCITY) . . . . . . .=,I10/)
368 1400 FORMAT(
369 & 5X,40HINITIAL PRESSURE(P-PSH) . . . . . . . .=,E12.4/,
370 & 5X,40HINITIAL ENERGY. . . . . . . . . . . . .=,E12.4/)
371 2001 FORMAT(
372 & 5X,' thermal boundary ',/,
373 & 5X,' ---------------- ',/,
374 & 5X,'temperature load curve. . . . . . . . .=',I10/,
375 & 5X,'flux load curve. . . . . . . . . . . .=',I10/)
376C-----------
377 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)
subroutine init_mat_keyword(matparam, keyword)
for(i8=*sizetab-1;i8 >=0;i8--)
type(ale_) ale
Definition ale_mod.F:249
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