計(jì)算流體力學(xué)仿真程序并行化方法研究
發(fā)布時(shí)間:2020-07-27 07:18
【摘要】:計(jì)算流體力學(xué)(Computational Fluid Dynamics,CFD)采用數(shù)值計(jì)算方法針對(duì)復(fù)雜流動(dòng)問(wèn)題進(jìn)行求解以發(fā)現(xiàn)各種流動(dòng)的現(xiàn)象和規(guī)律,已經(jīng)廣泛應(yīng)用在航空、航空、氣象等領(lǐng)域。格子Boltzmann方法(Lattice Boltzmann Method,LBM)是CFD求解的典型數(shù)值計(jì)算方法,擁有天然的數(shù)據(jù)并行性、邊界處理簡(jiǎn)單、穩(wěn)定性高等優(yōu)點(diǎn),但是隨著網(wǎng)格規(guī)模的擴(kuò)大,使用LBM方法進(jìn)行求解出現(xiàn)了執(zhí)行時(shí)間過(guò)長(zhǎng)的問(wèn)題,同時(shí)在高性能計(jì)算機(jī)快速發(fā)展的今天,如何使LBM方法能夠在高性能集群上有不錯(cuò)的性能,是本領(lǐng)域研究的熱點(diǎn)。本文主要對(duì)計(jì)算流體力學(xué)中的LBM方法的并行化方法進(jìn)行研究,論文通過(guò)對(duì)LBM方法的分析,包括對(duì)LBM計(jì)算過(guò)程以及可并行化進(jìn)行分析,結(jié)合現(xiàn)有的成熟并行框架,針對(duì)LBM求解隨著網(wǎng)格規(guī)模的增大在單機(jī)上串行執(zhí)行時(shí)間過(guò)長(zhǎng)的問(wèn)題,提出了基于OpenMP的LBM并行化方法,縮短了 LBM方法在單個(gè)機(jī)器上的執(zhí)行時(shí)間;針對(duì)LBM方法在高性能集群上的擴(kuò)展問(wèn)題,通過(guò)對(duì)計(jì)算網(wǎng)格進(jìn)行劃分,利用MPI進(jìn)行計(jì)算通信,提出了基于MPI的LBM并行化方法;針對(duì)純MPI并行方法在集群上出現(xiàn)的通信代價(jià)過(guò)高、執(zhí)行效率過(guò)低的問(wèn)題,提出了兩種混合編程模型,并根據(jù)混合編程模型提出了基于MPI+OpenMP的LBM并行化方法,充分利用了集群的特性,有良好的性能;針對(duì)混合編程中存在的OpenMP使用過(guò)多導(dǎo)致線程創(chuàng)建和銷(xiāo)毀和MPI通信過(guò)長(zhǎng)導(dǎo)致計(jì)算時(shí)間變長(zhǎng)的問(wèn)題,提出了改進(jìn)的基于MPI+OpenMP的LBM并行化方法,經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn)改進(jìn)后的方法降低了運(yùn)行的時(shí)間。
【學(xué)位授予單位】:哈爾濱工程大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2018
【分類(lèi)號(hào)】:O35
【圖文】:
3.速度邊界逡逑速度邊界指的是流體當(dāng)中的網(wǎng)格粒子運(yùn)動(dòng)到邊界位置時(shí)候的速度保持不發(fā)生變化。逡逑如圖2.4所示,假設(shè)網(wǎng)格粒子向上遷移運(yùn)動(dòng)的過(guò)程中,到達(dá)上邊界的橫向、縱向速度分逡逑別是w邐,然而此時(shí)的/4,/7,/8是未知的,無(wú)法通過(guò)正常的遷移得到。由p邋=邋和逡逑廠《邋=邋;^>,/;得到。邐^逡逑fi,邋+/7邋+/8邋=邋P ̄(f0邋+邋f\+f2邋+邋fi+邋f4+邋fs邋+邋fb)邐(2-18)逡逑=邋(,+邋?/;邋+邋/8)邋—邋(/3邋+邋/6邋+邋/7)邐(2-19)逡逑P1^邋 ̄邋if2邋+邋fs邋+邋fb) ̄邋(/a邋+邋/?邋+邋/?)邐(2-20)逡逑并且假設(shè):逡逑A-f:'=f2-f2q邐(2-21)逡逑15逡逑
邐0邐虛擬流體逡逑圖2.3反彈邊界處理示意圖逡逑3.速度邊界逡逑速度邊界指的是流體當(dāng)中的網(wǎng)格粒子運(yùn)動(dòng)到邊界位置時(shí)候的速度保持不發(fā)生變化。逡逑如圖2.4所示,假設(shè)網(wǎng)格粒子向上遷移運(yùn)動(dòng)的過(guò)程中,到達(dá)上邊界的橫向、縱向速度分逡逑別是w邐,然而此時(shí)的/4,/7,/8是未知的,無(wú)法通過(guò)正常的遷移得到。由p邋=邋和逡逑廠《邋=邋;^>,/;得到。邐^逡逑fi,邋+/7邋+/8邋=邋P ̄(f0邋+邋f\+f2邋+邋fi+邋f4+邋fs邋+邋fb)邐(2-18)逡逑=邋(,+邋?/;邋+邋/8)邋—邋(/3邋+邋/6邋+邋/7)邐(2-19)逡逑P1^邋 ̄邋if2邋+邋fs邋+邋fb) ̄邋(/a邋+邋/?邋+邋/?)邐(2-20)逡逑并且假設(shè):逡逑A-f:'=f2-f2q邐(2-21)逡逑15逡逑
主要是對(duì)每個(gè)網(wǎng)格節(jié)點(diǎn)的速度、密度進(jìn)行賦值,同時(shí),計(jì)算出每個(gè)網(wǎng)格節(jié)點(diǎn)的平衡態(tài)分逡逑布函數(shù)作為該網(wǎng)格節(jié)點(diǎn)的分布函數(shù)。初始化需要使用OpenMP編譯指導(dǎo)語(yǔ)句,將初始化逡逑過(guò)程同時(shí)使用多個(gè)線程進(jìn)行執(zhí)行,從而加快了初始化過(guò)程的速度,如圖3.1為LBM初逡逑始化并行計(jì)算示意圖。邐邐邋邐逡逑.初始化并計(jì)兌分布函數(shù)邐J逡逑 ̄M邐迭代塊0邐M線z0逡逑初始化并計(jì)算分介函數(shù)邋J逡逑邐邋Fnr ̄k邐迭代塊丨邐1邐一邐.丨oin邋邐逡逑變量聲明一妼囂——邐邐^數(shù)據(jù)同步逡逑^初始化并計(jì)兌分布函數(shù)邋」,.Pf?逡逑 ̄*邐迭代塊2邐線fa2邐—逡逑t初始化并計(jì)算分布函數(shù)邋J逡逑 ̄*1邐迭代塊3邐線桂3逡逑圖3.1邋LBM初始化并行計(jì)算示意圖逡逑在并行任務(wù)執(zhí)行開(kāi)始的時(shí)候,將LBM初始化的循環(huán)任務(wù)分解成為W個(gè)迭代塊,并逡逑將這W個(gè)迭代塊分配到不同處理器核上進(jìn)行并行執(zhí)行。逡逑基于OpenMP的LBM初始化算法的描述見(jiàn)算法3.2:逡逑算法3.2:基于OpenMP的LBM初始化算法逡逑(1)邐#邋pragma邋omp邋parallel邋reduction邋{逡逑(2)邐size邋<—邋omp邋_邋get邋_邋num邋_邋threads^);逡逑(3)邐lid,邋<—邋omp_邋get邋_邋thread邋_邋num0;逡逑(4)邐#邋pragma邋omp邋for邋schedule{dynamic)逡逑(5)邐For邋/<-0邋to邋NX邋/*邋為x方向的格子數(shù)*/逡逑(6)邐尸…y<-o邋/0邋TVF邋/*7Vr?yàn)樯俜较虻母褡訑?shù)*/逡逑(7)邐u[邋i]邋[j邋]邋[=e邋];邐/*"[/][./][0]為坐標(biāo)為/
本文編號(hào):2771527
【學(xué)位授予單位】:哈爾濱工程大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2018
【分類(lèi)號(hào)】:O35
【圖文】:
3.速度邊界逡逑速度邊界指的是流體當(dāng)中的網(wǎng)格粒子運(yùn)動(dòng)到邊界位置時(shí)候的速度保持不發(fā)生變化。逡逑如圖2.4所示,假設(shè)網(wǎng)格粒子向上遷移運(yùn)動(dòng)的過(guò)程中,到達(dá)上邊界的橫向、縱向速度分逡逑別是w邐,然而此時(shí)的/4,/7,/8是未知的,無(wú)法通過(guò)正常的遷移得到。由p邋=邋和逡逑廠《邋=邋;^>,/;得到。邐^逡逑fi,邋+/7邋+/8邋=邋P ̄(f0邋+邋f\+f2邋+邋fi+邋f4+邋fs邋+邋fb)邐(2-18)逡逑=邋(,+邋?/;邋+邋/8)邋—邋(/3邋+邋/6邋+邋/7)邐(2-19)逡逑P1^邋 ̄邋if2邋+邋fs邋+邋fb) ̄邋(/a邋+邋/?邋+邋/?)邐(2-20)逡逑并且假設(shè):逡逑A-f:'=f2-f2q邐(2-21)逡逑15逡逑
邐0邐虛擬流體逡逑圖2.3反彈邊界處理示意圖逡逑3.速度邊界逡逑速度邊界指的是流體當(dāng)中的網(wǎng)格粒子運(yùn)動(dòng)到邊界位置時(shí)候的速度保持不發(fā)生變化。逡逑如圖2.4所示,假設(shè)網(wǎng)格粒子向上遷移運(yùn)動(dòng)的過(guò)程中,到達(dá)上邊界的橫向、縱向速度分逡逑別是w邐,然而此時(shí)的/4,/7,/8是未知的,無(wú)法通過(guò)正常的遷移得到。由p邋=邋和逡逑廠《邋=邋;^>,/;得到。邐^逡逑fi,邋+/7邋+/8邋=邋P ̄(f0邋+邋f\+f2邋+邋fi+邋f4+邋fs邋+邋fb)邐(2-18)逡逑=邋(,+邋?/;邋+邋/8)邋—邋(/3邋+邋/6邋+邋/7)邐(2-19)逡逑P1^邋 ̄邋if2邋+邋fs邋+邋fb) ̄邋(/a邋+邋/?邋+邋/?)邐(2-20)逡逑并且假設(shè):逡逑A-f:'=f2-f2q邐(2-21)逡逑15逡逑
主要是對(duì)每個(gè)網(wǎng)格節(jié)點(diǎn)的速度、密度進(jìn)行賦值,同時(shí),計(jì)算出每個(gè)網(wǎng)格節(jié)點(diǎn)的平衡態(tài)分逡逑布函數(shù)作為該網(wǎng)格節(jié)點(diǎn)的分布函數(shù)。初始化需要使用OpenMP編譯指導(dǎo)語(yǔ)句,將初始化逡逑過(guò)程同時(shí)使用多個(gè)線程進(jìn)行執(zhí)行,從而加快了初始化過(guò)程的速度,如圖3.1為LBM初逡逑始化并行計(jì)算示意圖。邐邐邋邐逡逑.初始化并計(jì)兌分布函數(shù)邐J逡逑 ̄M邐迭代塊0邐M線z0逡逑初始化并計(jì)算分介函數(shù)邋J逡逑邐邋Fnr ̄k邐迭代塊丨邐1邐一邐.丨oin邋邐逡逑變量聲明一妼囂——邐邐^數(shù)據(jù)同步逡逑^初始化并計(jì)兌分布函數(shù)邋」,.Pf?逡逑 ̄*邐迭代塊2邐線fa2邐—逡逑t初始化并計(jì)算分布函數(shù)邋J逡逑 ̄*1邐迭代塊3邐線桂3逡逑圖3.1邋LBM初始化并行計(jì)算示意圖逡逑在并行任務(wù)執(zhí)行開(kāi)始的時(shí)候,將LBM初始化的循環(huán)任務(wù)分解成為W個(gè)迭代塊,并逡逑將這W個(gè)迭代塊分配到不同處理器核上進(jìn)行并行執(zhí)行。逡逑基于OpenMP的LBM初始化算法的描述見(jiàn)算法3.2:逡逑算法3.2:基于OpenMP的LBM初始化算法逡逑(1)邐#邋pragma邋omp邋parallel邋reduction邋{逡逑(2)邐size邋<—邋omp邋_邋get邋_邋num邋_邋threads^);逡逑(3)邐lid,邋<—邋omp_邋get邋_邋thread邋_邋num0;逡逑(4)邐#邋pragma邋omp邋for邋schedule{dynamic)逡逑(5)邐For邋/<-0邋to邋NX邋/*邋為x方向的格子數(shù)*/逡逑(6)邐尸…y<-o邋/0邋TVF邋/*7Vr?yàn)樯俜较虻母褡訑?shù)*/逡逑(7)邐u[邋i]邋[j邋]邋[=e邋];邐/*"[/][./][0]為坐標(biāo)為/
【參考文獻(xiàn)】
相關(guān)期刊論文 前2條
1 王勇獻(xiàn);張理論;車(chē)永剛;徐傳福;劉巍;程興華;;結(jié)構(gòu)網(wǎng)格CFD應(yīng)用程序在天河超級(jí)計(jì)算機(jī)上的高效并行與優(yōu)化[J];電子學(xué)報(bào);2015年01期
2 陳國(guó)良;孫廣中;徐云;呂敏;;并行算法研究方法學(xué)[J];計(jì)算機(jī)學(xué)報(bào);2008年09期
本文編號(hào):2771527
本文鏈接:http://sikaile.net/kejilunwen/lxlw/2771527.html
最近更新
教材專(zhuān)著