43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
66 USE matparam_def_mod
68
69
70
71#include "implicit_f.inc"
72
73
74
75#include "units_c.inc"
76#include "param_c.inc"
77
78
79
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(),INTENT(INOUT) :: MTAG
91 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
92
93
94
95 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96 INTEGER :: ICC,ISRAT1,IFLAG,MFLAG,ILAW
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
102
103
104
105 is_encrypted = .false.
106 is_available = .false.
107 rhor = zero
108 nuvar = 0
109 nuparam = 0
110 nfunc = 0
111 ilaw = 23
112
114
115
116 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
117
118
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
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
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
133 CALL hm_get_floatv(
'MAT_DAMAGE' ,epsl ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MAT_ETAN' ,el ,is_available, lsubmodel, unitab)
135
136 IF(rhor == zero)rhor = rho0
137 pm(1) = rhor
138 pm(89)= rho0
139
140 IF(anu == half) anu=zep499
141 IF(epsl == zero) epsl=zep15
142 IF(cn == zero) cn = one
143 IF(epsm == zero) epsm = ep30
144 IF(sigm == zero) sigm = ep30
145 IF(cc == zero) eps0 = one
146 g=young/(two*(one + anu))
147 e0=zero
148 c0=zero
149 c1=young/(three*(one - two*anu))
150 e1mn2=young/(one - anu**2)
151 en1n2=anu*e1mn2
152 sdsp =sqrt(young/
max(pm(1),em20))
153 hl =young * el /
max(em20,young-el)
154 yldl = ca+cb*exp(cn*log(epsl))
155 yldl =
min(yldl,sigm)
156
157 pm(20)=young
158 pm(21)=anu
159 pm(22)=g
160 pm(23)=e0
161 pm(24)=e1mn2
162 pm(25)=en1n2
163 pm(26)=five_over_6
164 pm(27)=sdsp
165 pm(28)=one/young
166 pm(29)=-anu*pm(28)
167 pm(30)=one/g
168 pm(31)=c0
169 pm(32)=c1
170 pm(38)=ca
171 pm(39)=cb
172 pm(40)=cn
173 pm(41)=epsm
174 pm(42)=sigm
175 pm(43)=cc
176 pm(44)=eps0
177 pm(45)=epsl
178 pm(46)=hl
179 pm(47)=yldl
180 pm(48)=el
181 pm(49)=icc
182
183
184 ipm(252)= 2
185 pm(105) = two*g/(c1+four_over_3*g)
186
187 WRITE(iout,1010) trim(titr),
id,ilaw
188 WRITE(iout,1000)
189 IF(is_encrypted)THEN
190 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
191 ELSE
192 WRITE(iout,1020)rho0
193 WRITE(iout,1300)young,anu,g
194 WRITE(iout,1400)ca,cb,cn,epsm,sigm
195 WRITE(iout,1600)cc,eps0,icc
196 WRITE(iout,1800)epsl,el
197 ENDIF
198
199 IF(cn>one) THEN
201 . msgtype=msgerror,
202 . anmode=aninfo,
203 . i1=23,
205 . c1=titr)
206 ENDIF
207 IF(eps0==zero) THEN
209 . msgtype=msgerror,
210 . anmode=aninfo,
211 . i1=23,
213 . c1=titr)
214 ENDIF
215 IF(el>zero.OR.el<=-young.OR.el<=-three*g) THEN
217 . msgtype=msgerror,
218 . anmode=aninfo,
220 . c1=titr)
221 ENDIF
222
223
224
225 mtag%G_EPSD = 1
226 mtag%G_PLA = 1
227
228 mtag%L_EPSD = 1
229 mtag%L_PLA = 1
230
231
233
234
237
238
239 RETURN
240
241 1000 FORMAT(
242 & 5x,' ELASTIC PLASTIC + DAMAGE LAW ',/,
243 & 5x,' ---------------------------- ',//)
244 1010 FORMAT(/
245 & 5x,a,/,
246 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . .=',i10/,
247 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . .=',i10/
248 1020 FORMAT(
249 & 5x,'INITIAL DENSITY. . . . . . . . . . . . . .=',1pg20.13/)
250 1300 FORMAT(
251 & 5x,'YOUNG''S MODULUS . . . . . . . . . . . .=',1pg20.13/,
252 & 5x,'POISSON''S RATIO . . . . . . . . . . . .=',1pg20.13/,
253 & 5x,'SHEAR MODULUS . . . . . . . . . . . . .=',1pg20.13//)
254 1400 FORMAT(
255 & 5x,'YIELD COEFFICIENT CA. . . . . . . . . .=',1pg20.13/,
256 & 5x,'YIELD COEFFICIENT CB. . . . . . . . . .=',1pg20.13/,
257 & 5x,'YIELD COEFFICIENT CN. . . . . . . . . .=',1pg20.13/,
258 & 5x,'EPS-MAX . . . . . . . . . . . . . . . .=',1pg20.13/,
259 & 5x,'SIG-MAX . . . . . . . . . . . . . . . .=',1pg20.13//)
260 1600 FORMAT(
261 & 5x,'STRAIN RATE COEFFICIENT CC. . . . . . .=',1pg20.13/,
262 & 5x,'REFERENCE STRAIN RATE . . . . . . . . .=',1pg20.13/,
263 & 5x,'FLAG FOR STRAIN RATE ON SIG-MAX . . . .=',i10//)
264 1800 FORMAT(
265 & 5x,'DAMAGE STRAIN LIMIT . . . . . . . . . .=',1pg20.13/,
266 & 5x,'DAMAGE TANGENT MODULUS EL . . . . . . .=',1pg20.13//)
267
268 RETURN
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)
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)