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,fac_l,fac_t,fac_m,fac_c,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)
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 !! used for delamination (plyxfem formulation)
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.OR. IF (YC == ZERO 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 ! used inside delamination failure (plyxfem formulation)
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(
162 & 5X,40H LADEVEZE DELAMINATION DAMAGE /,
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 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)
for(i8=*sizetab-1;i8 >=0;i8--)