資源描述:
《力學分析開源軟件簡介》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、Palabos(http://www.lbmethod.org/)PalaBos的是一款高效的流體模擬及其建模庫,開發(fā)基于C++的STL(標準模板庫),有極強的拓展性!盡管其源代碼是開放,但是基于PalaBos的FlowKit公司已于2011年9月開始運營(http://www.flowkit.com/),主要為流體力學相關領域提供解決方案,并定制軟件。主要的開發(fā)者為我的日內瓦朋友JonasLatt博士,另外一個重要開發(fā)成員Orestis博士也是我的合作者和好朋友,其主要的貢獻在于湍流模型和多塊加密的代碼的開發(fā)。在版本1.0中,目前二維的多塊
2、加密是可用的,三維的曲面邊界可用,需要提供stl幾何文件(參:examples/showCases/aneurysm)。PalaBos的主要特點在于,其在并行結構上采取并行機制與模型分離的方式,使得應用建模與并行機制不相關。這也使得PalaBos的易于擴展。下面舉例來說明其代碼特點:對于二維計算下面兩個基本的文件必須包括#include"palabos2D.h"#include"palabos2D.hh"#include#include#include#include#inc
3、lude基本的名字空間usingnamespaceplb;usingnamespaceplb::descriptors;usingnamespacestd;typedefdoubleT;基本模型的描述。對于PalaBos,眾多模型的應用,都是通過DnQmDescriptor來描述的。用戶可自定義!#defineDESCRIPTORD2Q9Descriptor初場的定義,建議使用這種方法TpoiseuilleVelocity(plintiY,IncomprFlowParamconst¶meters){Ty=(T)
4、iY/parameters.getResolution();return4.*parameters.getLatticeU()*(y-y*y);}壓力的定義TpoiseuillePressure(plintiX,IncomprFlowParamconst¶meters){TLx=parameters.getNx()-1;TLy=parameters.getNy()-1;return8.*parameters.getLatticeNu()*parameters.getLatticeU()/(Ly*Ly)*(Lx/(T)2-(T)i
5、X);}密度場的定義TpoiseuilleDensity(plintiX,IncomprFlowParamconst¶meters){returnpoiseuillePressure(iX,parameters)*DESCRIPTOR::invCs2+(T)1;}根據(jù)坐標進行速度初始化templateclassPoiseuilleVelocity{public:PoiseuilleVelocity(IncomprFlowParamparameters_):parameters(parameter
6、s_){}voidoperator()(plintiX,plintiY,Array&u)const{u[0]=poiseuilleVelocity(iY,parameters);u[1]=T();}private:IncomprFlowParamparameters;};根據(jù)坐標進行密度初始化templateclassPoiseuilleDensity{public:PoiseuilleDensity(IncomprFlowParamparameters_):parameters(parameter
7、s_){}Toperator()(plintiX,plintiY)const{returnpoiseuilleDensity(iX,parameters);}private:IncomprFlowParamparameters;};零速度場初始化templateclassPoiseuilleDensityAndZeroVelocity{public:PoiseuilleDensityAndZeroVelocity(IncomprFlowParamparameters_):parameters(paramete
8、rs_){}voidoperator()(plintiX,plintiY,T&rho,Array&u)const{rho=poiseuilleDensit