欢迎访问FastCAE官方网站:http://www.fastcae.com/node
光滑有限元法(S-FEM)是创建在有限元法(FEM)基础之上的一种“近似”无网格方法。静态问题模块线弹性静力学求解器基于线弹性静力学的基本理论,在T-mesh背景的网格基础之上,经过线性插值并引入梯度光滑技术,开发了求解2、三维固体位移、应变、应力等物理量的线弹性静力学求解器。架构
本案例经过可视化定制与插件拓展相结合的形式,实现了线弹性静力学求解器与FastCAE的无缝集成。经过可视化定制对参数以及边界条件等必要信息进行定制拓展,知足了求解器对输入参数的要求;经过插件模式拓展了对su2格式网格文件的读入支持app
架构体系
在开发过程当中,使用定制插件对案例中参数以及边界条件进行动态拓展,网格文件解析交由程序插件实现数据管理以及模型的可视化由FastCAE统一实现。网站
在软件求解时。FastCAE将网格、参数等数据信息按照标准格式输出,核心求解器参照FastCAE数据标准进行数据读取并完成求解,求解结果经过标准文件交还FastCAE进行可视化渲染this
实现效果
定制插件模式以及案例插件的加载url
前处理网格可视化以及组件的建立spa
定制模式下建立的算例树结构.net
后处理结果可视化插件
关键代码
- 注册代码
1 void Register(GUI::MainWindow* m, QList<Plugins::PluginBase*>* ps) 2 { 3 Plugins::PluginBase* p = new Plugins::SfemPlugin(m); 4 ps->append(p); 5 }
- 插件安装代码
1 bool SfemPlugin::install() 2 { 3 4 IO::IOConfigure::RegisterMeshImporter("su2", importMeshFun); 5 return true; 6 }
- 网格读取代码
1 bool Su2Reader::read() 2 { 3 QFileInfo info(_fileName); 4 if (!info.exists()) return false; 5 QString name = info.fileName(); 6 QString path = info.filePath(); 7 QFile file(_fileName); 8 if (!file.open(QIODevice::ReadOnly)) return false; 9 _stream = new QTextStream(&file); 10 _gird = vtkUnstructuredGrid::New(); 11 QString line; 12 bool success = false; 13 while (!_stream->atEnd()) 14 { 15 line = this->readLine(); 16 if (line.contains("nelem=")) 17 { 18 _cellNum = 19 line.remove("nelem").remove("=").toInt(); 20 success = this->readElements(); 21 } 22 else if (success && line.contains("npoin")) 23 { 24 _nodeNum = 25 line.remove("npoin").remove("=").toInt(); 26 success = this->readNodes(); 27 } 28 } 29 if (!success) 30 { 31 _gird->Delete(); 32 _gird = nullptr; 33 return false; 34 } 35 MeshKernal* k = new MeshKernal; 36 k->setName(name); 37 k->setPath(path); 38 k->setMeshData(_gird); 39 _meshData->appendMeshKernal(k); 40 return success; 41 }
案例及产品相关问题欢迎扫描下方二维码,加入FastCAE技术交流qq群,FastCAE专业技术团队在线答疑:qq群号:671925863code