OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat48.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_mat48 (uparam, maxuparam, nuparam, nuvar, parmat, mat_id, pm, titr, unitab, lsubmodel, israte, nfunc, mtag, matparam)

Function/Subroutine Documentation

◆ hm_read_mat48()

subroutine hm_read_mat48 ( intent(inout) uparam,
integer, intent(in) maxuparam,
integer, intent(inout) nuparam,
integer, intent(inout) nuvar,
intent(inout) parmat,
integer, intent(in) mat_id,
intent(inout) pm,
character(len=nchartitle), intent(in) titr,
type(unit_type_), intent(in) unitab,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel,
integer, intent(inout) israte,
integer, intent(inout) nfunc,
type(mlaw_tag_), intent(inout) mtag,
type(matparam_struct_), intent(inout) matparam )

Definition at line 38 of file hm_read_mat48.F.

42C-----------------------------------------------
43C ROUTINE DESCRIPTION :
44C ===================
45C READ MAT LAW48 WITH HM READER
46C-----------------------------------------------
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C UNITAB UNITS ARRAY
50C MAT_ID MATERIAL ID(INTEGER)
51C TITR MATERIAL TITLE
52C LSUBMODEL SUBMODEL STRUCTURE
53C-----------------------------------------------
54C M o d u l e s
55C-----------------------------------------------
56 USE elbuftag_mod
57 USE message_mod
58 USE submodel_mod
59 USE matparam_def_mod
61 USE unitab_mod
63C-----------------------------------------------
64C I m p l i c i t T y p e s
65C-----------------------------------------------
66#include "implicit_f.inc"
67C-----------------------------------------------
68C C o m m o n B l o c k s
69C-----------------------------------------------
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 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM
76 TYPE(UNIT_TYPE_), INTENT(in) :: UNITAB
77 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
78 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
79 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,ISRATE,NFUNC
80 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
81 my_real, DIMENSION(100),INTENT(INOUT) :: parmat
82 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD),INTENT(IN) :: LSUBMODEL
83 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
84 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
85C-----------------------------------------------
86C L o c a l V a r i a b l e s
87C-----------------------------------------------
89 . e,nu,ca,cb,cn,cc,cd,cm,ce,ck,
90 . fisokin,fcut, sigm,eps0,epsm,epsr1,epsr2,
91 . g,c1,rho0,rhor
92 INTEGER ILAW,ISRATE_LOCAL
93 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
94C=======================================================================
95 is_encrypted = .false.
96 is_available = .false.
97c
98 ilaw = 48
99 cn = one
100 fisokin = zero
101c------------------------------------------
102 CALL hm_option_is_encrypted(is_encrypted)
103c------------------------------------------
104C
105 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv('Refer_Rho',rhor ,is_available, lsubmodel, unitab)
107Card1
108 CALL hm_get_floatv('MAT_E' ,e ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
110Card2
111 CALL hm_get_floatv('MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('MAT_B' ,cb ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv('MAT_N' ,cn ,is_available, lsubmodel, unitab)
114 CALL hm_get_floatv('MAT_HARD' ,fisokin ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv('MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
116Card3
117 CALL hm_get_floatv('MAT_C' ,cc ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv('MAT_D' ,cd ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv('MAT_M' ,cm ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_E1' ,ce ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('MAT_K' ,ck ,is_available, lsubmodel, unitab)
122Card4
123 CALL hm_get_floatv('MAT_E0' ,eps0 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('SCALE' ,fcut ,is_available, lsubmodel, unitab)
125Card5
126 CALL hm_get_floatv('MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv('MAT_ETA1' ,epsr1 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_ETA2' ,epsr2 ,is_available, lsubmodel, unitab)
129C
130c-----------------------------------------------------------------------
131c Default values
132c-----------------------------------------------------------------------
133 IF (nu < zero .OR. nu >= half) THEN
134C WRITE(IOUT,*)' ** ERROR : WRONG NU VALUE'
135 CALL ancmsg(msgid=49,
136 . msgtype=msgerror,
137 . anmode=aninfo_blind_2,
138 . r1=nu,
139 . i1=mat_id,
140 . c1=titr)
141 ENDIF
142 IF(cc > zero .AND. eps0 > zero .AND. fcut == zero) THEN
143 CALL ancmsg(msgid=1220,
144 . msgtype=msgwarning,
145 . anmode=aninfo_blind_1,
146 . i1=mat_id,
147 . c1=titr)
148 ENDIF
149
150 IF (cn == zero .OR. cn == one) cn = onep0001
151 IF (cm == zero .OR. cm == one) cm = onep0001
152 IF (ck == zero) ck = one
153 IF (epsr1 == zero) epsr1 = infinity
154 IF (epsr2 == zero) epsr2 = two*infinity
155 IF (epsm == zero) epsm = infinity
156 IF (sigm == zero) sigm = infinity
157 IF (cc == zero) eps0 = one
158 IF (fcut <= zero)THEN
159 fcut = infinity
160 ENDIF
161 !----------------------------------------------------------------------
162 israte_local = 1
163 israte = 1
164 !----------------------------------------------------------------------
165 IF(epsr2 <= epsr1)THEN
166C WRITE(IOUT,*)' ** ERROR : EPSR2 MUST BE GREATER THAN EPSR1'
167 CALL ancmsg(msgid=420,
168 . msgtype=msgerror,
169 . anmode=aninfo_blind_2,
170 . i1=mat_id,
171 . c1=titr)
172 ENDIF
173c-----------------------------------------------------------------------
174 nuparam = 25
175c-----------------------------------------------------------------------
176 IF(nuparam > maxuparam)THEN
177 CALL ancmsg(msgid=309,
178 . msgtype=msgerror,
179 . anmode=aninfo_blind_2,
180 . i1=mat_id,
181 . c1=titr,
182 . i2=nuparam,
183 . i3=maxuparam)
184 c1 = zero
185 g = zero
186 ELSE
187 c1 = e / three / (one - two*nu)
188 g = e / two / (one + nu)
189 uparam(1) = e
190 uparam(2) = nu
191 uparam(3) = ca
192 uparam(4) = sigm
193 uparam(5) = epsm
194 uparam(6) = epsr1
195 uparam(7) = epsr2
196 uparam(8) = cb
197 uparam(9) = cn
198 uparam(10) = cc
199 uparam(11) = cd
200 uparam(12) = cm
201 uparam(13) = israte_local
202 uparam(14) = fcut
203 uparam(15) = fisokin
204 uparam(16) = g
205 uparam(17) = two*g
206 uparam(18) = three*g
207 uparam(19) = c1
208 uparam(20) = e/(one - nu*nu)
209 uparam(21) = nu*uparam(20)
210 uparam(22) = epsm
211 uparam(23) = eps0
212 uparam(24) = ce
213 uparam(25) = ck
214 ENDIF
215c-----------------------------------------------------------------------
216 parmat(1) = c1
217 parmat(2) = e
218 parmat(3) = nu
219 parmat(4) = israte_local
220 parmat(5) = fcut
221c------------------------------------
222C Formulation for solid elements time step computation.
223 parmat(16) = 2
224 parmat(17) = two*g/(c1+four_over_3*g) ! == (1-2*nu)/(1-nu)
225c-----------------------------------------------------------------------
226 IF (rhor == zero) rhor = rho0
227 pm(1) = rhor
228 pm(89) = rho0
229c-----------------------------------------------------------------------
230 nuvar = 3
231 nfunc = 0
232 mtag%G_PLA = 1
233 mtag%L_PLA = 1
234c-----------------------------------------------------------------------
235 ! Properties compatibility
236 CALL init_mat_keyword(matparam,"SHELL_ISOTROPIC")
237 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
238c-----------------------------------------------------------------------
239c--------------------------------------------------
240c Starter output
241c--------------------------------------------------
242 WRITE(iout,1000) trim(titr),mat_id,ilaw
243 WRITE(iout,1100)
244 IF (is_encrypted) THEN
245 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
246 ELSE
247 WRITE(iout,1200) rho0
248 WRITE(iout,1300) e,nu
249 WRITE(iout,1400) ca,cb,cn,fisokin,sigm
250 WRITE(iout,1500) cc,cd,cm,ce,ck
251 WRITE(iout,1600) eps0,fcut
252 WRITE(iout,1700) epsm,epsr1,epsr2
253 IF(eps0==zero) THEN
254 WRITE(iout,2100)
255 ENDIF
256 ENDIF
257c-----------------------------------------------------------------------
258 1000 FORMAT(/
259 & 5x,a,/,
260 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . .=',i10/,
261 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . .=',i10/)
262 1100 FORMAT
263 &(5x,'MATERIAL : ZHAO CONSTITUTIVE LAW',/,
264 & 5x,'--------------------------------',/)
265 1200 FORMAT(
266 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . .=',1pg20.13/)
267 1300 FORMAT(
268 & 5x,'YOUNG''S MODULUS . . . . . . . . . . . . . .=',1pg20.13/,
269 & 5x,'POISSON''S RATIO . . . . . . . . . . . . . .=',1pg20.13/)
270 1400 FORMAT(
271 & 5x,'PLASTICITY YIELD STRESS A . . . . . . . . . =',1pg20.13/,
272 & 5x,'PLASTICITY HARDENING PARAMETER B . . . . . =',1pg20.13/,
273 & 5x,'PLASTICITY HARDENING EXPONENT N . . . . . . =',1pg20.13/,
274 & 5x,'ISO-KINEMATIC HARDENING FACTOR CHARD . . . =',1pg20.13/,
275 & 5x,'PLASTICITY MAXIMUM STRESS SIGMA_MAX . . . . =',1pg20.13/)
276 1500 FORMAT(
277 & 5x,'RELATIVE STRAIN-RATE COEFFICIENT C . . . . =',1pg20.13/,
278 & 5x,'STRAIN-RATE PLASTICITY FACTOR D . . . . . . =',1pg20.13/,
279 & 5x,'RELATIVE STRAIN-RATE EXPONENT N . . . . . . =',1pg20.13/,
280 & 5x,'STRAIN-RATE COEFFICIENT E1 . . . . . . . . =',1pg20.13/,
281 & 5x,'STRAIN-RATE EXPONENT K . . . . . . . . . . =',1pg20.13/)
282 1600 FORMAT(
283 & 5x,'REFERENCE STRAIN-RATE EPS_RATE_0 . . . . . =',1pg20.13/,
284 & 5x,'CUTOFF FREQUENCY FCUT . . . . . . . . . . . =',1pg20.13/)
285 1700 FORMAT(
286 & 5x,'FAILURE PLASTIC STRAIN EPS_MAX . . . . . . =',1pg20.13/
287 & 5x,'TENSILE FAILURE STRAIN 1 EPS_T1 . . . . . . =',1pg20.13/
288 & 5x,'TENSILE FAILURE STRAIN 2 EPS_T2 . . . . . . =',1pg20.13/)
289 2100 FORMAT(1x,'EPS0 SHOULD BE > 0. IF CC /= 0.')
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
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