OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat49.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_mat49 ../starter/source/materials/mat/mat049/hm_read_mat49.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
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_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
32!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
33!||--- uses -----------------------------------------------------
34!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
35!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_read_mat49(
39 . LSUBMODEL ,MTAG ,UNITAB ,IPM ,PM ,
40 . MAT_ID ,TITR ,ISRATE ,MATPARAM )
41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE elbuftag_mod
45 USE message_mod
46 USE submodel_mod
47 USE matparam_def_mod
48 USE unitab_mod
50C-----------------------------------------------
51C ROUTINE DESCRIPTION :
52C ===================
53C READ MAT LAW49 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 INTEGER, INTENT(INOUT) :: MAT_ID
74 INTEGER, INTENT(INOUT) :: ISRATE
75 INTEGER, DIMENSION(NPROPMI) ,INTENT(INOUT) :: IPM
76 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
77 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
78 TYPE(unit_type_), INTENT(in) :: UNITAB
79 TYPE(submodel_data), DIMENSION(NSUBMOD),INTENT(IN) :: LSUBMODEL
80 TYPE(mlaw_tag_), INTENT(INOUT) :: MTAG
81 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
82C-----------------------------------------------
83C L o c a l V a r i a b l e s
84C-----------------------------------------------
85 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
86 INTEGER JTUR, I, IEOS,EMPTY_LINE,COUNT
87 INTEGER JTHE, IFLAGR
89 . young,nu,sig0,cb,cn,sigm,epsm,t0,tmelt,pmin,
90 . sph,cb1,cb2,ch,cf,g0,bulk,
91 . fac_l,fac_t,fac_m,fac_c,
92 . bid2 ,bid3 ,bid4 ,bid5 ,
93 . bid2_,bid3_,bid4_,bid5_,
94 . c0,c1,c2,c3,c4,c5,e0,psh,rho0,rhor
95 CHARACTER*32 :: MTL_MSG
96C-----------------------------------------------
97C S o u r c e L i n e s
98C-----------------------------------------------
99 count = 0
100 ieos = 0
101 bulk=zero
102
103 bulk = zero
104 psh = zero
105
106 is_encrypted=.false.
107 is_available=.false.
108
109 mtl_msg = ''
110
111 CALL hm_option_is_encrypted(is_encrypted)
112
113 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
115
116 CALL hm_get_floatv('MAT_E0' ,young ,is_available, lsubmodel, unitab)
117 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
118
119 CALL hm_get_floatv('MAT_SIGY' ,sig0 ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
124
125 CALL hm_get_floatv('MAT_T0' ,t0 ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv('MAT_TMELT' ,tmelt ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv('MAT_SPHEAT' ,sph ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_PC' ,pmin ,is_available, lsubmodel, unitab)
129
130 CALL hm_get_floatv('MAT_B1' ,cb1 ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv('MAT_B2' ,cb2 ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv('h' ,ch ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv('MAT_F' ,cf ,is_available, lsubmodel, unitab)
134
135 CALL hm_get_intv ('Line_count' ,count ,is_available, lsubmodel)
136
137 !Default EoS
138 ieos = 18 ! Linear EOS is used by default
139 matparam%IEOS = ieos
140 ipm(4) = ieos ! keep this temporarily for output and fluid sections
141
142 IF (pmin==zero) pmin=-ep20
143 IF (rhor==zero) rhor=rho0
144 pm(1) = rhor
145 pm(89)= rho0
146
147 IF(cf < zero) THEN
148 CALL ancmsg(msgid=1513,msgtype=msgerror,anmode=aninfo,i1 = mat_id,c1 = titr)
149 ENDIF
150
151 IF(nu<zero.OR.nu>=half)THEN
152 mtl_msg = "LAW49 (STEINBERG GUINAN)"
153 CALL ancmsg(msgid=1514,msgtype=msgerror,anmode=aninfo,i1=mat_id,c1=mtl_msg,c2=titr)
154 ENDIF
155
156 IF(epsm==zero) epsm = ep20
157 IF(sigm==zero) sigm = ep20
158 IF(tmelt==zero)tmelt = ep20
159 IF(pmin==zero) pmin =-ep20
160 IF(t0==zero) t0 = three100
161 g0 = young /two / (one+nu)
162 bulk=young/(three*(one - two*nu))
163
164 pm(20) = young
165 pm(21) = nu
166 pm(22) = g0
167 pm(24) = nu * young / (one-nu*nu)
168 pm(32) = bulk
169 pm(37) = pmin
170 pm(38) = sig0
171 pm(39) = cb
172 pm(40) = cn
173 pm(41) = epsm
174 pm(42) = sigm
175 pm(43) = cb1
176 pm(44) = cb2
177 pm(45) = ch
178 pm(46) = tmelt
179 pm(69) = sph
180 pm(77) = cf
181 pm(78) = t0
182 pm(79) = t0
183 pm(80) = tmelt
184
185 !Formulation for solid elements time step computation.
186 ipm(252)= 2
187 pm(105) = two*g0/(bulk+four_over_3*g0) ! =(1-2*Nu)/(1-Nu)
188
189 ! MATPARAM keywords
190 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
191
192 ! Material compatibility with /EOS option
193 CALL init_mat_keyword(matparam,"EOS")
194
195 ! EOS/Thermo keyword for pressure treatment in elements
196 CALL init_mat_keyword(matparam,"HYDRO_EOS")
197
198 ! Properties compatibility
199 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
200 CALL init_mat_keyword(matparam,"SPH")
201
202 WRITE(iout,1000)
203 IF(is_encrypted)THEN
204 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
205 ELSE
206 WRITE(iout,2001) titr,mat_id,49
207 WRITE(iout,2002) rho0,rhor
208 WRITE(iout,1100)young,sig0,nu,cb,cn,sigm,epsm,t0,tmelt,sph,pmin,cb1,cb2,ch,cf
209 ENDIF
210
211 mtag%G_PLA = 1
212 mtag%G_TEMP = 1
213
214 mtag%L_PLA = 1
215 mtag%L_TEMP = 1
216 mtag%L_EPSD = 1
217C--------------------------------
218 1000 FORMAT(
219 & 5x,' STEINBERG-GUINAN CONSTITUTIVE LAW ',/,
220 & 5x,' ---------------------------------- ',//)
221 1100 FORMAT(
222 & 5x,'INITIAL YOUNG MODULUS . . . . . . . . .=',1pg20.13/
223 & 5x,'INITIAL YIELD STRESS. . . . . . . . . .=',1pg20.13/
224 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
225 & 5x,'HARDENING COEFFICIENT . . . . . . . . .=',1pg20.13/
226 & 5x,'HARDENING EXPONENT. . . . . . . . . . .=',1pg20.13/
227 & 5x,'MAXIMUM STRESS. . . . . . . . . . . . .=',1pg20.13/
228 & 5x,'MAXIMUM STRAIN. . . . . . . . . . . . .=',1pg20.13/
229 & 5x,'INITIAL TEMPERATURE . . . . . . . . . .=',1pg20.13/
230 & 5x,'MELTING TEMPERATURE . . . . . . . . . .=',1pg20.13/
231 & 5x,'SPECIFIC HEAT . . . . . . . . . . . . .=',1pg20.13/
232 & 5x,'MINIMAL PRESSURE. . . . . . . . . . . .=',1pg20.13/
233 & 5x,'B1 COEFFICIENT. . . . . . . . . . . . .=',1pg20.13/
234 & 5x,'B2 COEFFICIENT. . . . . . . . . . . . .=',1pg20.13/
235 & 5x,'H COEFFICIENT . . . . . . . . . . . . .=',1pg20.13/
236 & 5x,'F COEFFICIENT . . . . . . . . . . . . .=',1pg20.13//)
237C-----------
238 2000 FORMAT(
239 & 5x,' POLYNOMIAL EOS ',/,
240 & 5x,' -------------- ',/,
241 & 5x,' INPUT 100 IS OBSOLETE ',/,
242 & 5x,' IT CAN BE REPLACED BY /EOS CARD ',/)
243 2001 FORMAT(/
244 & 5x,a,/,
245 & 5x,' MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
246 & 5x,' MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
247 2002 FORMAT(
248 & 5x,' INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/,
249 & 5x,' REFERENCE DENSITY . . . . . . . . . . .=',1pg20.13/)
250 RETURN
251 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_mat49(lsubmodel, mtag, unitab, ipm, pm, mat_id, titr, israte, matparam)
subroutine init_mat_keyword(matparam, keyword)
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