OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_wind_frwave.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| fail_wind_frwave ../engine/source/materials/fail/alter/fail_wind_frwave.F
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.F90
27!|| usermat_shell ../engine/source/materials/mat_share/usermat_shell.F
28!||--- calls -----------------------------------------------------
29!|| fail_brokmann ../engine/source/materials/fail/alter/fail_brokmann.F
30!||--- uses -----------------------------------------------------
31!|| rupture_mod ../engine/share/modules/rupture_mod.F
32!||====================================================================
33 SUBROUTINE fail_wind_frwave(
34 1 NEL ,NUPARAM ,NUVAR ,UPARAM ,UVAR ,
35 2 TIME ,TIMESTEP ,SSP ,ALDT ,FWAVE_EL ,
36 3 TDEL1 ,TDEL2 ,OFF ,OFFLY ,FOFF ,
37 4 SIGNXX ,SIGNYY ,SIGNXY ,DFMAX ,NGL ,
38 5 ILAY ,IPT ,NPT ,CRKDIR ,DADV ,
39 6 DMG_FLAG ,TRELAX )
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE rupture_mod
44c-----------------------------------------------
45c Windshield failure model with crack propagation (ref : PhD thesis Christian Alter 2018)
46c front fawe propagation
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C-----------------------------------------------
52C G l o b a l P a r a m e t e r s
53C-----------------------------------------------
54#include "units_c.inc"
55#include "comlock.inc"
56C---------+---------+---+---+--------------------------------------------
57C VAR | SIZE |TYP| RW| DEFINITION
58C---------+---------+---+---+--------------------------------------------
59C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
60C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
61C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
62C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
63C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
64C---------+---------+---+---+--------------------------------------------
65C TIME | 1 | F | R | CURRENT TIME
66C TIMESTEP| 1 | F | R | CURRENT TIME STEP
67C---------+---------+---+---+--------------------------------------------
68C SIGNXX | NEL | F | R | STRESS XX
69C SIGNYY | NEL | F | R | STRESS YY
70C ... | | | |
71C---------+---------+---+---+--------------------------------------------
72C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
73C---------+---------+---+---+--------------------------------------------
74C D u m m y A r g u m e n t s
75C-----------------------------------------------
76 INTEGER ,INTENT(IN) :: NEL,NUPARAM,NUVAR,ILAY,IPT,NPT
77 INTEGER ,INTENT(INOUT) :: DMG_FLAG
78 INTEGER, DIMENSION(NEL) ,INTENT(IN) :: NGL,FWAVE_EL
79 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: OFFLY,FOFF
80c
81 my_real :: TIME,TIMESTEP,TRELAX
82 my_real, DIMENSION(NUPARAM) ,INTENT(IN) :: uparam
83 my_real, DIMENSION(NEL) :: ssp,aldt,tdel1,tdel2,
84 . signxx,signyy,signxy
85 my_real ,DIMENSION(NEL,2) ,INTENT(OUT) :: crkdir
86 my_real ,DIMENSION(NEL) ,INTENT(INOUT) :: off,dfmax,dadv
87 my_real ,DIMENSION(NEL,NUVAR), TARGET, INTENT(INOUT) :: uvar
88C-----------------------------------------------
89C L o c a l V a r i a b l e s
90C-----------------------------------------------
91 INTEGER I,J,NINDXF1,NINDXF2,NINDXD1,NINDXD2,IDEB,IMOD,ISRATE,
92 . iside,itglass
93 INTEGER ,DIMENSION(NEL) :: INDXF1,INDXF2,INDXD1,INDXD2,RFLAG
94c
95 my_real SIGMAX,AA,BB,CC,CR,COSX,SINX,S1,S2,S3,K_IC,K_TH,
96 . GEORED,CR_FOIL,CR_AIR,CR_CORE,CR_EDGE,ALPHA,ALPHAI,BETA,
97 . kres1,kres2,exp_n,exp_m,v0,vc,reflen,dmg1,dmg2,dmg3,tanphi
98 my_real ,DIMENSION(NEL) :: tpropg,ai,formf,sigp_akt,dam1,dam2,
99 . sigp1,sigp2,sigdt1,sigdt2,sig_dtf1,sig_dtf2,sigp_min,sigp_max,
100 . sp1,sp2,sp3,sin2,cos2,cosi,tfact1,tfact2,cr_len,cr_depth,cr_ang
101 my_real, DIMENSION(:), POINTER :: dir1,dir2
102c--------------------------------------------------------------------
103c--- state variables for Ch.Alter model
104c UVAR(1) = SIGP1 ! principal stress DIR1
105c UVAR(1) = SIGP2 ! principal stress DIR2
106c UVAR(3) = SIGDT1 ! filtered principal stress rate DIR1
107c UVAR(4) = SIGDT2 ! filtered principal stress rate DIR2
108c UVAR(5) = SIGP_MIN
109c UVAR(6) = SIGP_MAX
110c UVAR(7) = FORMF
111c UVAR(8) = AI ! crack depth
112c UVAR(9) = SIGP_AKT
113c UVAR(10) = edge element flag
114c UVAR(11) = DAM1
115c UVAR(12) = DAM2
116c UVAR(13) = SIG_DTF1
117c UVAR(14) = SIG_DTF2
118c--- state variables for Ch.Brokmann extension
119c UVAR(15) = FAIL_B : Failure flag, set = 1 to allow Alter test
120c UVAR(16) = CR_LEN : Crack length
121c UVAR(17) = CR_DEPTH : Crack width
122c UVAR(18) = CR_ANG : Random crack angle
123c UVAR(19) = THK0 : Initial thickness of the shell (in micrometers)
124c UVAR(20) = ALDT0 : Initial width of the shell (in micrometers)
125c UVAR(21) = SIG_COS : Crack opening stress (saved for filtering)
126C=======================================================================
127 rflag(1:nel) = 0
128 nindxf1 = 0
129 nindxf2 = 0
130 nindxd1 = 0
131 nindxd2 = 0
132c--------------------------------------------------------------------
133 exp_n = uparam(1)
134 cr_foil = uparam(2)
135 cr_air = uparam(3)
136 cr_core = uparam(4)
137 cr_edge = uparam(5)
138 k_ic = uparam(6)
139 k_th = uparam(7)
140 v0 = uparam(8)
141 vc = uparam(9)
142 alpha = uparam(10)
143 geored = uparam(11)
144 reflen = uparam(14)
145 imod = nint(uparam(15))
146 israte = nint(uparam(16))
147 ideb = nint(uparam(17))
148 iside = nint(uparam(18))
149 trelax = uparam(19)
150 kres1 = uparam(20)
151 kres2 = uparam(21)
152 itglass = nint(uparam(22))
153c
154 IF (trelax > 0) dmg_flag = 1
155 alphai = one - alpha
156 exp_m = one / (one + exp_n)
157c--------------------------------------------------------------------
158 sigp_min(1:nel) = uvar(1:nel,5)
159 sigp_max(1:nel) = uvar(1:nel,6)
160 formf(1:nel) = uvar(1:nel,7)
161 ai(1:nel) = uvar(1:nel,8)
162 sigp_akt(1:nel) = uvar(1:nel,9)
163 dam1(1:nel) = uvar(1:nel,11)
164 dam2(1:nel) = uvar(1:nel,12)
165c--------------------------------------------------------------------
166c Test of Ch.Brokmann criterion
167c--------------------------------------------------------------------
168 IF (itglass == 1 .and. (ipt == 1 .or. ipt == npt)) THEN
169 CALL fail_brokmann(
170 . nel ,nuparam ,nuvar ,time ,timestep ,
171 . uparam ,ngl ,signxx ,signyy ,signxy ,
172 . uvar ,off ,ipt ,nindxf1 ,indxf1 ,
173 . tdel1 )
174c
175 ELSE IF (time == zero) THEN ! ITGLASS==0 or (IPT/=1 and IPT/= NPT)
176c Brokmann model not actif => test only Alter failure model
177c
178 uvar(1:nel,15) = one
179c
180 END IF
181c--------------------------------------------------------------------
182 DO i = 1,nel
183 IF (fwave_el(i) > 0) THEN
184 dadv(i) = min(one, geored / sqrt(aldt(i)/reflen) ) ! reduction factor for advancement
185 rflag(i) = -1
186 uvar(i,15) = one
187 ELSE IF (dadv(i) < one) THEN
188 rflag(i) = -1
189 ELSE IF (dadv(i) == one) THEN
190 rflag(i) = 1
191 ENDIF
192 tpropg(i) = aldt(i) / min(vc,ssp(i))
193 tpropg(i) = max(tpropg(i), timestep)
194 END DO
195c--------------------------------------------------------------------
196c Principal stress
197c--------------------------------------------------------------------
198 DO i = 1,nel
199 s1 = signxx(i)
200 s2 = signyy(i)
201 cc = signxy(i)
202 aa = (s1 + s2)*half
203 bb = (s1 - s2)*half
204 cr = sqrt(bb**2 + cc**2)
205 sigp1(i) = aa + cr
206 sigp2(i) = aa - cr
207 sp1(i) = sigp1(i)
208 sp2(i) = sigp2(i)
209 sp3(i) = zero
210 END DO
211c--------------------------------------------------------------------
212c Calculate stress rate + filtering
213c--------------------------------------------------------------------
214 IF (israte == 0) THEN
215c exponential moving average with smoohting coefficient = alpha
216 DO i = 1,nel
217 IF (off(i) == one) THEN
218 sigdt1(i) = abs(sigp1(i) - uvar(i,1)) / max(timestep, em20)
219 sigdt2(i) = abs(sigp2(i) - uvar(i,2)) / max(timestep, em20)
220 sigdt1(i) = alpha * sigdt1(i) + alphai * uvar(i,3)
221 sigdt2(i) = alpha * sigdt2(i) + alphai * uvar(i,4)
222 ENDIF
223 END DO
224 ELSE
225c arythmetic moving average over 50 cycles
226 DO i = 1,nel
227 IF (off(i) == one) THEN
228 uvar(i,21) = abs(sigp1(i) - uvar(i,1)) / max(timestep, em20)
229 sigdt1(i) = uvar(i,3) + (uvar(i,21) - uvar(i,20+index_over_50_cycles(ngr_fail_wind))) / 50
230 uvar(i,20+index_over_50_cycles(ngr_fail_wind)) = uvar(i,21)
231c
232 uvar(i,71) = abs(sigp2(i) - uvar(i,2)) / max(timestep, em20)
233 sigdt2(i) = uvar(i,4) + (uvar(i,71) - uvar(i,70+index_over_50_cycles(ngr_fail_wind))) / 50
234 uvar(i,70+index_over_50_cycles(ngr_fail_wind)) = uvar(i,71)
235 ELSE
236 sigdt1(i) = zero
237 sigdt2(i) = zero
238 ENDIF
239 END DO
242 ENDIF
243c--------------------------------------------------------------------
244c Max strength calculation
245c--------------------------------------------------------------------
246 IF (ipt == npt) THEN ! top layer integration point
247 DO i = 1,nel
248 sig_dtf1(i) = sigp_akt(i) *abs(sigdt1(i))**exp_m
249 sig_dtf2(i) = sigp_akt(i) *abs(sigdt2(i))**exp_m
250 sig_dtf1(i) = max(sig_dtf1(i),sigp_min(i))
251 sig_dtf1(i) = min(sig_dtf1(i),sigp_max(i))
252 sig_dtf2(i) = max(sig_dtf2(i),sigp_min(i))
253 sig_dtf2(i) = min(sig_dtf2(i),sigp_max(i))
254 END DO
255 ELSEIF (ipt < npt) THEN ! inner integration points
256 DO i = 1,nel
257 IF (uvar(i,10) == one) THEN ! edge element => stress rate dependent
258 sig_dtf1(i) = sigp_akt(i)*abs(sigdt1(i))**exp_m
259 sig_dtf2(i) = sigp_akt(i)*abs(sigdt2(i))**exp_m
260 sig_dtf1(i) = max(sig_dtf1(i),sigp_min(i))
261 sig_dtf1(i) = min(sig_dtf1(i),sigp_max(i))
262 sig_dtf2(i) = max(sig_dtf2(i),sigp_min(i))
263 sig_dtf2(i) = min(sig_dtf2(i),sigp_max(i))
264 ELSE IF (iside == 1) THEN ! inner points are stress rate dependent in this case
265 sig_dtf1(i) = sigp_akt(i)*abs(sigdt1(i))**exp_m
266 sig_dtf2(i) = sigp_akt(i)*abs(sigdt2(i))**exp_m
267 sig_dtf1(i) = max(sig_dtf1(i),sigp_min(i))
268 sig_dtf1(i) = min(sig_dtf1(i),sigp_max(i))
269 sig_dtf2(i) = max(sig_dtf2(i),sigp_min(i))
270 sig_dtf2(i) = min(sig_dtf2(i),sigp_max(i))
271 ELSE ! inner integration points outside edge are stress rate independent
272 sig_dtf1(i) = sigp_max(i)
273 sig_dtf2(i) = sigp_max(i)
274 ENDIF
275 END DO
276 ENDIF
277c
278 DO i = 1,nel
279 sig_dtf1(i) = sig_dtf1(i)*dadv(i)
280 sig_dtf2(i) = sig_dtf2(i)*dadv(i)
281 END DO
282c--------------------------
283c test failure criteria in first direction
284c--------------------------
285 DO i = 1,nel
286 IF (off(i) == one) THEN
287 IF (tdel1(i) == zero) THEN ! no crack yet in the element
288 IF (sigp1(i) > sig_dtf1(i) .and. uvar(i,15) == one) THEN ! test Alter
289 tdel1(i) = time
290 nindxf1 = nindxf1+1 ! tag to save crack direction
291 indxf1(nindxf1) = i
292 ENDIF
293 ENDIF
294c
295 IF (tdel1(i) > zero) THEN ! damage started
296 tfact1(i) = (time - tdel1(i)) / tpropg(i)
297 tfact1(i) = min(one, tfact1(i))
298 IF (uvar(i,11) > zero .and. tfact1(i) == one) THEN
299 offly(i) = -1 ! time to propagate info about failure
300 ENDIF
301 dfmax(i) = max(dfmax(i), tfact1(i))
302 nindxd1 = nindxd1+1
303 indxd1(nindxd1) = i
304 ENDIF
305c
306 ENDIF
307 ENDDO
308c--------------------------
309c calculate and save principal stress direction when first failure occurs
310c--------------------------
311 IF (nindxf1 > 0) THEN
312#include "vectorize.inc"
313 DO j=1,nindxf1
314 i = indxf1(j)
315 s1 = signxy(i)
316 s2 = sigp1(i) - signxx(i)
317 cr = sqrt(s1**2 + s2**2)
318 IF (cr > zero) THEN
319 crkdir(i,1) = s1 / cr
320 crkdir(i,2) = s2 / cr
321 ELSEIF (s1 > s2) THEN
322 crkdir(i,1) = zero
323 crkdir(i,2) = one
324 ELSE
325 crkdir(i,1) = one
326 crkdir(i,2) = zero
327 ENDIF
328 ENDDO
329 ENDIF
330c-----------------------------------------------
331c apply progressive damage and turn the stress tensor back to the local system
332c-----------------------------------------------
333 IF (nindxd1 > 0) THEN
334#include "vectorize.inc"
335 DO j=1,nindxd1
336 i = indxd1(j)
337 s1 = signxx(i)
338 s2 = signyy(i)
339 s3 = signxy(i)
340 cosx = crkdir(i,1)
341 sinx = crkdir(i,2)
342 cos2(i) = cosx * cosx
343 sin2(i) = sinx * sinx
344 cosi(i) = cosx * sinx
345c rotate stress to previously saved crack direction
346 sp1(i) = cos2(i)*s1 + sin2(i)*s2 + two*cosi(i)*s3
347 sp2(i) = sin2(i)*s1 + cos2(i)*s2 - two*cosi(i)*s3
348 sp3(i) = cosi(i)*(s2 - s1) + (cos2(i) - sin2(i))*s3
349c
350 beta = max(zero , one - tfact1(i))
351 dmg1 = max(kres1, one - (one - kres1) * tfact1(i))
352 dmg3 = min(one, 0.6 + 0.4 * beta)
353 dam1(i) = dmg1
354c stress reduction
355 sp1(i) = sp1(i) * dmg1
356 sp3(i) = sp3(i) * dmg3
357c rotate reduced stress back to current element coordinate system
358 signxx(i) = cos2(i)*sp1(i) + sin2(i)*sp2(i) - two*cosi(i)*sp3(i)
359 signyy(i) = sin2(i)*sp1(i) + cos2(i)*sp2(i) + two*cosi(i)*sp3(i)
360 signxy(i) = cosi(i)*(sp1(i) - sp2(i)) + (cos2(i) - sin2(i))*sp3(i)
361 ENDDO
362 ENDIF
363c--------------------------
364c test failure criteria in second direction
365c--------------------------
366 DO i = 1,nel
367 IF (off(i) == one) THEN
368 IF (tdel1(i) > zero .and. tdel2(i) == zero) THEN
369 IF (sp2(i) > sig_dtf2(i)) THEN
370 tdel2(i) = time
371 nindxf2 = nindxf2 + 1
372 indxf2(nindxf2) = i
373 ENDIF
374 ENDIF
375c
376 IF (tdel2(i) > zero) THEN
377 tfact2(i) = (time - tdel2(i)) / tpropg(i)
378 tfact2(i) = min(one, tfact2(i))
379 IF (uvar(i,12) > zero .and. tfact2(i) == one) THEN
380 IF (offly(i) == 0) THEN ! DIR1 already fully cracked before
381 offly(i) = -2
382 ELSE IF (offly(i) == -1) THEN ! DIR1 just cracked in this cycle
383 offly(i) = -3
384 ENDIF
385 ENDIF
386 nindxd2 = nindxd2+1
387 indxd2(nindxd2) = i
388 ENDIF
389 ENDIF
390 ENDDO
391c----------------------------
392 IF (nindxd2 > 0) THEN
393#include "vectorize.inc"
394 DO j=1,nindxd2
395 i = indxd2(j)
396 beta = max(zero , one - tfact2(i))
397 dmg2 = max(kres2, one - (one - kres2) * tfact2(i))
398 dmg3 = min(one, 0.6 + 0.4 * beta)
399 dam2(i) = dmg2
400c stress reduction in 2nd direction
401 sp2(i) = sp2(i) * dmg2
402 sp3(i) = sp3(i) * dmg3
403c rotate reduced stress back to current element coordinate system
404 signxx(i) = cos2(i)*sp1(i) + sin2(i)*sp2(i) - two*cosi(i)*sp3(i)
405 signyy(i) = sin2(i)*sp1(i) + cos2(i)*sp2(i) + two*cosi(i)*sp3(i)
406 signxy(i) = cosi(i)*(sp1(i) - sp2(i)) + (cos2(i) - sin2(i))*sp3(i)
407 IF (dmg2 == zero) THEN
408 foff(i) = 0
409 ENDIF
410 ENDDO
411 ENDIF
412c-----------------------------------------------
413 DO i=1,nel
414 uvar(i,1) = sigp1(i)
415 uvar(i,2) = sigp2(i)
416 uvar(i,3) = sigdt1(i)
417 uvar(i,4) = sigdt2(i)
418 uvar(i,11) = dam1(i)
419 uvar(i,12) = dam2(i)
420 END DO
421c-----------------------------------------------
422 IF (nindxf1 > 0) THEN
423 DO j=1,nindxf1
424 i = indxf1(j)
425#include "lockon.inc"
426 IF (rflag(i) == 1) THEN
427c failure initialization
428 WRITE(iout, 3000) ngl(i),ilay,ipt
429 WRITE(istdo,3100) ngl(i),ilay,ipt,time
430 ELSEIF (rflag(i) == -1) THEN
431c failure advancement
432 WRITE(iout, 4000) ngl(i),ilay,ipt
433 WRITE(istdo,4100) ngl(i),ilay,ipt,time
434 ENDIF
435 IF (ideb == 1 .and. abs(rflag(i)) == 1) THEN
436 tanphi = atan(crkdir(i,2) / sign(max(abs(crkdir(i,1)),em20),crkdir(i,1)))
437 WRITE(iout,3500) ngl(i),tanphi,dadv(i)
438 WRITE(iout,3700) ngl(i),sigp1(i),sigdt1(i),sig_dtf1(i)
439 ENDIF
440#include "lockoff.inc"
441 ENDDO
442 ENDIF
443c-----------------------------------------------
444 IF (nindxf2 > 0) THEN
445 DO j=1,nindxf2
446 i = indxf2(j)
447#include "lockon.inc"
448 WRITE(iout, 5000) ngl(i),ilay,ipt
449 WRITE(istdo,5100) ngl(i),ilay,ipt,time
450 IF (ideb == 1 .and. abs(rflag(i)) == 1) THEN
451 WRITE(iout,3600) ngl(i),dadv(i)
452 WRITE(iout,3800) ngl(i),sigp2(i),sigdt2(i),sig_dtf2(i)
453 ENDIF
454#include "lockoff.inc"
455 ENDDO
456 ENDIF
457c-----------------------------------------------
458 3000 FORMAT(1x, 'FAILURE INITIALIZATION IN SHELL',i10,1x,' 1ST DIR, LAYER',i2,1x,'INT POINT',i2)
459 3100 FORMAT(1x, 'FAILURE INITIALIZATION IN SHELL',i10,1x,' 1ST DIR, LAYER',i2,1x,'INT POINT',i2,
460 . 1x, 'AT TIME ',1pe12.4)
461 3500 FORMAT(10x,'SHELL ',i10,' MAJ ANGLE= ',1pe12.4,' STRESS REDUCTION= ',1pe12.4)
462 3600 FORMAT(10x,'SHELL ',i10,' STRESS REDUCTION= ',1pe12.4)
463 3700 FORMAT(10x,'SHELL ',i10,' SIGP1=',1pe12.4,' SIGDT1=',1pe12.4,' SIG_DTF1=',1pe12.4)
464 3800 FORMAT(10x,'SHELL ',i10,' SIGP2=',1pe12.4,' SIGDT2=',1pe12.4,' SIG_DTF2=',1pe12.4)
465 4000 FORMAT(1x, 'FAILURE ADVANCEMENT IN SHELL',i10,1x,' 1ST DIR, LAYER',i2,1x,'INT POINT',i2)
466 4100 FORMAT(1x, 'FAILURE ADVANCEMENT IN SHELL',i10,1x,' 1ST DIR, LAYER',i2,1x,'INT POINT',i2,
467 . 1x, 'AT TIME ',1pe12.4)
468 5000 FORMAT(1x, 'FAILURE IN SHELL',i10,1x,' 2ND DIR, LAYER',i2,1x,'INT POINT',i2)
469 5100 FORMAT(1x, 'FAILURE IN SHELL',i10,1x,' 2ND DIR, LAYER',i2,1x,'INT POINT',i2,
470 . 1x, 'AT TIME ',1pe12.4)
471c-----------------------------------------------
472 RETURN
473 END
subroutine fail_brokmann(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signxy, uvar, off, ipt, nindxf, indxf, tdel)
subroutine fail_wind_frwave(nel, nuparam, nuvar, uparam, uvar, time, timestep, ssp, aldt, fwave_el, tdel1, tdel2, off, offly, foff, signxx, signyy, signxy, dfmax, ngl, ilay, ipt, npt, crkdir, dadv, dmg_flag, trelax)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer ngr_fail_wind
Definition rupture_mod.F:41
integer, dimension(:), allocatable index_over_50_cycles
Definition rupture_mod.F:40