Matlab学习笔记 pde using command-line function:
尽管pdetool GUI提供了一个方便的工作环境,但在某些情况下,需要灵活地使用命令行函数。
1.可能的情形:
1、 几何形状较复杂,除直线、圆弧和椭圆外
Geometrical shapes other than straight lines, circular arcs, and elliptical arcs
2、 非标准的边界条件
Nonstandard boundary conditions
3、 偏微分方程或边界条件的系数较复杂
Complicated PDE or boundary condition coefficients
4、 系统中有两个以上的因变量
More than two dependent variables in the system case
5、非局部解决方案约束
Nonlocal solution constraints
6、特殊解决方案的数据处理和演示详细说明
Special solution data processing and presentation itemize
如果部分建模是使用GUI完成的,然后通过GUI的大量数据导出工具可用于命令行,那么上述的某些情况下,GUI仍然可以提供帮助。
2.Data Structures and Utility Functions:
定义和解决问题的过程反映在GUI的设计中。许多数据结构定义了问题的不同方面,不同的处理阶段会从旧的数据结构中生成新的数据结构。如图所示(矩形框——function(语句),椭圆框——用矩阵或M-file表示的数据,箭头——函数所需的数据)
Constructive Solid Geometry Model
构造立体几何(CSG)模型由几何描述矩阵、集合公式和名称空间矩阵指定(specified by Geometry Description matrix, a set formula, and a Name Space matrix)。有关这些数据结构的描述,参阅decsg的参考页面。
这里,几何是由重叠的实体对象定义的。这些可以通过在GUI中绘制CSG模型来创建,然后使用Draw菜单中的Export Geometry Description、Set Formula和Labels选项导出数据。
Decomposed Geometry
分解后的几何图形由分解后的几何矩阵(Decomposed Geometry matrix)或几何M-file指定。
在这里,几何被描述为一组由边界段和边界段限定的不相交最小区域(a set of disjoint minimal regions bounded by boundary segments and border segments)。
通过使用函数decsg,可以从CSG模型创建一个分解的几何矩阵。它也可以通过从GUI中Boundary menu中选择 Export Decomposed Geometry ,Boundary Cond’s导出。还可以使用wgeom语句创建与给定分解几何矩阵等价的几何M-file(A Geometry M-file equivalent to a given Decomposed Geometry matrix)。
用pdegplot指令可以将分解后的几何图形可视化。
对于Decomposed Geometry matrix和Geometry M-file的数据结构的描述,请参阅decsg和pdegeom各自的参考页面。
Boundary Conditions
它们由边界条件矩阵(Boundary Condition matrix)或Boundary Condition matrix指定。边界条件以边界段上的函数形式(functions on boundary segments)给出。边界条件矩阵可以通过从GUI的Boundary menu选择Export Decomposed Geometry、Boundary Cond’s导出。可以使用wbound函数创建与给定边界条件矩阵等价的边界M-file( A Boundary M-file equivalent to a given Boundary Condition matrix )。请参阅assemb和pdebound的参考页面。
Equation Coefficients
对于PDE系数c、a、f和d, PDE可以用系数矩阵(Coefficient matrix)或系数M-file (Coefficient M-file)表示。系数是子域(subdomain)上的函数。可以通过从GUI 的PDE menu中选择Export PDE coefficient 选项,导出系数。有关方程系数数据结构的详细信息,请参阅assempde的参考页面。
Mesh
三角网格由点矩阵( Point matrix )、边矩阵( Edge matrix )和三角矩阵( Triangle matrix )组成的网格数据来描述。在网格中,最小区域被三角化成子域(subdomains),边界段和边界段(border segments and boundary
segments)被分割成边缘(edges)。网格数据是由initmesh函数从decomposed
geometry中创建的,并且可以被refinemesh和jigglemesh函数改变。
GUI Boundary menu提供了另一种创建网格数据的方法。adaptmesh函数创建网格数据作为解决方案过程的一部分。网格可以用pdemesh函数绘制。详细信息,可参见initmesh的参考页面。
Solution
给定一个解决方案/网格对,可以提供各种工具来可视化和处理数据。pdeintrp和pdeprtni可用于在定义为三角形节点(triangle nodes)的函数和定义为三角形中点(triangle midpoints)的函数之间进行插值。tri2grid将一个函数从一个三角形网格插值到一个矩形网格。pdegrad和pdecgrad计算解的梯度。pdeplot有大量用于绘制解决方案的选项。pdecont和pdesurf是pdeplot的简式。
3.Hints and Suggestions for Using Command-Line Functions
1.GUI导出可尽量保证语法正确
2.在GUI提供的可能性之外生成描述geometry M-file的一个好方法是使用GUI绘制类似的几何图形,导出分解的几何矩阵,并用wgeom编写M-file。然后可以手动编辑特殊的片段。一个例子是cardg。请参阅pdegeom的参考页面。
3.使用由assema和assemb产生的系统矩阵和向量有时是有价值的。在不同载荷或边界条件下求解同一方程时,只需装配一次刚度矩阵即可。(When solving the same equation for different loads or boundary conditions, it pays to assemble the stiffness matrix only once)可以通过将负载添加到右侧向量的相应行来实现特定节点上的点负载。一个非局部约束可以合并到H和R矩阵中。
4.手写system M-file的一个例子是circlef.m,它产生一个点负载。pdedemo7和assempde引用页面上找到完整的示例。
5.自适应网格生成和求解方法功能强大,但会导致网格密度大,计算时间长。将Ngen参数设置为1将限制您只能执行单个优化步骤。然后可以重复此步骤,以显示细化的进展。Maxt参数帮助您在自适应求解器生成太多三角形之前停止。
一个手写的三角形选择函数的例子是在pdedemo7中使用的circlepick。注意,你总是需要一个使用adaptmesh分解的几何图形。
6.通过在点矩阵p(Point matrix p)上增加偏移量,可以很容易地绘制出变形网格:
np=size(p,2);
pdemesh(p+scale*[u(1:np) u(np+1:np+np)]’,e,t)
|
请发表评论