38 . MAXFAIL ,MAT_ID ,FAIL_ID ,IRUPT ,
39 . IXFEM ,IFAILWAVE,LSUBMODEL,UNITAB )
53#include "implicit_f.inc"
61 INTEGER ,
INTENT(IN) :: FAIL_ID
62 INTEGER ,
INTENT(IN) :: MAT_ID
63 INTEGER ,
INTENT(IN) :: IRUPT
64 INTEGER ,
INTENT(IN) :: MAXFAIL
67 INTEGER ,
INTENT(INOUT) :: IXFEM
68 INTEGER ,
INTENT(INOUT) :: IFAILWAVE
69 TYPE(fail_param_) ,
INTENT(INOUT) :: FAIL
70 TYPE(
fail_tag_) ,
DIMENSION(0:MAXFAIL) ,
INTENT(INOUT) :: FAIL_TAG
74 INTEGER :: NEMA,ELGR3N,ELGR4N,IDEB,IMOD,ISRATE,PERIOD,ISIDE,SEED,
76 my_real :: exp_n,cr_foil,cr_air,cr_core,cr_edge,k_ic,k_th,v0,vc,
77 .
alpha,geored,rlen,fac_l,tdelay,kres1,kres2,
78 . eta1,beta1,tau1,eta2,beta2,tau2,a_ref,sig_ini,pscale
79 LOGICAL :: IS_AVAILABLE,IS_ENCRYPTED
88 is_encrypted = .false.
89 is_available = .false.
100 CALL hm_get_floatv (
'Exp_n' ,exp_n ,is_available,lsubmodel,unitab)
103 CALL hm_get_intv (
'EMA' ,nema ,is_available,lsubmodel)
104 CALL hm_get_intv (
'Irate' ,israte ,is_available,lsubmodel)
105 CALL hm_get_intv (
'Iside' ,iside ,is_available,lsubmodel)
106 CALL hm_get_intv (
'mode' ,imod ,is_available,lsubmodel)
108 CALL hm_get_floatv (
'Cr_foil' ,cr_foil ,is_available,lsubmodel,unitab)
109 CALL hm_get_floatv (
'Cr_air' ,cr_air ,is_available,lsubmodel,unitab)
110 CALL hm_get_floatv (
'Cr_core' ,cr_core ,is_available,lsubmodel,unitab)
111 CALL hm_get_floatv (
'Cr_edge' ,cr_edge ,is_available,lsubmodel,unitab)
112 CALL hm_get_intv (
'grsh4N' ,elgr4n ,is_available,lsubmodel)
113 CALL hm_get_intv (
'grsh3N' ,elgr3n ,is_available,lsubmodel)
115 CALL hm_get_floatv (
'KIC' ,k_ic ,is_available,lsubmodel,unitab)
116 CALL hm_get_floatv (
'KTH' ,k_th ,is_available,lsubmodel,unitab)
117 CALL hm_get_floatv (
'Rlen' ,rlen ,is_available,lsubmodel,unitab)
118 CALL hm_get_floatv (
'Tdel' ,tdelay ,is_available,lsubmodel,unitab)
119 CALL hm_get_intv (
'OUT_FLAG' ,ideb ,is_available,lsubmodel)
121 CALL hm_get_floatv (
'Kres1' ,kres1 ,is_available,lsubmodel,unitab)
122 CALL hm_get_floatv (
'Kres2' ,kres2 ,is_available,lsubmodel,unitab)
125 CALL hm_get_floatv (
'Eta1' ,eta1 ,is_available,lsubmodel,unitab)
126 CALL hm_get_floatv (
'Beta1' ,beta1 ,is_available,lsubmodel,unitab)
127 CALL hm_get_floatv (
'Tau1' ,tau1 ,is_available,lsubmodel,unitab)
128 CALL hm_get_floatv (
'A_Ref' ,a_ref ,is_available,lsubmodel,unitab)
130 CALL hm_get_floatv (
'Eta2' ,eta2 ,is_available,lsubmodel,unitab)
131 CALL hm_get_floatv (
'Beta2' ,beta2 ,is_available,lsubmodel,unitab)
132 CALL hm_get_floatv (
'Tau2' ,tau2 ,is_available,lsubmodel,unitab)
134 CALL hm_get_floatv (
'Sig_0' ,sig_ini ,is_available,lsubmodel,unitab)
135 CALL hm_get_floatv (
'Pscale' ,pscale ,is_available,lsubmodel,unitab)
136 CALL hm_get_intv (
'Pflag' ,pflag ,is_available,lsubmodel)
137 CALL hm_get_intv (
'seed' ,seed ,is_available,lsubmodel)
142 geored = one / sqrt(pi)
144 IF (exp_n== zero) exp_n = 16.0
145 IF (rlen == zero)
THEN
156 ELSE IF (imod > 1)
THEN
163 IF (sig_ini*eta1*beta1*tau1 > zero)
THEN
165 IF (eta2 == zero) eta2 = eta1
166 IF (beta2 == zero) beta2 = beta1
167 IF (tau2 == zero) tau2 = tau1
173 IF (itglass == 1)
THEN
175 ELSE IF (israte == 1)
THEN
179 IF (nema == 0) nema = 15
180 IF (israte == 1)
THEN
185 alpha = two / (nema + 1)
187 fail%KEYWORD =
'WINDSHIELD-ALTER'
189 fail%FAIL_ID = fail_id
197 ALLOCATE (fail%UPARAM(fail%NUPARAM))
198 ALLOCATE (fail%IPARAM(fail%NIPARAM))
199 ALLOCATE (fail%IFUNC (fail%NFUNC))
200 ALLOCATE (fail%TABLE (fail%NTABLE))
202 fail%IPARAM(1) = seed
204 fail%UPARAM(1) = exp_n
205 fail%UPARAM(2) = cr_foil
206 fail%UPARAM(3) = cr_air
207 fail%UPARAM(4) = cr_core
208 fail%UPARAM(5) = cr_edge
209 fail%UPARAM(6) = k_ic
210 fail%UPARAM(7) = k_th
213 fail%UPARAM(10)=
alpha
214 fail%UPARAM(11)= geored
215 fail%UPARAM(12)= elgr4n
216 fail%UPARAM(13)= elgr3n
217 fail%UPARAM(14)= rlen
218 fail%UPARAM(15)= imod
219 fail%UPARAM(16)= israte
220 fail%UPARAM(17)= ideb
221 fail%UPARAM(18)= iside
222 fail%UPARAM(19)= tdelay
223 fail%UPARAM(20)= kres1
224 fail%UPARAM(21)= kres2
225 fail%UPARAM(22)= itglass
227 fail%UPARAM(23)= a_ref
228 fail%UPARAM(24)= eta1
229 fail%UPARAM(25)= beta1
230 fail%UPARAM(26)= tau1
231 fail%UPARAM(27)= eta2
232 fail%UPARAM(28)= beta2
233 fail%UPARAM(29)= tau2
234 fail%UPARAM(30)= sig_ini
235 fail%UPARAM(31)= pscale
236 fail%UPARAM(32)= pflag
237 fail%UPARAM(33)= unitab%FAC_M_WORK
238 fail%UPARAM(34)= unitab%FAC_L_WORK
239 fail%UPARAM(35)= unitab%FAC_T_WORK
245 IF (is_encrypted)
THEN
248 WRITE(iout,3000) exp_n,cr_foil,cr_air,cr_core,cr_edge,rlen,
249 . k_ic,k_th,v0,vc,kres1,kres2,tdelay,elgr4n,elgr3n,
250 . israte,period,iside,imod,ideb
251 IF (itglass == 1)
THEN
252 WRITE(iout,4000) eta1,beta1,tau1,eta2,beta2,tau2,sig_ini,a_ref,
258 & 5x,
' WINDSHIELD FAILURE MODEL (Christian Alter) ',/,
259 & 5x,
' -------------------------------------------- ',/)
261 & 5x,
' CONFIDENTIAL DATA '/,
262 & 5x,
' ----------------- '/)
264 & 5x,
'CRACK GROW EXPONENT . . . . . . . . . . . . . . . .=',e12.4/
265 & 5x,
'FOIL SIDE CRACK DEPTH . . . . . . . . . . . . . . .=',e12.4/
266 & 5x,
'AIR SIDE CRACK DEPTH. . . . . . . . . . . . . . . .=',e12.4/
267 & 5x,
'CORE CRACK DEPTH. . . . . . . . . . . . . . . . . .=',e12.4/
268 & 5x,
'EDGE ELEMENT CRACK DEPTH. . . . . . . . . . . . . .=',e12.4/
269 & 5x,
'REFERENCE ELEMENT LENGTH. . . . . . . . . . . . . .=',e12.4/
270 & 5x,
'K_IC. . . . . . . . . . . . . . . . . . . . . . . .=',e12.4/
271 & 5x,'k_th. . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
272 & 5X,'v_0 . . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
273 & 5X,'v_c . . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
274 & 5X,'residual stress factor in dir1. . . . . . . . . . .=
',E12.4/
275 & 5X,'residual stress factor in dir2. . . . . . . . . . .=
',E12.4/
276 & 5X,'time delay before element suppression . . . . . . .=
',E12.4/
277 & 5X,'edge 4n shell element group . . . . . . . . . . . .=
',I10/
278 & 5X,'edge 3n shell element group . . . . . . . . . . . .=
',I10/
279 & 5X,'stress rate filtering option. . . . . . . . . . . .=
',I3/
280 & 5X,' = 0 => exponential smoothing
',/
281 & 5X,' = 1 => linear smoothing, fixed period = 50
',/
282 & 5X,'stress rate filtering period(number of cycles). .=
',I10/
283 & 5X,'stress rate dependency flag flag(iside) : . . . .=
',I3/
284 & 5X,' = 0 => air side only
',/
285 & 5X,' = 1 => air and foil side
',/
286 & 5X,'failure propagation formulation flag(imod) : =
',I3/
287 & 5X,' = 0 => no propagation
',/
288 & 5X,' = 1 => xfem
',/
289 & 5X,' = 2 => isotropic frontwave
',/
290 & 5X,' = 3 => directional frontwave through edges
',/
291 & 5X,' = 4 => directional frontwave through diagonals
',/
292 & 5X,'extended output information . . . . . . . . . . . .=
',I3/)
294 & 5X,' stochastic failure model(christopher brokmann)
',/,
295 & 5X,'eta1. . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
296 & 5X,'beta1 . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
297 & 5X,'tau1. . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
298 & 5X,'eta2. . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
299 & 5X,'beta2 . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
300 & 5X,'tau2. . . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
301 & 5X,'initial surface stress. . . . . . . . . . . . . . .=
',E12.4/
302 & 5X,'reference element surface . . . . . . . . . . . . .=
',E12.4/
303 & 5X,'p_scale . . . . . . . . . . . . . . . . . . . . . .=
',E12.4/
304 & 5X,'pflag . . . . . . . . . . . . . . . . . . . . . . .=
',I3/
305 & 5X,'random seed . . . . . . . . . . . . . . . . . . . .=
',I3//)