歡迎訪問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