In the PDE toolbox, can I set my Dirichlet boundary condition to a single point rather than the edge?
4 次查看(过去 30 天)
显示 更早的评论
In the PDEtoolbox, can I set my Dirichlet boundary condition to a single point rather than the edge?
We use the following code (a really small circle) to approximate the Dirichlet boundary condition for a single point (u=220 when x=0 and y=0). I would like to know if there is a method to directly define boundary conditions on a Point instead of an Edge.
Circle = [1,0,0,0.001]';
applyBoundaryCondition(GWModel,'dirichlet','Edge',[5,6,7,8],'u',220);
%Create FE analysis object
GWModel = createpde();
%Create 2-D geometry
%R = [3,4,200,200,-200,-200,100,-100,-100,100]';
R = [2,4,200,200,-200,-200,100,-100,-100,100]';
Circle = [1,0,0,0.001]';
Circle = [Circle;zeros(length(R) - length(Circle),1)];
gd = [R,Circle];
ns = char('RectangularDomain','Well'); ns = ns';
sf = 'RectangularDomain-Well';
[g,bt] = decsg(gd,sf,ns);
geometryFromEdges(GWModel,g);
figure(1);pdegplot(GWModel,'EdgeLabels','on');xlim([-250,250]), ylim([-150,150]);axis equal
specifyCoefficients(GWModel, 'm',0,'d',0,'c',1,'a',0,'f',0);
%Assume Boundary conditions
applyBoundaryCondition(GWModel,'dirichlet','Edge',[5,6,7,8],'u',220);
applyBoundaryCondition(GWModel,'dirichlet','Edge',[1,2,3,4], 'u',200);
%applyBoundaryCondition(GWModel,'neumann', 'Edge',[1,4], 'q',0,'g',0);
%Create a mesh, max size
hmax = 1.25;
generateMesh(GWModel,'Hmax',hmax);
GWModel.Mesh
figure(2);pdemesh(GWModel);xlim([-250,250]), ylim([-150,150]);axis equal;
%Solve PDE
results = solvepde(GWModel);
u = results.NodalSolution;
%Compute the flux of the solution and plot the results.
[cgradx,cgrady] = evaluateCGradient(results);
fluxx = -cgradx;
fluxy = -cgrady;
%Plot solution
figure(3)
pdeplot(GWModel,'XYData',u,'Contour','on','FlowData',[fluxx,fluxy])
axis equal
title('Numerical Solution');xlabel('x');ylabel('y')
xlim([-200,200]), ylim([-100,100])
1 个评论
xl z
2024-6-12
Hello, Have you adressed your issue about applying Dirichlet boundary condition to a single point?
回答(1 个)
Avni Agrawal
2023-10-26
Hi,
I understand that you are trying to apply Dirichlet boundary conditions to single point instead of edge. But, in PDE Toolbox of MATLAB, you typically apply boundary conditions on the boundaries or edges of the geometry, not at individual points. This is because the solutions to PDEs are generally defined over a continuous space, and the value at a single point doesn't usually affect the solution across the rest of the domain unless that point is at the boundary.
If you need to enforce a condition at a single point within the domain, you might need to reconsider your model or explore using a different numerical method that allows for point-specific constraints.
The PDE Toolbox in MATLAB doesn't support setting Dirichlet boundary conditions at a single point within the domain. It supports Edges and Face only.
Take a look at this documentation for better understanding:
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Boundary Conditions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


