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