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 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_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle