281
283 use element_mod , only : nixc
284
285
286
287#include "implicit_f.inc"
288
289
290
291#include "param_c.inc"
292#include "parit_c.inc"
293#include "com_xfem1.inc"
294
295
296
297 INTEGER JFT,JLT,NFT,IADC(4,*),IADC_CRK(4,*),IXC(NIXC,*),
298 . IEL_CRK(*),ILEV,ELCUTC(2,*),INOD_CRK(*),IPARTC(*),
299 . ILAY
301 . fsky(8,lsky),off(*),
302 . f11(*),f21(*),f31(*),f12(*),f22(*),f32(*),
303 . f13(*),f23(*),f33(*),f14(*),f24(*),f34(*),
304 . m11(*),m21(*),m31(*),m12(*),m22(*),m32(*),
305 . m13(*),m23(*),m33(*),m14(*),m24(*),m34(*),
306 . sti(*),stir(*),fac(2,*),offg(*),eint(jlt,2),partsav(npsav,*)
307 TYPE(XFEM_SKY_) , DIMENSION(*) :: CRKSKY
308
309
310
311 INTEGER I,K,KK,ELCRK,ELCUT,ENR,IOFF
313
314 ioff = 0
315 DO i=jft,jlt
316 IF (off(i) == zero .AND. offg(i) > zero) ioff=1
317 ENDDO
318 IF (ioff == 1) THEN
319 numelcrk = numelcrk + 1
320 ENDIF
321 off_l = zero
322 DO i=jft,jlt
323 IF (off(i) < one) offg(i) = off(i)
324 off_l =
min(off_l,offg(i))
325 ENDDO
326
327 IF (off_l <= zero) THEN
328 DO i=jft,jlt
329 IF (off(i) <= zero) THEN
330 f11(i) = zero
331 f21(i) = zero
332 f31(i) = zero
333 m11(i) = zero
334 m21(i) = zero
335 m31(i) = zero
336 f12(i) = zero
337 f22(i) = zero
338 f32(i) = zero
339 m12(i) = zero
340 m22(i) = zero
341 m32(i) = zero
342 f13(i) = zero
343 f23(i) = zero
344 f33(i) = zero
345 m13(i) = zero
346 m23(i) = zero
347 m33(i) = zero
348 f14(i) = zero
349 f24(i) = zero
350 f34(i) = zero
351 m14(i) = zero
352 m24(i) = zero
353 m34(i) = zero
354 sti(i) = zero
355 stir(i)= zero
356 ENDIF
357 ENDDO
358 ENDIF
359
360 DO i=jft,jlt
361 elcrk = iel_crk(i+nft)
363 IF (elcut /= 0) THEN
365
366 kk = iadc_crk(1,elcrk)
367 crksky(ilev)%FSKY(1,kk) = -f11(i)*areap
368 crksky(ilev)%FSKY(2,kk) = -f21(i)*areap
369 crksky(ilev)%FSKY(3,kk) = -f31(i)*areap
370 crksky(ilev)%FSKY(4,kk) = -m11(i)*areap
371 crksky(ilev)%FSKY(5,kk) = -m21(i)*areap
372 crksky(ilev)%FSKY(6,kk) = -m31(i)*areap
373 crksky(ilev)%FSKY(7,kk) = sti(i) *fac(1,i)
374 crksky(ilev)%FSKY(8,kk) = stir(i)*fac(1,i)
375
376 kk = iadc_crk(2,elcrk)
377 crksky(ilev)%FSKY(1,kk) = -f12(i)*areap
378 crksky(ilev)%FSKY(2,kk) = -f22(i)*areap
379 crksky(ilev)%FSKY(3,kk) = -f32(i)*areap
380 crksky(ilev)%FSKY(4,kk) = -m12(i)*areap
381 crksky(ilev)%FSKY(5,kk) = -m22(i)*areap
382 crksky(ilev)%FSKY(6,kk) = -m32(i)*areap
383 crksky(ilev)%FSKY(7,kk) = sti(i) *fac(2,i)
384 crksky(ilev)%FSKY(8,kk) = stir(i)*fac(2,i)
385
386 kk = iadc_crk(3,elcrk)
387 crksky(ilev)%FSKY(1,kk) = -f13(i)*areap
388 crksky(ilev)%FSKY(2,kk) = -f23(i)*areap
389 crksky(ilev)%FSKY(3,kk) = -f33(i)*areap
390 crksky(ilev)%FSKY(4,kk) = -m13(i)*areap
391 crksky(ilev)%FSKY(5,kk) = -m23(i)*areap
392 crksky(ilev)%FSKY(6,kk) = -m33(i)*areap
393 crksky(ilev)%FSKY(7,kk) = sti(i) *fac(1,i)
394 crksky(ilev)%FSKY(8,kk) = stir(i)*fac(1,i)
395
396 kk = iadc_crk(4,elcrk)
397 crksky(ilev)%FSKY(1,kk) = -f14(i)*areap
398 crksky(ilev)%FSKY(2,kk) = -f24(i)*areap
399 crksky(ilev)%FSKY(3,kk) = -f34(i)*areap
400 crksky(ilev)%FSKY(4,kk) = -m14(i)*areap
401 crksky(ilev)%FSKY(5,kk) = -m24(i)*areap
402 crksky(ilev)%FSKY(6,kk) = -m34(i)*areap
403 crksky(ilev)%FSKY(7,kk) = sti(i) *fac(2,i)
404 crksky(ilev)%FSKY(8,kk) = stir(i)*fac(2,i)
405 END IF
406 END DO
407
408 DO i=jft,jlt
409 elcrk = iel_crk(i+nft)
411 IF (elcut == 0) cycle
412
413
414
415 k = iadc(1,i)
416 kk = iadc_crk(1,elcrk)
418
419 IF (enr <= 0) THEN
420 fsky(1,k) = fsky(1,k) + crksky(ilev)%FSKY(1,kk)
421 fsky(2,k) = fsky(2,k) + crksky(ilev)%FSKY(2,kk)
422 fsky(3,k) = fsky(3,k) + crksky(ilev)%FSKY(3,kk)
423 fsky(4,k) = fsky(4,k) + crksky(ilev)%FSKY(4,kk)
424 fsky(5,k) = fsky(5,k) + crksky(ilev)%FSKY(5,kk)
425 fsky(6,k) = fsky(6,k) + crksky(ilev)%FSKY(6,kk)
426
427 crksky(ilev)%FSKY(1,kk) = zero
428 crksky(ilev)%FSKY(2,kk) = zero
429 crksky(ilev)%FSKY(3,kk) = zero
430 crksky(ilev)%FSKY(4,kk) = zero
431 crksky(ilev)%FSKY(5,kk) = zero
432 crksky(ilev)%FSKY(6,kk) = zero
433 END IF
434
435
436
437 k = iadc(2,i)
438 kk = iadc_crk(2,elcrk)
440
441 IF (enr <= 0) THEN
442 fsky(1,k) = fsky(1,k) + crksky(ilev)%FSKY(1,kk)
443 fsky(2,k) = fsky(2,k) + crksky(ilev)%FSKY(2,kk)
444 fsky(3,k) = fsky(3,k) + crksky(ilev)%FSKY(3,kk)
445 fsky(4,k) = fsky(4,k) + crksky(ilev)%FSKY(4,kk)
446 fsky(5,k) = fsky(5,k) + crksky(ilev)%FSKY(5,kk)
447 fsky(6,k) = fsky(6,k) + crksky(ilev)%FSKY(6,kk)
448
449 crksky(ilev)%FSKY(1,kk) = zero
450 crksky(ilev)%FSKY(2,kk) = zero
451 crksky(ilev)%FSKY(3,kk) = zero
452 crksky(ilev)%FSKY(4,kk) = zero
453 crksky(ilev)%FSKY(5,kk) = zero
454 crksky(ilev)%FSKY(6,kk) = zero
455 END IF
456
457
458
459 k = iadc(3,i)
460 kk = iadc_crk(3,elcrk)
462
463 IF (enr <= 0) THEN
464 fsky(1,k) = fsky(1,k) + crksky(ilev)%FSKY(1,kk)
465 fsky(2,k) = fsky(2,k) + crksky(ilev)%FSKY(2,kk)
466 fsky(3,k) = fsky(3,k) + crksky(ilev)%FSKY(3,kk)
467 fsky(4,k) = fsky(4,k) + crksky(ilev)%FSKY(4,kk)
468 fsky(5,k) = fsky(5,k) + crksky(ilev)%FSKY(5,kk)
469 fsky(6,k) = fsky(6,k) + crksky(ilev)%FSKY(6,kk)
470
471 crksky(ilev)%FSKY(1,kk) = zero
472 crksky(ilev)%FSKY(2,kk) = zero
473 crksky(ilev)%FSKY(3,kk) = zero
474 crksky(ilev)%FSKY(4,kk) = zero
475 crksky(ilev)%FSKY(5,kk) = zero
476 crksky(ilev)%FSKY(6,kk) = zero
477 END IF
478
479
480
481 k = iadc(4,i)
482 kk = iadc_crk(4,elcrk)
484
485 IF (enr <= 0) THEN
486 fsky(1,k) = fsky(1,k) + crksky(ilev)%FSKY(1,kk)
487 fsky(2,k) = fsky(2,k) + crksky(ilev)%FSKY(2,kk)
488 fsky(3,k) = fsky(3,k) + crksky(ilev)%FSKY(3,kk)
489 fsky(4,k) = fsky(4,k) + crksky(ilev)%FSKY(4,kk)
490 fsky(5,k) = fsky(5,k) + crksky(ilev)%FSKY(5,kk)
491 fsky(6,k) = fsky(6,k) + crksky(ilev)%FSKY(6,kk)
492
493 crksky(ilev)%FSKY(1,kk) = zero
494 crksky(ilev)%FSKY(2,kk) = zero
495 crksky(ilev)%FSKY(3,kk) = zero
496 crksky(ilev)%FSKY(4,kk) = zero
497 crksky(ilev)%FSKY(5,kk) = zero
498 crksky(ilev)%FSKY(6,kk) = zero
499 END IF
500
501 ENDDO
502
503 RETURN