46
47
48
53 USE matparam_def_mod
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69#include "implicit_f.inc"
70
71
72
73#include "units_c.inc"
74#include "param_c.inc"
75
76
77
78 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
79 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
80 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
81 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
82 INTEGER, INTENT(INOUT) :: ISRATE
83 INTEGER, INTENT(INOUT) :: NUPARAM,NUVAR,NFUNC
84 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
85 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
86 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
87 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
88 TYPE(MLAW_TAG_), INTENT(INOUT) :: MTAG
89 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
90
91
92
93 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
94 INTEGER :: I,ILAW,,ISRAT
95 my_real :: rho0,rhor,e,nu,g,c1,epsmax,fcut,press_scale
96 INTEGER ,DIMENSION(MAXFUNC) :: FUN_LOAD,FUN_UNLOAD
97 my_real ,
DIMENSION(MAXFUNC) :: yfac,rate
98
99 is_encrypted = .false.
100 is_available = .false.
101 ilaw = 65
102
104
105 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
107
108 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
109 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
110 CALL hm_get_floatv(
'MAT_EPS' ,epsmax ,is_available, lsubmodel, unitab)
111
112 CALL hm_get_intv (
'NRATEP' ,nrate ,is_available,lsubmodel)
113 CALL hm_get_intv (
'Fsmooth' ,israt ,is_available,lsubmodel)
114 CALL hm_get_floatv(
'Fcut' ,fcut ,is_available, lsubmodel, unitab)
115
117
118 DO i=1,nrate
123 ENDDO
124
125
126 nuparam = nrate*3 + 14
127 nuvar = nrate*4 + 8
128 nfunc = nrate*2
129
130 ifunc(1:nrate) = fun_load(1:nrate)
131 ifunc(nrate+1:nfunc) = fun_unload(1:nrate)
132
133
134
135 DO i=1,nfunc
136 IF (ifunc(i) == 0) THEN
138 . msgtype=msgerror,
139 . anmode=aninfo_blind_1,
140 . i1=mat_id,
141 . c1=titr,
142 . i2=ifunc(i))
143 ENDIF
144 ENDDO
145
146 IF (nrate > 1 .AND. israt == 0) THEN
148 . msgtype=msgwarning,
149 . anmode=aninfo_blind_1,
150 . i1=mat_id,
151 . c1=titr)
152 ENDIF
153
154 IF (nrate > 1) THEN
155 DO i=2,nrate
156 IF (rate(i) < rate(i-1)) THEN
158 . msgtype=msgerror,
159 . anmode=aninfo_blind_1,
160 . i1=mat_id,
161 . c1=titr)
162 EXIT
163 ENDIF
164 ENDDO
165 ENDIF
166
167
168
169
170 DO i=1,nrate
171 IF (yfac(i) == zero) yfac(i) = one*press_scale
172 ENDDO
173
174 IF (epsmax == zero) epsmax = ep20
175
176 c1 = third*e/(one - two*nu)
177 g = half*e/(one+nu)
178 israte =
max(israte,israt)
179
180 uparam(1) = nrate
181 uparam(2) = e
182 uparam(3) = g
183 uparam(4) = nu
184 uparam(5) = one/(one - nu*nu)
185 uparam(6) = nu*uparam(5)
186 uparam(7) = g*two
187 uparam(8) = g*three
188 uparam(9) = c1
189 uparam(10)= c1 + g*four*third
190 uparam(11)= epsmax
191 DO i=1,nrate
192 uparam(14+i)=rate(i)
193 uparam(14+i+nrate)=yfac(i)
194 uparam(14+i+nrate*2)=ep20
195 ENDDO
196
197 parmat(1) = c1
198 parmat(2) = e
199 parmat(3) = nu
200 parmat(4) = israt
201 parmat(5) = fcut
202
203 parmat(16) = 2
204 parmat(17) = (one - two*nu)/(one - nu)
205
206 pm(1) = rhor
207 pm(89) = rho0
208 pm(100)= c1
209
210
211
212 mtag%G_PLA = 1
213 mtag%L_PLA = 1
214
215
218
219
220
221 WRITE(iout,1000) trim(titr),mat_id,65
222 WRITE(iout,1100)
223 IF (is_encrypted) THEN
224 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
225 ELSE
226 WRITE(iout,1200) rho0
227 WRITE(iout,1300) e,nu,epsmax,israte,fcut
228 DO i=1,nrate
229 WRITE(iout,1400) fun_load(i),fun_unload(i),yfac(i),rate(i)
230 ENDDO
231 WRITE(iout,*)' '
232 ENDIF
233
234 1000 FORMAT(/
235 & 5x,a,/,
236 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . .=',i10/,
237 & 5x,'MATERIAL LAW . . . . . . . . . . . . . .=',i10/)
238 1100 FORMAT
239 &(5x,'MATERIAL MODEL : TABULATED ELASTIC PLASTIC (LAW65) ',/,
240 & 5x,'---------------------------------------------------',/)
241 1200 FORMAT(
242 & 5x,'INITIAL DENSITY. . . . . . . . . . . . .=',1pg20.13/)
243 1300 FORMAT(
244 & 5x,'YOUNG''S MODULUS . . . . . . . . . . . .=',1pg20.13/
245 & 5x,'POISSON''S RATIO . . . . . . . . . . . .=',1pg20.13/
246 & 5x,'MAXIMUM PLASTIC STRAIN . . . . . . . . =',1pg20.13/
247 & 5x,'SMOOTH STRAIN RATE OPTION . . . . . . . =',i10/
248 & 5x,'STRAIN RATE CUTTING FREQUENCY . . . . . =',1pg20.13/)
249 1400 FORMAT(
250 & 5x,'LOAD STRESS FUNCTION NUMBER . . . . . =',i10/
251 & 5x,'UNLOAD STRESS FUNCTION NUMBER . . . . . =',i10/
252 & 7x,'YIELD SCALE FACTOR. . . . . . . . . . . =',1pg20.13/
253 & 7x,'STRAIN RATE . . . . . . . . . . . . . . =',1pg20.13)
254
255 RETURN
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
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_int_array_index(name, ival, index, is_available, lsubmodel)
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)