%
%  rectangular_plate_drive_constraints.m  ver 1.0  September 12, 2012
%
function[ea,nd,nem,idn]=rectangular_plate_drive_nodes(nx,ny)
%
disp(' Select drive nodes ');
disp('  1=corners only ');
disp('  2=left edge ');
disp('  3=left & bottom edges ');
disp('  4=left & right edges ');
disp('  5=left, botton & right edges ');
disp('  6=all edges ');
idn=input(' ');
%
%
j=1;  % important
%
if(idn==1)
     nd=[1  nx   (nx*(ny-1)+1)  nx*ny    ]';
     j=j+4;
end
%
if(idn >=2 )  % left
     ijk=1;    
     for i=1:ny
         nd(j)=ijk;
         j=j+1;
         ijk=ijk+nx;
     end  
end
%  
if(idn==3 || idn==5 || idn==6)  % bottom
     for i=1:nx
         nd(j)=i;
         j=j+1;     
     end  
end
%
if(idn>=4 )  % right
     ijk=nx;
     for i=1:ny
         nd(j)=ijk;
         j=j+1;
         ijk=ijk+nx;
     end  
end
%
if(idn==6)  % top
      for i=(nx*(ny-1)+1):(nx*ny)
            nd(j)=i;
            j=j+1;
      end  
 
end
%
nd=sort(nd);
nd=unique(nd);
%
nem=length(nd);
%
ea=zeros(nem,1);
%
ijk=1;
for i=1:nem
    ea(ijk)=3*nd(i)-2;
    ijk=ijk+1;
end
%