基于STL快速重构平面有限元网格边界
2012-08-27王家林张德立
重庆交通大学学报(自然科学版) 2012年6期
关键词:有限元
王家林,张德立,何 琳
(重庆交通大学土木建筑学院,重庆400074)
在有限元分析中,有时需要找出模型的边界进行某些特殊的处理,如对于多连通截面的扭转问题,需要在外边界上施加应力函数为零的约束条件,在内边界上施加应力函数相等的约束条件[1]。如果基于几何来建立有限元网格,则边界是预先已知的;如果直接从其它有限元软件中导入网格数据,则边界需要根据网格数据分析得到。所以,快速、高效率地根据有限元网格数据找出模型边界成为算法优化的一部分。
笔者针对多连通截面的平面有限元网格,灵活应用C++标准模板库(简称 STL)中的 vector、list、set和map容器,研究了快速分析模型边界的方法,并成功地应用于多连通截面扭转问题的有限元分析中。
1 C++STL中基本容器的特点
C++标准模板库STL是C++的组成部分,提供了大量的可复用软件组件,包含了vector、list、set、map等容器及算法,其实现速度和内存利用方面都是高效的[2]。充分利用STL技术能够极大地提高应用程序的开发效率,殷际英[3]将STL技术用于边界元程序设计中,解决大量数据的动态存储和内存分配问题;李余江,等[4]运用STL技术以向量模板类的特化继承对象为变容量数据容器编制了面向对象的有限元程序;唐丽玉,等[5]和吴小平,等[6]将 STL 技术用于Delaunay三角形网格的高效构建。
vector是一种连续存放、可根据序号随机访问数据元素的容器,在所有容器中具有最高的元素访问效率。不过在插入和删除元素时会产生内存块的拷贝,当内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝,导致执行时间增加。……
登录APP查看全文
