105
106
107
111
112
113
114#include "implicit_f.inc"
115
116
117
118#include "param_c.inc"
119
120
121
122 CHARACTER(LEN=NCHARTITLE) :: TITR
123 INTEGER MAT_ID,IOUT, NFUNC
124 INTEGER NPC(*), FUNC_ID(*)
125 my_real uparam(*),pld(*),pm(npropm)
126 INTEGER, DIMENSION(NFUNC):: IFUNC
127
128
129
130 INTEGER N_NETWORK,N,K,ITEST,ICHECK,II,JJ,NSTART,IC1,IC2,NOGD,NDATA,NMULA,
131 . TAB,NMUL,NTEMP,NPLAS,NVISC(10)
133 . e,nu,gs,rbulk, d,young,scalefac,
134 . errtol,ave_slope,mu,mu_max,mu_min,dx,lam,beta,
135 . lam_max,lam_min,amula(2)
136 my_real ,
DIMENSION(:),
ALLOCATABLE :: stress,stretch
137 LOGICAL IS_ENCRYPTED
138
139
140
141 is_encrypted = .false.
143 tab = 8
144 nstart = 2
145 errtol = fiveem3
146 ic1 = npc(ifunc(1))
147 ic2 = npc(ifunc(1)+1)
148
149 scalefac = uparam(tab +11)
150
151 nogd=(ic2-ic1)/2
152 ndata=nogd
153
154 ALLOCATE (stretch(nogd))
155 ALLOCATE (stress(nogd))
156
157 ave_slope = zero
158 jj=0
159 stretch=zero
160 stress=zero
161 mu=zero
162 rbulk=zero
163 gs=zero
164 lam_max= zero
165 lam_min= zero
166 DO ii = ic1,ic2-2,2
167 jj=jj+1
168 stretch(jj) = pld(ii) + one
169 stress(jj) = scalefac * pld(ii+1)
170 lam_max =
max(lam_max, abs(stretch(jj)))
171 ENDDO
172 nogd = jj
173 mu_max = zero
174 mu_min = 1e20
175 DO k = 1, ndata
176 dx = stretch(k) - one
177
178 IF (dx >= zero) THEN
180 ELSE
181
182 dx = abs(dx)
183 ENDIF
184 mu_max =
max(mu_max, stress(k) / dx)
185 ave_slope = ave_slope + abs(stress(k)) / dx
186 ENDDO
187 ave_slope = ave_slope / (one * ndata)
188 mu= ave_slope
189
190 lam =
max(seven,three*lam_max)
191
192 nmula = 2
193 amula(1) =
max(mu,mu_max)
194 amula(2) = lam
195 itest = uparam(tab +9)
196
197 IF(is_encrypted)THEN
198 WRITE(iout,'(5X,A,//)')'CONFIDENTIAL DATA'
199 ELSE
200 WRITE(iout,1000)
201 WRITE(iout,1001)trim(titr),mat_id
202 ENDIF
203
204 CALL law92_nlsqf(stretch,stress,nmula,nogd,amula,
205 . nstart, errtol,mat_id,titr,itest)
206
207 DEALLOCATE (stretch)
208 DEALLOCATE (stress)
209 nu = uparam( tab+10)
210 mu = amula(1)
211 lam = amula(2)
212 beta = one/lam/lam
213 gs= mu*(one + three*beta /five + eighty19*beta
214 . + 513.*beta**3/875. + 42039.*beta**4/67375.)
215 rbulk=two*gs*(one+nu)
216 . /
max(em30,three*(one-two*nu))
217 d= two/rbulk
218 uparam(tab + 6)=mu
219 uparam(tab + 7)=one/d
220 uparam(tab + 8)=beta
221 n_network = uparam(1)
222 nmul = uparam( 6)
223 ntemp = uparam( 7)
224 nplas = uparam( 8)
225 tab = tab + 10 + nmul + ntemp +nplas
226 DO n = 1, n_network
227 nvisc(n) = uparam(tab + 3)
228 tab = tab + 3 + nvisc(n)
229 ENDDO
230
231 uparam( tab + 1 )=gs
232 uparam( tab + 2 )=rbulk
233
234 young = two*gs*(one + nu)
235 pm(20) = young
236 pm(21) = nu
237 pm(22) = gs
238 pm(24) = young/(one - nu**2)
239 pm(32) = rbulk
240 pm(100) = rbulk
241
242 IF(.NOT.is_encrypted)WRITE(iout,1100)mu,d,lam,gs,rbulk
243
244
245
246 RETURN
247 1000 FORMAT
248 & (//5x, 'FITTED PARAMETERS FOR HYPERELASTIC_MATERIAL LAW100 ' ,/,
249 & 5x, ' --------------------------------------------------')
250 1001 FORMAT(
251 & 5x,a,/,
252 & 5x, 'MATERIAL NUMBER =',i10,//)
253 1100 FORMAT(
254
255 & 5x,'TYPE = ARRUDA-BOYCE ',/,
256 & 5x,'MU . . . . . . . . . . . . . . . . . . . .=',1pg20.13/
257 & 5x,'D. . . . . . . . . . . . . . . . . . . . .=',1pg20.13/
258 & 5x,'LAM. . . . . . . . . . . . . . . . . . . .=',1pg20.13/
259 & 5x,'GROUND-STATE SHEAR MODULUS . . . . . . . .=',1pg20.13/
260 & 5x,'BULK MODULUS . . . . . . . . . . . . . . .=',1pg20.13//)
261
262 RETURN
subroutine hm_option_is_encrypted(is_encrypted)
integer, parameter nchartitle