Apply Dirichlet BC on Vertex
Show older comments
For solvability my problem needs to have at least a single boundary node set as Dirichlet. From the image attached, I would like to place u=0 at vertex 1. I have tried (and it worked) to use a miniscule edge near that vertex and place Diriclet conditions on it. What I don't like about that approach is that since it was more than a single node involved in the tiny edge, I was concerned that it could impact the results.
The two edges (edge 1 and 4) adjacent to vertex 1 should have a homogeneous Neumann condition (u'=0).
Is there a way to use a function and logic (example below) to have the code use Neumann on edges 1 & 4 but when x=xmax and y=ymin if uses Dirichlet?
Somewhat like this:
myPhantomFuncArgs= @(location,state) myPhantomFunc_Q(location,state,xmax,ymin);
applyBoundaryCondition(model,"neumann","Edge",[EdgeBotNotAnode EdgeRightWall],"q",myPhantomFuncArgs,"g",0);
function funcQ = myPhantomFunc_Q(location,state,xmax,ymin)
if (location.x < xmax || location.y > ymin) % Defines NOT vertex 1
funcQ = 0;
else
funcQ = 1; % Condition when at vertex 1.
end
end
This does not work since when funcQ is 1, there is still the gradient portion of the Neumann BC expression!
Thanks for any input.
Paul

Accepted Answer
More Answers (0)
Categories
Find more on Geometry and Mesh in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!