除了表面和梯度图可用的PDE绘图函数,您可以使用MATLAB®图形功能,为您的3-D模型创建更多类型的图。
在二维切片上绘图-要检查几何体内部的解决方案,请定义与几何体相交的二维网格,并将解决方案插值到网格上。例如,请参阅通过三维几何体的二维切片和轮廓切片通过三维解决方案.虽然这两个例子显示的是平面网格切片,但您也可以在曲面网格上切片。
流线或颤动图-用流线或颤动图表示解的梯度。看到梯度和流线图.
您可以使用任何MATLAB绘图命令来创建3-D图。看到标量体积数据可视化技术和可视化向量体积数据.
这个例子展示了如何通过一个3-D几何体从2-D切片中获取绘图。
现在的问题是
在一个尺寸为10x10x1的三维平板上
在时间t = 0
,边界条件是狄利克雷,和
建立和解决PDE
为非线性定义一个函数f
语法中的系数f指定系数系数.
函数bcMatrix=myfffun(区域、状态)
bcMatrix = 1 + 10 * region.z。^ 2 + region.y;
导入几何图形并检查面标签。
模型= createpde;g = importGeometry(模型,“Plate10x10x1.stl”);pdegplot(g,“FaceLabels”,“上”,“FaceAlpha”, 0.5)
这些面编号为1到6。
创建系数和边界条件。
c = 1;= 0;d = 1;f = @myfffun;specifyCoefficients(模型,“我是0,' d 'd“c”c“一个”一个,“f”f);applyBoundaryCondition(模型,“边界条件”,“脸”1:6,“u”, 0);
设置零初始条件。
setInitialConditions(模型中,0);
创建一个边长不超过0.3的网格。
generateMesh(模型,“Hmax”, 0.3);
从0到0.2设置时间,解偏微分方程。
tlist=0:0.02:0.2;结果=solvepde(模型,tlist);
情节切片通过解决方案
创建一个网格(x, y, z)
点,在哪里x=5
,y
取值范围为0 ~ 10,和z
取值范围为0 ~ 1。插值这些网格点和所有时间的解。
yy = 0:0.5:10;zz = 0:0.25:1;[YY, ZZ] = meshgrid (YY, ZZ);XX = 5 *的(大小(YY));uintrp = interpolateSolution(结果,XX, YY、ZZ 1:长度(tlist));
解矩阵uintrp
有11列,每一列代表一次tlist
.取第二列的插值解,它对应时间0.02。
usol=uintrp(:,2);
的元素usol
来自于插值的解XX
,YY
,ZZ
矩阵,每个是5乘21,对应于z-by-y
变量。重塑usol
以同样的5乘21的尺寸,并绘制解决方案的曲面图。同时制作对应于0.06、0.10和0.20倍的曲面图。
figure usol =重塑(usol,size(XX));次要情节(2、2、1)冲浪(usol)标题(“t = 0.02”)zlim([0,1.5])xlim([1,21])ylim([1,5])usol=uintrp(:,4);usol=重塑(usol,尺寸(XX));子地块(2,2,2)冲浪(usol)标题(“t = 0.06”) zlim ([0, 1.5]) xlim ([1, 21]) ylim((1、5))usol = uintrp (:, 6);usol =重塑(usol、大小(XX));次要情节(2,2,3)冲浪(usol)标题(“t = 0.10”) zlim ([0, 1.5]) xlim ([1, 21]) ylim((1、5))usol = uintrp (:, 11);usol =重塑(usol、大小(XX));次要情节(2,2,4)冲浪(usol)标题(‘t=0.20’xlim([0,5]) xlim([1,21]) ylim([1,5])
此示例演示如何通过三维几何体中的解决方案在各个方向创建轮廓切片。
建立和解决PDE
问题是求解具有零狄利克雷边界条件的复杂几何Poisson方程。泊松方程
偏微分方程工具箱™用于求解这种形式的方程
你可以通过设置来表示这个问题 和 .任意设置 .
c = 1;= 0;f = 10;
解决任何三维PDE问题的第一步是创建PDE模型。这是一个容器,用于保存PDE的方程、几何形状、网格和边界条件的数量。创建模型,然后导入“ForearmLink.stl”
文件和查看几何。
N = 1;模型= createpde (N);importGeometry(模型,“ForearmLink.stl”);pdegplot(模型,“FaceAlpha”, 0.5)视图(-42,24)
指定PDE系数
包括PDE系数模型
.
specifyCoefficients(模型,“我是0,' d '0,“c”c“一个”一个,“f”f);
在所有面上创建零狄利克雷边界条件。
applyBoundaryCondition(模型,“边界条件”,“脸”1: model.Geometry.NumFaces,“u”, 0);
创建一个网格并解决PDE。
generateMesh(模型);结果= solvepde(模型);
将解决方案绘制为等高线切片
因为边界条件是 在所有面上,解决方案 仅在内部为非零。若要检查内部,请使用矩形网格覆盖几何体,每个坐标方向的间距为一个单位。
[X, Y, Z] = meshgrid (0:135, 0:35 0:61);
为了绘制和分析,创建一个PDEResults
对象从解决方案。在每个网格点上插入结果。
V = interpolateSolution(因此,X, Y, Z);V =重塑(V,大小(X));
绘制不同值的等高线切片 .
图colormap飞机contourslice (X, Y, Z, V,[],[], 0:5:60)包含(“x”) ylabel (“y”) zlabel (“z”)颜色栏视图(-11,14)轴平等的
绘制不同值的等高线切片 .
图colormap飞机contourslice (X, Y, Z, V,[], 1:6:31,[])包含(“x”) ylabel (“y”) zlabel (“z”)颜色条视图(-62,34)轴平等的
按需计算以节省内存
对于大问题,您可能会在创建精细的3d网格时耗尽内存。此外,在完整的网格上评估解决方案可能非常耗时。为了节省内存和时间,只在您绘制的点进行评估。你也可以使用这种技术来插入倾斜的网格或其他表面。
例如,将解插入到倾斜平面上的网格中 , , .绘制等高线和彩色表面数据。使用精细网格,间距为0.2。
[X,Y]=网格(0:0.2:135,0:0.2:35);Z=X/10+Y/2;V=插值解算(结果,X,Y,Z);V=重塑(V,尺寸(X));图形子地块(2,1,1)轮廓(X,Y,V);轴平等的标题(“倾斜平面上的等高线图”)包含(“x”) ylabel (“y”) colorbar subplot(2,1,2) surf(X,Y,V,“线条样式”,“没有”);轴平等的视图(0,90)标题(“倾斜平面上的彩色地块”)包含(“x”) ylabel (“y”) colorbar
这个例子展示了如何计算一个解的近似梯度,以及如何在抖动图或流线图中使用这些梯度。
问题是计算布朗粒子从包含吸收(逃逸)边界和反射边界的区域的平均退出时间。有关更多信息,请参见九死一生的问题.偏微分方程是常系数泊松方程。几何形状是一个简单的矩形实体。解决方案 表示粒子从某个位置开始所花费的平均时间 退出该区域。
导入并查看几何体
模型=createpde;导入几何(模型,“Block.stl”);pdegplot(模型,“FaceLabels”,“上”,“FaceAlpha”, 0.5)视图(-42,24)
设置边界条件
将面1、2和5设置为粒子可以逃逸的位置。在这些面上,解决方案 .在面3、4和6上保持默认的反射边界条件。
applyBoundaryCondition(模型,“边界条件”,“脸”(1、2、5),“u”, 0);
创建PDE系数
PDE是
在偏微分方程工具箱中™ 语法,
这个方程转化为系数c = 1
,一个= 0
,f=2
.输入系数。
c=1;a=0;f=2;特定系数(型号,“我是0,' d '0,“c”c’,“一个”一个,“f”f);
创建网格和解决PDE
初始化网格。
generateMesh(模型);
解偏微分方程。
结果= solvepde(模型);
在等高线切片图中检查解决方案
创建一个网格并将解决方案插入到网格中。
[X, Y, Z] = meshgrid (0:135, 0:35 0:61);V = interpolateSolution(结果,X, Y, Z);V =重塑(V,大小(X));
的5个固定值创建一个等高线切片图y
协调。
图colormap飞机轮廓切片(X,Y,Z,V,[],0:4:16,[])X标签(“x”) ylabel (“y”) zlabel (“z”)xlim([0100])ylim([0,20])zlim([0,50])轴平等的(-50年,22)colorbar视图
粒子在该点附近的平均退出时间最大 .
在抖动和流线图中使用渐变
通过评估解决方案的梯度,更详细地检查解决方案。使用一个相当粗糙的网格,以便您可以看到箭袋和流线图上的细节。
[X, Y, Z] = meshgrid (1:9:99, 1:3:20 1:6:50);[gradx, grady, gradz] = evaluateGradient(结果,X, Y, Z);
画出梯度向量。首先将近似的梯度重塑为网格的形状。
gradx=重塑(gradx,大小(X));grady=重塑(grady,大小(Y));gradz=重塑(gradz,大小(Z));图3(X、Y、Z、gradx、grady、gradz)轴平等的xlabel“x”ylabel“y”zlabel“z”标题(“估计溶液梯度的颤动图”)
绘制近似梯度的流线。从一组稀疏的起始点开始流线。
持有在[sx, sy, sz) = meshgrid ([1, 46], 1:6:20 1:12:50);简化(X, Y, Z, gradx grady, gradz, sx, sy, sz)标题(“带流线的颤抖情节”)举行从
流线显示,较小的y
和z
给出更大的平均退出时间。他们还表明x
-coordinate对u
当x
很小,但是什么时候呢x
是否大于40,较大的值对u
.同样的,当z
是否小于20,其值影响不大u
.