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

Function/Subroutine Documentation

◆ hm_read_mat92()

subroutine hm_read_mat92 ( 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(*), 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_mat92.F.

42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C READ MAT LAW92 WITH HM READER ( TO BE COMPLETED )
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 "param_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 my_real, INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
81 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
82 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
83 INTEGER,INTENT(IN) :: MAT_ID
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
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 ID,ITEST,IDAM
92 . e,nu,g,mu,lam,d,rbulk,scalefac,c(5),
93 . a1,a2,a3,a4,nu0 ,fac_unit
94 CHARACTER(LEN=NCHARFIELD) :: STRING
95 my_real :: rho0, rhor
96 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
97C-----------------------------------------------
98C S o u r c e L i n e s
99C-----------------------------------------------
100 is_encrypted = .false.
101 is_available = .false.
102 idam = 0
103 israte = 0
104 imatvis = 1
105 nuvar = 0
106
107 CALL hm_option_is_encrypted(is_encrypted)
108 !line+1
109 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
110 !line-2
111 CALL hm_get_floatv('MAT_MUE1' ,mu ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv('MAT_D' ,d ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv('MAT_Lamda' ,lam ,is_available, lsubmodel, unitab)
114 !line-3
115 CALL hm_get_intv ('Itype' ,itest ,is_available, lsubmodel)
116 CALL hm_get_intv ('MAT_FCT_IDI' ,ifunc(1) ,is_available, lsubmodel)
117 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
118 CALL hm_get_floatv('MAT_FScale' ,scalefac ,is_available, lsubmodel, unitab)
119 IF(scalefac == zero)THEN
120 CALL hm_get_floatv_dim('MAT_FScale' ,fac_unit ,is_available, lsubmodel, unitab)
121 scalefac = one * fac_unit
122 ENDIF
123
124 !========== DEFAULT VALUES=============!
125 rhor=zero
126 !IF(RHOR==ZERO)RHOR=RHO0
127 pm(1) =rhor
128 pm(89)=rho0
129
130 !C By default we consider the uniaxial test
131 IF(itest == 0) itest = 1
132 !C Uniaxial - itest = 1
133 !C equibiaxial - Itest = 2
134 !c Planar - Itest = 3
135 !C
136 !the proposed one READ(LINE,FMT=FMT_A_I_F)STRING,IFUNC(1),NU
137 !CSTRING = UNIAXIAL
138 !CSTRING = EQUIBIAXIAL
139 !CSTRING = PLANAR
140 !C By default we consider the unniaxial test
141 !!the proposed one ITEST = 1
142 !!the proposed one IF(STRING(1:8) == ' ' ) THEN
143 !!the proposed one ITEST = 1
144 !!the proposed one ELSEIF(STRING(1:10) == 'EQUIBIAXIA') THEN
145 !!the proposed one ITEST = 2
146 !!the proposed one ELSEIF(STRING(1:6) == 'PLANAR') THEN
147 !!the proposed one ITEST = 3
148 !!the proposed one ENDIF
149 c(1) = half
150 c(2) = one/twenty
151 c(3) = eleven/1050.d00
152 c(4) = 19.d00/7000.d00
153 c(5) = 519.d00/673750.d00
154C
155 IF(lam == zero) lam = seven
156 a1 = one/lam**2
157 a2 = a1**2
158 a3 = a1*a2
159 a4 = a2**2
160 g= mu*(one + three*a1/five + eighty19*a2/175.d00
161 . + 513.d00*a3/875.d00 + 42039.d00*a4/67375.d00)
162
163 nfunc= 0
164 rbulk = zero
165 IF(ifunc(1) /= 0) THEN
166 nfunc = 1
167 IF (nu == zero) nu= 0.495
168 ELSEIF(d == zero) THEN
169 nu = 0.495
170 rbulk = two_third*(one + nu)*g/(one - two*nu)
171 d = two/rbulk
172 ELSE
173 rbulk = two/d
174 ENDIF
175!
176! computing E
177!
178 e = nine*rbulk*g/max(em20,(three*rbulk + g))
179 IF(ifunc(1) == 0 ) nu = (three*rbulk -two*g)/(three*rbulk + g)/two
180C
181 uparam(1) = mu
182 uparam(2) = d
183 uparam(3) = lam
184 uparam(4) = g
185 uparam(5) = rbulk
186 uparam(6) = c(1)
187 uparam(7) = c(2)
188 uparam(8) = c(3)
189 uparam(9) = c(4)
190 uparam(10) = c(5)
191 uparam(11) = nu
192 uparam(12) = itest
193 uparam(14) = scalefac
194
195 nuparam = 14
196 IF(nuparam > maxuparam)THEN
197 WRITE(iout,*)' ** ERROR : NUPARAM GT MAXUPARAM'
198 WRITE(iout,*)' NUPARAM =',nuparam,
199 . ' maxuparam =',MAXUPARAM
200 ENDIF
201!
202 PARMAT(1) = RBULK
203 PARMAT(2) = E
204 PARMAT(3) = NU
205
206 MTAG%L_EPSA = 1 ! hyperelastic energy needed for mullins
207 IMATVIS = 1
208 PM(100) = RBULK
209c-----------------
210 CALL INIT_MAT_KEYWORD(MATPARAM,"INCOMPRESSIBLE")
211 CALL INIT_MAT_KEYWORD(MATPARAM,"TOTAL")
212 CALL INIT_MAT_KEYWORD(MATPARAM,"HOOK")
213 ! Properties compatibility
214 CALL INIT_MAT_KEYWORD(MATPARAM,"SOLID_ISOTROPIC")
215c-----------------
216 !========== OUTPUT =============!
217 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,92
218 WRITE(IOUT,1000)
219 IF(IS_ENCRYPTED)THEN
220 WRITE(IOUT,'(5x,a,//)')'confidential data'
221 ELSE
222 WRITE(IOUT,1002) RHO0
223 IF(IFUNC(1) > 0) THEN
224 IF(ITEST == 1) THEN
225 WRITE(IOUT,1200)IFUNC(1),SCALEFAC, NU
226 ELSEIF(ITEST == 2) THEN
227 WRITE(IOUT,1300)IFUNC(1),SCALEFAC, NU
228 ELSEIF(ITEST == 3) THEN
229 WRITE(IOUT,1400)IFUNC(1),SCALEFAC, NU
230 ENDIF
231 ELSE
232 WRITE(IOUT,1100)MU,D,LAM, NU
233 ENDIF
234 ENDIF
235
236C-----------------------------------------------
237 1000 FORMAT(
238 & 5X,' arruda-boyce law ',/,
239 & 5x,' ---------------- ',/)
240 1001 FORMAT(
241 & 5x,a,/,
242 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . =',i10/,
243 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . =',i10/)
244 1002 FORMAT(
245 & 5x,'INITIAL DENSITY . . . . . . . . . . . . =',1pg20.13/)
246 1100 FORMAT(
247 & 5x,'MU . . . . . . . . . . . . . . . . . . .=',1pg20.13/
248 & 5x,'D. . . . . . . . . . . . . . . . . . . .=',1pg20.13/
249 & 5x,'LAM. . . . . . . . . . . . . . . . . . .=',1pg20.13/
250 & 5x,'POISSON RATIO. . . . . . . . . . . . . .=',e12.4//)
251 1200 FORMAT(
252 & 5x,'UNIAXIAL DATA TEST CURVE . . . . . . .=',i10/
253 & 5x,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1pg20.13/
254 & 5x,'POISSON RATIO. . . . . . . . . . . . . .=',e12.4///)
255 1300 FORMAT(
256 & 5x,'EQUIBIAXIAL DATA TEST CURVE. . . . . . .=',i10/
257 & 5x,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1pg20.13/
258 & 5x,'POISSON RATIO. . . . . . . . . . . . . .=',e12.4///)
259 1400 FORMAT(
260 & 5x,'PLANAR DATA TEST CURVE . . . . . . . .=',i10/
261 & 5x,'SCALE FACTOR FOR STRESS IN FUNCTION. . .=',1pg20.13/
262 & 5x,'POISSON RATIO. . . . . . . . . . . . . .=',e12.4///)
263C-----------------------------------------------
264
265
266 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)
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
integer, parameter ncharfield