求解常边界条件偏微分方程
这个例子展示了如何对标量偏微分方程和偏微分方程系统应用各种常数边界条件规范。
几何
所有的规格都使用相同的2-D几何图形,即带圆孔的矩形。
%矩形是代码3,4条边,%后面是x坐标,然后是y坐标R1 = [3,4,-1,1,1,-1,- 4,-.4,.4,.4]';圆的代码为1,圆心(.5,0),半径为。2C1 = [1,.5,0,.2]';%用零填充C1以启用与R1的连接C1 = [C1; 0 (length(R1)-length(C1),1)];geom = [R1,C1];两个几何对象的名称Ns = (char(R1的,“C1”));%设定公式科幻小说=' r1 - c1 ';%创建几何体G = decsg(geom,sf,ns);%创建几何模型模型= createpde;在模型中包含几何图形%并查看几何图形geometryFromEdges(模型中,g);pdegplot(模型,“EdgeLabels”,“上”) xlim([-1.1 1.1]平等的
标量问题
假设第3条边的狄利克雷条件值为32,第1条边的狄利克雷条件值为72,所有其他边的诺伊曼边界条件值为Q = 0
,G = -1
.
applyBoundaryCondition(模型,“边界条件”,...“边缘”3,“u”、32);applyBoundaryCondition(模型,“边界条件”,...“边缘”, 1“u”, 72);applyBoundaryCondition(模型,“纽曼”,...“边缘”(2, 4:8),“g”1);
这就完成了边界条件规范。
用这些边界条件求解椭圆偏微分方程C = 1
,A = 0
,F = 10
.因为较短的矩形边有0.8的长度,为了保证网格不太粗,选择一个最大网格尺寸Hmax = 0.1
.
specifyCoefficients(模型,“m”,0,“d”,0,“c”, 1“一个”,0,“f”10);generateMesh(模型,“Hmax”, 0.1);结果= solvepde(模型);u = results. nodesolution;pdeplot(模型,“XYData”u“ZData”, u)视图(-23 8)
偏微分方程系统
假设系统有N = 2
.
边3有值为[32,72]的狄利克雷条件。
边1有值为[72,32]的狄利克雷条件。
边4对于第一个值为52的分量有一个Dirichlet条件,对于第二个值为52的分量有一个Neumann条件
Q = 0
,G = -1
.边2有诺伊曼边界条件
Q = [1,2;3,4]
而且G = [5,-6]
.圆边(边5到边8)有
Q = 0
而且G = 0
.
模型= createpde(2);geometryFromEdges(模型中,g);applyBoundaryCondition(模型,“边界条件”,...“边缘”3,“u”[72]);applyBoundaryCondition(模型,“边界条件”,...“边缘”, 1“u”, 72年,32);applyBoundaryCondition(模型,“混合”,...“边缘”4“u”52岁的...“EquationIndex”, 1“g”[0, 1]);Q2 = [1,2;3,4];G2 = [5,-6];applyBoundaryCondition(模型,“纽曼”,...“边缘”2,...“q”第二季度,“g”, G2);下一步是可选的,%,因为它将“g”设置为默认值applyBoundaryCondition(模型,“纽曼”,...“边缘”8,“g”, (0,0));
这就完成了边界条件规范。
利用这些边界条件求解椭圆偏微分方程C = 1
,A = 0
,F = [10;-10]
.因为较短的矩形边有0.8的长度,为了保证网格不太粗,选择一个最大网格尺寸Hmax = 0.1
.
specifyCoefficients(模型,“m”,0,“d”,0,“c”, 1...“一个”,0,“f”, 10, -10);generateMesh(模型,“Hmax”, 0.1);结果= solvepde(模型);u = results. nodesolution;pdeplot(模型,“XYData”u (:, 2),“ZData”u (: 2)