30 . DEACTIVATION,GEO,IXS,IXC,
31 . IXT,IXP,IXR,IXTG,IXS10,ADDCNEL,CNEL,
44#include "implicit_f.inc"
54 LOGICAL,
INTENT(inout) :: DEACTIVATION
55 INTEGER,
INTENT(in) ::
56 INTEGER,
INTENT(in) :: N1,N2,N3,N4
57 INTEGER,
DIMENSION(NIXS,NUMELS),
INTENT(in) :: IXS
58 INTEGER,
DIMENSION(NIXC,NUMELC),
INTENT(in) :: IXC
59 INTEGER,
DIMENSION(NIXT,NUMELT),
INTENT(in) :: IXT
60 INTEGER,
DIMENSION(NIXP,NUMELP)INTENT(in) :: IXP
61 INTEGER,
DIMENSION(NIXR,NUMELR),
INTENT(in) :: IXR
62 INTEGER,
DIMENSION(NIXTG,NUMELTG),
INTENT(in) :: IXTG
63 INTEGER,
DIMENSION(6,NUMELS10),
INTENT(in) :: IXS10
64 INTEGER,
DIMENSION(0:NUMNOD+1),
INTENT(in) :: ADDCNEL
65 my_real,
DIMENSION(NPROPG,NUMGEO),
INTENT(in) :: geo
66 INTEGER,
DIMENSION(0:LCNEL),
INTENT(in) :: CNEL
67 INTEGER,
DIMENSION(NUMNOD),
INTENT(inout) :: TAG_NODE
68 INTEGER,
DIMENSION(NUMELS+NUMELQ+NUMELC+NUMELT+NUMELP+NUMELR+NUMELTG),
INTENT(inout) :: TAG_ELEM
72 LOGICAL :: STILL_COMPUTE,STILL_ALIVE
75 INTEGER :: ELEM_ID,NODE_ID,OTHER_NODE
76 INTEGER :: OFFSET_SOLID,OFFSET_QUAD,OFFSET_SHELL
77 INTEGER :: OFFSET_TRUSS,OFFSET_BEAM,OFFSET_SPRING
78 INTEGER :: OFFSET_TRIANGLE,OFFSET_UR
82 offset_quad=offset_solid+numels
83 offset_shell=offset_quad+numelq
84 offset_truss=offset_shell+numelc
85 offset_beam=offset_truss+numelt
86 offset_spring=offset_beam+numelp
87 offset_triangle=offset_spring+numelr
88 offset_ur=offset_triangle+numeltg
91 still_compute = .true.
93 i = addcnel(n1) + next
94 deactivation = .false.
102 IF((addcnel(n1+1) - addcnel(n1)) ==0
THEN
103 deactivation = .true.
104 still_compute = .false.
108 DO WHILE( still_compute )
113 IF(number_node>2)
THEN
123 IF(tag_elem(elem_id)>0)
THEN
126 IF(elem_id<=offset_shell)
THEN
128 node_id = ixs(k,elem_id)
129 tag_node(node_id) = 1
131 IF(elem_id>numels8.AND.elem_id<=numels8+numels10)
THEN
133 node_id = ixs10(k,elem_id-numels8)
134 tag_node(node_id) = 1
137 ELSEIF(elem_id>offset_shell.AND.elem_id<=offset_truss)
THEN
141 node_id = ixc(k,elem_id-offset_shell)
142 tag_node(node_id) = 1
144 ELSEIF(elem_id>offset_truss.AND.elem_id<=offset_beam)
THEN
148 node_id = ixt(k,elem_id-offset_truss)
149 tag_node(node_id) = 1
151 ELSEIF(elem_id>offset_beam.AND.elem_id<=offset_spring)
THEN
155 node_id = ixp(k,elem_id-offset_beam)
156 tag_node(node_id) = 1
158 ELSEIF(elem_id>offset_spring.AND.elem_id<=offset_triangle)
THEN
162 node_id = ixr(k,elem_id-offset_spring)
163 tag_node(node_id) = 1
166 IF(nint(geo(12,ixr(1,elem_id-offset_spring))) == 12)
THEN
167 node_id = ixr(4,elem_id-offset_spring)
170 ELSEIF(elem_id>offset_triangle.AND.elem_id<=offset_ur
THEN
174 node_id = ixtg(k,elem_id-offset_triangle)
175 tag_node(node_id) = 1
183 IF(number_node>2) other_node = tag_node(n3)
184 IF(number_node>3) other_node = other_node + tag_node(n4)
190 IF(tag_node(n1)+tag_node(n2)+other_node==number_node)
THEN
191 still_compute = .false.
198 i = addcnel(n1) + next
199 IF(i>addcnel(n1+1)-1)
THEN
200 still_compute = .false.
205 IF(.NOT.still_alive)
THEN
206 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)