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