42
43
44
48 USE matparam_def_mod
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "units_c.inc"
69#include "param_c.inc"
70
71
72
73 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
74 INTEGER, INTENT(IN) :: MAT_ID,MAXUPARAM,MAXFUNC
75 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
76 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
77 INTEGER, INTENT(INOUT) :: ,NUPARAM,NUVAR,NFUNC
78 INTEGER, DIMENSION(MAXFUNC) ,INTENT(INOUT) :: IFUNC
79 my_real,
DIMENSION(MAXUPARAM) ,
INTENT(INOUT) :: uparam
80 my_real,
DIMENSION(100),
INTENT(INOUT) :: parmat
81 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
82 TYPE(MATPARAM_STRUCT_) ,INTENT(INOUT) :: MATPARAM
83
84
85
86 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
88 . mu(100),al(100),nu,nu0,rho0,
89 . gs,p,d(100),zep495,rhor
90 INTEGER I,NORDRE,,COUNT
91
92 is_encrypted = .false.
93 is_available = .false.
94 imatvis = 1
95 ilaw = 82
96 zep495 = zep4 + nine*em02 + five*em03
97 nfunc = 0
98
100
101 CALL hm_get_floatv(
'MAT_RHO' ,rho0 ,is_available, lsubmodel, unitab)
102 CALL hm_get_floatv(
'Refer_Rho' ,rhor ,is_available, lsubmodel, unitab)
103
104 CALL hm_get_floatv(
'MAT_NU' ,nu0 ,is_available, lsubmodel, unitab)
105 CALL hm_get_intv(
'ORDER' ,nordre ,is_available,lsubmodel)
106
107 DO i=1,nordre
111 ENDDO
112
113 count = 0
114 DO i=1,nordre
115 IF (mu(i) /= zero .and. al(i) /= zero) THEN
116 count = count + 1
117 ELSE
118 EXIT
119 END IF
120 ENDDO
121 nordre = count
122
123 IF(nordre == 0)THEN
124 CALL ancmsg(msgid=559, msgtype=msgerror, anmode=aninfo_blind_1,
125 . i1=mat_id, c1=titr)
126 ENDIF
127
128 gs = zero
129 DO i=1,nordre
130 gs = gs + mu(i)
131 ENDDO
132
133 IF (gs < zero) THEN
134 CALL ancmsg(msgid=846, msgtype=msgerror, anmode=aninfo,
135 . i1=mat_id, c1=titr)
136 ENDIF
137
138 IF(nu0 == half) nu0= zep495
139 IF(nu0 == zero ) THEN
140 IF( d(1) > zero) THEN
141 p=two/d(1)
142 nu = one/(six*p + two*gs)
143 nu = (three*p - two*gs)*nu
144 IF(nu == half) nu= zep499
145 d(1) = three*(one - two*nu)/gs/(one + nu)
146 p = two/d(1)
147 ELSE
148 nu = zep495
149 d(1) = three*(one - two*nu)/gs/(one + nu)
150 p = two/d(1)
151 ENDIF
152 ELSE
153 nu = nu0
154 d(1) = three*(one - two*nu)/gs/(one + nu)
155 p = two/d(1)
156 ENDIF
157
158 uparam(1) = nordre
159 DO i=1,nordre
160 uparam(1 + i ) = mu(i)
161 uparam(1 + nordre + i) = al(i)
162 uparam(1 + 2*nordre + i) = d(i)
163 ENDDO
164 nuparam = 1 + 3*nordre
165 nuvar = 1
166 parmat(1) = p
167 parmat(2) = two*gs*(one + nu)
168 parmat(3) = nu
169 parmat(6) = p
170
171 IF(rhor==zero)rhor=rho0
172 pm(1) =rhor
173 pm(89)=rho0
174
178
181
182 WRITE(iout,1010) trim(titr),mat_id,ilaw
183 WRITE(iout,1000)
184 IF(is_encrypted)THEN
185 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
186 ELSE
187 WRITE(iout,1020)rho0
188 WRITE(iout,1100)nordre,nu,gs
189 IF (nordre >= 1) WRITE(iout,1201) mu(1) ,al(1) ,d(1)
190 IF (nordre >= 2) WRITE(iout,1202) mu(2) ,al(2) ,d(2)
191 IF (nordre >= 3) WRITE(iout,1203) mu(3) ,al(3) ,d(3)
192 IF (nordre >= 4) WRITE(iout,1204) mu(4) ,al(4) ,d(4)
193 IF (nordre >= 5) WRITE(iout,1205) mu(5) ,al(5) ,d(5)
194 IF (nordre >= 6) WRITE(iout,1206) mu(6) ,al(6) ,d(6)
195 IF (nordre >= 7) WRITE(iout,1207) mu(7) ,al(7) ,d(7)
196 IF (nordre >= 8) WRITE(iout,1208) mu(8) ,al(8) ,d(8)
197 IF (nordre >= 9) WRITE(iout,1209) mu(9) ,al(9) ,d(9)
198 IF (nordre ==10) WRITE(iout,1210) mu(10),al(10),d(10)
199 ENDIF
200
201 1000 FORMAT
202 & (5x, 'OGDEN HYPERELASIC LAW' ,/,
203 & 5x, ' ---------------',//)
204 1010 FORMAT(/
205 & 5x,a,/,
206 & 5x,'MATERIAL NUMBER. . . . . . . . . . . . . .=',i10/,
207 & 5x,'MATERIAL LAW . . . . . . . . . . . . . . .=',i10/)
208 1020 FORMAT(
209 & 5x,'INITIAL DENSITY. . . . . . . . . . . . . .=',1pg20.13/)
210 1100 FORMAT
211 & (5x,'ORDER OF STRAIN ENERGY . . . . . . . . . .=',i10/
212 & 5x,'POISSON RATIO. . . . . . . . . . . . . . .=',1pg20.13/
213 & 5x,'INITIAL SHEAR MODULUS. . . . . . . . . . .=',e12.4/)
214 1201 FORMAT(
215 & 5x,'MATERIAL PARAMETER (MU1). . . . . . . . . .=',1pg20.13/
216 & 5x,'MATERIAL PARAMETER (ALPHA1) . . . . . . . .=',1pg20.13/
217 & 5x,'MATERIAL PARAMETER (D1) . . . . . . . . . .=',1pg20.13)
218 1202 FORMAT(
219 & 5x,'MATERIAL PARAMETER (MU2). . . . . . . . . .=',1pg20.13/
220 & 5x,'MATERIAL PARAMETER (ALPHA2) . . . . . . . .=',1pg20.13/
221 & 5x,'MATERIAL PARAMETER (D2) . . . . . . . . . .=',1pg20.13)
222 1203 FORMAT(
223 & 5x,'MATERIAL PARAMETER (MU3). . . . . . . . . .=',1pg20.13/
224 & 5x,'MATERIAL PARAMETER (ALPHA3) . . . . . . . .=',1pg20.13/
225 & 5x,'MATERIAL PARAMETER (D3) . . . . . . . . . .=',1pg20.13)
226 1204 FORMAT(
227 & 5x,'MATERIAL PARAMETER (MU4). . . . . . . . . .=',1pg20.13/
228 & 5x,'MATERIAL PARAMETER (ALPHA4) . . . . . . . .=',1pg20.13/
229 & 5x,'MATERIAL PARAMETER (D4) . . . . . . . . . .=',1pg20.13)
230 1205 FORMAT(
231 & 5x,'MATERIAL PARAMETER (MU5). . . . . . . . . .=',1pg20.13/
232 & 5x,'MATERIAL PARAMETER (ALPHA5) . . . . . . . .=',1pg20.13/
233 & 5x,'MATERIAL PARAMETER (D5) . . . . . . . . . .=',1pg20.13)
234 1206 FORMAT(
235 & 5x,'MATERIAL PARAMETER (MU6). . . . . . . . . .=',1pg20.13/
236 & 5x,'MATERIAL PARAMETER (ALPHA6) . . . . . . . .=',1pg20.13/
237 & 5x,'MATERIAL PARAMETER (D6) . . . . . . . . . .=',1pg20.13)
238 1207 FORMAT(
239 & 5x,'material parameter(mu7). . . . . . . . . .=',1PG20.13/
240 & 5X,'material parameter(alpha7) . . . . . . . .=',1PG20.13/
241 & 5X,'material parameter(d7) . . . . . . . . . .=',1PG20.13)
242 1208 FORMAT(
243 & 5X,'material parameter(mu8). . . . . . . . . .=',1PG20.13/
244 & 5X,'material parameter(alpha8) . . . . . . . .=',1PG20.13/
245 & 5X,'material parameter(d8) . . . . . . . . . .=',1PG20.13)
246 1209 FORMAT(
247 & 5X,'material parameter(mu9). . . . . . . . . .=',1PG20.13/
248 & 5X,'material parameter(alpha9) . . . . . . . .=',1PG20.13/
249 & 5X,'material parameter(d9) . . . . . . . . . .=',1PG20.13)
250 1210 FORMAT(
251 & 5X,'material parameter(mu10) . . . . . . . . .=',1PG20.13/
252 & 5X,'material parameter(alpha10). . . . . . . .=',1PG20.13/
253 & 5X,'material parameter(d10). . . . . . . . . .=',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_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)