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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_mat68 (uparam, maxuparam, nuparam, israte, imatvis, nuvar, ifunc, maxfunc, nfunc, parmat, unitab, mat_id, titr, mtag, lsubmodel, pm, ipm, matparam)

Function/Subroutine Documentation

◆ hm_read_mat68()

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

Definition at line 38 of file hm_read_mat68.F.

42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C READ MAT LAW68 WITH HM READER
46C
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C
52C PM MATERIAL ARRAY(REAL)
53C UNITAB UNITS ARRAY
54C ID MATERIAL ID(INTEGER)
55C TITR MATERIAL TITLE
56C LSUBMODEL SUBMODEL STRUCTURE
57C
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 "units_c.inc"
75#include "com01_c.inc"
76#include "param_c.inc"
77C-----------------------------------------------
78C D u m m y A r g u m e n t s
79C-----------------------------------------------
80 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
81 my_real, INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
82 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
83 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
84 INTEGER,INTENT(IN) :: MAT_ID
85 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
86 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
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 my_real
92 . e11,e22,e33,g12,g23,g31,emx11,emx22,emx33,emx12,emx23,emx31,
93 . emf11,emf22,emf33,emf12,emf23,emf31,
94 . fac1,fac2,fac3,fac4,fac5,fac6,fac7,fac8,fac9,
95 . fac10,fac11,fac12,fac13,fac14,fac15,fac16,fac17,fac18
96 my_real fac_c,fac_l,fac_t,fac_m,dmin,dmax
97 INTEGER I11,I22,I33,I12,I23,I31,I21,I32,I13,IF1,IF2
98 INTEGER J11,J22,J33,J12,J23,J31,J21,J32,J13
99 my_real :: rho0, rhor, fac_unit
100 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
101C-----------------------------------------------
102C S o u r c e L i n e s
103C-----------------------------------------------
104 ifrwv = max(1,ifrwv)
105
106 is_encrypted = .false.
107 is_available = .false.
108 israte = 0
109 imatvis = 0
110 mtag%G_GAMA = 6
111 mtag%L_SIGL = 6
112 mtag%L_SIGD = 6
113 mtag%L_EPSA = 1 ! hyperelastic energy needed for mullins
114 nuparam=38
115 nfunc=18
116 nuvar=18
117
118 CALL hm_option_is_encrypted(is_encrypted)
119 !line+1
120 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv('Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
122 !line-2
123 CALL hm_get_floatv('MAT_EA' ,e11 ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_EB' ,e22 ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('MAT_EC' ,e33 ,is_available, lsubmodel, unitab)
126 !line-3
127 CALL hm_get_floatv('MAT_GAB' ,g12 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv('MAT_GBC' ,g23 ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv('MAT_GCA' ,g31 ,is_available, lsubmodel, unitab)
130 !line-4
131 CALL hm_get_intv ('FUN_A1' ,i11 ,is_available, lsubmodel)
132 CALL hm_get_intv ('FUN_B1' ,i22 ,is_available, lsubmodel)
133 CALL hm_get_intv ('FUN_A2' ,i33 ,is_available, lsubmodel)
134 CALL hm_get_intv ('Gflag' ,if1 ,is_available, lsubmodel)
135 CALL hm_get_floatv('FScale11' ,fac1 ,is_available, lsubmodel, unitab)
136 CALL hm_get_floatv('FScale22' ,fac2 ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv('FScale33' ,fac3 ,is_available, lsubmodel, unitab)
138 !line-5
139 CALL hm_get_floatv('MAT_EPSR1' ,emx11 ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv('MAT_EPSR2' ,emx22 ,is_available, lsubmodel, unitab)
141 CALL hm_get_floatv('MAT_EPSR3' ,emx33 ,is_available, lsubmodel, unitab)
142 !line-6
143 CALL hm_get_intv ('FUN_A3' ,i12 ,is_available, lsubmodel)
144 CALL hm_get_intv ('FUN_B3' ,i23 ,is_available, lsubmodel)
145 CALL hm_get_intv ('FUN_A4' ,i31 ,is_available, lsubmodel)
146 CALL hm_get_intv ('Vflag' ,if2 ,is_available, lsubmodel)
147 CALL hm_get_floatv('FScale12' ,fac4 ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv('FScale23' ,fac5 ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv('FScale31' ,fac6 ,is_available, lsubmodel, unitab)
150 !line-7
151 CALL hm_get_floatv('MAT_EPSR4' ,emx12 ,is_available, lsubmodel, unitab)
152 CALL hm_get_floatv('MAT_EPSR5' ,emx23 ,is_available, lsubmodel, unitab)
153 CALL hm_get_floatv('MAT_EPSR6' ,emx31 ,is_available, lsubmodel, unitab)
154 !line-8
155 CALL hm_get_intv ('FUN_B4' ,i21 ,is_available, lsubmodel)
156 CALL hm_get_intv ('FUN_B5' ,i32 ,is_available, lsubmodel)
157 CALL hm_get_intv ('FUN_B6' ,i13 ,is_available, lsubmodel)
158 CALL hm_get_floatv('FScale21' ,fac7 ,is_available, lsubmodel, unitab)
159 CALL hm_get_floatv('FScale32' ,fac8 ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv('FScale13' ,fac9 ,is_available, lsubmodel, unitab)
161 !line-9
162 CALL hm_get_intv ('MAT_YFUN11_2' ,j11 ,is_available, lsubmodel)
163 CALL hm_get_intv ('MAT_YFUN22_2' ,j22 ,is_available, lsubmodel)
164 CALL hm_get_intv ('MAT_YFUN33_2' ,j33 ,is_available, lsubmodel)
165 CALL hm_get_floatv('FScale11_2' ,fac10 ,is_available, lsubmodel, unitab)
166 CALL hm_get_floatv('FScale22_2' ,fac11 ,is_available, lsubmodel, unitab)
167 CALL hm_get_floatv('FScale33_2' ,fac12 ,is_available, lsubmodel, unitab)
168 !line-10
169 CALL hm_get_floatv('MAT_EPS11_2' ,emf11 ,is_available, lsubmodel, unitab)
170 CALL hm_get_floatv('MAT_EPS22_2' ,emf22 ,is_available, lsubmodel, unitab)
171 CALL hm_get_floatv('MAT_EPS33_2' ,emf33 ,is_available, lsubmodel, unitab)
172 !line-11
173 CALL hm_get_intv ('MAT_YFUN12_2' ,j12 ,is_available, lsubmodel)
174 CALL hm_get_intv ('MAT_YFUN23_2' ,j23 ,is_available, lsubmodel)
175 CALL hm_get_intv ('MAT_YFUN31_2' ,j31 ,is_available, lsubmodel)
176 CALL hm_get_floatv('FScale12_2' ,fac13 ,is_available, lsubmodel, unitab)
177 CALL hm_get_floatv('FScale23_2' ,fac14 ,is_available, lsubmodel, unitab)
178 CALL hm_get_floatv('FScale31_2' ,fac15 ,is_available, lsubmodel, unitab)
179 !line-12
180 CALL hm_get_floatv('MAT_EPS12_2' ,emf12 ,is_available, lsubmodel, unitab)
181 CALL hm_get_floatv('MAT_EPS23_2' ,emf23 ,is_available, lsubmodel, unitab)
182 CALL hm_get_floatv('MAT_EPS31_2' ,emf31 ,is_available, lsubmodel, unitab)
183 !line-13
184 CALL hm_get_intv ('MAT_YFUN21_2' ,j21 ,is_available, lsubmodel)
185 CALL hm_get_intv ('MAT_YFUN32_2' ,j32 ,is_available, lsubmodel)
186 CALL hm_get_intv ('MAT_YFUN13_2' ,j13 ,is_available, lsubmodel)
187 CALL hm_get_floatv('FScale21_2' ,fac16 ,is_available, lsubmodel, unitab)
188 CALL hm_get_floatv('FScale32_2' ,fac17 ,is_available, lsubmodel, unitab)
189 CALL hm_get_floatv('FScale13_2' ,fac18 ,is_available, lsubmodel, unitab)
190 !units
191 CALL hm_get_floatv_dim('FScale11' ,fac_unit,is_available, lsubmodel, unitab)
192
193 !---DEFAULT VALUES
194 IF(rhor == zero)rhor=rho0
195 pm(1) =rhor
196 pm(89)=rho0
197 IF (fac1 == zero) fac1 = one*fac_unit
198 IF (fac2 == zero) fac2 = one*fac_unit
199 IF (fac3 == zero) fac3 = one*fac_unit
200 IF (fac4 == zero) fac4 = one*fac_unit
201 IF (fac5 == zero) fac5 = one*fac_unit
202 IF (fac6 == zero) fac6 = one*fac_unit
203 IF (fac7 == zero) fac7 = one*fac_unit
204 IF (fac8 == zero) fac8 = one*fac_unit
205 IF (fac9 == zero) fac9 = one*fac_unit
206 IF (fac10== zero) fac10 = one*fac_unit
207 IF (fac11== zero) fac11 = one*fac_unit
208 IF (fac12== zero) fac12 = one*fac_unit
209 IF (fac13== zero) fac13 = one*fac_unit
210 IF (fac14== zero) fac14 = one*fac_unit
211 IF (fac15== zero) fac15 = one*fac_unit
212 IF (fac16== zero) fac16 = one*fac_unit
213 IF (fac17== zero) fac17 = one*fac_unit
214 IF (fac18== zero) fac18 = one*fac_unit
215
216 !---STORAGE
217 uparam(1)=e11
218 uparam(2)=e22
219 uparam(3)=e33
220 uparam(4)=g12
221 uparam(5)=g23
222 uparam(6)=g31
223 uparam(7)=if1
224 uparam(8)=if2
225 uparam(9) =emx11
226 uparam(10)=emx22
227 uparam(11)=emx33
228 uparam(12)=emx12
229 uparam(13)=emx23
230 uparam(14)=emx31
231 IF(uparam(9) == zero)uparam(9) =infinity
232 IF(uparam(10) == zero)uparam(10)=infinity
233 IF(uparam(11) == zero)uparam(11)=infinity
234 IF(uparam(12) == zero)uparam(12)=infinity
235 IF(uparam(13) == zero)uparam(13)=infinity
236 IF(uparam(14) == zero)uparam(14)=infinity
237 uparam(15)=emf11
238 uparam(16)=emf22
239 uparam(17)=emf33
240 uparam(18)=emf12
241 uparam(19)=emf23
242 uparam(20)=emf31
243 IF(uparam(15) == zero)uparam(15)=infinity
244 IF(uparam(16) == zero)uparam(16)=infinity
245 IF(uparam(17) == zero)uparam(17)=infinity
246 IF(uparam(18) == zero)uparam(18)=infinity
247 IF(uparam(19) == zero)uparam(19)=infinity
248 IF(uparam(20) == zero)uparam(20)=infinity
249 uparam(21)=fac1
250 uparam(22)=fac2
251 uparam(23)=fac3
252 uparam(24)=fac4
253 uparam(25)=fac5
254 uparam(26)=fac6
255 uparam(27)=fac7
256 uparam(28)=fac8
257 uparam(29)=fac9
258 uparam(30)=fac10
259 uparam(31)=fac11
260 uparam(32)=fac12
261 uparam(33)=fac13
262 uparam(34)=fac14
263 uparam(35)=fac15
264 uparam(36)=fac16
265 uparam(37)=fac17
266 uparam(38)=fac18
267
268 parmat(1)= max(e11,e22,e33,g12,g23,g31)
269
270 ifunc(1)=i11
271 ifunc(2)=i22
272 ifunc(3)=i33
273 ifunc(4)=i12
274 ifunc(5)=i23
275 ifunc(6)=i31
276 ifunc(7)=i21
277 ifunc(8)=i32
278 ifunc(9)=i13
279 IF(j11 == 0)j11=i11
280 IF(j22 == 0)j22=i22
281 IF(j33 == 0)j33=i33
282 IF(j12 == 0)j12=i12
283 IF(j23 == 0)j23=i23
284 IF(j31 == 0)j31=i31
285 IF(j21 == 0)j21=i21
286 IF(j32 == 0)j32=i32
287 IF(j13 == 0)j13=i13
288 ifunc(10)=j11
289 ifunc(11)=j22
290 ifunc(12)=j33
291 ifunc(13)=j12
292 ifunc(14)=j23
293 ifunc(15)=j31
294 ifunc(16)=j21
295 ifunc(17)=j32
296 ifunc(18)=j13
297
298 !Formulation for solid elements time step computation.
299 dmin = min(e11*e22, e22*e33,e11*e33)
300 dmax = max(e11,e22,e33)
301 parmat(16) = 1
302 parmat(17) = dmin/dmax/dmax
303c
304 CALL init_mat_keyword(matparam,"COMPRESSIBLE")
305 CALL init_mat_keyword(matparam,"hook")
306 CALL INIT_MAT_KEYWORD(MATPARAM,"orthotropic")
307 ! Properties compatibility
308 CALL INIT_MAT_KEYWORD(MATPARAM,"solid_orthotropic")
309c
310 !---LISTING OUTPUT
311 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,68
312 WRITE(IOUT,1000)
313 IF(IS_ENCRYPTED)THEN
314 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
315 ELSE
316 WRITE(IOUT,1002) RHO0
317 WRITE(IOUT,1100)E11,E22,E33,G12,G23,G31,
318 . I11,I22,I33,I12,I23,I31,I21,I32,I13,
319 . FAC1,FAC2,FAC3,FAC4,FAC5,FAC6,FAC7,FAC8,FAC9,
320 . J11,J22,J33,J12,J23,J31,J21,J32,J13,
321 . FAC10,FAC11,FAC12,FAC13,FAC14,FAC15,FAC16,FAC17,FAC18
322 IF(IF1+IF2/=0)WRITE(IOUT,1200)IF1,IF2
323 IF(EMX11+EMX22+EMX33+EMX12+EMX23+EMX31/=0)WRITE(IOUT,1300)
324 . EMX11,EMX22,EMX33,EMX12,EMX23,EMX31
325 ENDIF
326
327 RETURN
328
329 !---OUTPUT FORMAT
330 1000 FORMAT(
331 & 5X,40H HONEYCOMS LAW - COSSERA FORMULATION ,/,
332 & 5X,40H ----------------------------------- ,//)
333 1001 FORMAT(
334 & 5X,A,/,
335 & 5X,'MATERIAL NUMBER . . . . . . . . . . . . =',I10/,
336 & 5X,'MATERIAL LAW. . . . . . . . . . . . . . =',I10/)
337 1002 FORMAT(
338 & 5X,'INITIAL DENSITY . . . . . . . . . . . . =',1PG20.13/)
339 1100 FORMAT(
340 & 5X,'E11 . . . . . . . . . . . . . . . . . .=',1PG20.13/
341 & 5X,'E22 . . . . . . . . . . . . . . . . . .=',1PG20.13/
342 & 5X,'E33 . . . . . . . . . . . . . . . . . .=',1PG20.13/
343 & 5X,'G12 . . . . . . . . . . . . . . . . . .=',1PG20.13/
344 & 5X,'G23 . . . . . . . . . . . . . . . . . .=',1PG20.13/
345 & 5X,'G31 . . . . . . . . . . . . . . . . . .=',1PG20.13/
346 & 5X,'INITIAL STRESS CURVES . . . . . . . . .=',/
347 & 5X,'YIELD STRESS 11 FUNCTION NUMBER . . . .=',I10/
348 & 5X,'YIELD STRESS 22 FUNCTION NUMBER . . . .=',I10/
349 & 5X,'YIELD STRESS 33 FUNCTION NUMBER . . . .=',I10/
350 & 5X,'YIELD STRESS 12 FUNCTION NUMBER . . . .=',I10/
351 & 5X,'YIELD STRESS 23 FUNCTION NUMBER . . . .=',I10/
352 & 5X,'YIELD STRESS 31 FUNCTION NUMBER . . . .=',I10/
353 & 5X,'YIELD STRESS 21 FUNCTION NUMBER . . . .=',I10/
354 & 5X,'YIELD STRESS 32 FUNCTION NUMBER . . . .=',I10/
355 & 5X,'YIELD STRESS 13 FUNCTION NUMBER . . . .=',I10/
356 & 5X,'FUNCTION 11 SCALE FACTOR . . . . . . . =',1PG20.13/
357 & 5X,'FUNCTION 22 SCALE FACTOR . . . . . . . =',1PG20.13/
358 & 5X,'FUNCTION 33 SCALE FACTOR . . . . . . . =',1PG20.13/
359 & 5X,'FUNCTION 12 SCALE FACTOR . . . . . . . =',1PG20.13/
360 & 5X,'FUNCTION 23 SCALE FACTOR . . . . . . . =',1PG20.13/
361 & 5X,'FUNCTION 31 SCALE FACTOR . . . . . . . =',1PG20.13/
362 & 5X,'FUNCTION 21 SCALE FACTOR . . . . . . . =',1PG20.13/
363 & 5X,'FUNCTION 32 SCALE FACTOR . . . . . . . =',1PG20.13/
364 & 5X,'FUNCTION 13 SCALE FACTOR . . . . . . . =',1PG20.13/
365 & 5X,'RESIDUAL STRESS CURVES . . . . . . . . .=',/
366 & 5X,'YIELD STRESS 11 FUNCTION NUMBER . . . .=',I10/
367 & 5X,'YIELD STRESS 22 FUNCTION NUMBER . . . .=',I10/
368 & 5X,'YIELD STRESS 33 FUNCTION NUMBER . . . .=',I10/
369 & 5X,'YIELD STRESS 12 FUNCTION NUMBER . . . .=',I10/
370 & 5X,'YIELD STRESS 23 FUNCTION NUMBER . . . .=',I10/
371 & 5X,'YIELD STRESS 31 FUNCTION NUMBER . . . .=',I10/
372 & 5X,'YIELD STRESS 21 FUNCTION NUMBER . . . .=',I10/
373 & 5X,'YIELD STRESS 32 FUNCTION NUMBER . . . .=',I10/
374 & 5X,'YIELD STRESS 13 FUNCTION NUMBER . . . .=',I10/
375 & 5X,'FUNCTION 11 SCALE FACTOR . . . . . . . =',1PG20.13/
376 & 5X,'FUNCTION 22 SCALE FACTOR . . . . . . . =',1PG20.13/
377 & 5X,'FUNCTION 33 SCALE FACTOR . . . . . . . =',1PG20.13/
378 & 5X,'FUNCTION 12 SCALE FACTOR . . . . . . . =',1PG20.13/
379 & 5X,'FUNCTION 23 SCALE FACTOR . . . . . . . =',1PG20.13/
380 & 5X,'FUNCTION 31 SCALE FACTOR . . . . . . . =',1PG20.13/
381 & 5X,'FUNCTION 21 SCALE FACTOR . . . . . . . =',1PG20.13/
382 & 5X,'FUNCTION 32 SCALE FACTOR . . . . . . . =',1PG20.13/
383 & 5X,'FUNCTION 13 SCALE FACTOR . . . . . . . =',1PG20.13//)
384 1200 FORMAT(
385 & 5X,'YIELD FUNCTION 11,22,33 FLAG . . . . .=',I10/
386 & 5X,'YIELD FUNCTION 12,23,31 FLAG . . . . .=',I10//)
387 1300 FORMAT(
388 & 5X,'TENSION FAILURE STRAIN 11 . . . . . . .=',1PG20.13/
389 & 5X,'TENSION FAILURE STRAIN 22 . . . . . . .=',1PG20.13/
390 & 5X,'TENSION FAILURE STRAIN 33 . . . . . . .=',1PG20.13/
391 & 5X,'SHEAR FAILURE STRAIN 12 . . . . . . . .=',1PG20.13/
392 & 5X,'SHEAR FAILURE STRAIN 23 . . . . . . . .=',1PG20.13/
393 & 5X,'SHEAR FAILURE STRAIN 31 . . . . . . . .=',1PG20.13//)
#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 min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle