31
32
33
34
35
36#include "implicit_f.inc"
37
38
39
40#include "com01_c.inc"
41#include "com04_c.inc"
42#include "com_xfem1.inc"
43#include "param_c.inc"
44
45
46
47 INTEGER IPARG(,NGROUP)
48 INTEGER , DIMENSION(NUMNOD) :: ITAGN, INOD_CRKXFEM
49 INTEGER , DIMENSION(NUMELC+NUMELTG) :: ITAGE, IEL_CRKXFEM
50
51
52
53 INTEGER I,K,NG,NEL,IXFEM,NFT,ITY,,LLT,ITG,IGTYP,ICRK_ALL(2)
54
55 itg = 1 + numelc
56
57 ncrkxfe = 0
58 DO i=1,numnod
59 IF(itagn(i) > 0)THEN
60 ncrkxfe = ncrkxfe + 1
61 inod_crkxfem(i) = ncrkxfe
62 ENDIF
63 ENDDO
64
65 icrk_all(1:2) = 0
66 ecrkxfe = 0
67
68 DO ng=1,ngroup
69 ixfem=iparg(54,ng)
70 IF (ixfem == 0) cycle
71
72 nel =iparg(2,ng)
73 nft =iparg(3,ng)
74 ity =iparg(5,ng)
75 igtyp=iparg(38,ng)
76 lft =1
78 nxlaymax =
max(nxlaymax, iparg(59,ng))
79
80
81
82 IF (ity==3) THEN
83 CALL tag_sh(itage ,iel_crkxfem ,ecrkxfe,
84 . lft ,llt ,nft )
85 ELSE IF (ity==7) THEN
86 CALL tag_sh(itage(itg),iel_crkxfem(itg),ecrkxfe,
87 . lft ,llt ,nft )
88 END IF
89
90 IF (igtyp == 11 .AND. ixfem == 1) THEN
91 icrk_all(1) = icrk_all(1) + 1
92 ELSEIF (igtyp == 1 .AND. ixfem == 2) THEN
93 icrk_all(2) = icrk_all(2) + 1
94 END IF
95 ENDDO
96
97 IF (icrk_all(2) > 0) THEN
98 icrack3d = icrack3d + 1
99 IF (icrk_all(1) > 0) icrack3d = icrack3d + 1
100 ENDIF
101
102 ecrkxfec = 0
103 ecrkxfetg= 0
104 DO i=1,numelc
105 IF (iel_crkxfem(i) > 0) ecrkxfec = ecrkxfec + 1
106 END DO
107 DO i=1,numeltg
108 IF (iel_crkxfem(i+numelc) > 0) ecrkxfetg = ecrkxfetg + 1
109 END DO
110
111 RETURN
subroutine tag_sh(itage, iel_crkxfem, ecrkxfe, lft, llt, nft)