182
183
184
185 USE elbufdef_mod
186 USE matparam_def_mod
187
188
189
190#include "implicit_f.inc"
191
192
193
194#include "param_c.inc"
195#include "vect01_c.inc"
196#include "com01_c.inc"
197#include "com04_c.inc"
198
199
200
201 INTEGER NPTR,NPTS,NPTT,NSIGSH,NLAY,
202 . PTSH(*),PERTURB(NPERTURB)
204 . sigsh(nsigsh,*),rnoise(nperturb,*),aldt(*),thk(*)
205 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
206 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
207
208
209
210 INTEGER I,J,IIP,JPT,IFL, II, JJ, IPT, IPP,IUS,IPSU,
211 . IFLAGINI,JPS,IL,,IS,IT,NV,NVAR_RUPT,NVMAX,NFAIL,N,
212 . IMAT,L,IRUP
213 my_real ,
DIMENSION(:),
POINTER :: uvarf,dfmax
214 my_real :: c1,c2,c3,c4,c5,x_1(2),x_2(3)
215 TYPE(BUF_LAY_) ,POINTER :: BUFLY
216 TYPE(BUF_FAIL_),POINTER :: FBUF
217
218
219
220 DO il=1,nlay
221 bufly => elbuf_str%BUFLY(il)
222 nfail = bufly%NFAIL
223 DO ifl=1,nfail
224 irup = bufly%FAIL(1,1,1)%FLOC(ifl)%ILAWF
225
226 IF (irup == 23) THEN
227 DO it = 1,nptt
228 DO is = 1,npts
229 DO ir = 1,nptr
230 fbuf => bufly%FAIL(ir,is,it)
231 uvarf => fbuf%FLOC(ifl)%VAR
232 DO i = lft,llt
233 uvarf(llt +i) = thk(i)
234 uvarf(llt*4+i) = aldt(i)
235 uvarf(llt*5+i) = one
236 uvarf(llt*6+i) = one
237 uvarf(llt*7+i) = one
238 ENDDO
239 ENDDO
240 ENDDO
241 ENDDO
242 END IF
243
244 END DO
245 END DO
246
247 IF( nvshell1 /= 0 ) THEN
248 IF (isigi /= 0) THEN
249 DO i=lft,llt
250 ii = i+nft
251 jj = ptsh(ii)
252 IF(jj == 0)cycle
253 DO il=1,nlay
254 nfail = elbuf_str%BUFLY(il)%NFAIL
255 DO ius=1,nfail
256 jps = nvshell + nushell + 3 + nortshel
257 nvmax = nvshell1 /(
max(1,nptr)*
max(1,npts)*
max(1,nptt)*
259 DO it = 1,nptt
260 DO is = 1,npts
261 DO ir = 1,nptr
262 fbuf => elbuf_str%BUFLY(il)%FAIL(ir,is,it)
263 uvarf => fbuf%FLOC(ius)%VAR
264 dfmax => fbuf%FLOC(ius)%DAMMX
265 nvar_rupt = fbuf%FLOC(ius)%NVAR
266 dfmax(i)=sigsh(jps+1+(ius-1)*nlay*nptr*npts*nptt*nvmax+
267 . (il-1)*nvmax*nptr*npts*nptt,jj)
268 jps = jps + 1
269 DO nv=1,nvar_rupt
270 uvarf((nv-1)*llt+i)=
271 . sigsh(jps+1+(ius-1)*nlay*nptr*npts*nptt
272 . (il-1)*nvmax*nptr*npts*nptt,jj)
273 jps = jps + 1
274 ENDDO
275 ENDDO
276 ENDDO
277 ENDDO
278 ENDDO
279 ENDDO
280 ENDDO
281 ENDIF
282 ENDIF
283
284 IF( nperturb /= 0 ) THEN
285 DO j=1,nperturb
286 IF(perturb(j) == 2)THEN
287 DO i=lft,llt
288 IF (rnoise(j,i+nft) /= zero) THEN
289 DO il=1,nlay
290 nfail = elbuf_str%BUFLY(il)%NFAIL
291 imat = elbuf_str%BUFLY(il)%IMAT
292 DO ius=1,nfail
293 irup = mat_param(imat)%FAIL(ius)%IRUPT
294 IF (irup == 30) THEN
295 mat_param(imat)%FAIL(ius)%UPARAM(8) = 1
296 c1 = zero
297 c2 = zero
298 c3 = mat_param(imat)%FAIL(ius)%UPARAM(9) * rnoise(j,i+nft)
299 c4 = zero
300 c5 = zero
301 l = int(mat_param(imat)%FAIL(ius)%UPARAM(10))
302
303 CALL biquad_coefficients(c1,c2,c3,c4,c5,l,x_1,x_2,zero,zero,zero,zero)
304 DO it = 1,nptt
305 DO is = 1,npts
306 DO ir = 1,nptr
307 fbuf => elbuf_str%BUFLY(il)%FAIL(ir,is,it)
308 uvarf => fbuf%FLOC(ius)%VAR
309 uvarf((3-1)*llt+i) = c2
310 uvarf((4-1)*llt+i) = x_1(1)
311 uvarf((5-1)*llt+i) = x_1(2)
312 uvarf((6-1)*llt+i) = x_2(1)
313 uvarf((7-1)*llt+i) = x_2(2)
314 uvarf((8-1)*llt+i) = x_2(3)
315 ENDDO
316 ENDDO
317 ENDDO
318 ENDIF
319 ENDDO
320 ENDDO
321 ENDIF
322 ENDDO
323 ENDIF
324 ENDDO
325 ENDIF
326
327 RETURN