36 SUBROUTINE law69_upd(IOUT,TITR ,MAT_ID,UPARAM,NFUNC,NFUNCT,
37 . IFUNC, FUNC_ID,NPC ,PLD ,PM,IPM, GAMA_INF)
47#include "implicit_f.inc"
55 CHARACTER(LEN=NCHARTITLE) :: TITR
57 INTEGER ,
INTENT(IN) :: NFUNC
58 INTEGER ,
INTENT(IN) :: NFUNCT
59 INTEGER NPC(*), FUNC_ID(NFUNCT) ,IPM(NPROPMI)
61 . uparam(*),pld(*),pm(npropm)
62 my_real ,
INTENT(IN) :: gama_inf
63 INTEGER,
DIMENSION(NFUNC):: IFUNC
69 INTEGER N_NETWORK,N,K,,ICHECK,II,JJ,NSTART,,IC2,NOGD,NDATA,NMULA,
70 . tab,nmual,iflag,is,i,indx,lawid, itag,is_encrypted
72 . mu(5),al(5),lam_min,lam_max,strain_min,strain_max,
73 . d11,d22,d12,lam1,lam2,lam3,lam12,invd1,invd2
75 . e,nu,gs,rbulk, d,young,
76 . errtol,ave_slope,g,mu_max,mu_min,dx,lam,beta,
77 . amula(2),mual(10),dy
78 my_real ,
DIMENSION(:),
ALLOCATABLE :: stress,stretch
79 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: ITAB_ON_A,INDEX
86 IF(ifunc(2) == 0 )
RETURN
89 iflag = nint(uparam(13))
90 icheck = nint(uparam(19))
91 nstart = nint(uparam(20))
92 is_encrypted = nint(uparam(21))
101 ALLOCATE (stretch(nogd))
102 ALLOCATE (stress(nogd))
117 stretch(jj) = pld(ii) + one
118 stress(jj) = pld(ii+1)
119 IF(pld(ii) < zero .AND. stress(jj) < zero ) itag = 1
120 IF(pld(ii) <= -one)
THEN
133 dy = stress(jj + 1) - stress(jj)
134 IF(dx <= zero .OR. dy <= zero)
THEN
145 IF (iflag == 2 .AND. nmual /= 4)
THEN
148 . anmode=aninfo_blind_1,
159 WRITE(iout,270)trim(titr),mat_id
160 IF(is_encrypted > 0)
WRITE(iout,
'(5X,A,//)')
'CONFIDENTIAL DATA'
162 IF (iflag == 1 .OR. iflag == 2)
THEN
164 CALL law69_nlsqf(lawid,stretch,stress,10,nmual,nogd,mual,
165 $ icheck, nstart, errtol,mat_id,titr,is_encrypted)
166 ELSEIF(iflag == -1)
THEN
168 IF(itag == 0) icheck = abs(icheck)
170 $ icheck, nstart, errtol,mat_id,titr,is_encrypted)
171 uparam(18) = nmual / 2
175 IF(gama_inf < one)
THEN
177 uparam(ii)=mual(2*ii-1)/gama_inf
178 uparam(ii+5)=mual(2*ii)
179 gs=gs + mual(2*ii-1)*mual(
181 IF(is_encrypted == 0)
WRITE(iout,100) mat_id
184 uparam(ii)=mual(2*ii-1)
185 uparam(ii+5)=mual(2*ii)
186 gs=gs+mual(2*ii-1)*mual(2*ii)
191 rbulk=gs*(one+uparam(14))
192 & /
max(em30,three*(one-two*uparam(14)))
196 young = gs*(one + nu)
200 pm(24) = young/(one - nu**2)
205 pm(105) = gs/(rbulk + two_third*g)
208 IF(is_encrypted == 0)
THEN
211 & uparam(1),uparam(2),uparam(3),uparam(4),
212 & uparam(5),uparam(6),uparam(7),uparam(8),
213 & uparam(9),uparam(10),g,rbulk
216 & uparam(1),uparam(2),uparam(6),uparam(7),
217 & half*uparam(1),-half*uparam(2),g,rbulk
235 ALLOCATE (stretch(ndata))
236 ALLOCATE (stress(ndata))
237 ALLOCATE (itab_on_a(ndata))
238 ALLOCATE (index(ndata))
242 stretch(k)=stretch(k-1) + em3
246 WRITE(iout,1000)mat_id
254 lam2 = one/sqrt(lam1)
258 lam12 = (lam1*lam2)**(-al(k))
259 d11=d11+ al(k)*mu(k) * (lam1**al(k) + lam12 )
261 d12=d12+ al(k)*mu(k) * lam12
265 invd2 = d11*d22 - d12**2
266 IF (invd1 > 0 .AND. invd2 > 0)
THEN
272 IF(indx > 0 .AND. indx < ndata)
THEN
276 strain_min = stretch(i) - one
277 WRITE(iout,1100)strain_min
281 strain_max = stretch(i) - one
282 WRITE(iout,1200)strain_max
296 lam12 = (lam1*lam2)**(-al(k))
297 d11=d11+ al(k)*mu(k) * (lam1**al(k) + lam12 )
298 d22=d22+ al(k)*mu(k) * (lam2**al(k) + lam12 )
299 d12=d12+ al(k)*mu(k) * lam12
303 invd2 = d11*d22 - d12**2
304 IF (invd1 > 0 .AND. invd2 > 0)
THEN
310 IF(indx > 0 .AND. indx < ndata)
THEN
314 strain_min = stretch(i) - one
315 WRITE(iout,1100)strain_min
319 strain_max = stretch(i) - one
320 WRITE(iout,1200)strain_max
334 lam12 = (lam1*lam2)**(-al(k))
335 d11=d11+ al(k)*mu(k) * (lam1**al(k) + lam12 )
336 d22=d22+ al(k)*mu(k) * (lam2**al(k) + lam12 )
337 d12=d12+ al(k)*mu(k) * lam12
341 invd2 = d11*d22 - d12**2
342 IF (invd1 > 0 .AND. invd2 > 0)
THEN
348 IF(indx > 0 .AND. indx < ndata)
THEN
352 strain_min = stretch(i) - one
353 WRITE(iout,1100)strain_min
357 strain_max = stretch(i) - one
358 WRITE(iout,1200)strain_max
363 DEALLOCATE (itab_on_a)
368 & (//5x,
'MODIFIED FITTED MATERIAL RIGIDITY ' ,/,
369 & 5x,
' ---------------------------', /,
370 & 5x,
'MATERIAL LAW = LAW69 ',/,
371 & 5x,
'MATERIAL NUMBER =',i10,//)
373 & (//5x,
'FITTED PARAMETERS FOR HYPERELASTIC_MATERIAL LAW69' ,/,
374 & 5x,
' ----------------------------------------')
377 & 5x, 'material number =
',I10,//)
379 & 5X, 'ogden law parameters:
',/
380 & ,5X, 'mu1 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
381 & ,5X, 'mu2 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
382 & ,5X, 'mu3 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
383 & ,5X, 'mu4 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
384 & ,5X, 'mu5 . . . . . . . . . . . . . . . . . .=
',1PG20.13//
385 & ,5X, 'al1 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
386 & ,5X, 'al2 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
387 & ,5X, 'al3 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
388 & ,5X, 'al4 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
389 & ,5X, 'al5 . . . . . . . . . . . . . . . . . .=
',1PG20.13//
390 & ,5X, 'initial shear
',1PG20.13/
391 & ,5X, 'bulk modulus. . . . . . . . . . . . . .=
',1PG20.13//)
393 & 5X, 'mooney-rivlin law parameters:
',/
394 & ,5X, 'mu1 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
395 & ,5X, 'mu2 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
396 & ,5X, 'al1 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
397 & ,5X, 'al2 . . . . . . . . .
',1PG20.13//
398 & ,5X, 'c10 . . . . . . . . . . . . . . . . . .=
',1PG20.13/
399 & ,5X, 'c01 . . . . . . . . . . . . . . . .
',1PG20.13/
400 & ,5X, 'initial shear modulus . . . . . . . . .=
',1PG20.13/
401 & ,5X, 'bulk modulus. . . . . . . . . . . . . .=
',1PG20.13//)
403 & (//5X, 'check
the drucker prager stability conditions
' ,/,
404 & 5X, ' -----------------------------------------------
', /,
405 & 5X, 'material law = ogden(law69)
',/,
406 & 5X, 'material number =
',I10,//)
408 & 7X,'test
TYPE = unixial
')
410 & 7X,'test
TYPE = biaxial
')
412 & 7X,'test
TYPE = planar (shear)
')
414 & 8X,'compression: unstable at a nominal strain less than ',1pg20.13)
416 & 8x,'tension: unstable at a nominal strain larger than
',1PG20.13//)
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)