OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_windshield_init.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_windshield_init ../starter/source/materials/fail/windshield_alter/fail_windshield_init.F
25!||--- called by ------------------------------------------------------
26!|| c3init3 ../starter/source/elements/sh3n/coque3n/c3init3.F
27!|| cbainit3 ../starter/source/elements/shell/coqueba/cbainit3.F
28!|| cinit3 ../starter/source/elements/shell/coque/cinit3.F
29!||--- calls -----------------------------------------------------
30!|| brokmann_crack_init ../starter/source/materials/fail/windshield_alter/brokmann_crack_init.F90
31!|| crack_depth_init ../starter/source/materials/fail/windshield_alter/crack_depth_init.F90
32!|| ngr2usrn ../starter/source/system/nintrr.F
33!||--- uses -----------------------------------------------------
34!|| brokmann_crack_init_mod ../starter/source/materials/fail/windshield_alter/brokmann_crack_init.F90
35!|| crack_depth_init_mod ../starter/source/materials/fail/windshield_alter/crack_depth_init.F90
36!||====================================================================
37 SUBROUTINE fail_windshield_init(ELBUF_STR,MAT_PARAM,FAIL_BROKMANN,
38 . NEL ,NFT ,ITY ,IGRSH4N ,IGRSH3N ,
39 . ALDT ,THK ,NGL )
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
209 END
#define my_real
Definition cppsort.cpp:32
subroutine fail_windshield_init(elbuf_str, mat_param, fail_brokmann, nel, nft, ity, igrsh4n, igrsh3n, aldt, thk, ngl)