31 SUBROUTINE law42_upd(MAT_PARAM,IOUT,TITR ,MAT_ID,PM, GAMA_INF)
42#include "implicit_f.inc"
50 CHARACTER(LEN=NCHARTITLE) ::
52 my_real,
DIMENSION(NPROPM) ,
INTENT(INOUT) :: pm
53 my_real ,
INTENT(IN) :: gama_inf
54 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MAT_PARAM
58 INTEGER I,K,NDATA,INDX,NORDER
60 my_real :: lam_min,lam_max,strain_min,strain_max,
61 . d11,d22,d12,lam1,lam2,lam3,lam12,invd1,invd2,gs,bulk,young,nu
62 my_real ,
DIMENSION(:),
ALLOCATABLE :: stress,stretch
63 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: ITAB_ON_A,INDEX
72 norder = mat_param%IPARAM(1)
74 IF (gama_inf < one)
THEN
77 mu(i) = mat_param%UPARAM(i) / gama_inf
78 al(i) = mat_param%UPARAM(10+i)
80 mat_param%UPARAM(i) = mu(i)
82 nu = mat_param%UPARAM(22)
83 bulk = gs*(one+nu)/
max(em20,three*(one-two*nu))
84 mat_param%UPARAM(21) = bulk
89 pm(24) = young/(one - nu**2)
93 pm(105) = gs/(bulk + two_third*gs)
95 WRITE(iout,2000) mat_id
96 WRITE(iout,2100) half*gs,bulk
97 WRITE(iout,2200) mu(1),mu(2),mu(3),mu(4),mu(5),mu(6),mu(7),mu(8)
100 mu(i) = mat_param%UPARAM(i)
101 al(i) = mat_param%UPARAM(10+i)
105 ALLOCATE (stretch(ndata))
106 ALLOCATE (stress(ndata))
107 ALLOCATE (itab_on_a(ndata))
108 ALLOCATE (index(ndata))
112 stretch(k)=stretch(k-1) + em3
116 WRITE(iout,1000)mat_id
124 lam2 = one/sqrt(lam1)
128 lam12 = (lam1*lam2)**(-al(k))
129 d11 = d11 + al(k)*mu(k) * (lam1**al(k) + lam12 )
130 d22 = d22 + al(k)*mu(k) * (lam2**al(k) + lam12 )
131 d12 = d12 + al(k)*mu(k) * lam12
135 invd2 = d11*d22 - d12**2
136 IF (invd1 > 0 .AND. invd2 > 0)
THEN
142 IF(indx > 0 .AND. indx < ndata)
THEN
146 strain_min = stretch(i) - one
147 WRITE(iout,1100)strain_min
151 strain_max = stretch(i) - one
152 WRITE(iout,1200)strain_max
166 lam12 = (lam1*lam2)**(-al(k))
167 d11 = d11 + al(k)*mu(k) * (lam1**al(k) + lam12 )
168 d22 = d22 + al(k)*mu(k) * (lam2**al(k) + lam12 )
169 d12 = d12 + al(k)*mu(k) * lam12
173 invd2 = d11*d22 - d12**2
174 IF (invd1 > 0 .AND. invd2 > 0)
THEN
180 IF(indx > 0 .AND. indx < ndata)
THEN
184 strain_min = stretch(i) - one
185 WRITE(iout,1100)strain_min
189 strain_max = stretch(i) - one
190 WRITE(iout,1200)strain_max
204 lam12 = (lam1*lam2)**(-al(k))
205 d11 = d11 + al(k)*mu(k) * (lam1**al(k) + lam12 )
206 d22 = d22 + al(k)*mu(k) * (lam2**al(k) + lam12 )
207 d12 = d12 + al(k)*mu(k) * lam12
211 invd2 = d11*d22 - d12**2
212 IF (invd1 > 0 .AND. invd2 > 0)
THEN
218 IF(indx > 0 .AND. indx < ndata)
THEN
222 strain_min = stretch(i) - one
223 WRITE(iout,1100)strain_min
227 strain_max = stretch(i) - one
228 WRITE(iout,1200)strain_max
234 DEALLOCATE (itab_on_a)
238 & (//5x,
'CHECK THE DRUCKER PRAGER STABILITY CONDITIONS ' ,/,
239 & 5x,
' -----------------------------------------------', /,
240 & 5x,
'MATERIAL LAW = OGDEN (LAW42) ',/,
241 & 5x,
'MATERIAL NUMBER =',i10,//)
243 & 7x,
'TEST TYPE = UNIXIAL ')
245 & 7x,
'TEST TYPE = BIAXIAL ')
247 & 7x,
'TEST TYPE = PLANAR (SHEAR)')
249 & 8x,
'COMPRESSION: UNSTABLE AT A NOMINAL STRAIN LESS THAN ',1pg20.13)
251 & 8x,
'TENSION: UNSTABLE AT A NOMINAL STRAIN LARGER THAN ',1pg20.13)
253 & (//5x,
'MODIFIED MATERIAL RIGIDITY ' ,/,
254 & 5x,
' ---------------------------', /,
255 & 5x,
'MATERIAL LAW = LAW42 ',/,
256 & 5x,
'MATERIAL NUMBER =',i10,//)
258 & 5x,
'INITIAL SHEAR MODULUS . . . . . . . . .=',e12.4/
259 & 5x,
'INITIAL BULK MODULUS. . .. . . . . . .=',e12.4//)
261 & (5x,
'MU1 . . . . . . . . . . . . . . . . . .=',1pg20.13/
262 & 5x,
'MU2 . . . . . . . . . . . . . . . . . .=',1pg20.13/
263 & 5x,
'MU3 . . . . . . . . . . . . . . . . . .=',1pg20.13/
264 & 5x,
'MU4 . . . . . . . . . . . . . . . . . .=',1pg20.13/
265 & 5x,
'MU5 . . . . . . . . . . . . . . . . . .=',1pg20.13/
266 & 5x,
'MU6 . . . . . . . . . . . . . . . . . .=',1pg20.13/
267 & 5x,
'MU7 . . . . . . . . . . . . . . . . . .=',1pg20.13/
268 & 5x,
'MU8 . . . . . . . . . . . . . . . . . .=',1pg20.13/
269 & 5x,
'MU9 . . . . . . . . . . . . . . . . . .=',1pg20.13/
270 & 5x,
'MU10. . . . . . . . . . . . . . . . . .=',1pg20.13/)