32 . DEACTIVATION,GEO,IXS,IXC,
33 . IXT,IXP,IXR,IXTG,IXS10,ADDCNEL,CNEL,
43 use element_mod ,
only : nixs,nixc,nixt,nixp,nixr,nixtg
47#include "implicit_f.inc"
57 LOGICAL,
INTENT(inout) :: DEACTIVATION
58 INTEGER,
INTENT(in) :: NUMBER_NODE
59 INTEGER,
INTENT(in) :: N1,N2,N3,N4
60 INTEGER,
DIMENSION(NIXS,NUMELS),
INTENT(in) :: IXS
61 INTEGER,
DIMENSION(NIXC,NUMELC),
INTENT(in) :: IXC
62 INTEGER,
DIMENSION(NIXT,NUMELT),
INTENT(in) :: IXT
63 INTEGER,
DIMENSION(NIXP,NUMELP),
INTENT(in) :: IXP
64 INTEGER,
DIMENSION(NIXR,NUMELR),
INTENT(in) :: IXR
65 INTEGER,
DIMENSION(NIXTG,NUMELTG),
INTENT(in) :: IXTG
66 INTEGER,
DIMENSION(6,NUMELS10),
INTENT(in) :: IXS10
67 INTEGER,
DIMENSION(0:NUMNOD+1),
INTENT(in) :: ADDCNEL
68 my_real,
DIMENSION(NPROPG,NUMGEO),
INTENT(in) :: geo
69 INTEGER,
DIMENSION(0:LCNEL),
INTENT(in) :: CNEL
70 INTEGER,
DIMENSION(NUMNOD),
INTENT(inout) ::
71 INTEGER,
DIMENSION(NUMELS+NUMELQ+NUMELC+NUMELT+NUMELP+NUMELR+NUMELTG),
INTENT(inout) :: TAG_ELEM
75 LOGICAL :: STILL_COMPUTE,STILL_ALIVE
78 INTEGER :: ELEM_ID,NODE_ID,OTHER_NODE
79 INTEGER :: ,OFFSET_QUAD,OFFSET_SHELL
80 INTEGER :: OFFSET_TRUSS,OFFSET_BEAM,OFFSET_SPRING
81 INTEGER :: OFFSET_TRIANGLE,OFFSET_UR
85 offset_quad=offset_solid+numels
86 offset_shell=offset_quad+numelq
87 offset_truss=offset_shell+numelc
88 offset_beam=offset_truss+numelt
89 offset_spring=offset_beam+numelp
90 offset_triangle=offset_spring+numelr
91 offset_ur=offset_triangle+numeltg
94 still_compute = .true.
96 i = addcnel(n1) + next
97 deactivation = .false.
105 IF((addcnel(n1+1) - addcnel(n1)) ==0)
THEN
106 deactivation = .true.
107 still_compute = .false.
111 DO WHILE( still_compute )
116 IF(number_node>2)
THEN
126 IF(tag_elem(elem_id)>0)
THEN
129 IF(elem_id<=offset_shell)
THEN
131 node_id = ixs(k,elem_id)
132 tag_node(node_id) = 1
134 IF(elem_id>numels8.AND.elem_id<=numels8+numels10)
THEN
136 node_id = ixs10(k,elem_id-numels8)
137 tag_node(node_id) = 1
140 ELSEIF(elem_id>offset_shell.AND.elem_id<=offset_truss)
THEN
144 node_id = ixc(k,elem_id-offset_shell)
145 tag_node(node_id) = 1
147 ELSEIF(elem_id>offset_truss.AND.elem_id<=offset_beam)
THEN
151 node_id = ixt(k,elem_id-offset_truss)
152 tag_node(node_id) = 1
154 ELSEIF(elem_id>offset_beam.AND.elem_id<=offset_spring)
THEN
158 node_id = ixp(k,elem_id-offset_beam)
159 tag_node(node_id) = 1
161 ELSEIF(elem_id>offset_spring.AND.elem_id<=offset_triangle)
THEN
165 node_id = ixr(k,elem_id-offset_spring)
166 tag_node(node_id) = 1
169 IF(nint(geo(12,ixr(1,elem_id-offset_spring))) == 12)
THEN
170 node_id = ixr(4,elem_id-offset_spring)
171 tag_node(node_id) = 1
173 ELSEIF(elem_id>offset_triangle.AND.elem_id<=offset_ur)
THEN
178 tag_node(node_id) = 1
186 IF(number_node>2) other_node = tag_node(n3)
187 IF(number_node>3) other_node = other_node + tag_node(n4
193 IF(tag_node(n1)+tag_node(n2)+other_node==number_node)
THEN
194 still_compute = .false.
201 i = addcnel(n1) + next
202 IF(i>addcnel(n1+1)-1)
THEN
203 still_compute = .false.
208 IF(.NOT.still_alive)
THEN
209 deactivation = .true.
subroutine check_active_elem_edge(number_node, n1, n2, n3, n4, deactivation, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem)