42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
65 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 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
91
92
93
94 INTEGER :: NBMAT
95 INTEGER :: I,J,ILAW ,EFLAG
96 my_real :: rho0, rhor,e,nu,g,c1,epsl,gm,km,
97 . yld_ass,yld_asf, yld_sas,yld_saf,
alpha,
98 . lamda,emart,cas,csa,tsas,tfas, tssa,tfsa,cp,tini
99
100 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
101
102
103
104 is_encrypted = .false.
105 is_available = .false.
106
107
108
110
111 ilaw = 71
112 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
113 CALL hm_get_floatv(
'Refer_Rho',rhor ,is_available, lsubmodel, unitab)
114
115
116
117
118
119
121 CALL hm_get_floatv(
'nu' ,nu ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'E_mart' ,emart ,is_available, lsubmodel, unitab)
123
124 CALL hm_get_floatv(
'Sig_sas' ,yld_ass ,is_available, lsubmodel, unitab)
125 CALL hm_get_floatv(
'Sig_fas' ,yld_asf ,is_available, lsubmodel, unitab)
126 CALL hm_get_floatv(
'Sig_ssa' ,yld_sas ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'Sig_fsa' ,yld_saf ,is_available, lsubmodel, unitab)
129
130 CALL hm_get_floatv(
'EpsL' ,epsl ,is_available, lsubmodel, unitab)
131 CALL hm_get_floatv(
'CAS' ,cas ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'CSA' ,csa ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'TSAS' ,tsas ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'TFAS' ,tfas ,is_available, lsubmodel, unitab)
135
136 CALL hm_get_floatv(
'TSSA' ,tssa ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'TFSA' ,tfsa ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'CP' ,cp ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'TINI' ,tini ,is_available, lsubmodel, unitab)
140
141 eflag = 0
142 IF (yld_ass >= yld_asf)
144 . msgtype=msgerror,
145 . anmode=aninfo_blind_1,
147 . c1=titr)
148
149 IF (yld_sas <= yld_saf )
151 . msgtype=msgerror,
152 . anmode=aninfo_blind_1,
154 . c1=titr)
155
156 IF (
alpha > sqrt(two/three) )
158 . msgtype=msgerror,
159 . anmode=aninfo_blind_1,
161 . c1=titr)
162
163
164 IF(yld_ass == zero) yld_ass = em20
165 IF(yld_asf == zero) yld_asf = em20
166 IF(yld_sas == zero) yld_sas = em20
167 IF(yld_saf == zero) yld_saf = em20
168
169 IF(tssa == zero) tssa = 298.0
170 IF(tfsa == zero) tfsa = 298.0
171 IF(tsas == zero) tsas = 298.0
172 IF(tfas == zero) tfas = 298.0
173
174
175 IF(cp == zero) cp = ep20
176 IF(tini == zero) tini = 360.0
177 IF(emart /= zero) eflag = 1
178 IF(emart == e) eflag = 0
179
180
181 g = half*e/(one + nu)
182 lamda = e*(one-nu)/(one + nu)/(one - two*nu)
183 c1 = e/three/(one - two*nu)
184
185 gm = g
186 km = c1
187 IF (eflag == 1 ) THEN
188 gm = half*emart/(one + nu)
189 km = emart/three/(one - two*nu)
190 ENDIF
191
192
193
194 uparam(1)=e
195 uparam(2)=nu
196 uparam(3)= g
197 uparam(4) = c1
198 uparam(5) = lamda
199 uparam(6) = yld_ass
200 uparam(7) = yld_asf
201 uparam(8) = yld_sas
202 uparam(9) = yld_saf
204 uparam(11) = epsl
205
206 uparam(12 ) = e/(one - nu**2)
207 uparam(13) = nu*e/(one - nu**2)
208 uparam(14) = emart
209 uparam(15) = eflag
210 uparam(16) = gm
211 uparam(17) = km
212 uparam(18) = cas
213 uparam(19) = csa
214 uparam(20) = tsas
215 uparam(21) = tfas
216 uparam(22) = tssa
217 uparam(23) = tfsa
218 uparam(24) = cp
219 uparam(25) = tini
220
221 imatvis = 1
222
223 nuparam = 25
224 nuvar = 10
225 mfunc = 0
226
227
228
229 parmat(1) = c1
230 parmat(2) = e
231 parmat(3) = nu
232 parmat(16) = 2
233 parmat(17) = (one - two*nu)/(one - nu)
234
235 IF (rhor == zero) rhor=rho0
236 pm(1) = rhor
237 pm(89) = rho0
238 pm(27) = sqrt(e/
max(rhor,em20))
239
240 mtag%L_PLA = 1
241 mtag%L_FRAC = 1
242 mtag%L_TEMP = 1
243
244 mtag%G_MAXEPS = 3
245 mtag%G_MAXFRAC= 1
246
247
249
253
254 WRITE(iout,1000) trim(titr),
id,71
255 WRITE(iout,1100)
256 IF (is_encrypted) THEN
257 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
258 ELSE
259 WRITE(iout,1001) rho0
260 WRITE(iout,1300)e,nu,yld_ass, yld_asf,yld_sas, yld_saf,
alpha,epsl,emart
261 WRITE(iout,1200)cas,csa,tsas,tfas,tssa,tfsa,cp,tini
262 ENDIF
263
264 RETURN
265 1000 FORMAT(/
266 & 5x,a,/,
267 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . . . . . =',i10/,
268 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . . . . . =',i10/)
269 1001 FORMAT(
270 & 5x,'INITIAL DENSITY . . . . . . . . . . . . . . . =',1pg20.13/)
271 1100 FORMAT(
272 & 5x,' SUPERELASTIC MATERIAL FOR SHAPE MEMORY ALLOYS LAW71 ',/,
273 & 5x,' --------------------------------------------------- ',//)
274 1300 FORMAT(
275 & 5x,'YOUNG''S MODULUS. . . . . . . . . . . . . . . . .='
276 & 5x,'POISSON''S RATIO. . . . . . . . . . . . . . . . .=',1pg20.13/,
277 & 5x,'STARTING STRESS VALUE FOR TRANSFORMATION (AS) . .=',1pg20.13/,
278 & 5x,'FINAL STRESS VALUE FOR TRANSFORMATION (AS). . . .=',1pg20.13/,
279 & 5x,'STARTING STRESS VALUE FOR TRANSFORMATION (SA) . .=',1pg20.13/,
280 & 5x,'FINAL STRESS VALUE FOR TRANSFORMATION (SA). . . .=',1pg20.13/,
281 & 5x,'PARAMETER ALPHA . . . . . . . . . . . . . . . . .=',1pg20.13/,
282 & 5x,'MAXIMUM RESIDUAL STRAIN. . . . . . . . . . . . . =',1pg20.13/,
283 & 5x,'MARTENSITE YOUNG''S MODULUS . . . . . . . . . . .=',1pg20.13/)
284 1200 FORMAT(
285 & 5x,'MATERIAL PARAMETER C_AS . . . . . . . . . . . . .=',1pg20.13/,
286 & 5x,'MATERIAL PARAMETER C_SA . . . . . . . . . . . . .=',1pg20.13/,
287 & 5x,'INITIAL TEMPERATURE FOR TRANSFORMATION (AS) . . .=',1pg20.13/,
288 & 5x,'FINAL TEMPERATURE FOR TRANSFORMATION (AS) . . .=',1pg20.13/,
289 & 5x,'INITIAL TEMPERATURE FOR TRANSFORMATION (SA) . . .=',1pg20.13/,
290 & 5x,'FINAL TEMPERATURE FOR TRANSFORMATION (SA) . . .=',1pg20.13/,
291 & 5x,'SPECIFIC HEAT CAPACITY. . . . . . . . . . . . . .=',1pg20.13/,
292 & 5x,'INITIAL TEMPERATURE . . . . . . . . . . . . . . .=',1pg20.13/)
293
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
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)