function [node_xy,elem_node] = ElemQ9(L,H,m,n,varargin)
% ====================================================%
% function to create Q9 elements (2D) %
% INPUT: %
% > length (L) and height (H), %
% > division over x (m) and division over y (n) %
% > option for plotting (varargin) %
% OUTPUT: %
% > coordinate of nodes [node_xy] %
% > element connectivity [elem_node] %
% ====================================================%
% Nodes coordinates [x y]
[x,y] = meshgrid(0:L/2/m:L,0:H/2/n:H);
node_xy = [x(:) y(:)];
node_xy = sortrows(node_xy,2);
% Connectivity matrix [node1 node2 node3 node4]
elem_node = [];
for i = 1:n
for j = 1:2:2*m
elem_i = [[j j+2] [j+2 j]+(2*m+1)*2 j+1 ...
(j+2)+(2*m+1) (j+1)+(2*m+1)*2 j+(2*m+1) (j+1)+(2*m+1)]...
+ (2*m+1)*2*(i-1);
elem_node = cat(1,elem_node,elem_i);
end
end
%===================================
% Plot (optional)
%===================================
if nargin > 4
figure
plot(node_xy(:,1),node_xy(:,2),'ro')
hold on
for j = 1:size(elem_node,1)
for k = 1:size(elem_node,2)-1
pause(0.1)
plot(node_xy(elem_node(j,k:k+1),1),...
node_xy(elem_node(j,k:k+1),2),'b:','linewidth',3)
end
end
hold off
end
end