www.gusucode.com > pde 案例源码 matlab代码程序 > pde/NoBoundaryConditionsBetweenSubdomainsExample.m

    %% No Boundary Conditions Between Subdomains
% There are two types of boundaries:
%
% * Boundaries between the interior of the region and the exterior of the
% region
% * Boundaries between subdomains—these are boundaries in the interior of the region
%
% Boundary conditions, either Dirichlet or generalized Neumann, apply only
% to boundaries between the interior and exterior of the region. This is
% because the toolbox formulation uses the weak form of PDEs. See
% <http://www.mathworks.com/help/pde/ug/basics-of-the-finite-element-method.html
% Finite Element Method (FEM) Basics>. In the weak formulation you do not
% specify boundary conditions between subdomains, even if coefficients are
% discontinuous between subdomains. So
% &tm_partialdifferentialequationtoolbox; does not support defining
% boundary conditions on subdomain boundaries.
%
% For example, look at a rectangular region with a circular subdomain. The
% red numbers are the subdomain labels, the black numbers are the edge
% segment labels.

% Rectangle is code 3, 4 sides, followed by x-coordinates and then y-coordinates
R1 = [3,4,-1,1,1,-1,-.4,-.4,.4,.4]';
% Circle is code 1, center (.5,0), radius .2
C1 = [1,.5,0,.2]';
% Pad C1 with zeros to enable concatenation with R1
C1 = [C1;zeros(length(R1)-length(C1),1)];
geom = [R1,C1];

% Names for the two geometric objects
ns = (char('R1','C1'))';

% Set formula
sf = 'R1 + C1';

% Create geometry
gd = decsg(geom,sf,ns);

% View geometry
pdegplot(gd,'EdgeLabels','on','SubdomainLabels','on')
xlim([-1.1 1.1])
axis equal
%%
% You need not give boundary conditions on segments 5, 6, 7, and 8, because
% these are subdomain boundaries, not exterior boundaries.
%
% However, if the circle is a hole, meaning it is not part of the region,
% then you do give boundary conditions on segments 5, 6, 7, and 8.