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