31 SUBROUTINE law62_upd(IOUT,TITR ,MAT_ID,NUPARAM,UPARAM, PM ,
42#include "implicit_f.inc"
50 CHARACTER(LEN=NCHARTITLE) :: TITR
51 INTEGER MAT_ID,IOUT,NUPARAM
52 my_real,
DIMENSION(NUPARAM),
INTENT(INOUT) :: uparam
54 my_real,
DIMENSION(:),
INTENT(INOUT) :: pm(npropm)
58 INTEGER NDATA,I,K,INDX,ITER,NORDRE,J,NPRONY
60 . lam_min,lam_max,strain_min,strain_max,
61 . d11,d22,d12,lam1,lam2,lam3,lam12,invd1,invd2,a1,a2,a3,d33,d13,d23,
62 . aa,b,bb,dt2,dt3,t2,t3,invd3,rv,bulk,gs,nug,young
63 my_real ,
DIMENSION(:),
ALLOCATABLE :: stress,stretch,mu,al,beta,
64 . muoveral,albeta,mubeta,nu
65 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: ITAB_ON_A,INDEX
73 ndata = nint((lam_max-lam_min)/em03)
75 nordre = nint(uparam(2))
76 nprony = nint(uparam(3))
77 ALLOCATE ( mu(nordre),al(nordre),beta(nordre),
78 . muoveral(nordre),albeta(nordre),mubeta(nordre),nu(nordre) )
80 mu(j) = uparam(6 + j)/gama_inf
81 al(j) = uparam(6 + nordre + j)
82 beta(j) = uparam(2*nordre + 2*nprony + 7 + j)
83 muoveral(j) = two*mu(j)/al(j)
84 albeta(j) = al(j)*beta(j)
85 mubeta(j) = mu(j)*beta(j)
86 nu(j) = one*beta(j)/(one + two*beta(j))
90 IF(gama_inf /= one)
THEN
94 bulk = bulk + two*mu(j)*(third + beta(j))
96 nug = half*(three*bulk - two*gs)/(three*bulk+ gs)
101 young = gs*(one + nug)
105 pm(24) = young/(one - nug**2)
109 pm(105) = gs/(bulk + two_third*gs)
112 ALLOCATE (stretch(ndata))
113 ALLOCATE (stress(ndata))
114 ALLOCATE (itab_on_a(ndata))
115 ALLOCATE (index(ndata))
119 stretch(k)=stretch(k-1) + em03
123 IF(gama_inf /= one )
THEN
124 WRITE(iout,1000) mat_id
125 WRITE(iout,1100) nug,gs*half,bulk,nordre
126 WRITE(iout,1200) (mu(j),al(j),nu(j),j=1,nordre)
128 WRITE(iout,2000)mat_id
147 aa = exp(al(j)*log(lam2))
148 bb = exp(-albeta(j)*log(rv))
149 t2 = t2 + muoveral(j)*(aa - bb)
150 dt2 = dt2 + two*mu(j)*aa + two*mubeta(j)*bb
153 IF(dt2 /= zero) lam2 = lam2 - t2/dt2
154 lam2 =
max(em03, lam2)
163 a1 = a1 + two*mu(j)*exp(al(j)*log(lam1))
164 a2 = a2 + two*mu(j)*exp(al(j)*log(lam2)
165 b = b + two*mubeta(j)*exp(-albeta(j)*log(rv))
172 invd1 = d11 + d22 + d33
173 invd2 = d11*d22 + d22*d33 + d11*d33 - three*aa
174 invd3 = d11*d22*d33 + two*aa*b - two*d22*aa - d11*aa
175 IF (invd1 > zero .AND. invd2 > zero .AND. invd3 > zero)
THEN
181 IF(indx > 0 .AND. indx < ndata)
THEN
184 IF(i > 1 .AND. i < ndata)
THEN
185 strain_min = stretch(i) - one
186 WRITE(iout,2100)strain_min
190 strain_max = stretch(i) - one
191 WRITE(iout,2200)strain_max
212 aa = exp(al(j)*log(lam3))
213 bb = exp(-albeta(j)*log(rv))
214 t3 = t3 + muoveral(j)*(aa - bb)
215 dt3 = dt3 + two*mu(j)* aa + two*mubeta(j)*bb
218 IF(dt3 /= zero) lam3 = lam3 - t3/dt3
219 lam3 =
max(em03, lam3)
227 a1 = a1 + two*mu(j)*exp(al(j)*log(lam1))
228 a3 = a3 + two*mu(j)*exp(al(j)*log(lam3))
229 b = b + two*mubeta(j)*exp(-albeta(j)*log(rv))
236 invd1 = d11 + d22 + d33
237 invd2 = d11*d22 + d22*d33 + d11*d33 - three*aa
238 invd3 = d11*d22*d33 + two*aa*b - two
239 IF (invd1 > zero .AND. invd2 > zero .AND. invd3 > zero)
THEN
245 IF(indx > 0 .AND. indx < ndata)
THEN
248 IF(i > 1 .AND. i < ndata)
THEN
249 strain_min = stretch(i) - one
250 WRITE(iout,2100)strain_min
254 strain_max = stretch(i) - one
255 WRITE(iout,2200)strain_max
276 aa = exp(al(j)*log(lam3))
277 bb = exp(-albeta(j)*log(rv))
278 t3 = t3 + muoveral(j)*(aa - bb )
279 dt3 = dt3 + two*mu(j)* aa + two*mubeta(j)*bb
282 IF(dt3 /= zero) lam3 = lam3 - t3/dt3
283 lam3 =
max(em03, lam3)
291 a1 = a1 + two*mu(j)*exp(al(j)*log(lam1))
292 a2 = a2 + two*mu(j)*exp(al(j)*log(lam2))
293 a3 = a3 + two*mu(j)*exp(al(j)*log(lam3))
294 b = b + two*mubeta(j)*exp(-albeta(j)*log(rv))
301 invd1 = d11 + d22 + d33
302 invd2 = d11*d22 + d22*d33 + d11*d33 - three*aa
303 invd3 = d11*d22*d33 + two*aa*b - two*d22*aa - d11
304 IF (invd1 > zero .AND. invd2 > zero .AND. invd3 > zero)
THEN
311 IF(indx > 0 .AND. indx < ndata)
THEN
314 IF(i > 1 .AND. i < ndata)
THEN
315 strain_min = stretch(i) - one
316 WRITE(iout,2100)strain_min
320 strain_max = stretch(i) - one
321 WRITE(iout,2200)strain_max
327 DEALLOCATE (itab_on_a)
329 DEALLOCATE ( mu,al,beta, muoveral,albeta,mubeta)
332 & (//5x,
'MODIFIED MATERIAL RIGIDITY ' ,/,
333 & 5x,
' ---------------------------', /,
334 & 5x,
'MATERIAL LAW = LAW62 ',/,
335 & 5x,
'MATERIAL NUMBER =',i10,//)
337 &(5x,
'EQUIVALENT POISSON RATIO . . . . . . .=',e12.4/
338 &,5x,
'INITIAL SHEAR MODULUS . . . . . . . . .=',e12.4/
339 & 5x,
'INITIAL BULK MODULUS. . .. . . . . . .=',e12.4//
340 &,5x,
'ORDER OF STRAIN ENERGY. . . . . . . . .=',i8)
342 & 7x,
'MATERIAL PARAMETER (MU). . . . . . . . =',e12.4/
343 & 7x,
'MATERIAL PARAMETER (ALPHA) . . . . . . =',e12.4/
344 & 7x,
'MATERIAL PARAMETER (NU) . . . . . . . =',e12.4/)
346 & (//5x,
'CHECK THE DRUCKER PRAGER STABILITY CONDITIONS ' ,/,
347 & 5x,
' -----------------------------------------------', /,
348 & 5x,
'MATERIAL LAW = LAW62 ',/,
349 & 5x,
'MATERIAL NUMBER =',i10,//)
351 & 7x,
'TEST TYPE = UNIXIAL ')
353 & 7x,
'TEST TYPE = BIAXIAL ')
355 & 7x,
'TEST TYPE = PLANAR (SHEAR)')
357 & 8x,
'COMPRESSION: UNSTABLE AT A NOMINAL STRAIN LESS THAN ',1pg20.13)
359 & 8x,
'TENSION: UNSTABLE AT A NOMINAL STRAIN LARGER THAN ',1pg20.13)