閱讀openfoam框圖

TJUHE發表於2023-02-20

看完of的幫助文件,會非常懷念fluent的幫助文件或是matlab的幫助文件
比如我要解決一個matlab問題,基本上看幫助文件一分鐘就知道我要如何取用我想要的東西,of幫助文件不光做不到,還給你炫技
image

真的,這東西誰看誰不懵啊


這些框圖怎麼來的呢,是doxygen自動生成的,
那doxygen是怎樣生成的呢?

以下面作為例子說下怎樣生成的這個框圖呢

點選檢視程式碼
/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
                  protected ProtectedBase,
                  private PrivateBase,
                  public Undocumented,
                  public Templ<int>
{
  private:
    Used *m_usedClass;
};

根據關鍵字識別生成的框圖如下所示:
image


其中灰色底的方框是inherited,是派生類

其中黑邊方框是有文字備案的結構體或者類

其中灰色邊框是沒有文字備案的結構體或類(很少的)

紅色邊框的是因頁面大小未能完全展示的結構體或類


深藍色箭頭為public繼承

深綠色箭頭為protected繼承

紅色箭頭為private繼承

紫色虛線箭頭意思是這個類在其他地方也有被利用

黃色虛線箭頭意思是模板類之間有關係


好,自此已經非常明確了,磨刀過程完成,那麼接下來就是事半功倍
這時of扔給我們一張圖,就可以一眼看穿出其中的邏輯關係


我們們以fvMesh為例,
image
全是深藍色箭頭哈,那非常明確,全是公有制繼承
其中灰色框是fvMesh,那他就是派生類的主體
當然也有其他類是他的公有派生類,右側七個類不一一贅述
我們也能看到fvMesh繼承的類中polyMesh是紅色,為什麼不是黑色呢,
很簡單,有關他的類繼承關係太複雜寫不下了,乾脆截斷不寫了


我們再回到最開始的框圖,fvMesh內有關查詢網格中心位置的函式C()
其實這個框圖並沒有說什麼,主要說的是哪些函式或類用到這個中心位置查詢函式了,具體還是要看原始碼

那咋整,能不能用
能用
告訴你去那些用的地方看看怎麼用
,去抄一下,
但就是不直接了當告訴你怎麼實現,
,,,
確實不討好任何人
把案例寫在原始檔裡是openfoam唯一的溫柔


以上如有問題,請聯絡我進行更正,謝謝
後續還會繼續更新

相關文章