OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat27.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_mat27 (mtag, parmat, unitab, pm, lsubmodel, israte, mat_id, titr, matparam)

Function/Subroutine Documentation

◆ hm_read_mat27()

subroutine hm_read_mat27 ( type(mlaw_tag_), intent(inout) mtag,
intent(inout) parmat,
type (unit_type_), intent(in) unitab,
intent(inout) pm,
type(submodel_data), dimension(*), intent(in) lsubmodel,
integer, intent(inout) israte,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
type(matparam_struct_), intent(inout) matparam )

Definition at line 38 of file hm_read_mat27.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 matparam_def_mod
50C-----------------------------------------------
51C D e s c r i p t i o n
52C-----------------------------------------------
53C
54C DUMMY ARGUMENTS DESCRIPTION:
55C ===================
56C
57C NAME DESCRIPTION
58C
59C IPM MATERIAL ARRAY(INTEGER)
60C PM MATERIAL ARRAY(REAL)
61C UNITAB UNITS ARRAY
62C ID MATERIAL ID(INTEGER)
63C TITR MATERIAL TITLE
64C LSUBMODEL SUBMODEL STRUCTURE
65C
66C-----------------------------------------------
67C I m p l i c i t T y p e s
68C-----------------------------------------------
69#include "implicit_f.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "units_c.inc"
74#include "param_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
79 INTEGER, INTENT(IN) :: MAT_ID
80 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
81 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
82 INTEGER, INTENT(INOUT) :: ISRATE
83 my_real, DIMENSION(100),INTENT(INOUT) :: parmat
84 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
85 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
86 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER :: ILAW,ICC
91 my_real :: rho0,rhor,young,nu,ca,cb,cn,mu,sigm,cc,eps0,g,c1,
92 . e1mn2,en1n2,sdsp,epst1,epsm1,epst2,epsm2,
93 . dmax1,dmax2,epsf1,epsf2,fcut
94 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
95C=======================================================================
96 is_encrypted = .false.
97 is_available = .false.
98 ilaw = 27
99c--------------------------------------------------
100c
101 CALL hm_option_is_encrypted(is_encrypted)
102c
103c-----------------------------------------------
104 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
106c--------------------------------------------------
107 CALL hm_get_floatv('MAT_E' ,young ,is_available, lsubmodel, unitab)
108 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
109c
110 CALL hm_get_floatv('MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
111 CALL hm_get_floatv('MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv('MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
114c
115 CALL hm_get_floatv('MAT_SRC' ,cc ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv('MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
117 CALL hm_get_intv ('STRFLAG' ,icc ,is_available,lsubmodel)
118 CALL hm_get_intv ('Fsmooth' ,israte ,is_available,lsubmodel)
119 CALL hm_get_floatv('Fcut' ,fcut ,is_available, lsubmodel, unitab)
120c
121 CALL hm_get_floatv('MAT_EPST1' ,epst1 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('MAT_EPSM1' ,epsm1 ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_DAMAGE' ,dmax1 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_EPSF1' ,epsf1 ,is_available, lsubmodel, unitab)
125c
126 CALL hm_get_floatv('MAT_EPST2' ,epst2 ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv('MAT_EPSM2' ,epsm2 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_DAMAGE2',dmax2 ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv('MAT_EPSF2' ,epsf2 ,is_available, lsubmodel, unitab)
130c-----------------
131 IF (israte == 0 .AND. fcut /= zero) israte = 1
132 IF (fcut == zero) fcut = ep20
133 IF (nu >= half) nu = zep499
134 IF (icc == 0) icc = 1
135 IF (ca == zero) ca = ep20
136 IF (cn == zero) cn = one
137 IF (sigm == zero) sigm = ep20
138 IF (cc == zero) eps0 = one
139 IF (epst1 == zero) epst1 = ep20
140 IF (epsm1 == zero) epsm1 = onep1*ep20
141 IF (dmax1 == zero) dmax1 = zep999
142 IF (epst2 == zero) epst2 = ep20
143 IF (epsm2 == zero) epsm2 = onep1*ep20
144 IF (dmax2 == zero) dmax2 = zep999
145 IF (epsf1 == zero) epsf1 = onep2*ep20
146 IF (epsf2 == zero) epsf2 = onep2*ep20
147c-----------------
148 g = half*young/(one + nu)
149 c1 = young/(three*(one - two*nu))
150 e1mn2 = young/(one-nu**2)
151 en1n2 = nu*e1mn2
152 sdsp = sqrt(young/max(rho0,em20))
153 mu = pm(17)
154 IF (mu == zero) mu = fiveem2
155c-----------------
156 parmat(1) = c1
157 parmat(2) = young
158 parmat(3) = nu
159 parmat(4) = israte
160 parmat(5) = fcut
161c-----------------
162 pm(1) = rhor
163 pm(89) = rho0
164 pm(100)= c1
165c-----------------
166 pm(9) = fcut*two*pi
167 pm(17) = mu
168 pm(20) = young
169 pm(21) = nu
170 pm(22) = g
171 pm(23) = zero ! E0
172 pm(24) = e1mn2
173 pm(25) = en1n2
174 pm(26) = five_over_6
175 pm(27) = sdsp
176 pm(28) = one/young
177 pm(29) = -nu*pm(28)
178 pm(30) = one/g
179 pm(31) = zero ! C0
180 pm(32) = c1
181 pm(38) = ca
182 pm(39) = cb
183 pm(40) = cn
184 pm(41) = ep20 ! EPSM
185 pm(42) = sigm
186 pm(43) = cc
187 pm(44) = eps0
188 pm(49) = icc
189 pm(52) = onep414*mu*pm(1)*sdsp
190 pm(60) = epst1
191 pm(61) = epst2
192 pm(62) = epsm1
193 pm(63) = epsm2
194 pm(64) = dmax1
195 pm(65) = dmax2
196 pm(66) = epsf1
197 pm(67) = epsf2
198c-----------------
199c Element buffer : internal variable allocation
200c-----------------
201 mtag%G_GAMA = 6
202 mtag%G_PLA = 1
203c
204 mtag%L_GAMA = 6
205 mtag%L_PLA = 1
206 mtag%L_DAM = 2
207 mtag%L_CRAK = 2
208 mtag%L_STRA = 6
209c
210 ! MATPARAM keywords
211 CALL init_mat_keyword(matparam,"ELASTO_PLASTIC")
212c
213 ! Properties compatibility
214 CALL init_mat_keyword(matparam,"SHELL_ISOTROPIC")
215c
216c-----------------------
217c Output
218c-----------------------
219 WRITE(iout,1000) trim(titr),mat_id,27
220 WRITE(iout,1100)
221 IF (is_encrypted) THEN
222 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
223 ELSE
224 WRITE(iout,1200) rho0
225 WRITE(iout,1300) young,nu,g
226 WRITE(iout,1400) ca,cb,cn,sigm
227 WRITE(iout,1600) cc,eps0,icc,israte,fcut
228 WRITE(iout,1700) epst1,epsm1,dmax1,epsf1
229 WRITE(iout,1800) epst2,epsm2,dmax2,epsf2
230 ENDIF
231c-----------------
232c Error handling
233c-----------------
234 IF (cn > one) THEN
235 CALL ancmsg(msgid=213,
236 . msgtype=msgerror,
237 . anmode=aninfo,
238 . i1=27,
239 . i2=mat_id,
240 . c1=titr)
241
242 ENDIF
243 IF (eps0 <= zero) THEN
244 CALL ancmsg(msgid=207,
245 . msgtype=msgerror,
246 . anmode=aninfo,
247 . i1=mat_id,
248 . c1=titr)
249 ENDIF
250 IF (epsm1 <= epst1) THEN
251 CALL ancmsg(msgid=208,
252 . msgtype=msgerror,
253 . anmode=aninfo,
254 . i1=mat_id,
255 . c1=titr)
256 ENDIF
257 IF (epsm2 <= epst2) THEN
258 CALL ancmsg(msgid=209,
259 . msgtype=msgerror,
260 . anmode=aninfo,
261 . i1=mat_id,
262 . c1=titr)
263 ENDIF
264 IF (dmax1 >= one .OR. dmax1 < zero) THEN
265 CALL ancmsg(msgid=210,
266 . msgtype=msgerror,
267 . anmode=aninfo,
268 . i1=mat_id,
269 . c1=titr)
270 ENDIF
271 IF (dmax2 >= one .OR. dmax2 < zero) THEN
272 CALL ancmsg(msgid=211,
273 . msgtype=msgerror,
274 . anmode=aninfo,
275 . i1=mat_id,
276 . c1=titr)
277 ENDIF
278c-----------
279 RETURN
280c-----------
281 1000 FORMAT(/
282 & 5x,a,/,
283 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
284 & 5x,'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
285 1100 FORMAT(
286 & 5x,' ELASTIC PLASTIC BRITTLE MATERIAL '/,
287 & 5x,' -------------------------------- '//)
288 1200 FORMAT(
289 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/)
290 1300 FORMAT(
291 & 5x,'YOUNG MODULUS . . . . . . . . . . . .=',1pg20.13/,
292 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/,
293 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13//)
294 1400 FORMAT(
295 & 5x,'YIELD COEFFICIENT CA. . . . . . . . . .=',1pg20.13/,
296 & 5x,'YIELD COEFFICIENT CB. . . . . . . . . .=',1pg20.13/,
297 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
298 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
299 1600 FORMAT(
300 & 5x,'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
301 & 5x,'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
302 & 5x,'FLAG FOR STRAIN RATE ON SIG-MAX . . . .=',i10//,
303 & 5x,'SMOOTH STRAIN RATE OPTION . . . . . . .=',i10/,
304 & 5x,'STRAIN RATE CUTTING FREQUENCY . . . . .=',1pg20.13/)
305 1700 FORMAT(
306 & 5x,'TENSILE FAILURE STRAIN DIR-1. . . . . .=',1pg20.13/,
307 & 5x,'MAXIMUM TENSILE STRAIN DIR-1. . . . . .=',1pg20.13/,
308 & 5x,'MAXIMUM DAMAGE DIR-1. . . . . . . . . .=',1pg20.13/,
309 & 5x,'ELEMENT RUPTURE TENSILE STRAIN DIR-1. .=',1pg20.13/)
310 1800 FORMAT(
311 & 5x,'TENSILE FAILURE STRAIN DIR-2. . . . . .=',1pg20.13/,
312 & 5x,'MAXIMUM TENSILE STRAIN DIR-2. . . . . .=',1pg20.13/,
313 & 5x,'MAXIMUM DAMAGE DIR-2. . . . . . . . . .=',1pg20.13/,
314 & 5x,'ELEMENT RUPTURE TENSILE STRAIN DIR-2. .=',1pg20.13//)
315c-----------
#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 init_mat_keyword(matparam, keyword)
#define max(a, b)
Definition macros.h:21
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