40
41
42
43 USE elbufdef_mod
44 USE matparam_def_mod
46 USE crack_depth_init_mod
47 USE brokmann_crack_init_mod
48 use brokmann_random_def_mod
49
50
51
52#include "implicit_f.inc"
53
54
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
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)
77 INTEGER NGR2USRN
78
79
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
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)
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)
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
110
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
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
141 END DO
142 END DO
143 END DO
144 END DO
145
146
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
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
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
173
174 IF (itglass == 1 .and. (it == 1 .or. it == nptt)) THEN
177
178 nindx = 0
179 indx(1:nel) = 0
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
200
201 END IF
202 END DO
203 END DO
204 END DO
205 END DO
206 END DO
207
208 RETURN
subroutine fail_brokmann(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signxy, uvar, off, ipt, nindxf, indxf, tdel)
integer function ngr2usrn(iu, igrnod, ngrnod, num)