【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

相關文章
相關標籤/搜索