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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat06 (lsubmodel, mtag6, unitab, ipm, pm, mat_id, titr, israte, ityp, mtag17, matparam)

Function/Subroutine Documentation

◆ hm_read_mat06()

subroutine hm_read_mat06 ( type(submodel_data), dimension(*), intent(in) lsubmodel,
type(mlaw_tag_), intent(inout) mtag6,
type (unit_type_), intent(in) unitab,
integer, dimension(npropmi), intent(inout) ipm,
intent(inout) pm,
integer, intent(inout) mat_id,
character(len=nchartitle), intent(in) titr,
integer, intent(inout) israte,
integer, intent(in) ityp,
type(mlaw_tag_), intent(inout) mtag17,
type(matparam_struct_), intent(inout) matparam )

Definition at line 38 of file hm_read_mat06.F.

42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE unitab_mod
46 USE elbuftag_mod !MAXEOS
47 USE message_mod
48 USE submodel_mod
49 USE matparam_def_mod
51C-----------------------------------------------
52C ROUTINE DESCRIPTION :
53C ===================
54C READ MAT LAW21 WITH HM READER
55C-----------------------------------------------
56C DUMMY ARGUMENTS DESCRIPTION:
57C ===================
58C UNITAB UNITS ARRAY
59C MAT_ID MATERIAL ID(INTEGER)
60C TITR MATERIAL TITLE
61C LSUBMODEL SUBMODEL STRUCTURE
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C C o m m o n B l o c k s
68C-----------------------------------------------
69#include "scr03_c.inc"
70#include "units_c.inc"
71#include "param_c.inc"
72C-----------------------------------------------
73C D u m m y A r g u m e n t s
74C-----------------------------------------------
75 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
76 INTEGER, INTENT(INOUT) :: MAT_ID
77 INTEGER, INTENT(INOUT) :: ISRATE
78 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
79 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
80 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
81 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
82 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG6,MTAG17
83 INTEGER,INTENT(IN) :: ITYP
84 TYPE(MATPARAM_STRUCT_),INTENT(INOUT) :: MATPARAM
85C-----------------------------------------------
86C L o c a l V a r i a b l e s
87C-----------------------------------------------
88 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED,IS_EOS
89 INTEGER COUNT, IEOS, LAW6_OPT
91 . rho0, vis, psh, c0, c1, c2, c3, c4, c5, pmin, e0,
92 .
93 . mu,rhor
94C-----------------------------------------------
95C S o u r c e L i n e s
96C-----------------------------------------------
97 count = 0
98 is_eos=.false.
99 pmin=zero
100 rhor=zero
101 is_encrypted=.false.
102!---
103 CALL hm_option_is_encrypted(is_encrypted)
104!
105 CALL hm_get_intv ('Line_count' ,count ,is_available, lsubmodel)
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 CALL hm_get_boolv ('EOS_DATA_EXIST' ,is_eos ,is_available)
109 CALL hm_get_intv ('Law6_opt' ,law6_opt ,is_available, lsubmodel) !1:HYD_VISC,2:HYDRO,3:K-EPS
110 CALL hm_get_floatv('DAMP1' ,vis ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv('MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
112
113 IF(count==3)is_eos=.true. !EoS no longer embedded since format 2018, but still compatible
114 IF(invers_init<2018)is_eos=.true. !no embedded eos before up to format 2017
115
116 IF (is_eos) THEN
117 ieos = 1 ! polynomial embedded EOS
118 CALL hm_get_floatv('MAT_C0' ,c0 ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv('MAT_C1' ,c1 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_C2' ,c2 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('MAT_C3' ,c3 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('MAT_C4' ,c4 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_C5' ,c5 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_EA' ,e0 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('MAT_PSH' ,psh ,is_available, lsubmodel, unitab)
126 ! allocate EoS data structure
127 matparam%IEOS = 1
128 matparam%EOS%NUPARAM = 7
129 matparam%EOS%NIPARAM = 0
130 matparam%EOS%NFUNC = 0
131 matparam%EOS%NTABLE = 0
132 CALL matparam%EOS%CONSTRUCT() !allocations
133 matparam%EOS%UPARAM(1) = c0-psh
134 matparam%EOS%UPARAM(2) = c1
135 matparam%EOS%UPARAM(3) = c2
136 matparam%EOS%UPARAM(4) = c3
137 matparam%EOS%UPARAM(5) = c4
138 matparam%EOS%UPARAM(6) = c5
139 matparam%EOS%UPARAM(7) = zero
140 matparam%EOS%PSH = psh
141 matparam%EOS%E0 = e0
142 ELSE
143 e0 = zero
144 c0 = zero
145 c1 = zero
146 c2 = zero
147 c3 = zero
148 c4 = zero
149 c5 = zero
150 psh =zero
151 ieos = 0
152 ENDIF
153
154 IF (pmin == zero) pmin=-infinity
155 IF (rhor == zero) rhor=rho0
156 pm(1) = rhor
157 pm(89)= rho0
158
159 pm(23)=e0
160 pm(24)=vis
161
162 IF(rhor /= zero) THEN
163 mu = rho0/rhor-one
164 ELSE
165 mu = zero ! RHOR=0.0 => error 683 will be displayed in hm_read_mat.F
166 ENDIf
167 IF(mu < zero)THEN
168 pm(31) = -psh + c0+c1*mu+ c3*mu**3+(c4+c5*mu)*e0
169 ELSE
170 pm(31) = -psh + c0+c1*mu+c2*mu**2+c3*mu**3+(c4+c5*mu)*e0
171 ENDIF
172
173 pm(32)=c1 !legacy value
174 !!PM(32)=C1+C4*ABS(E0) !bulk modulus
175 pm(37)=pmin
176 pm(80)=infinity
177 pm(88)=psh
178 pm(104)=c0 - psh
179
180!-------------------------------------------------------------
181 matparam%IEOS = ieos ! linear by default
182 ipm(4) = ieos ! keep this temporarily for output and fluid sections
183
184 ! Material compatibility with /EOS option
185 CALL init_mat_keyword(matparam,"EOS")
186
187 ! EOS/Thermo keyword for pressure treatment in elements
188 CALL init_mat_keyword(matparam,"HYDRO_EOS")
189
190 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
191
192 ! Properties compatibility
193 CALL init_mat_keyword(matparam,"SOLID_POROUS")
194 CALL init_mat_keyword(matparam,"SPH")
195C-----
196
197 WRITE(iout,2001) trim(titr),mat_id,6
198 WRITE(iout,1000)
199
200 IF(is_encrypted)THEN
201 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
202 ELSEIF (is_eos) THEN
203 WRITE(iout,2002)rho0,rhor
204 WRITE(iout,1300)vis
205 WRITE(iout,1400)psh
206 WRITE(iout,1500)c0,c1,c2,c3,c4,c5,pmin,pm(31),e0
207 ELSE
208 WRITE(iout,2002)rho0,rhor
209 WRITE(iout,1300)vis
210 WRITE(iout,1501)pmin
211 ENDIF
212
213
214c
215C---- Definition of internal variables (Elementary storage)
216c
217 mtag6%G_RK = 1
218 mtag6%G_RE = 1
219 mtag6%L_RK = 1
220 mtag6%L_RE = 1
221 mtag6%L_VK = 1
222 mtag6%G_TEMP = 1
223 mtag6%L_TEMP = 1
224c
225 mtag17%G_RK = 1
226 mtag17%G_RE = 1
227 mtag17%L_RK = 1
228 mtag17%L_RE = 1
229 mtag17%L_VK = 1
230 mtag17%G_TEMP = 1
231 mtag17%L_TEMP = 1
232C--------------------------------
233 1000 FORMAT(
234 & 5x,' VISCOUS FLUID ',/,
235 & 5x,' -------------- ',//)
236 1300 FORMAT(
237 & 5x,'VISCOSITY . . . . . . . . . . . . . . .=',1pg20.13)
238 1400 FORMAT(
239 & 5x,'PSH PRESSURE SHIFT. . . . . . . . . . .=',1pg20.13/)
240 1500 FORMAT(
241 & 5x,'C0. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
242 & 5x,'C1. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
243 & 5x,'C2. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
244 & 5x,'C3. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
245 & 5x,'C4. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
246 & 5x,'C5. . . . . . . . . . . . . . . . . . .=',1pg20.13/,
247 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13/,
248 & 5x,'INITIAL PRESSURE. . . . . . . . . . . .=',1pg20.13/,
249 & 5x,'INITIAL INTERNAL ENERGY PER UNIT VOLUME=',1pg20.13//)
250 1501 FORMAT(
251 & 5x,'PRESSURE CUTOFF . . . . . . . . . . . .=',1pg20.13//)
252 2001 FORMAT(/
253 & 5x,a,/,
254 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
255 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
256 2002 FORMAT(
257 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
258 & 5x,'REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13)
259
260C--------------------------------
261C-----------
262 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_boolv(name, bval, is_available)
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 init_mat_keyword(matparam, keyword)
integer, parameter nchartitle