32
33
34
35
36
37
38
39
40
41
42
43
45 use element_mod , only : nixs,nixq,nixtg
46
47
48
49#include "implicit_f.inc"
50
51
52
53
54
55#include "com04_c.inc"
56
57#include "com01_c.inc"
58
59
60
61 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
62 INTEGER, INTENT(IN) :: IXS(NIXS, *), IXQ(NIXQ, *), IXTG(NIXTG, *)
63
64
65
66 INTEGER :: IELEM, JELEM, KFACE, ELEM_TYPE, KFACE2, IAD, IAD2,
67 INTEGER :: NODELIST(8), FLAGNODE(8), INODE
68 INTEGER, DIMENSION(6, 4), TARGET :: HEXA_FACE
69 INTEGER, DIMENSION(4, 3), TARGET :: TETRA_FACE
70 INTEGER, DIMENSION(:, :), POINTER :: ELEM_FACE
71 INTEGER :: NFACE, NFACE_NODE
72
73 hexa_face(1, 1) = 1
74 hexa_face(1, 2) = 2
75 hexa_face(1, 3) = 3
76 hexa_face(1, 4) = 4
77 hexa_face(2, 1) = 3
78 hexa_face(2, 2) = 4
79 hexa_face(2, 3) = 8
80 hexa_face(2, 4) = 7
81 hexa_face(3, 1) = 5
82 hexa_face(3, 2) = 6
83 hexa_face(3, 3) = 7
84 hexa_face(3, 4) = 8
85 hexa_face(4, 1) = 1
86 hexa_face(4, 2) = 2
87 hexa_face(4, 3) = 6
88 hexa_face(4, 4) = 5
89 hexa_face(5, 1) = 2
90 hexa_face(5, 2) = 3
91 hexa_face(5, 3) = 7
92 hexa_face(5, 4) = 6
93 hexa_face(6, 1) = 1
94 hexa_face(6, 2) = 4
95 hexa_face(6, 3) = 8
96 hexa_face(6, 4) = 5
97
98 tetra_face(1, 1) = 2
99 tetra_face(1, 2) = 3
100 tetra_face(1, 3) = 7
101 tetra_face(2, 1) = 2
102 tetra_face(2, 2) = 6
103 tetra_face(2, 3) = 4
104 tetra_face(3, 1) = 4
105 tetra_face(3, 2) = 6
106 tetra_face(3, 3) = 7
107 tetra_face(4, 1) = 2
108 tetra_face(4, 2) = 7
109 tetra_face(4, 3) = 6
110 IF (n2d == 0) THEN
111
112 DO ielem = 1, numels
113 iad = ale_connectivity%ee_connect%iad_connect(ielem)
114 lgth = ale_connectivity%ee_connect%iad_connect(ielem+1) - iad
115 nodelist(1) = ixs(2, ielem)
116 nodelist(2) = ixs(3, ielem)
117 nodelist(3) = ixs(4, ielem)
118 nodelist(4) = ixs(5, ielem)
119 nodelist(5) = ixs(6, ielem)
120 nodelist(6) = ixs(7, ielem)
121 nodelist(7) = ixs(8, ielem)
122 nodelist(8) = ixs(9, ielem)
123 flagnode(1:8) = 1
124
125 elem_type = 1
126 nface = 6
127 nface_node = 4
128 elem_face => hexa_face
129
130 IF ((nodelist(1) == nodelist(2)) .AND.
131 . (nodelist(3) == nodelist(4)) .AND.
132 . (nodelist(6) == nodelist(7))) THEN
133 elem_type = 2
134 nface = 4
135 nface_node = 3
136 elem_face => tetra_face
137 ENDIF
138
139 DO inode = 1, 8
140 IF (ale_connectivity%NALE(nodelist(inode)) == 0) THEN
141 flagnode(inode) = 0
142 ENDIF
143 ENDDO
144
145 DO kface = 1, lgth
146 jelem = ale_connectivity%ee_connect%connected(iad + kface - 1)
147 IF (jelem > 0) THEN
148 kface2 = ale_connectivity%ee_connect%iface2(iad + kface - 1)
149 iad2 = ale_connectivity%ee_connect%iad_connect(jelem)
150 ale_connectivity%ee_connect%connected(iad2 + kface - 1) = 0
151 ale_connectivity%ee_connect%iface2(iad2 + kface - 1) = 0
152 ale_connectivity%ee_connect%connected(iad2 + kface2 - 1) = 0
153 ale_connectivity%ee_connect%iface2(iad2 + kface2 - 1) = 0
154 ENDIF
155 ENDDO
156 ENDDO
157 ELSE
158
159 ENDIF