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

Function/Subroutine Documentation

◆ hm_read_mat116()

subroutine hm_read_mat116 ( type(mlaw_tag_), intent(inout) mtag,
dimension(maxuparam), intent(inout) uparam,
integer, intent(inout) maxuparam,
integer, intent(inout) nuparam,
dimension(npropm), intent(inout) pm,
dimension(100), intent(inout) parmat,
integer, intent(inout) nuvar,
integer, dimension(maxfunc), intent(inout) ifunc,
integer, intent(inout) nfunc,
integer, intent(inout) maxfunc,
type (unit_type_), intent(in) unitab,
integer, intent(in) mat_id,
character(len=nchartitle), intent(in) titr,
type(submodel_data), dimension(*), intent(in) lsubmodel,
type(matparam_struct_), intent(inout) matparam )

Definition at line 39 of file hm_read_mat116.F.

42C-----------------------------------------------
43C ROUTINE DESCRIPTION :
44C ===================
45C READ MAT LAW116 WITH HM READER
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(INOUT) :: IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,
81 . NUPARAM,NUVAR
82 INTEGER, INTENT(IN) :: MAT_ID
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 INTEGER :: NRATE,ILAW,IMASS,IDEL,IORDER1,IORDER2,
92 . IFAIL1,IFAIL2,ICRIT
93 my_real :: rho0,e,g,thick,gc1_ini,gc2_ini,gc1_inf,gc2_inf,ratg1,ratg2,
94 . fg1,fg2,siga1,siga2,sigb1,sigb2,rate1,rate2,unit_l,alpha
95 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96C=======================================================================
97 ilaw = 116
98!
99 is_encrypted = .false.
100 is_available = .false.
101!
102 CALL hm_option_is_encrypted(is_encrypted)
103Card1
104 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv('mat_e' ,E ,IS_AVAILABLE, LSUBMODEL, UNITAB)
106 CALL HM_GET_FLOATV('mat_g' ,G ,IS_AVAILABLE, LSUBMODEL, UNITAB)
107 CALL HM_GET_FLOATV('mat_thick' ,THICK ,IS_AVAILABLE, LSUBMODEL, UNITAB)
108 CALL HM_GET_INTV ('mat_imass' ,IMASS ,IS_AVAILABLE, LSUBMODEL)
109 CALL HM_GET_INTV ('mat_idel' ,IDEL ,IS_AVAILABLE, LSUBMODEL)
110 CALL HM_GET_INTV ('mat_icrit' ,ICRIT ,IS_AVAILABLE, LSUBMODEL)
111Card2
112 CALL HM_GET_FLOATV('mat_gc1_ini' ,GC1_INI ,IS_AVAILABLE, LSUBMODEL, UNITAB)
113 CALL HM_GET_FLOATV('mat_gc1_inf' ,GC1_INF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
114 CALL HM_GET_FLOATV('mat_sratg1' ,RATG1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
115 CALL HM_GET_FLOATV('mat_fg1' ,FG1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
116Card3
117 CALL HM_GET_FLOATV('mat_gc2_ini' ,GC2_INI ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 CALL HM_GET_FLOATV('mat_gc2_inf' ,GC2_INF ,IS_AVAILABLE, LSUBMODEL, UNITAB)
119 CALL HM_GET_FLOATV('mat_sratg2' ,RATG2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
120 CALL HM_GET_FLOATV('mat_fg2' ,FG2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
121Card4
122 CALL HM_GET_FLOATV('mat_siga1' ,SIGA1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
123 CALL HM_GET_FLOATV('mat_sigb1' ,SIGB1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
124 CALL HM_GET_FLOATV('mat_srate1' ,RATE1 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
125 CALL HM_GET_INTV ('mat_order1' ,IORDER1 ,IS_AVAILABLE, LSUBMODEL)
126 CALL HM_GET_INTV ('mat_fail1' ,IFAIL1 ,IS_AVAILABLE, LSUBMODEL)
127Card5
128 CALL HM_GET_FLOATV('mat_siga2' ,SIGA2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
129 CALL HM_GET_FLOATV('mat_sigb2' ,SIGB2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
130 CALL HM_GET_FLOATV('mat_srate2' ,RATE2 ,IS_AVAILABLE, LSUBMODEL, UNITAB)
131 CALL HM_GET_INTV ('mat_order2' ,IORDER2 ,IS_AVAILABLE, LSUBMODEL)
132 CALL HM_GET_INTV ('mat_fail2' ,IFAIL2 ,IS_AVAILABLE, LSUBMODEL)
133c---------------------------------------------------------------------------------
134 PM(1) = RHO0 ! RHOR
135 PM(89)= RHO0
136c-------------------
137c Default Values
138c-------------------
139 IF (G == ZERO) G = E
140 IF (IMASS == 0) IMASS = 1
141 IF (IDEL == 0) IDEL = 1
142 IF (IORDER1 == 0) IORDER1 = 1
143 IF (IORDER2 == 0) IORDER2 = 1
144 IF (IFAIL1 == 0) IFAIL1 = 1
145 IF (IFAIL2 == 0) IFAIL2 = 1
146 IF (ICRIT == 0) ICRIT = 1
147.or. IF (FG1 == ZERO GC1_INI == ZERO) IFAIL1 = 0
148.or. IF (FG2 == ZERO GC2_INI == ZERO) IFAIL2 = 0
149 IF (THICK == ZERO) THEN
150 CALL HM_GET_FLOATV_DIM('mat_thick' ,UNIT_L ,IS_AVAILABLE, LSUBMODEL, UNITAB)
151 THICK = ONE * UNIT_L
152 ENDIF
153 ALPHA = 0.005 ! strain rate filtering coefficient (exp average)
154c-------------------
155c Check parameter values
156c-------------------
157 IF (IFAIL1 == 1) THEN
158 IF (FG1 >= ONE - HALF*SIGA1**2 / (E * GC1_INI)) THEN
159 CALL ANCMSG(MSGID=1825,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,
160 . I1 = MAT_ID,
161 . C1 = TITR,
162 . C2 = 'fg1',
163 . R1 = HALF*SIGA1**2 / (E * GC1_INI) )
164 END IF
165 ELSE IF (IFAIL1 == 2) THEN
166 IF (FG1 >= ONE) THEN
167 CALL ANCMSG(MSGID=1825,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,
168 . I1 = MAT_ID,
169 . C1 = TITR,
170 . C2 = 'fg1',
171 . R1 = ONE)
172 END IF
173 END IF
174c
175 IF (IFAIL2 == 1) THEN
176 IF (FG2 >= ONE - HALF*SIGA2**2 / (E * GC2_INI)) THEN
177 CALL ANCMSG(MSGID=1825,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,
178 . I1 = MAT_ID,
179 . C1 = TITR,
180 . C2 = 'fg2',
181 . R1 = HALF*SIGA2**2 / (E * GC2_INI) )
182 END IF
183 ELSE IF (IFAIL2 == 2) THEN
184 IF (FG2 >= ONE) THEN
185 CALL ANCMSG(MSGID=1825,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,
186 . I1 = MAT_ID,
187 . C1 = TITR,
188 . C2 = 'fg2',
189 . R1 = ONE)
190 END IF
191 END IF
192c-------------------
193 NFUNC = 0
194 NUPARAM = 25
195 NUVAR = 12
196c-------------------
197 UPARAM(1) = E / THICK
198 UPARAM(2) = G / THICK
199 UPARAM(3) = IMASS
200 UPARAM(4) = IDEL
201 UPARAM(5) = GC1_INI
202 UPARAM(6) = GC1_INF
203 UPARAM(7) = RATG1
204 UPARAM(8) = FG1
205 UPARAM(9) = GC2_INI
206 UPARAM(10) = GC2_INF
207 UPARAM(11) = RATG2
208 UPARAM(12) = FG2
209 UPARAM(13) = SIGA1
210 UPARAM(14) = SIGB1
211 UPARAM(15) = RATE1
212 UPARAM(16) = IORDER1
213 UPARAM(17) = IFAIL1
214 UPARAM(18) = SIGA2
215 UPARAM(19) = SIGB2
216 UPARAM(20) = RATE2
217 UPARAM(21) = IORDER2
218 UPARAM(22) = IFAIL2
219 UPARAM(23) = ICRIT
220 UPARAM(24) = THICK
221 UPARAM(25) = ALPHA
222C----------------
223 PARMAT(1) = MAX(E,G) / THREE
224 PARMAT(2) = MAX(E,G)
225 PARMAT(17) = ONE ! (ONE - TWO*NU)/(ONE - NU), NU=0
226c
227 MTAG%G_PLA = 2
228 MTAG%G_EPSD = 1
229 MTAG%L_PLA = 2
230 MTAG%L_EPSD = 1
231 MTAG%L_EPE = 3
232 MTAG%L_DMG = 1
233 MTAG%G_DMG = 1
234c
235 ! MATPARAM keywords
236 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
237c
238 ! Properties compatibility
239 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_COHESIVE")
240c-------------------
241c STARTER Output
242c-------------------
243 WRITE(IOUT,1100) TRIM(TITR),MAT_ID,ILAW
244 WRITE(IOUT,1000)
245 IF (IS_ENCRYPTED) THEN
246 WRITE(IOUT,'(5x,a,//)')'CONFIDENTIAL DATA'
247 ELSE
248 WRITE(iout,1200) rho0,e,g,thick,imass,idel,icrit,
249 . gc1_ini,gc1_inf,ratg1,fg1,
250 . gc2_ini,gc2_inf,ratg2,fg2,
251 . siga1,sigb1,rate1,iorder1,ifail1,
252 . siga2,sigb2,rate2,iorder2,ifail2
253 ENDIF
254c-----------
255 RETURN
256c-----------
257 1000 FORMAT(
258 & 10x,' MIXED MODE COHESIVE LAW 116 ',/,
259 & 10x,' --------------------------- ',/)
260 1100 FORMAT(/
261 & 5x,a,/,
262 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . . . .=',i10/,
263 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . . . .=',i10/)
264 1200 FORMAT(
265 & 5x,'MATERIAL DENSITY. . . . . . . . . . . . . . .=',1pg20.13/,
266 & 5x,'YOUNG MODULUS PER THICKNESS UNIT . . . . =',1pg20.13/,
267 & 5x,'SHEAR MODULUS PER THICKNESS UNIT . . . . =',1pg20.13/,
268 & 5x,'COHESIVE ELEMENT THICKNESS . . . . . . . =',1pg20.13/,
269 & 5x,'MASS CALCULATION FLAG . . . . . . . . . . . .=',i10/,
270 & 5x,' = 0 => USING VOLUME DENSITY '/,
271 & 5x,' = 1 => USING SURFACE DENSITY '/,
272 & 5x,'NB OF FAILING GAUSS POINTS TO DELETE ELEMENT =',i10/,
273 & 5x,'ICRIT : YIELD AND DAMAGE INITIATION FLAG . . =',i10/,
274 & 5x,'INITIAL ENERGY RELEASE RATE IN MOD I . . . . =',1pg20.13/,
275 & 5x,'FINAL ENERGY RELEASE RATE IN MOD I . . . . =',1pg20.13/,
276 & 5x,'REFERENCE STRAIN RATE FOR GC IN MOD I. . . . =',1pg20.13/,
277 & 5x,'SHAPE FACTOR FOR GC AT FAIL IN MOD I . . . . =',1pg20.13/,
278 & 5x,'INITIAL ENERGY RELEASE RATE IN MOD II . . . =',1pg20.13/,
279 & 5x,'FINAL ENERGY RELEASE RATE IN MOD II . . . . =',1pg20.13/,
280 & 5x,'REFERENCE STRAIN RATE FOR GC IN MOD II . . . =',1pg20.13/,
281 & 5x,'SHAPE FACTOR FOR GC AT FAIL IN MOD II . . . =',1pg20.13/,
282 & 5x,'STATIC YIELD STRESS TERM IN MODE I . . . . =',1pg20.13/,
283 & 5x,'DYNAMIC YIELD STRESS TERM IN MODE I . . . . =',1pg20.13/,
284 & 5x,'REFERENCE STRAIN RATE FOR YLD IN MODE I. . . =',1pg20.13/,
285 & 5x,'ORDER OF YIELD FUNCTION IN MODE I . . . . . =',i10/,
286 & 5x,'FAILURE CRITERION FLAG IN MODE I . . . . . =',i10/,
287 & 5x,'STATIC YIELD STRESS TERM IN MODE II . . . . =',1pg20.13/,
288 & 5x,'DYNAMIC YIELD STRESS TERM IN MODE II . . . . =',1pg20.13/,
289 & 5x,'REFERENCE STRAIN RATE FOR YLD IN MODE II . . =',1pg20.13/,
290 & 5x,'ORDER OF YIELD FUNCTION IN MODE II . . . . . =',i10/,
291 & 5x,'FAILURE CRITERION FLAG IN MODE II . . . . . =',i10/)
292c--------
#define my_real
Definition cppsort.cpp:32
#define alpha
Definition eval.h:35
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_option_is_encrypted(is_encrypted)
integer, parameter nchartitle