31 . IXT,IXP,IXR,IXTG,ADDCNEL,NODES,CNEL,CHUNK,
49#include "implicit_f.inc"
60INTEGER,
INTENT(in) :: CHUNK
61 INTEGER,
DIMENSION(SIZE_BUFFER),
INTENT(inout) :: BUFFER
62 INTEGER,
DIMENSION(NIXS,NUMELS),
TARGET,
INTENT(in) :: IXS
63 INTEGER,
DIMENSION(NIXC,NUMELC),
TARGET,
INTENT(in) :: IXC
64 INTEGER,
DIMENSION(NIXT,NUMELT),
TARGET,
INTENT(in) :: IXT
65 INTEGER,
DIMENSION(NIXP,NUMELP),
TARGET,
INTENT(in) :: IXP
66 INTEGER,
DIMENSION(NIXR,NUMELR),
TARGET,
INTENT(in) :: IXR
67 INTEGER,
DIMENSION(NIXTG,NUMELTG),
TARGET,
INTENT(in) :: IXTG
68 INTEGER,
DIMENSION(0:NUMNOD+1),
INTENT(in) :: ADDCNEL
69 TYPE(nodal_arrays_),
intent(inout) ::
70 my_real,
DIMENSION(NPROPG,NUMGEO),
INTENT(in) :: geo
71 INTEGER,
DIMENSION(0:LCNEL),
INTENT(in) :: CNEL
77 INTEGER :: N1,N2,N3,N4,NIN
78 INTEGER :: NUMBER_NODE
79 INTEGER,
DIMENSION(4) :: LOCAL_NODE,GLOBAL_NODE
80 INTEGER :: ELEM_ID,NODE_ID
81 INTEGER :: OFFSET_SOLID,OFFSET_QUAD,OFFSET_SHELL
82 INTEGER :: OFFSET_TRUSS,OFFSET_BEAM,OFFSET_SPRING
85 INTEGER,
DIMENSION(:),
ALLOCATABLE
86INTEGER :: NUMBER_ELEMENT, NUMBER_ELEMENT_HERE
87 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LIST_ELEMENT
88 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: ALREADY_HERE
89 INTEGER,
DIMENSION(6,NUMELS10),
INTENT(in) :: IXS10
94 offset_quad=offset_solid+numels
95 offset_shell=offset_quad+numelq
96 offset_truss=offset_shell+numelc
97 offset_beam=offset_truss+numelt
98 offset_spring=offset_beam+numelp
99 offset_triangle=offset_spring+numelr
100 offset_ur=offset_triangle+numeltg
105 number_element = numels + numelq + numelc + numelt + numelp + numelr + numeltg
106 ALLOCATE( list_element(number_element) )
107 ALLOCATE( already_here(number_element) )
108 already_here(1:number_element) = .false.
109 number_element_here = 0
111 ALLOCATE( tag_node(numnod+1) )
112 tag_node(1:numnod+1) = 0
113 DO j=1,size_buffer,chunk
115 global_node(1:4) = buffer(j+2:j+chunk-1)
116 local_node(1) = get_local_node_id(nodes,global_node(1))
117 local_node(2) = get_local_node_id(nodes,global_node(2))
118 local_node(3:4) = numnod+1
120 IF(global_node(3)/=0) local_node(3) = get_local_node_id(nodes, global_node(3))
121 IF(global_node(4)/=0) local_node(4) = get_local_node_id(nodes, global_node(4))
122 IF((global_node(3)/=0).AND.(global_node
128 number_element_here = 0
131 DO i=addcnel(n1),addcnel(n1+1)-1
139 IF(elem_id<=offset_shell)
THEN
141 node_id = ixs(k,elem_id)
142 tag_node(node_id) = 1
144 IF(elem_id>numels8.AND.elem_id<=numels8+numels10)
THEN
146 node_id = ixs10(k,elem_id-numels8)
147 tag_node(node_id) = 1
150 ELSEIF(elem_id>offset_shell.AND.elem_id<=offset_truss)
THEN
154 node_id = ixc(k,elem_id-offset_shell)
155 tag_node(node_id) = 1
157 ELSEIF(elem_id>offset_truss.AND.elem_id<=offset_beam
THEN
161 node_id = ixt(k,elem_id-offset_truss)
162 tag_node(node_id) = 1
164 ELSEIF(elem_id>offset_beam.AND.elem_id<=offset_spring)
THEN
168 node_id = ixp(k,elem_id-offset_beam)
169 tag_node(node_id) = 1
171 ELSEIF(elem_id>offset_spring.AND.elem_id
THEN
175 node_id = ixr(k,elem_id-offset_spring)
176 tag_node(node_id) = 1
179 IF(nint(geo(12,ixr(1,elem_id-offset_spring))) == 12)
THEN
180 node_id = ixr(4,elem_id-offset_spring)
181 tag_node(node_id) = 1
183 ELSEIF(elem_id>offset_triangle.AND.elem_id<=offset_ur)
THEN
187 node_id = ixtg(k,elem_id-offset_triangle)
188 tag_node(node_id) = 1
194 IF( (tag_node(n1)+tag_node(n2)+tag_node(n3)+tag_node(n4)) == number_node)
THEN
195 IF( .NOT.already_here(elem_id) )
THEN
196 buffer(j+2) = buffer(j+2) +
197 already_here(elem_id) = .true.
198 number_element_here = number_element_here + 1
199 list_element(number_element_here) = elem_id
209 DO i=1,number_element_here
210 elem_id = list_element(i)
211 already_here(elem_id) = .false.
216 DEALLOCATE( tag_node )
217 DEALLOCATE( list_element )
218 DEALLOCATE( already_here )