OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat06_keps.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_mat06_keps ../starter/source/materials/mat/mat006/hm_read_mat06_keps.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
27!||--- calls -----------------------------------------------------
28!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
29!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
30!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
31!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
32!||--- uses -----------------------------------------------------
33!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
34!|| message_mod ../starter/share/message_module/message_mod.F
35!|| submodel_mod ../starter/share/modules1/submodel_mod.F
36!||====================================================================
38 . LSUBMODEL ,MTAG6 ,UNITAB ,IPM ,PM,
39 . MAT_ID ,TITR ,ISRATE,
40 . ITYP ,MTAG17 ,MATPARAM )
41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE unitab_mod
45 USE elbuftag_mod !MAXEOS
46 USE message_mod
47 USE submodel_mod
48 USE matparam_def_mod
50C-----------------------------------------------
51C ROUTINE DESCRIPTION :
52C ===================
53C READ MAT LAW21 WITH HM READER
54C-----------------------------------------------
55C DUMMY ARGUMENTS DESCRIPTION:
56C ===================
57C UNITAB UNITS ARRAY
58C MAT_ID MATERIAL ID(INTEGER)
59C TITR MATERIAL TITLE
60C LSUBMODEL SUBMODEL STRUCTURE
61C-----------------------------------------------
62C I m p l i c i t T y p e s
63C-----------------------------------------------
64#include "implicit_f.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "units_c.inc"
69#include "param_c.inc"
70C-----------------------------------------------
71C D u m m y A r g u m e n t s
72C-----------------------------------------------
73 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
74 INTEGER, INTENT(INOUT) :: MAT_ID
75 INTEGER, INTENT(INOUT) :: ISRATE
76 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
77 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
78 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
79 TYPE(submodel_data), DIMENSION(*),INTENT(IN) :: LSUBMODEL
80 TYPE(mlaw_tag_), INTENT(INOUT) :: MTAG6,MTAG17
81 INTEGER,INTENT(IN) :: ITYP
82 TYPE(matparam_struct_),INTENT(INOUT) :: MATPARAM
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
87 INTEGER JTUR, I, EMPTY_LINE,COUNT,LAW6_OPT
88 my_real RHO0, VIS, BID, PSH, C0, C1, C2, C3, C4, C5, PMIN, E0, RK0,
89 . ssl, ctm, sk, se, rpr, ct1, ct2, ct3, ak, e, a, b, yp0, yp1,
90 . mu,rhor
91C-----------------------------------------------
92C S o u r c e L i n e s
93C-----------------------------------------------
94 count = 0
95 jtur=pm(70)
96!---
97 CALL hm_option_is_encrypted(is_encrypted)
98!
99 CALL hm_get_intv ('Line_count' ,count ,is_available,lsubmodel)
100 count=count+2
101
102 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
103 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
104
105 CALL hm_get_intv ('Law6_opt' ,law6_opt ,is_available,lsubmodel)
106 !1,2,3 (3=K-EPS)
107
108 CALL hm_get_floatv('DAMP1' ,vis ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv('MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
110
111 IF (pmin == zero) pmin=-infinity
112 IF (rhor == zero) rhor=rho0
113
114 CALL hm_get_floatv('RHO0_K0' ,rk0 ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('SSL' ,ssl ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('C_MU' ,ctm ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv('SIG_k' ,sk ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv('SIG_EPS' ,se ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv('P_R_ON_P_RT' ,rpr ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('C_1' ,ct1 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('C_2' ,ct2 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('C_3' ,ct3 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('KAPPA' ,ak ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('E' ,e ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('ALPHA' ,a ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv('GSI_T' ,b ,is_available, lsubmodel, unitab)
127
128 e0 = zero
129 c0 = zero
130 c1 = zero
131 c2 = zero
132 c3 = zero
133 c4 = zero
134 c5 = zero
135 psh = zero
136
137 pm(1) = rhor
138 pm(89)= rho0
139 pm(23)=e0
140 pm(24)=vis
141 pm(104)=c0 - psh
142 pm(32)=c1
143 pm(33)=c2
144 pm(34)=c3
145 pm(35)=c4
146 pm(36)=c5
147 pm(37)=pmin
148
149 IF(rhor /= zero) THEN
150 mu = rho0/rhor-one
151 ELSE
152 mu = zero ! RHOR=0.0 => error 683 will be displayed in hm_read_mat.F
153 ENDIf
154
155 IF(mu < zero)THEN
156 pm(31) = -psh + c0+c1*mu + c3*mu**3+(c4+c5*mu)*e0
157 ELSE
158 pm(31) = -psh + c0+c1*mu + c2*mu**2+c3*mu**3+(c4+c5*mu)*e0
159 ENDIF
160
161 pm(80)=infinity
162
163 IF(ssl == zero)ssl= ep10
164 pm(46)=ssl
165 pm(95)=rpr
166
167 IF(ctm == zero)ctm=nineem2
168 IF(ct1 == zero)ct1=onep44
169 IF(ct2 == zero)ct2=onep92
170 IF(ct3 == zero)ct3=-zep373
171 IF(sk == zero)sk=one
172 IF(se == zero)se=onep3
173 IF(rpr == zero)rpr=seven_over_9
174 !PARAMETRES MUR TURBULENT
175 IF(ak == zero) ak=zep4187
176 IF(e == zero) e=ninep793
177 IF(a == zero) a=half
178 pm(47)=a*ak
179 pm(48)=e
180 pm(49)=a
181 pm(50)=b
182 yp0=elevenp5
183 DO i=1,100
184 yp1=log(e*yp0)/ak
185 IF(yp1 == yp0)EXIT
186 yp0=yp1
187 ENDDO
188 pm(51)=yp1
189 pm(79)=three100
190 ! FIN PARAMS MUR TURBULENT
191 pm(81)=ctm
192 pm(82)=ct1
193 pm(83)=ct2
194 pm(84)=ct3
195 pm(85)=sk
196 pm(86)=se
197 pm(95)=rpr
198 pm(87)=rk0/rho0
199!---------------------------------------------------------
200 matparam%IEOS = 18 ! linear EOS is used by default
201 ipm(4) = 18 ! keep this temporarily for output and fluid sections
202!---------------------------------------------------------
203 ! Material compatibility with /EOS option
204 CALL init_mat_keyword(matparam,"EOS")
205
206 ! EOS/Thermo keyword for pressure treatment in elements
207 CALL init_mat_keyword(matparam,"HYDRO_EOS")
208
209 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
210
211 ! Properties compatibility
212 CALL init_mat_keyword(matparam,"SOLID_POROUS")
213 CALL init_mat_keyword(matparam,"SPH")
214
215 WRITE(iout,2001) trim(titr),mat_id,6
216 WRITE(iout,1001)
217
218 IF(is_encrypted)THEN
219 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
220 ELSE
221 WRITE(iout,2002)rho0,rhor
222 WRITE(iout,1300)vis
223 WRITE(iout,1501)pmin
224 ENDIF
225 WRITE(iout,1600)rk0,ssl,ctm,sk,se,rpr,ct1,ct2,ct3
226 WRITE(iout,1601)ak,e,a,b
227
228 pm(88)=psh
229c
230C---- Definition des variables internes (stockage elementaire)
231c
232 mtag6%G_RK = 1
233 mtag6%G_RE = 1
234 mtag6%L_RK = 1
235 mtag6%L_RE = 1
236 mtag6%L_VK = 1
237 mtag6%G_TEMP = 1
238 mtag6%L_TEMP = 1
239c
240 mtag17%G_RK = 1
241 mtag17%G_RE = 1
242 mtag17%L_RK = 1
243 mtag17%L_RE = 1
244 mtag17%L_VK = 1
245 mtag17%G_TEMP = 1
246 mtag17%L_TEMP = 1
247C--------------------------------
248 1001 FORMAT(
249 & 5x,' K-EPSILON TURBULENT FLUID ',/,
250 & 5x,' ------------------------- ',//)
251 1300 FORMAT(
252 & 5x,'VISCOSITY . . . . . . . . . . . . . . .=',1pg20.13)
253 1501 FORMAT(
254 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13//)
255 2001 FORMAT(/
256 & 5x,a,/,
257 & 5x,' MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
258 & 5x,' MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
259 2002 FORMAT(
260 & 5x,' INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
261 & 5x,' REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13/)
262 1600 FORMAT(
263 & 5x,'RK0 INITIAL TURBULENT ENERGY. . . . . .=',1pg20.13/,
264 & 5x,'SSL SUBGRID SCALE LENGTH. . . . . . . .=',1pg20.13/,
265 & 5x,'CMU TURBULENT VISCOSITY COEFFICIENT . .=',1pg20.13/,
266 & 5x,'SK K DIFFUSION COEFFICIENT . . . . . .=',1pg20.13/,
267 & 5x,'SE EPSILON DIFFUSION COEFFICIENT . . .=',1pg20.13/,
268 & 5x,'PR/PRT LAM./TURB. PRANDT NUMBER RATIO .=',1pg20.13/,
269 & 5x,'CT1 EPSILON SOURCE COEFFICIENT C1 . . .=',1pg20.13/,
270 & 5x,'CT2 EPSILON SOURCE COEFFICIENT C2 . . .=',1pg20.13/,
271 & 5x,'CT3 EPSILON SOURCE COEFFICIENT C3 . . .=',1pg20.13/)
272 1601 FORMAT(
273 & 5x,'TURBULENT WALL COEFFICIENTS '/,
274 & 5x,'K LOGARITHMIQUE LAW COEFFICIENT. . . .=',1pg20.13/,
275 & 5x,'E LOGARITHMIQUE LAW COEFFICIENT. . . .=',1pg20.13/,
276 & 5x,'A K,EPSILON ECCENTRICITY . . . . . . .=',1pg20.13/,
277 & 5x,'B SOURCE FLAG. . . . . . . . . . . . .=',1pg20.13/)
278C--------------------------------
279 RETURN
280 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_is_encrypted(is_encrypted)
subroutine hm_read_mat06_keps(lsubmodel, mtag6, unitab, ipm, pm, mat_id, titr, israte, ityp, mtag17, matparam)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle