【FastCAE案例分享】光滑有限元软件——静态模块

欢迎访问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

相关文章
相关标签/搜索