42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
65 USE matparam_def_mod
67
68
69
70#include "implicit_f.inc"
71
72
73
74#include "units_c.inc"
75#include "param_c.inc"
76
77
78
79 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
80 my_real,
INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
81 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
82 TYPE(MLAW_TAG_),INTENT(INOUT) :: MTAG
83 INTEGER,INTENT(IN) :: MAT_ID
84 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
85 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
86 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
87
88
89
91 . e,nu,cp,vmc,d,n,md,
92 . c1, g,temp,v0,yfac(2)
93 INTEGER J
94 my_real :: rho0, rhor, yfac_unit
95 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
96
97
98
99 is_encrypted = .false.
100 is_available = .false.
101 israte = 0
102 imatvis = 0
103 nuparam = 15
104 nuvar = 7
105 nfunc=2
106 mtag%G_PLA = 1
107 mtag%L_PLA = 1
108
110
111 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
113
114 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
115 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
116 CALL hm_get_floatv(
'CP' ,cp ,is_available, lsubmodel, unitab)
117
118 CALL hm_get_floatv(
'MAT_D' ,d ,is_available, lsubmodel, unitab)
119 CALL hm_get_floatv(
'MAT_N' ,n ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'M64_Md' ,md ,is_available, lsubmodel, unitab)
121 CALL hm_get_floatv(
'M64_Vo' ,v0 ,is_available, lsubmodel, unitab)
122 CALL hm_get_floatv(
'M64_Vm' ,vmc ,is_available, lsubmodel, unitab)
123
124 CALL hm_get_intv (
'M64_FUNCT_ID_0' ,ifunc(1) ,is_available, lsubmodel)
125 CALL hm_get_intv (
'M64_FUNCT_ID_1' ,ifunc(2) ,is_available, lsubmodel)
126 CALL hm_get_floatv(
'M64_SCALE_0' ,yfac(1) ,is_available, lsubmodel, unitab)
127 CALL hm_get_floatv(
'M64_SCALE_1' ,yfac(2) ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'M64_INI_TEMP' ,temp ,is_available, lsubmodel, unitab)
129
130
131 CALL hm_get_floatv_dim(
'M64_SCALE_0' ,yfac_unit ,is_available, lsubmodel, unitab)
132
133
134 IF(rhor == zero)rhor=rho0
135 pm(1) =rhor
136 pm(89)=rho0
137 IF(v0 == zero.OR.v0 >= one)v0=em20
138 IF(cp == zero)THEN
139 cp = zero
140 ELSE
141 cp = one/cp
142 ENDIF
143 IF(yfac(1) == zero) yfac(1)= one*yfac_unit
144 IF(yfac(2) == zero) yfac(2)= one*yfac_unit
145 IF(vmc == zero.OR.vmc > one) vmc = one
146
147
148 g = half*e/(one + nu)
149 c1=e/three/(one - two*nu)
150 uparam(1) = e
151 uparam(2) = e/(one - nu*nu)
152 uparam(3) = nu*uparam(2)
153 uparam(4) = g
154 uparam(5) = nu
155 uparam(6) = d
156 uparam(7) = n
157 uparam(8) = md
158 uparam(9) = v0
159 uparam(10) = vmc
160 uparam(11) = cp
161 uparam(12) = temp
162 uparam(13) = yfac(1)
163 uparam(14) = yfac(2)
164 uparam(15) = zero
165
166 parmat(1) = c1
167 parmat(2) = e
168 parmat(3) = nu
169
170 parmat(16) = 2
171 parmat(17) = (one - two*nu)/(one - nu)
172
173
175
176
177 WRITE(iout,1001) trim(titr),mat_id,64
178 WRITE(iout,1000)
179 IF(is_encrypted)THEN
180 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
181 ELSE
182 WRITE(iout,1002) rho0
183 WRITE(iout,1100)e,nu,cp,n,d,v0,md,vmc,temp
184 WRITE(iout,1200)(ifunc(j),yfac(j),j=1,2)
185 ENDIF
186
187 RETURN
188 1000 FORMAT(/
189 . 5x,40h trip-steels plastic law ,/,
190 & 5x,40h ------------------------ ,/)
191 1001 FORMAT(
192 & 5x,a,/,
193 & 5x,'MATERIAL NUMBER . . . . . . . . . . . . =',i10/,
194 & 5x,'MATERIAL LAW. . . . . . . . . . . . . . =',i10/)
195 1002 FORMAT(
196 & 5x,'INITIAL DENSITY . . . . . . . . . . . . =',1pg20.13/)
197 1100 FORMAT(
198 & 5x,'YOUNG''S MODULUS. . . . . . . . . . . . . . . =',e12.4/
199 & 5x,'POISSON''S RATIO. . . . . . . . . . . . . . . =',e12.4/
200 & 5x,'HEAT CAPACITIVITY . . .. . . . . . . . . . . =',e12.4/
201
202 & 5x,'MATERIAL PARAMETER (n) . . . . . . . . .=',e12.4/
203 & 5x,'MATERIAL PARAMETER (D) . . . . .. . . . .=',e12.4/
204 & 5x,'MATERIAL PARAMETER (V0) . . . . .. . . . =',e12.4/
205 & 5x,'LIMIT MARTENISTE TEMPERATURE (Md) . . . . . . =',e12.4/
206 & 5x,'CONTENT MARTENSITE VOLUME FRACTION(Vmc) . . . =',e12.4/
207 & 5x,'INITIAL TEMPERATURE . . . . . . . . . . . . =',e12.4)
208 1200 FORMAT(
209 & 5x,'YIELD STRESS FUNCTION NUMBER. . . . . . . . . =',i8/
210 & 5x,'YIELD SCALE FACTOR. . . . . . . . . . . . . . =',e12.4)
211
212
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)
integer, parameter nchartitle