44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
67 USE matparam_def_mod
69
70
71
72#include "implicit_f.inc"
73
74
75
76#include "units_c.inc"
77#include "param_c.inc"
78
79
80
81 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
82 my_real,
INTENT(INOUT) :: pm(npropm),parmat(100),uparam(maxuparam)
83 INTEGER, INTENT(INOUT) :: IPM(NPROPMI),ISRATE,IFUNC(MAXFUNC),NFUNC,MAXFUNC,MAXUPARAM,NUPARAM, NUVAR,IMATVIS
84 . ,NTABLE,ITABLE(MAXTABL)
85 TYPE(MLAW_TAG_),INTENT(INOUT) ::
86 INTEGER,INTENT(IN) :: MAT_ID,
87 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
88 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
89 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
90
91
92
93 INTEGER I,J,NRATE,NPS,IR0,ILAW
95 . e,nu,g,c1,epsmax,epsr1,epsr2,
96 . r0,r45,r90,r,h,fisokin,m,
97 . einf
98 INTEGER IFUNCE, OPTE, NUM_FUNC
100 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
101
102
103
104 is_encrypted = .false.
105 is_available = .false.
106 mtag%G_PLA = 1
107 mtag%G_SEQ = 1
108 mtag%L_SEQ = 1
109 mtag%L_PLA = 1
110 israte=0
111 imatvis=0
112 ilaw=73
113
114
116
117 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
118
119 CALL hm_get_floatv(
'MAT_E' ,e ,is_available, lsubmodel, unitab)
120 CALL hm_get_floatv(
'MAT_NU' ,nu ,is_available, lsubmodel, unitab)
121
122 CALL hm_get_intv (
'Yr_fun' ,ifunce ,is_available, lsubmodel)
123 CALL hm_get_floatv(
'MAT_EFIB' ,einf ,is_available, lsubmodel, unitab)
124 CALL hm_get_floatv(
'MAT_C' ,ce ,is_available, lsubmodel, unitab)
125
126 CALL hm_get_floatv(
'MAT_R00' ,r0 ,is_available, lsubmodel, unitab
127 CALL hm_get_floatv(
'MAT_R45' ,r45 ,is_available, lsubmodel, unitab)
128 CALL hm_get_floatv(
'MAT_R90' ,r90 ,is_available, lsubmodel, unitab)
129 CALL hm_get_floatv(
'MAT_CHARD' ,fisokin ,is_available, lsubmodel, unitab)
130 CALL hm_get_intv (
'MAT_Iyield' ,ir0 ,is_available, lsubmodel)
131
132 CALL hm_get_floatv(
'MAT_EPS' ,epsmax ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'MAT_EPST1' ,epsr1 ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'MAT_EPST2' ,epsr2 ,is_available, lsubmodel, unitab)
135
136 CALL hm_get_intv (
'FUN_A1' ,itable(1) ,is_available, lsubmodel)
137 CALL hm_get_floatv(
'MAT_FScale' ,yfac ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'MAT_PScale' ,x2fac ,is_available, lsubmodel, unitab)
139
140 CALL hm_get_floatv(
'T_Initial' ,t0 ,is_available, lsubmodel, unitab)
141 CALL hm_get_floatv(
'MAT_SPHEAT' ,rhocp ,is_available, lsubmodel, unitab)
142
145
146 rhor=rho0
147 IF(rhor==zero)rhor=rho0
148 pm(1) =rhor
149 pm(89)=rho0
150
151 IF(yfac == zero)yfac=fac_pres
152 IF(x2fac == zero)x2fac=fac_freq
153
154
155
156 IF(r0 == zero) r0 = one
157 IF(r45 == zero) r45 = one
158 IF(r90 == zero) r90 = one
159 IF(epsr1 == zero)epsr1=infinity
160 IF(epsr2 == zero)epsr2=two*infinity
161 IF(t0 == zero) t0=twohundred93
162
163 IF(epsr1 >= epsr2)THEN
165 . msgtype=msgerror,
166 . anmode=aninfo_blind_1,
167 . i1=mat_id,
168 . c1=titr)
169
170 ENDIF
171 ntable=1
172 uparam(1)=fisokin
173 uparam(2)=e
174 uparam(3)=e/(one-nu*nu)
175 uparam(4)=nu*uparam(3)
176 g=half*e/(1.+nu)
177 uparam(5)=g
178 uparam(6)=nu
179 r=(r0+r45+r45+r90)*fourth
180 h=r/(one+r)
181
182 uparam(7)=h*(one+one/r0)
183 uparam(8)=h*(one+one/r90)
184 uparam(9)=h*two
185 uparam(10)=(r45*two + one)*(uparam(7)+uparam(8)-uparam(9))
186 IF (ir0 > 0) THEN
187 uparam(8)=uparam(8)/uparam(7)
188 uparam(9)=uparam(9)/uparam(7)
189 uparam(10)=uparam(10)/uparam(7)
190 uparam(7)=one
191 END IF
192 uparam(11)=one/x2fac
193 uparam(12)=yfac
194 uparam(13)=epsmax
195 uparam(14)=epsr1
196 uparam(15)=epsr2
197 uparam(16)=two*g
198 uparam(17)=three*g
199 c1=e/3./(one - two*nu)
200 uparam(18)=c1
201 uparam(19)=c1+ four_over_3*g
202 uparam(20)=t0
203 IF(rhocp==zero)THEN
204 uparam(21)=zero
205 ELSE
206 uparam(21)=one/rhocp
207 END IF
208
209 opte = 0
210 IF (ifunce > 0 )opte = 1
211 nfunc = 1
212 ifunc(nfunc) = ifunce
213 uparam(22) = nfunc
214 uparam(23) = opte
215 uparam(24) = einf
216 uparam(25) = ce
217
218 nuparam =25
219
220 parmat(1)=c1
221 parmat(2)=e
222 parmat(3)=nu
223 nuvar = 7
224
225 parmat(16) = 2
226 parmat(17) = (one - two*nu)/(one - nu)
227
231
233
234 ! Properties compatibility
235 CALL INIT_MAT_KEYWORD(MATPARAM,"shell_orthotropic")
236
237 WRITE(IOUT,1001) TRIM(TITR),MAT_ID,73
238 WRITE(IOUT,1000)
239 IF(IS_ENCRYPTED)THEN
240 WRITE(IOUT,'(5X,A,//)')'CONFIDENTIAL DATA'
241 ELSE
242 WRITE(IOUT,1002)RHO0
243 WRITE(IOUT,1100)E,NU,G,R0,R45,R90,FISOKIN
244 IF (IR0 >0) WRITE(IOUT,1110)
245 WRITE(IOUT,1300)EPSMAX,EPSR1,EPSR2
246 WRITE(IOUT,1200)ITABLE(1),X2FAC,YFAC
247 WRITE(IOUT,1400)T0,RHOCP,IFUNCE,EINF,CE
248 WRITE(IOUT,*)' '
249 ENDIF
250
251 RETURN
252 1001 FORMAT(
253 & 5X,A,/,
254 & 5X,'MATERIAL NUMBER . . . . . . . . . . . .=',I10/,
255 & 5X,'MATERIAL LAW. . . . . . . . . . . . . .=',I10/)
256 1002 FORMAT(
257 & 5X,'INITIAL DENSITY . . . . . . . . . . . .=',1PG20.13/)
258 1000 FORMAT(
259 & 5X,47H THERMAL TABULATED HILL ORTHOTROPIC PLASTICITY,/,
260 & 5X,47H ---------------------------------------------,//)
261 1100 FORMAT(
262 & 5X,'YOUNG MODULUS . . . . . . . . . . . . .=',1PG20.13/
263 & 5X,'POISSON RATIO . . . . . . . . . . . . .=',1PG20.13/
264 & 5X,'SHEAR MODULUS . . . . . . . . . . . . .=',1PG20.13/
265 & 5X,'LANKFORD COEFFICIENT R00. . . . . . . .=',1PG20.13/
266 & 5X,'LANKFORD COEFFICIENT R45. . . . . . . .=',1PG20.13/
267 & 5X,'LANKFORD COEFFICIENT R90. . . . . . . .=',1PG20.13/
268 & 5X,'ISO-KINEMATIC HARDENNING FACTOR. . . . =',1PG20.13)
269 1110 FORMAT(
270 & 5X,'YIELD STRESS IS SUPPOSSD IN ORTHOTROPIC DIR. 1 '/)
271 1200 FORMAT(
272 & 5X,'YIELD STRESS TABLE NUMBER . . . . . . .=',I10/
273 & 5X,'2ND ENTRY (STRAIN RATE) SCALE FACTOR. .=',1PG20.13/
274 & 5X,'YIELD SCALE FACTOR. . . . . . . . . . .=',1PG20.13)
275 1300 FORMAT(
276 & 5X,'MAXIMUM PLASTIC STRAIN. . . . . . . . .=',1PG20.13/
277 & 5X,'TENSILE FAILURE STRAIN 1. . . . . . . .=',1PG20.13/
278 & 5X,'TENSILE FAILURE STRAIN 2. . . . . . . .=',1PG20.13)
279 1400 FORMAT(
280 & 5X,'INITIAL TEMPERATURE . . . . . . . . . .=',1PG20.13/
281 & 5X,'HEAT CAPACITY PER VOLUME UNIT . . . . .=',1PG20.13/
282 & 5X,'YOUNG MODULUS SCALE FACTOR FUNCTION . .=',I10/
283 & 5X,'YOUNG MODULUS EINF. . . . . . . . . . .=',1PG20.13/
284 & 5X,'PARAMETER CE. . . . . . . . . . . . . .=',1PG20.13)
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
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)