function  BCs=DefineBoundaryConditions(UserVar,CtrlVar,MUA,BCs,time,s,b,h,S,B,ub,vb,ud,vd,GF)

BCs=DefineBoundaryConditions(UserVar,CtrlVar,MUA,BCs,time,s,b,h,S,B,ub,vb,ud,vd,GF)

BC is a matlab object with the following fields

BCs =
BoundaryConditions with properties:
            ubFixedNode: []
           ubFixedValue: []
            vbFixedNode: []
           vbFixedValue: []
            ubTiedNodeA: []
            ubTiedNodeB: []
            vbTiedNodeA: []
            vbTiedNodeB: []
    ubvbFixedNormalNode: []
   ubvbFixedNormalValue: []
            udFixedNode: []
           udFixedValue: []
            vdFixedNode: []
           vdFixedValue: []
            udTiedNodeA: []
            udTiedNodeB: []
            vdTiedNodeA: []
            vdTiedNodeB: []
    udvdFixedNormalNode: []
   udvdFixedNormalValue: []
             hFixedNode: []
            hFixedValue: []
             hTiedNodeA: []
             hTiedNodeB: []
               hPosNode: []
              hPosValue: []

see also BoundaryConditions.m

Examples:

To set velocities at all grounded nodes along the boundary to zero:
GroundedBoundaryNodes=MUA.Boundary.Nodes(GF.node(MUA.Boundary.Nodes)>0.5);
BCs.vbFixedNode=GroundedBoundaryNodes;
BCs.ubFixedNode=GroundedBoundaryNodes;
BCs.ubFixedValue=BCs.ubFixedNode*0;
BCs.vbFixedValue=BCs.vbFixedNode*0;
x=MUA.coordinates(:,1); y=MUA.coordinates(:,2);
xd=max(x(:)) ; xu=min(x(:)); yl=max(y(:)) ; yr=min(y(:));


% find nodes along boundary, simple approach
% nodesd=find(abs(x-xd)<1e-5); [~,ind]=sort(MUA.coordinates(nodesd,2)); nodesd=nodesd(ind);
% nodesu=find(abs(x-xu)<1e-5); [~,ind]=sort(MUA.coordinates(nodesu,2)); nodesu=nodesu(ind);
% nodesl=find(abs(y-yl)<1e-5); [~,ind]=sort(MUA.coordinates(nodesl,1)); nodesl=nodesl(ind);
% nodesr=find(abs(y-yr)<1e-5); [~,ind]=sort(MUA.coordinates(nodesr,1)); nodesr=nodesr(ind);

% find nodes along boundary, more robust approach.
% Here we are using the fact that all nodes along the boundary in the list:
%
%   MUA.Boundary.Nodes
%
% And we only limit the search to those nodes along the boundary.
%
L=min(sqrt(MUA.EleAreas)/1000); % set a distance tolerance which is a fraction of smallest element size
nodesd=MUA.Boundary.Nodes(abs(MUA.coordinates(MUA.Boundary.Nodes,1)-xd)<L) ;
nodesu=MUA.Boundary.Nodes(abs(MUA.coordinates(MUA.Boundary.Nodes,1)-xu)<L) ;
nodesl=MUA.Boundary.Nodes(abs(MUA.coordinates(MUA.Boundary.Nodes,2)-yl)<L);
nodesr=MUA.Boundary.Nodes(abs(MUA.coordinates(MUA.Boundary.Nodes,2)-yr)<L);

BCs.ubFixedNode=nodesu ;
BCs.ubFixedValue=BCs.ubFixedNode*0;
BCs.vbFixedNode=[nodesu;nodesl;nodesr] ;
BCs.vbFixedValue=BCs.vbFixedNode*0;
end