主要内容

3-D溶液和具有MATLAB函数的梯度图

3-D解决方案图的类型可用MATLAB

除了PDE绘图功能可提供的表面和梯度图外,您还可以使用MATLAB®图形功能可为3D模型创建更多类型的图。

2D切片通过3D几何形状

此示例显示了如何通过3D几何形状从2D切片中获取图。

问题是

t - δ = F

在尺寸为10 x 10 by-1的3D平板上,其中 = 0 时间t = 0,边界条件是Dirichlet,并且

F (( X ,,,, y ,,,, z = 1 + y + 1 0 z 2

设置并解决PDE

定义非线性功能F语法系数指定系数的F系数

函数bcmatrix = myfffun(区域,状态)

bcmatrix = 1+10*region.z。^2+region.y;

导入几何并检查面部标签。

model = createpde;g = importgeemetry(模型,'板10x10x1.stl');pdegplot(g,'facelabels',,,,'上',,,,'facealpha',0.5)

图包含一个轴对象。轴对象包含3个类型Quiver,Patch,Line的对象。

面孔编号为1到6。

创建系数和边界条件。

C = 1;a = 0;d = 1;f = @myfffun;指定系数(模型,'M',0,'D',D,'C',C,'一个',一个,'F',F);应用程序条件(模型,'dirichlet',,,,'脸',1:6,'U',0);

设置零初始条件。

setInitialConditions(模型,0);

创建一个不超过0.3的侧面的网格。

generatemesh(模型,'hmax',0.3);

将时间从0到0.2设置,并求解PDE。

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*一个(size(yy));uintrp = InterPolateLoute(结果,xx,yy,zz,1:长度(tlist));

溶液矩阵uintrp有11列,每次tlist。以第二列的插值解决方案,对应于时间0.02。

usol = uintrp(:,2);

元素USOL来自将解决方案插入到xx,,,,是的, 和Z Z矩阵,每个矩阵5 x-21,对应于z-by-y变量。重塑USOL达到相同的5 x-21尺寸,并制作溶液的表面图。还使表面图对应于时间0.06、0.10和0.20。

图usol = reshape(usol,size(xx));子图(2,2,1)冲浪(USOL)标题('t = 0.02')zlim([0,1.5])xlim([1,21])ylim([1,5])usol = uintrp(:,4);usol = reshape(usol,size(xx));子图(2,2,2)冲浪(USOL)标题('t = 0.06')zlim([0,1.5])xlim([1,21])ylim([1,5])usol = uintrp(:,6);usol = reshape(usol,size(xx));子图(2,2,3)冲浪(USOL)标题('t = 0.10')zlim([0,1.5])xlim([1,21])ylim([1,5])usol = uintrp(:,11);usol = reshape(usol,size(xx));子图(2,2,4)冲浪(USOL)标题('t = 0.20')Zlim([0,1.5])Xlim([1,21])Ylim([1,5])

图包含4个轴对象。轴对象1带标题t = 0.02包含一个类型表面对象。轴对象2带标题t = 0.06包含一个类型表面对象。轴对象3带标题t = 0.10包含一个类型表面对象。标题t = 0.20的轴对象4包含一个类型表面对象。

通过3-D解决方案进行轮廓切片

此示例显示了如何通过3D几何形状中的解决方案在各个方向上创建轮廓切片。

设置并解决PDE

问题是要为复杂的几何形状求解用零dirichlet边界条件的泊松方程。泊松方程是

- Å = F

部分微分方程Toolbox™以表单求解方程

- Å (( C + 一个 = F

因此,您可以通过设置来表示问题 C = 1 一个 = 0 。任意设置 F = 1 0

C = 1;a = 0;F = 10;

解决任何3-D PDE问题的第一步是创建PDE模型。这是一个容纳PDE的方程,几何,网格和边界条件的容器。创建模型,然后导入'前臂链接'文件并查看几何形状。

n = 1;model = createpde(n);导入测定法(模型,'前臂链接');PDEGPLOT(模型,'facealpha',0.5)视图(-42,24)

图包含一个轴对象。轴对象包含3个类型Quiver,Patch,Line的对象。

指定PDE系数

将PDE系数包括在模型

指定系数(模型,'M',0,'D',0,'C',C,'一个',一个,'F',F);

在所有面上创建零dirichlet边界条件。

应用程序条件(模型,'dirichlet',,,,...'脸',1:model.deometry.numfaces,...'U',0);

创建网格并解决PDE。

generatemesh(型号);结果= solvepde(model);

将解决方案绘制为轮廓切片

因为边界条件是 = 0 在所有面孔上,解决方案 仅在内部中为非零。要检查内部,请取一个矩形网格,该网格在每个坐标方向上覆盖一个单元的几何形状。

[x,y,z] = meshgrid(0:135,0:35,0:61);

用于绘图和分析,创建一个PDERESULTS解决方案的对象。在每个网格点插值结果。

v = interpolateLoute(结果,x,y,z);v = reshape(v,size(x));

绘图轮廓切片的各种值 z

图colormap喷射contourslice(x,y,z,v,[],[],0:5:60)xlabel('X')ylabel('y')Zlabel('Z')配色栏视图(-11,14)轴平等的

图包含一个轴对象。轴对象包含335个类型补丁的对象。

绘图轮廓切片的各种值 y

图colormap喷射contourslice(x,y,z,v,[],1:6:31,[])xlabel('X')ylabel('y')Zlabel('Z')配色栏视图(-62,34)轴平等的

图包含一个轴对象。轴对象包含91个类型补丁的对象。

通过需要评估来节省内存

对于大型问题,创建精细的3-D网格时,您可能会用尽内存。此外,在完整网格上评估解决方案可能很耗时。为了节省内存和时间,请仅在您绘制的点上进行评估。您也可以使用此技术将插值插入倾斜的网格或其他表面。

例如,将溶液插入倾斜平面上的网格 0 X 1 3 5 ,,,, 0 y 3 5 , 和 z = X / 1 0 + y / 2 。绘制轮廓和彩色表面数据。使用细网格,间距为0.2。

[x,y] = meshgrid(0:0.2:135,0:0.2:35);z = x/10 + y/2;v = interpolateLoute(结果,x,y,z);v = reshape(v,size(x));图子图(2,1,1)轮廓(x,y,v);轴平等的标题(“倾斜飞机上的轮廓图”)xlabel('X')ylabel('y')配色栏子图(2,1,2)冲浪(x,y,v,'linestyle',,,,'没有任何');轴平等的查看(0,90)标题(“倾斜平面上的彩色情节”)xlabel('X')ylabel('y')配色栏

图包含2个轴对象。轴对象1带有标题轮廓图上的倾斜平面上的对象包含类型轮廓的对象。轴对象2带有标题彩色图的倾斜平面上包含一个类型表面对象。

梯度和流线的图

此示例显示了如何计算解决方案的近似梯度,以及如何在箭袋图或精简图中使用这些梯度。

问题是计算来自包含吸收(逃生)边界和反映边界的区域的布朗粒子的平均退出时间。有关更多信息,请参阅狭窄的逃生问题。PDE是具有恒定系数的泊松方程。几何形状是简单的矩形固体。解决方案 (( X ,,,, y ,,,, z 代表平均粒子从位置开始的平均时间 (( X ,,,, y ,,,, z 退出该地区。

导入并查看几何形状

model = createpde;导入测定法(模型,'block.stl');PDEGPLOT(模型,'facelabels',,,,'上',,,,'facealpha',0.5)视图(-42,24)

图包含一个轴对象。轴对象包含3个类型Quiver,Patch,Line的对象。

设定边界条件

固定面1、2和5是粒子可以逃脱的地方。在这些面孔上,解决方案 = 0 。保持默认反映面部3、4和6的边界条件。

应用程序条件(模型,'dirichlet',,,,'脸',[1,2,5],'U',0);

创建PDE系数

PDE是

- δ = - Å = 2

在部分微分方程工具箱™语法中,

- Å (( C + 一个 = F

该方程转换为系数C = 1,,,,a = 0, 和F = 2。输入系数。

C = 1;a = 0;F = 2;指定系数(模型,'M',0,'D',0,'C',C','一个',一个,'F',F);

创建网格并解决PDE

初始化网格。

generatemesh(型号);

解决PDE。

结果= solvepde(模型);

在轮廓切片图中检查解决方案

创建一个网格并插入溶液到网格。

[x,y,z] = meshgrid(0:135,0:35,0:61);v = interpolateLoute(结果,x,y,z);v = reshape(v,size(x));

为五个固定值创建一个轮廓切片图y-协调。

图colormap喷射contourslice(x,y,z,v,[],0:4:16,[])xlabel('X')ylabel('y')Zlabel('Z')xlim([0,100])Ylim([0,20])Zlim([0,50])轴平等的查看(-50,22)配色栏

图包含一个轴对象。轴对象包含64个类型补丁的对象。

粒子的平均出口时间最大 (( X ,,,, y ,,,, z = (( 1 0 0 ,,,, 0 ,,,, 0

将梯度用于箭袋和简化图

通过评估溶液的梯度,更详细地检查解决方案。使用一个相当粗的网格,以便您可以在箭袋和流线图上查看详细信息。

[x,y,z] = meshgrid(1:9:9:99,1:3:20,1:6:50);[Gradx,Grady,Gradz] =评估Gradient(结果,X,Y,Z);

绘制梯度向量。首先将近似梯度重塑为网格的形状。

gragx = reshape(gradx,size(x));grady = reshape(grady,size(y));gradz = reshape(gradz,size(z));图Quiver3(X,Y,Z,Gradx,Grady,Gradz)轴平等的XLABEL'X'ylabel'y'Zlabel'Z'标题(“溶液估计梯度的颤抖图”

图包含一个轴对象。带有标题Quiver图的轴对象估计的解决方案梯度包含一个类型Quiver的对象。

绘制近似梯度的流线。从一组稀疏的初始点启动流线。

抓住[sx,sy,sz] = meshgrid([[1,46],1:6:20,1:12:50);流线(X,Y,Z,Gradx,Grady,Gradz,SX,SY,SZ)标题(“用流线颤抖的情节”) 抓住离开

图包含一个轴对象。带有标题Quiver图的轴对象包含41个Quiver,Line的对象。

流线表明yz给出更大的平均出口时间。他们还表明X- 坐标对什么时候X很小,但是X大于40,较大的值对。同样,什么时候z小于20,其价值对