OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_windshield_init.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"
#include "com04_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine fail_windshield_init (elbuf_str, mat_param, fail_brokmann, nel, nft, ity, igrsh4n, igrsh3n, aldt, thk, ngl)

Function/Subroutine Documentation

◆ fail_windshield_init()

subroutine fail_windshield_init ( type (elbuf_struct_) elbuf_str,
type (matparam_struct_), dimension(nummat), intent(inout) mat_param,
type (fail_brokmann_), intent(in) fail_brokmann,
integer nel,
integer nft,
integer ity,
type (group_), dimension(ngrshel) igrsh4n,
type (group_), dimension(ngrsh3n) igrsh3n,
intent(in) aldt,
intent(in) thk,
integer, dimension(nel), intent(in) ngl )

Definition at line 37 of file fail_windshield_init.F.

40!-----------------------------------------------
41! M o d u l e s
42!-----------------------------------------------
43 USE elbufdef_mod
44 USE matparam_def_mod
45 USE groupdef_mod
46 USE crack_depth_init_mod
47 USE brokmann_crack_init_mod
48 use brokmann_random_def_mod
49!-----------------------------------------------
50! I m p l i c i t T y p e s
51!-----------------------------------------------
52#include "implicit_f.inc"
53!-----------------------------------------------
54! C o m m o n B l o c k s
55!-----------------------------------------------
56#include "param_c.inc"
57#include "com04_c.inc"
58!-----------------------------------------------
59! d u m m y a r g u m e n t s
60!-----------------------------------------------
61 INTEGER NEL,NFT,ITY
62 INTEGER, DIMENSION(NEL) ,INTENT(IN) :: NGL
63 my_real, DIMENSION(NEL) ,INTENT(IN) :: aldt
64 my_real, DIMENSION(NEL) ,INTENT(IN) :: thk
65 TYPE (ELBUF_STRUCT_) :: ELBUF_STR
66 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
67 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
68 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
69 TYPE (FAIL_BROKMANN_) ,INTENT(IN) :: FAIL_BROKMANN
70!-----------------------------------------------
71! L o c a l V a r i a b l e s
72!-----------------------------------------------
73 INTEGER I,II,KK,IEL,ID,IL,IR,IS,IT,NPTR,NPTS,NPTT,IFL,ITGLASS,ELNUM,
74 . IGR,IGRID,NUMEL,IMAT,IRUPT,NFAIL,NUPARAM,NUVAR,NINDX,IVAR,NUM
75 INTEGER TAGSH(MAX(NUMELC,NUMELTG)),TAGEL(NEL),INDX(NEL)
76 EXTERNAL ngr2usrn
77 INTEGER NGR2USRN
78!-----------------------------------------------------------------------
79! Initialization of failure UVAR table => edge element flag for /FAIL/ALTER
80!=======================================================================
81 DO il=1, elbuf_str%NLAY
82 nfail = elbuf_str%BUFLY(il)%NFAIL
83 nptr = elbuf_str%NPTR
84 npts = elbuf_str%NPTS
85 nptt = elbuf_str%BUFLY(il)%NPTT
86 imat = elbuf_str%BUFLY(il)%IMAT
87 DO ir=1,nptr
88 DO is=1,npts
89 DO it=1,nptt
90 DO ifl = 1,nfail
91 irupt = mat_param(imat)%FAIL(ifl)%IRUPT
92 IF (irupt == 28) THEN ! windshield failure model
93 nuparam = mat_param(imat)%FAIL(ifl)%NUPARAM
94 nuvar = mat_param(imat)%FAIL(ifl)%NUVAR
95 itglass = nint(mat_param(imat)%FAIL(ifl)%UPARAM(22))
96!
97 ivar = nel*(10-1) ! edge element flag = UVAR(10)
98 igr = 0
99 IF (ity == 3) THEN
100 kk = ngrnod + ngrbric + ngrquad
101 igrid = mat_param(imat)%FAIL(ifl)%UPARAM(12)
102 mat_param(imat)%FAIL(ifl)%UPARAM(11) = one / sqrt(pi) ! GEORED for underintegrated 4N shells
103 IF (igrid > 0) igr = ngr2usrn(igrid,igrsh4n,ngrshel,num)
104 tagsh(1:numelc) = 0
105 ELSEIF (ity == 7) THEN
106 igrid = mat_param(imat)%FAIL(ifl)%UPARAM(13)
107 IF (igrid > 0) igr = ngr2usrn(igrid,igrsh3n,ngrsh3n,num)
108 tagsh(1:numeltg) = 0
109 ENDIF
110c
111 IF (igr > 0) THEN
112 tagel(1:nel) = 0
113 IF (ity == 3) THEN
114 numel = igrsh4n(igr)%NENTITY
115 DO iel=1,numel
116 ii = igrsh4n(igr)%ENTITY(iel)
117 tagsh(ii) = 1
118 ENDDO
119 ELSEIF (ity == 7) THEN
120 numel = igrsh3n(igr)%NENTITY
121 DO iel=1,numel
122 ii = igrsh3n(igr)%ENTITY(iel)
123 tagsh(ii) = 1
124 ENDDO
125 ENDIF ! IF (ITY == 3)
126 nindx = 0
127 DO i=1,nel
128 IF (tagsh(i+nft) == 1) THEN
129 nindx = nindx + 1
130 indx(nindx) = i
131 ENDIF
132 ENDDO
133 DO ii = 1,nindx
134 i = indx(ii)
135 elbuf_str%BUFLY(il)%FAIL(ir,is,it)%FLOC(ifl)%VAR(ivar + i) = 1
136 ENDDO
137 ENDIF
138!
139 END IF
140 END DO ! IFL = 1,NFAIL
141 END DO ! IT=1,NPTT
142 END DO ! IT=1,NPTS
143 END DO ! IT=1,NPTR
144 END DO ! IL=1,NLAY
145!-----------------------------------------------------------------------------
146! crack depth initialization depending on element and Gauss point position
147!-----------------------------------------------------------------------------
148 DO il=1, elbuf_str%NLAY
149 nfail = elbuf_str%BUFLY(il)%NFAIL
150 nptr = elbuf_str%NPTR
151 npts = elbuf_str%NPTS
152 nptt = elbuf_str%BUFLY(il)%NPTT
153 imat = elbuf_str%BUFLY(il)%IMAT
154 DO ir=1,nptr
155 DO is=1,npts
156 DO it=1,nptt
157 DO ifl = 1,nfail
158 irupt = mat_param(imat)%FAIL(ifl)%IRUPT
159 IF (irupt == 28) THEN ! windshield failure model
160 nuparam = mat_param(imat)%FAIL(ifl)%NUPARAM
161 nuvar = mat_param(imat)%FAIL(ifl)%NUVAR
162 itglass = nint(mat_param(imat)%FAIL(ifl)%UPARAM(22))
163!
164 ! Ch.Alter criterion - crack depth initialization
165!
166 CALL crack_depth_init(nel ,it ,nptt ,nuparam ,nuvar,
167 . mat_param(imat)%FAIL(ifl)%UPARAM,
168 . elbuf_str%BUFLY(il)%FAIL(ir,is,it)%FLOC(ifl)%VAR,
169 . elbuf_str%BUFLY(il)%FAIL(ir,is,it)%FLOC(ifl)%DAMMX,
170 . elbuf_str%GBUF%DMG )
171!
172 ! Ch.Brokmann criterion - random crack initialization
173!
174 IF (itglass == 1 .and. (it == 1 .or. it == nptt)) THEN
175 DO ii = 1,fail_brokmann%NFAIL
176 IF (fail_brokmann%BROKMANN(ii)%IMAT == imat) THEN
177 ! tag elements of current group in brokmann element list
178 nindx = 0
179 indx(1:nel) = 0
180 do kk = 1,fail_brokmann%brokmann(ii)%nelem
181 id = fail_brokmann%brokmann(ii)%brokmann_elem(kk)%id
182 do iel=1,nel
183 if (id == ngl(iel)) then
184 nindx = nindx + 1
185 indx(nindx) = kk
186 end if
187 end do
188 end do
189!
190 if (nindx > 0) then
191 CALL brokmann_crack_init(nel ,it ,nptt ,nuparam ,nuvar,
192 . mat_param(imat)%FAIL(ifl)%UPARAM ,fail_brokmann%BROKMANN(ii),
193 . elbuf_str%BUFLY(il)%FAIL(ir,is,it)%FLOC(ifl)%VAR,
194 . indx ,thk ,aldt ,ngl )
195 end if
196!
197 END IF
198 END DO
199 END IF ! END Brokmann criterion initialization
200!
201 END IF ! windshield failure
202 END DO ! IFL = 1,NFAIL
203 END DO ! IT=1,NPTT
204 END DO ! IT=1,NPTS
205 END DO ! IT=1,NPTR
206 END DO ! IL=1,NLAY
207!-----------
208 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine fail_brokmann(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signxy, uvar, off, ipt, nindxf, indxf, tdel)
initmumps id
integer function ngr2usrn(iu, igrnod, ngrnod, num)
Definition nintrr.F:407