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

Function/Subroutine Documentation

◆ hm_read_mat22()

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

Definition at line 38 of file hm_read_mat22.F.

43C-----------------------------------------------
44C D e s c r i p t i o n
45C-----------------------------------------------
46C ROUTINE DESCRIPTION :
47C ===================
48C READ MAT LAW02 WITH HM READER
49C-----------------------------------------------
50C DUMMY ARGUMENTS DESCRIPTION:
51C ===================
52C UNITAB UNITS ARRAY
53C ID MATERIAL ID(INTEGER)
54C TITR MATERIAL TITLE
55C LSUBMODEL SUBMODEL STRUCTURE
56C
57C IFORM 0 (PLAS_JOHNSON) 1 (PLAS_ZERILLI) 2 (PLAS_PREDEF)
58C
59C-----------------------------------------------
60C M o d u l e s
61C-----------------------------------------------
62 USE unitab_mod
63 USE elbuftag_mod
64 USE message_mod
65 USE submodel_mod
66 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 INTEGER, INTENT(IN) :: ID,MAXUPARAM,MAXFUNC,IFORM
82 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),IMATVIS,ISRATE
83 my_real, INTENT(INOUT) :: pm(npropm)
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
86 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC
87 INTEGER, DIMENSION(MAXFUNC), INTENT(INOUT) :: IFUNC
88 my_real, DIMENSION(MAXUPARAM), INTENT(INOUT) :: uparam
89 my_real, INTENT(INOUT) :: parmat(*)
90 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
91 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
92C-----------------------------------------------
93C L o c a l V a r i a b l e s
94C-----------------------------------------------
95 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96 INTEGER :: ICC,ISRAT1,IFLAG,MFLAG,ILAW
97 my_real :: rhor,rho0
99 . young, anu, ca, cb, cn, epsm, sigm, cc, eps0, epsl, el, g,
100 . e0, c0, c1, e1mn2, en1n2, sdsp, hl, yldl
101 CHARACTER PREDEF*16
102C-----------------------------------------------
103C S o u r c e L i n e s
104C-----------------------------------------------
105 is_encrypted = .false.
106 is_available = .false.
107 rhor = zero
108 nuvar = 0
109 nuparam = 0
110 nfunc = 0
111 ilaw = 22
112C
113 CALL hm_option_is_encrypted(is_encrypted)
114C
115 !line-1
116 CALL hm_get_floatv('MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
117!! CALL HM_GET_FLOATV('Refer_Rho',RHOR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
118 !line-2
119 CALL hm_get_floatv('MAT_E' ,young ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv('MAT_NU' ,anu ,is_available, lsubmodel, unitab)
121 !line-3
122 CALL hm_get_floatv('MAT_SIGY' ,ca ,is_available, lsubmodel, unitab)
123 CALL hm_get_floatv('MAT_BETA' ,cb ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv('MAT_HARD' ,cn ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv('MAT_EPS' ,epsm ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv('MAT_SIG' ,sigm ,is_available, lsubmodel, unitab)
127
128 !line-4
129 CALL hm_get_floatv('MAT_SRC' ,cc ,is_available, lsubmodel, unitab)
130 CALL hm_get_floatv('MAT_SRP' ,eps0 ,is_available, lsubmodel, unitab)
131 CALL hm_get_intv ('STRFLAG' ,icc ,is_available, lsubmodel)
132 !line-5
133 CALL hm_get_floatv('MAT_DAMAGE' ,epsl ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv('MAT_ETAN' ,el ,is_available, lsubmodel, unitab)
135C density
136 IF(rhor == zero) rhor = rho0
137 pm(1) = rhor
138 pm(89) = rho0
139C
140 IF(icc == 0 )icc=1
141C
142 IF(anu == half) anu=zep499
143 IF(epsl == zero) epsl=zep15
144 IF(cn == zero) cn = one
145 IF(epsm == zero) epsm = infinity
146 IF(sigm == zero) sigm = infinity
147 IF(cc == zero) eps0 = one
148C
149 g=young/(two*(one + anu))
150 e0=zero
151 c0=zero
152 c1=young/(three*(one - two*anu))
153 e1mn2=young/(one-anu**2)
154 en1n2=anu*e1mn2
155 sdsp =sqrt(young/max(pm(1),em20))
156 hl =young * el / max(em20,young-el)
157 yldl = ca+cb*exp(cn*log(epsl))
158 yldl = min(yldl,sigm)
159C
160 pm(20)=young
161 pm(21)=anu
162 pm(22)=g
163 pm(23)=e0
164 pm(24)=e1mn2
165 pm(25)=en1n2
166 pm(26)=five_over_6
167 pm(27)=sdsp
168 pm(28)=one/young
169 pm(29)=-anu*pm(28)
170 pm(30)=one/g
171 pm(31)=c0
172 pm(32)=c1
173 pm(38)=ca
174 pm(39)=cb
175 pm(40)=cn
176 pm(41)=epsm
177 pm(42)=sigm
178 pm(43)=cc
179 pm(44)=eps0
180 pm(45)=epsl
181 pm(46)=hl
182 pm(47)=yldl
183 pm(48)=el
184 pm(49)=icc
185CC-----------
186C Formulation for solid elements time step computation.
187 ipm(252)= 2
188 pm(105) = ( one -two*anu)/(one - anu)
189C-----------
190C Formulation for solid elements time step computation.
191 ipm(252)= 2
192 pm(105) = two*g/(c1+four_over_3*g) ! =(1-2*Nu)/(1-Nu)
193C
194 WRITE(iout,1010) trim(titr),id,ilaw
195 WRITE(iout,1000)
196 IF(is_encrypted)THEN
197 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
198 ELSE
199 WRITE(iout,1020)rho0
200 WRITE(iout,1300)young,anu,g
201 WRITE(iout,1400)ca,cb,cn,epsm,sigm
202 WRITE(iout,1600)cc,eps0,icc
203 WRITE(iout,1800)epsl,el
204 ENDIF
205C
206 IF(ca<=zero) THEN
207 CALL ancmsg(msgid=301,
208 . msgtype=msgerror,
209 . anmode=aninfo,
210 . i1=22,
211 . i2=id,
212 . c1=titr)
213 ENDIF
214 IF(cn>one) THEN
215 CALL ancmsg(msgid=213,
216 . msgtype=msgerror,
217 . anmode=aninfo,
218 . i1=22,
219 . i2=id,
220 . c1=titr)
221 ENDIF
222 IF(eps0==zero) THEN
223 CALL ancmsg(msgid=298,
224 . msgtype=msgerror,
225 . anmode=aninfo,
226 . i1=22,
227 . i2=id,
228 . c1=titr)
229 ENDIF
230 IF(el>zero.OR.el<=-young.OR.el<=-three*g) THEN
231 CALL ancmsg(msgid=308,
232 . msgtype=msgerror,
233 . anmode=aninfo,
234 . i1=id,
235 . c1=titr)
236 ENDIF
237c
238C---- Definition des variables internes (stockage elementaire)
239c
240 mtag%G_EPSD = 1
241 mtag%G_PLA = 1
242c
243 mtag%L_EPSD = 1
244 mtag%L_PLA = 1
245c
246 ! MATPARAM keywords
247 CALL init_mat_keyword(matparam,"ELASTO_PLASTIC")
248c
249 ! Properties compatibility
250 CALL init_mat_keyword(matparam,"SHELL_ISOTROPIC")
251 CALL init_mat_keyword(matparam,"SOLID_ISOTROPIC")
252 CALL init_mat_keyword(matparam,"SPH")
253c
254C--------------------------------
255 RETURN
256C-----------
257 1000 FORMAT(
258 & 5x,' ELASTIC PLASTIC + DAMAGE LAW ',/,
259 & 5x,' ---------------------------- ',//)
260 1010 FORMAT(/
261 & 5x,a,/,
262 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . .=',i10/,
263 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . .=',i10/)
264 1020 FORMAT(
265 & 5x,'initial density. . . . . . . . . . . . . .=',1PG20.13/)
266 1300 FORMAT(
267 & 5X,'young''s modulus . . . . . . . . . . . .=',1PG20.13/,
268 & 5X,'poisson''s ratio . . . . . . . . . . . .=',1PG20.13/,
269 & 5X,'shear modulus . . . . . . . . . . . . .=',1PG20.13//)
270 1400 FORMAT(
271 & 5X,'yield coefficient ca. . . . . . . . . .=',1PG20.13/,
272 & 5X,'yield coefficient cb. . . . . . . . . .=',1PG20.13/,
273 & 5X,'yield coefficient cn. . . . . . . . . .=',1PG20.13/,
274 & 5X,'eps-max . . . . . . . . . . . . . . . .=',1PG20.13/,
275 & 5X,'sig-max . . . . . . . . . . . . . . . .=',1PG20.13//)
276 1600 FORMAT(
277 & 5X,'strain rate coefficient cc. . . . . . .=',1PG20.13/,
278 & 5X,'reference strain rate . . . . . . . . .=',1PG20.13/,
279 & 5X,'flag for strain rate on sig-max . . . .=',I10//)
280 1800 FORMAT(
281 & 5X,'damage strain limit . . . . . . . . . .=',1PG20.13/,
282 & 5X,'damage tangent modulus el . . . . . . .=',1PG20.13//)
283c-------------------
284 RETURN
#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)
subroutine init_mat_keyword(matparam, keyword)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
initmumps id
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889