已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Matlab网格划分程序Distmesh讲解(一)/persson/mesh/Distmesh 是一个matlab语言写的网格划分软件。源文件可以从上面的网址获取。这里按行讲解各个算例。p01_demo:概算例是一个单位圆(半径为1)的网格划分,划分后的网格为:以下逐行讲解该算例:function p01_demo ( iteration_max, h )% Parameters:% Input, integer ITERATION_MAX, the maximum number of iterations that DISTMESH% should take. (The program might take fewer iterations if it detects convergence.)% Input, real h, the mesh spacing parameter.% 这里有两个输入参数,一个是ITERATION_MAX,迭代的最大次数。% 另一个是h, 网格划分的大小。 0h1% 默认参数值为: ITERATION=200 h=0.1 p, t =distmesh_2d( fd, fh, h0, box, iteration_max, fixed );函数需要至少六个参数。d = fd ( p ), p=x yfd 给定任一点到边界的距离函数,本例中定义为: d = sqrt(x2+y2)-1;fh, scaled edge length function h(x,y). 也就是网格大小的函数。h0 也就是h, 网格的大小real BOX(2,2), the bounding box xmin,ymin; xmax,ymax.最大外围矩形范围。 本例中为0,0;1,1ITERATION_MAX, the maximum number of iterations.real PFIX(NFIX,2), the fixed node positions. 网格中需要固定的点坐标,也就是一定需要出现在网格中的点。输出参数:real P(N,2), the node positions. 网格点的x,y坐标integer T(NT,3), the triangle indices. 输出网格任一一个三角形的三个顶点。第一步: x, y = meshgrid ( box(1,1) : h0 : box(2,1), .box(1,2) : h0*sqrt(3)/2 : box(2,2) );根据h0,网格的大小,先把能涵盖欲划分区域的最大矩形划分为结构网格。然后把偶数行的点整体向右平移半格,x(2:2:end,:) = x(2:2:end,:) + h0 / 2;效果如下:第二步:根据fd的函数定义,移除边界外的点。p = p( feval_r( fd, p, varargin: ) = geps, : );varagin为fd,fh的附加参数,这里为空。geps = 0.001 * h0;也就是保留了到边界的距离以外0.001 * h0以内的点。根据网格密度函数fh,每个点上产生一个0-1随机数,判断是否小于r0/max(r0)大于的话,改点被删除。p = pfix; p(rand(size(p,1),1) r0 ./ max ( r0 ),: ) ; nfix, dummy = size ( pfix );当指定了某些点要保留的时候,把保留的点加入,删除重复的点。% Especially when the user has included fixed points, we may have a few% duplicates. Get rid of any you spot.%p = unique ( p, rows );N = size ( p, 1 );这个时候产生的网格如下:第三步:迭代pold = inf; %第一次迭代前设置旧的点的坐标为无穷while ( iteration iteration_max ) iteration = iteration + 1;%先判断上次移动后的点和旧的点之间的移动距离,如果小于某个阀值,停止迭代if ( ttol max ( sqrt ( sum ( ( p - pold ).2, 2 ) ) / h0 ) )pold = p; %如果还可以移动,保存当前的节点t = delaunayn ( p ); %利用delauny算法,生成三角形网格triangulation_count = triangulation_count + 1;pmid = ( p(t(:,1),:) + p(t(:,2),:) + p(t(:,3),:) ) / 3; %计算三角形的重心。t = t( feval_r( fd, pmid, varargin: ) 0;%计算移动梯度,相对边界dgradx = ( feval_r(fd,p(ix,1)+deps,p(ix,2),varargin:) - d(ix) ) / deps;dgrady = ( feval_r(fd,p(ix,1),p(ix,2)+deps,varargin:) - d(ix) ) / deps;%将这些移动到边界外的投射回边界上p(ix,:) = p(ix,:) - d(ix) .* dgradx, d(ix) .* dgrady ;% I needed the following modification to force the fixed points to stay.% Otherwise, they can drift outside the region and be lost.% JVB, 21 August 2008.%p(1:nfix,1:2) = pfix;N = size ( p, 1 );% 8. Termination criterion: All
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生鲜种植合作合同范本
- 商务英语函电(第二版)课件 4.2.3 展期信用证邮件写法
- 交互设计教师考试题及答案
- 投资部项目评估与投资回报分析方案
- 医院工作人员素质提升门诊失火应急处理能力培训
- 投资顾问服务中使用的市场调研方法论
- 房产登记员档案管理细则
- (完整版)数学北师大六年级下册期末真题模拟试卷经典套题
- 护理专业面试常见问题及应对策略总结
- (完整版)数学苏教六年级下册期末必考知识点真题A卷答案
- 雨课堂在线学堂《三江源生态》单元考核测试答案
- 延边大学《大学英语一》2023-2024学年第一学期期末试卷
- 第五章建筑装饰陶瓷2
- 技术培训四、中置马达基础知识
- A330培训-自动飞行精编版1课件
- 钻井工程班报表
- 医院住院患者身体约束规范化管理实践资料
- 小学语文课程标准与教材研究全书ppt完整版课件最全电子教案正本书教学教程
- 易栓症诊断与防治中国指南(2021版)解读
- 《中国哲学史》课程考核大纲
- [PPT]钢结构设计软件STS应用常见问题讲义
评论
0/150
提交评论