OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat95.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_mat95 (uparam, maxuparam, nuparam, nuvar, mfunc, maxfunc, mtag, parmat, unitab, imatvis, pm, lsubmodel, id, titr, matparam)

Function/Subroutine Documentation

◆ hm_read_mat95()

subroutine hm_read_mat95 ( intent(inout) uparam,
integer, intent(in) maxuparam,
integer, intent(inout) nuparam,
integer, intent(inout) nuvar,
integer, intent(inout) mfunc,
integer, intent(in) maxfunc,
type(mlaw_tag_), intent(inout) mtag,
intent(inout) parmat,
type (unit_type_), intent(in) unitab,
integer, intent(inout) imatvis,
intent(inout) pm,
type(submodel_data), dimension(*), intent(in) lsubmodel,
integer, intent(in) id,
character(len=nchartitle), intent(in) titr,
type(matparam_struct_), intent(inout) matparam )

Definition at line 39 of file hm_read_mat95.F.

42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C
46C DUMMY ARGUMENTS DESCRIPTION:
47C ===================
48C
49C NAME DESCRIPTION
50C
51C IPM MATERIAL ARRAY(INTEGER)
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
68C-----------------------------------------------
69C I m p l i c i t T y p e s
70C-----------------------------------------------
71#include "implicit_f.inc"
72C-----------------------------------------------
73C C o m m o n B l o c k s
74C-----------------------------------------------
75#include "units_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, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
82 my_real, DIMENSION(100) ,INTENT(INOUT) :: parmat
83 my_real, DIMENSION(MAXUPARAM) ,INTENT(INOUT) :: uparam
84
85 INTEGER, INTENT(INOUT) :: MFUNC,NUPARAM,NUVAR,IMATVIS
86 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
87 INTEGER,INTENT(IN) :: ID,MAXFUNC,MAXUPARAM
88 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
89 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
90 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER :: NBMAT, MAT_ID ! Number of declared materials
95 INTEGER :: I,J,NRATE,NPS,OPTE,IFUNCE,ILAW,NFUNC,IFORM
96 my_real :: rho0, rhor,e,nu,g,mu,rbulk, c1,
97 . c10,c01,c20,c11,c02 ,tauref_unit,
98 . c30, c21,c12,c03,sb,d1,d2,d3,a,expc,expm,ksi,tauref
99 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
100C-----------------------------------------------
101C S o u r c e L i n e s
102C-----------------------------------------------
103 is_encrypted = .false.
104 is_available = .false.
105C--------------------------------------------------
106C EXTRACT DATA (IS OPTION CRYPTED)
107C--------------------------------------------------
108 CALL hm_option_is_encrypted(is_encrypted)
109C-----------------------------------------------
110 imatvis = 1
111 ilaw = 95
112 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv('Refer_Rho',rhor ,is_available, lsubmodel, unitab)
114C=======================================================================
115C
116C BERGSTROM BOYCE LAW
117C
118C=======================================================================
119 c10 = zero
120 c01 = zero
121 c20 = zero
122 c11 = zero
123 c02 = zero
124 c30 = zero
125 c21 = zero
126 c12 = zero
127 c03 = zero
128 d1 = zero
129 d2 = zero
130 d3 = zero
131 nu = zero
132 tauref = zero
133 a = zero
134 iform = 0
135Card1
136 CALL hm_get_floatv('MAT_C_10' ,c10 ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv('MAT_C_01' ,c01 ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv('MAT_C_20' ,c20 ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv('MAT_C_11' ,c11 ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv('MAT_C_02' ,c02 ,is_available, lsubmodel, unitab)
141Card2
142 CALL hm_get_floatv('MAT_C_30' ,c30 ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv('MAT_C_21' ,c21 ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv('MAT_C_12' ,c12 ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv('MAT_C_03' ,c03 ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv('MAT_Sb' ,sb ,is_available, lsubmodel, unitab)
147
148Card3
149 CALL hm_get_floatv('MAT_D_1' ,d1 ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv('MAT_D_2' ,d2 ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv('MAT_D_3' ,d3 ,is_available, lsubmodel, unitab)
152 CALL hm_get_floatv('MAT_NU' ,nu ,is_available, lsubmodel, unitab)
153 CALL hm_get_intv ('IFORM' ,iform ,is_available,lsubmodel)
154
155Card4
156 CALL hm_get_floatv('MLAW95_A' ,a ,is_available, lsubmodel, unitab)
157 CALL hm_get_floatv('MLAW95_C' ,expc ,is_available, lsubmodel, unitab)
158 CALL hm_get_floatv('MLAW95_M' ,expm ,is_available, lsubmodel, unitab)
159 CALL hm_get_floatv('MLAW95_KSI' ,ksi ,is_available, lsubmodel, unitab)
160 CALL hm_get_floatv('MAT_TAU_REF' ,tauref ,is_available, lsubmodel, unitab)
161
162
163C------------------------------------------------------------------
164 nuvar = 10
165 nuparam = 23
166C------------------------------------------------------------------
167 IF(d2 /= zero ) d2 = one/d2
168 IF(d3 /= zero ) d3 = one/d3
169 IF(iform== 0 )iform = 1
170
171 IF(tauref == zero) THEN
172 CALL hm_get_floatv_dim('MAT_TAU_REF' ,tauref_unit ,is_available, lsubmodel, unitab)
173 tauref = one * tauref_unit
174 ENDIF
175
176
177 g = two * (c10 + c01) *(sb + one)
178 IF(d1 /= zero) THEN
179 d1 = one/d1
180 rbulk= two*d1 *(one+sb)
181 nu = (three*rbulk -two*g)/(three*rbulk + g)/two
182 e = nine*rbulk*g/(three*rbulk + g)
183 ELSEIF(nu /=zero)THEN
184 d2 = zero
185 d3 = zero
186 e = two*g*(one + nu)
187 rbulk = two_third*g*(one + nu)/(one-two*nu)
188 d1 = rbulk / two
189 ELSE
190 d2 = zero
191 d3 = zero
192 nu= 0.495
193 rbulk = two_third*g*(one + nu)/(one-two*nu)
194 d1 = rbulk / two ! 1/D1 A VOIR SI ON SUPRIME PAS LE TERME AVEC J
195 e = two*g*(one + nu)
196 ENDIF
197C------------------------------------------------------------------
198 uparam(19) = g
199 uparam(20) = rbulk
200C------------------------------------------------------------------
201 IF(expm == zero)expm = one
202 IF(expc == zero)expc = -0.700000000
203 IF(ksi == zero)ksi = em02
204C------------------------------------------------------------------
205 uparam(1) = c10
206 uparam(2) = c01
207 uparam(3) = c20
208 uparam(4) = c11
209 uparam(5) = c02
210 uparam(6) = c30
211 uparam(7) = c21
212 uparam(8) = c12
213 uparam(9) = c03
214 uparam(11) = d1
215 uparam(12) = d2
216 uparam(13) = d3
217 uparam(14) = sb
218 uparam(15) = a
219 uparam(16) = expc
220 uparam(17) = expm
221 uparam(18) = ksi
222 uparam(22) = tauref
223 uparam(23) = iform
224c
225c---------------------------------
226C PM PARMAT
227C---------------------------------
228 IF (rhor == zero) rhor=rho0
229 pm(1) = rhor
230 pm(89)= rho0
231 parmat(1) = rbulk
232 parmat(2) = e
233 parmat(3) = nu
234C---------------------------------
235 pm(100) = rbulk
236c-----------------
237 CALL init_mat_keyword(matparam,"INCOMPRESSIBLE")
238 CALL init_mat_keyword(matparam,"TOTAL")
239 CALL init_mat_keyword(matparam,"HOOK")
240 ! Properties compatibility
241 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
242c-----------------
243 WRITE(iout,1001) trim(titr),id,95
244 WRITE(iout,1000)
245 IF (is_encrypted)THEN
246 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
247 ELSE
248 WRITE(iout,1002)rho0
249 WRITE(iout,1100)c10,c01,c20,c11,c02,
250 . c30, c21,c12,c03,d1,d2,d3 ,nu,iform
251 WRITE(iout,1300)a,expc,expm,ksi ,sb ,tauref
252 WRITE(iout,1200)g,rbulk, nu
253 ENDIF
254C
255 1000 FORMAT(
256 & 5x,' BERGSTROM BOYCE MATERIAL : ',/,
257 & 5x,' -------------------------- ',/)
258 1001 FORMAT(/
259 & 5x,a,/,
260 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . =',i10/,
261 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . =',i10/)
262 1002 FORMAT(
263 & 5x,'INITIAL DENSITY . . . . . . . . . . . . .=',1pg20.13/)
264 1100 FORMAT(
265 & 5x,'c10 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
266 & 5X,'c01 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
267 & 5X,'c20 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
268 & 5X,'c11 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
269 & 5X,'c02 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
270 & 5X,'c30 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
271 & 5X,'c21 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
272 & 5X,'c12 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
273 & 5X,'c03 . . . . . . . . . . . . . . . . . . .=',1PG20.13/
274 & 5X,'1/d1 . . . . . . . . . . . . . . . . . .=',1PG20.13/
275 & 5X,'1/d2 . . . . . . . . . . . . . . . . . .=',1PG20.13/
276 & 5X,'1/d3 . . . . . . . . . . . . . . . . . .=',1PG20.13/
277 & 5X,'poisson coefficient . . . . . . . . . . .=',1PG20.13//
278 & 5X,'incompressibility formulation flag iform. . . =',I2/,
279 & 5X,' iform = 1: standard strain energy density (default)',/,
280 & 5X,' iform = 2: modified strain energy density ',/)
281 1300 FORMAT(
282 & 5X,'parameters for the effective creep strain rate: ',/,
283 & 5X,'a. . . . . . . . . . . . . . . . . . . . =',1PG20.13/
284 & 5X,'exponent c . . . . . . . . . . . . . . . =',1PG20.13/
285 & 5X,'exponent m . . . . . . . . . . . . . . . =',1PG20.13/
286 & 5X,'xi . . . . . . . . . . . . . . . . . . . =',1PG20.13//
287 & 5X,'factor s of chain b. . . . . . . . . . . =',1PG20.13/
288 & 5X,'reference stress for chain b . . . . . . =',1PG20.13)
289 1200 FORMAT(
290 & 5X,'initial shear modulus . . . . . . . . . =',1PG20.13/
291 & 5X,'initial bulk modulus. . . . . . . . . . =',1PG20.13/
292 & 5X,'poisson ratio. . . . . . . . . . . . . . =',1PG20.13//)
293C
294 RETURN
#define my_real
Definition cppsort.cpp:32
end diagonal values have been computed in the(sparse) matrix id.SOL
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)
initmumps id
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle