39
40
41
42
43
44
45
46 USE fail_param_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "units_c.inc"
59
60
61
62 INTEGER ,INTENT(IN) :: FAIL_ID
63 INTEGER ,INTENT(IN) :: MAT_ID
64 INTEGER ,INTENT(IN) :: IRUPT
65 TYPE(UNIT_TYPE_) ,INTENT(IN) :: UNITAB
66 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
67 TYPE(FAIL_PARAM_) ,INTENT(INOUT) :: FAIL
68
69
70
71 INTEGER :: ISHELL,ISOLID
72 my_real :: k1,k2,k3,gama1,gama2,k,a,tmax,y0,yc,r
73 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
74
75 is_encrypted = .false.
76 is_available = .false.
77
78
79
80
81
83
84
85
86
90 CALL hm_get_floatv (
'Gamma_1' ,gama1 ,is_available,lsubmodel,unitab)
91 CALL hm_get_floatv (
'Gamma_2' ,gama2 ,is_available,lsubmodel,unitab)
92
95 CALL hm_get_floatv (
'k_LAD_DAMA' ,k ,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv (
'a_DAMA' ,a ,is_available,lsubmodel,unitab)
97 CALL hm_get_floatv (
'Tau_max' ,tmax ,is_available,lsubmodel,unitab)
98
99 CALL hm_get_intv (
'Ifail_sh' ,ishell ,is_available,lsubmodel)
100 CALL hm_get_intv (
'Ifail_so' ,isolid ,is_available,lsubmodel)
101
102
103
104 r = zero
105 y0 = sqrt(y0)
106 yc = sqrt(yc)
107 IF (k1 == zero) k1 = ep30
108 IF (k2 == zero) k2 = ep30
109 IF (k3 == zero) k3 = ep30
110 IF (a == zero)a = ep30
111 IF (y0 == zero) y0 = ep30
112 IF (yc == zero .OR. yc==y0)yc=two*y0
113 IF (a == zero)a = ep30
114 IF(tmax <= zero) tmax = ep20
115 IF(ishell == 0) ishell = 1
116 IF(isolid == 0) isolid = 1
117
118 fail%KEYWORD = 'LADEVEZE'
119 fail%IRUPT = irupt
120 fail%FAIL_ID = fail_id
121 fail%NUPARAM = 13
122 fail%NIPARAM = 0
123 fail%NUVAR = 12
124 fail%NFUNC = 0
125 fail%NTABLE = 0
126 fail%NMOD = 0
127
128 ALLOCATE (fail%UPARAM(fail%NUPARAM))
129 ALLOCATE (fail%IPARAM(fail%NIPARAM))
130 ALLOCATE (fail%IFUNC (fail%NFUNC))
131 ALLOCATE (fail%TABLE (fail%NTABLE))
132
133 fail%UPARAM(1) = k1
134 fail%UPARAM(2) = k2
135 fail%UPARAM(3) = k3
136 fail%UPARAM(4) = gama1
137 fail%UPARAM(5) = gama2
138 fail%UPARAM(6) = y0
139 fail%UPARAM(7) = yc
140 fail%UPARAM(8) = k
141 fail%UPARAM(9) = a
142 fail%UPARAM(10) = tmax
143 fail%UPARAM(11) = ishell
144 fail%UPARAM(12) = isolid
145 fail%UPARAM(13) = r
146
147 IF(is_encrypted)THEN
148
149 ELSE
150 WRITE(iout, 1000)k1,k2,k3,gama1,gama2,y0**2,yc**2,k,a,tmax
151
152 IF(isolid == 1)THEN
153 WRITE(iout, 1100)
154 ELSEIF(isolid == 2)THEN
155 WRITE(iout, 1200)
156 ELSEIF(isolid == 3)THEN
157 WRITE(iout, 1300)
158 ENDIF
159 ENDIF
160
161 1000 FORMAT(
163 & 5x,40h ------------------------ /,
164 & 5x,'Stiffness in direction 13. . . . . . . . . =',e12.4/
165 & 5x,'Stiffness in direction 23. . . . . . . . . =',e12.4/
166 & 5x,'Stiffness in direction 33. . . . . . . . . =',e12.4/
167 & 5x,'Coupling parameter GAMA1 . . . . . . . . . =',e12.4/
168 & 5x,'Coupling parameter GAMA2. . . . . . . . . =',e12.4/
169 & 5x,'Yield energy damage . . . . . . . . . . . =',e12.4/
170 & 5x,'Critical energy damage . . . . . . . . . =',e12.4/
171 & 5x,'Parameter k . . . . . . . . . . . . . . . . =',e12.4/
172 & 5x,'Parameter a . . . . . . . . . . . . . . . . =',e12.4/
173 & 5x,' Relaxation time . . . . . . . . . . . . . =',e12.4/)
174 1100 FORMAT(
175 & 5x,' SOLID IS DELETED IF CRITERIA IS REACHED FOR'/
176 & 5x,' ONE INTEGRATION POINT ')
177 1200 FORMAT(
178 & 5x,' SOLID IS DELETED IF CRITERIA IS REACHED FOR'/
179 & 5x,' ALL INTEGRATIONS POINTS ')
180 1300 FORMAT(
181 & 5x,' OUT OF PLANE STRESS ARE SET TO ZERO IF CRITERIA' /
182 & 5x,' IS REACHED FOR EACH INTEGRATION POINT ')
183
184 RETURN
subroutine delamination(elbuf_str, mat_param, jft, jlt, ir, is, npt, mat_iply, ipm, pm, bufmat, npf, tf, dt1c, ngl, off, th_iply, del_ply, sig, offi, a11, for, mom, ply_f, thk0, shf, exz, eyz, area, pid, geo, ssp, posly, thkly, kxx, kyy, kxy, dexz, deyz, eint, gstr, nel, nummat)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)