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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat120 (mtag, uparam, maxuparam, maxtabl, nuparam, nuvar, nvartmp, numtabl, itable, parmat, matparam, pm, mat_id, titr, israte, unitab, lsubmodel)

Function/Subroutine Documentation

◆ hm_read_mat120()

subroutine hm_read_mat120 ( type(mlaw_tag_), intent(inout) mtag,
dimension(maxuparam), intent(inout) uparam,
integer, intent(in) maxuparam,
integer, intent(in) maxtabl,
integer, intent(inout) nuparam,
integer, intent(inout) nuvar,
integer, intent(inout) nvartmp,
integer, intent(inout) numtabl,
integer, dimension(maxtabl), intent(inout) itable,
dimension(100), intent(inout) parmat,
type(matparam_struct_), intent(inout) matparam,
dimension(npropm), intent(inout) pm,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
integer israte,
type (unit_type_), intent(in) unitab,
type(submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 38 of file hm_read_mat120.F.

42C-----------------------------------------------
43C ROUTINE DESCRIPTION :
44C ===================
45C READ MAT LAW120 WITH HM READER - toughened adhesive polymere joint material
46C-----------------------------------------------
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C-----------------------------------------------
52C IPM MATERIAL ARRAY(INTEGER)
53C PM MATERIAL ARRAY(REAL)
54C UNITAB UNITS ARRAY
55C ID MATERIAL ID(INTEGER)
56C TITR MATERIAL TITLE
57C LSUBMODEL SUBMODEL STRUCTURE
58C-----------------------------------------------
59C M o d u l e s
60C-----------------------------------------------
61 USE unitab_mod
62 USE elbuftag_mod
63 USE message_mod
64 USE submodel_mod
65 USE matparam_def_mod
67C-----------------------------------------------
68C I m p l i c i t T y p e s
69C-----------------------------------------------
70#include "implicit_f.inc"
71C-----------------------------------------------
72C C o m m o n B l o c k s
73C-----------------------------------------------
74#include "param_c.inc"
75#include "units_c.inc"
76C-----------------------------------------------
77C D u m m y A r g u m e n t s
78C-----------------------------------------------
79 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
80 INTEGER ,INTENT(IN ) :: MAXUPARAM,MAXTABL,MAT_ID
81 INTEGER ,INTENT(INOUT) :: NUMTABL,NUPARAM,NUVAR,NVARTMP
82 INTEGER ,DIMENSION(MAXTABL) ,INTENT(INOUT) :: ITABLE
83 my_real ,INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
86 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
87 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
88C-----------------------------------------------
89C L o c a l V a r i a b l e s
90C-----------------------------------------------
91 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
92 INTEGER :: ILAW,YTAB_ID,ISRATE,IFORM,ITRX,IDAM
93 my_real :: rho0,rhor,e,nu,y0,q,b,h,g,bulk,c11,c12,epspmin,epspmax,ssp,
94 . fcut,a1f,a2f,a1h,a2h,as,cc,d1c,d2c,d1f,d2f,d_trx,d_jc,exp_n,
95 . xscale,yscale,yscale_unit,unit_l,xscale_unit,thick
96C=======================================================================
97 ilaw = 120
98 is_encrypted = .false.
99 is_available = .false.
100c
101 CALL hm_option_is_encrypted(is_encrypted)
102c----------------
103c Read input cards
104c----------------
105card1
106 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
108card2 Elasticity parameters and formulation flags
109 CALL hm_get_floatv('MAT_E' ,e ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
111 CALL hm_get_intv ('MAT_IFORM' ,iform ,is_available, lsubmodel)
112 CALL hm_get_intv ('MAT_ITRX' ,itrx ,is_available, lsubmodel)
113 CALL hm_get_intv ('MAT_IDAM' ,idam ,is_available, lsubmodel)
114 CALL hm_get_floatv('MAT_THICK' ,thick ,is_available, lsubmodel, unitab)
115card3 yield hardening function table
116 CALL hm_get_intv ('MAT_TAB_ID',ytab_id ,is_available,lsubmodel)
117 CALL hm_get_floatv('MAT_Xscale',xscale ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv('MAT_Yscale',yscale ,is_available, lsubmodel, unitab)
119card4 hardening function parameters
120 CALL hm_get_floatv('MAT_TAU' ,y0 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('MAT_Q' ,q ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv('MAT_B' ,b ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_H' ,h ,is_available, lsubmodel, unitab)
124card5 yield and plastic flow parameters
125 CALL hm_get_floatv('MAT_AF1' ,a1f ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv('MAT_AF2' ,a2f ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv('MAT_AH1' ,a1h ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_AH2' ,a2h ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv('MAT_AS' ,as ,is_available, lsubmodel, unitab)
130card6 Johnson-Cook strain rate factor on yield
131 CALL hm_get_floatv('MAT_CC' ,cc ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv('MAT_GAM0' ,epspmin ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv('MAT_GAMF' ,epspmax ,is_available, lsubmodel, unitab)
134card7 Damage model parameters
135 CALL hm_get_floatv('MAT_D1C' ,d1c ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv('MAT_D2C' ,d2c ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv('MAT_D1F' ,d1f ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv('MAT_D2F' ,d2f ,is_available, lsubmodel, unitab)
139card8 Johnson-Cook strain rate dependency on damage
140 CALL hm_get_floatv('D_TRX' ,d_trx ,is_available, lsubmodel, unitab)
141 CALL hm_get_floatv('D_JC' ,d_jc ,is_available, lsubmodel, unitab)
142 CALL hm_get_floatv('MAT_EXP' ,exp_n ,is_available, lsubmodel, unitab)
143c
144c-------------------------------------------------------------------------------
145 g = e * half / (one + nu)
146 bulk = e * third / (one - two*nu)
147 c11 = e * (one-nu) /((one + nu)*(one - two*nu))
148 c12 = c11 * nu/(one - nu)
149 ssp = sqrt((bulk + four_over_3*g) / rho0) ! sound speed estimation
150c-------------------
151c Default values
152c-------------------
153 israte = 0
154 fcut = zero
155 IF (cc > zero) THEN
156 fcut = 1000.0d0 * unitab%FAC_T_WORK
157 END IF
158 IF (exp_n == zero) exp_n = one
159 IF (iform == 0) iform = 1
160 IF (itrx == 0) itrx = 2
161 IF (idam == 0) idam = 2
162 IF (xscale == zero) THEN
163 CALL hm_get_floatv_dim('MAT_Xscale' ,xscale_unit ,is_available, lsubmodel, unitab)
164 xscale = one * xscale_unit
165 ENDIF
166 IF (yscale == zero) THEN
167 CALL hm_get_floatv_dim('MAT_Yscale' ,yscale_unit ,is_available, lsubmodel, unitab)
168 yscale = one * yscale_unit
169 ENDIF
170 IF (thick == zero) THEN
171 CALL hm_get_floatv_dim('MAT_THICK' ,unit_l ,is_available, lsubmodel, unitab)
172 thick = one * unit_l
173 ENDIF
174c-----------------
175c Johnson/Cookss fracture strain parameters check
176 d1f = max(d1c, d1f)
177 d2f = max(d2c, d2f)
178c-----------------
179 numtabl = 1
180 nuvar = 5
181 nvartmp = 1
182 nuparam = 34
183 IF (ytab_id > 0) THEN ! analytical yld parameters are not used with tabulated input
184 y0 = zero
185 q = zero
186 b = zero
187 h = zero
188 epspmin = zero
189 epspmax = zero
190 ENDIF
191c-------------------
192 uparam(1) = e
193 uparam(2) = nu
194 uparam(3) = g
195 uparam(4) = bulk
196 uparam(5) = y0
197 uparam(6) = q
198 uparam(7) = b
199 uparam(8) = h
200 uparam(9) = a1f
201 uparam(10) = a2f
202 uparam(11) = a1h
203 uparam(12) = a2h
204 uparam(13) = as
205c Johnson/Cook failure parameters
206 uparam(14) = d1c
207 uparam(15) = d2c
208 uparam(16) = d1f
209 uparam(17) = d2f
210 uparam(18) = d_trx
211 uparam(19) = d_jc
212 uparam(20) = exp_n
213c Parameters: Johnson & Cook rate-dependency
214 uparam(21) = cc
215 uparam(22) = epspmin
216 uparam(23) = epspmax
217 uparam(24) = fcut
218c
219 uparam(25) = iform
220 uparam(26) = itrx
221 uparam(27) = idam
222c
223 uparam(28) = ssp
224 uparam(29) = ytab_id
225 uparam(30) = one / xscale
226 uparam(31) = yscale
227 uparam(32) = c11
228 uparam(33) = c12
229c
230 uparam(34) = thick ! For Connect Element (Type43)
231 itable(1) = ytab_id ! Yield function table = f(epsp,epsdot,temp)
232c------------------
233 pm(1) = rhor
234 pm(89) = rho0
235 pm(27) = ssp
236 pm(100)= bulk
237c--------------------------------
238 parmat(1) = bulk
239 parmat(2) = e
240 parmat(3) = nu
241 parmat(4) = israte
242 parmat(5) = fcut
243C Formulation for solid elements time step computation.
244 parmat(16) = 2
245 parmat(17) = two*g/(bulk+four_over_3*g) ! == (1-2*nu)/(1-nu)
246c-----------------
247c Element buffer variable allocation
248c-----------------
249 mtag%G_PLA = 1
250 mtag%L_PLA = 1
251 mtag%L_EPSD = 1
252 mtag%G_EPSD = 1
253 mtag%L_DMG = 1
254 mtag%G_DMG = 1
255 mtag%L_DMGSCL = 1
256
257 CALL init_mat_keyword(matparam ,"COMPRESSIBLE")
258 CALL init_mat_keyword(matparam ,"INCREMENTAL" )
259 CALL init_mat_keyword(matparam ,"LARGE_STRAIN")
260 CALL init_mat_keyword(matparam ,"HOOK")
261 ! Properties compatibility
262 CALL init_mat_keyword(matparam,"SOLID_ALL")
263c-----------------
264 WRITE(iout,1000) trim(titr),mat_id,ilaw
265 WRITE(iout,1100)
266
267 IF (is_encrypted) THEN
268 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
269 ELSE
270 WRITE(iout,1200) rho0,e,nu,thick,iform
271 IF (ytab_id > 0) THEN
272 WRITE(iout,1300) ytab_id,xscale,yscale
273 ELSE
274 WRITE(iout,1400) q,b,h,y0,cc,epspmin,epspmax
275 END IF
276 WRITE(iout,1500) a1f,a2f,a1h,a2h,as,d1c,d2c,d1f,d2f,
277 . d_trx,d_jc,exp_n,itrx,idam
278 ENDIF
279c-----------------------------------------------------------------------
280 1000 FORMAT(/
281 & 5x,a,/,
282 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . =',i10/,
283 & 5x,'MATERIAL LAW . . . . . . . . . . . . . =',i10/)
284 1100 FORMAT
285 &(5x,'MATERIAL MODEL : TOUGHENED ADHESIVE POLYMER',/,
286 & 5x,'-------------------------------------------',/)
287 1200 FORMAT(
288 & 5x,'INITIAL DENSITY . . . . . . . . . . . .=',1pg20.13/
289 & 5x,'YOUNG MODULUS . . . . . . . . . . . . .=',1pg20.13/
290 & 5x,'POISSON RATIO . . . . . . . . . . . . .=',1pg20.13/
291 & 5x,'REFERENCE THICKNESS . . . . . . . . . .=',1pg20.13/
292 & 5x,'YIELD CRITERION FLAG . . . . . . . . .=',i3)
293 1300 FORMAT(
294 & 5x,'YIELD FUNCTION TABLE IDENTIFIER . . . .=',i10/
295 & 5x,'SCALE FACTOR FOR STRAIN RATE. . . . . .=',1pg20.13/
296 & 5x,'SCALE FACTOR FOR YLD FUNCTION . . . . .=',1pg20.13)
297 1400 FORMAT(
298 & 5x,'NONLINEAR HARDENING PARAMETER . . . . .=',1pg20.13/
299 & 5x,'EXPONENTIAL DECAY COEFFICIENT . . . . .=',1pg20.13/
300 & 5x,'LINEAR HARDENING PARAMETER. . . . . . .=',1pg20.13/
301 & 5x,'INITIAL YIELD STRESS. . . . . . . . . .=',1pg20.13/
302 & 5x,'STRAIN RATE COEFFICIENT . . . . . . . .=',1pg20.13/
303 & 5x,'STATIC STRAIN RATE. . . . . . . . . . .=',1pg20.13/
304 & 5x,'MAXIMAL STRAIN RATE . . . . . . . . . .=',1pg20.13)
305 1500 FORMAT(
306 & 5x,'YIELD FUNCTION PARAMETER A1F. . . . . .=',1pg20.13/
307 & 5x,'YIELD FUNCTION PARAMETER A2F. . . . . .=',1pg20.13/
308 & 5x,'YIELD FUNCTION PARAMETER A1H. . . . . .=',1pg20.13/
309 & 5x,'YIELD FUNCTION PARAMETER A2H. . . . . .=',1pg20.13/
310 & 5x,'PLASTIC FLOW PARAMETER AS . . . . . .=',1pg20.13/
311 & 5x,'FAILURE MODEL COEFFICIENT D1C . . . . .=',1pg20.13/
312 & 5x,'FAILURE MODEL COEFFICIENT D2C . . . . .=',1pg20.13/
313 & 5x,'FAILURE MODEL COEFFICIENT D1F . . . . .=',1pg20.13/
314 & 5x,'FAILURE MODEL COEFFICIENT D2F . . . . .=',1pg20.13/
315 & 5x,'DAMAGE COEFFICIENT D_TRX. . . . . . . .=',1pg20.13/
316 & 5x,'DAMAGE COEFFICIENT D_JC . . . . . . . .=',1pg20.13/
317 & 5x,'EXPONENT COEFFICIENT . . . . . . . . .=',1pg20.13/
318 & 5x,'ITRX: FAILURE DEPENDENCY ON TRIAXIALITY=',i3/
319 & 5x,'STRAIN RATE DEFINITION FOR DAMAGE . . .=',i3/)
320c-----------
321 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, 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