本發(fā)明涉及巖土工程,特別是涉及進行復雜地質地貌模擬而進行地質地貌造型。
背景技術:
::地質災害較多發(fā)生在地質結構復雜的區(qū)域,這些區(qū)域往往是崇山峻嶺,在遇到地震、暴雨、洪水后往往產生地質災害。為保證事先對這些災害進行預警,就要對他們進行有效的分析。復雜地質條件下的災害很難用解析手段進行處理,一般對于這種問題采取模擬的手段較為有效。這些災害如果發(fā)生,主要后果可能就是山體上巨石的滾落,2008年后我國西南四川云南等地接連不斷的地震使山體巖層的完整性遭到破壞,巨石沿山體滾落,有的掩埋了村莊,有的形成了堰塞湖。對于山體中有裂隙和節(jié)理分布的巖層,其中完整巖塊可以看作是連續(xù)介質,巖塊之間的裂隙可以看作是非連續(xù)介質,對于這種情況使用PFC3D模擬的效果較為明顯。但是使用PFC3D建模時要考慮模擬的精確性和計算量,要著重于那些運動的巖體部分,將其模擬成顆粒;那些不動或相對運動很小的巖體部分可以模擬成面并設置其摩擦等相關屬性即可。這樣既保證了精確反應巖體的運動又降低了計算的成本。所以,如何能根據山地的實際情況使用PFC3D中的面進行山地造型就成了該類模擬的關鍵技術。PFC3D是Itasca公司2008年發(fā)布的一款高端產品,特別適合于復雜機理性問題研究。它是利用顯式差分算法和離散元理論開發(fā)的微/細觀力學程序,它是從介質的基本粒子結構的角度考慮介質的基本力學特性,并認為給定介質在不同應力條件下的基本特性主要取決于粒子之間接觸狀態(tài)的變化,適用研究粒狀集合體的破裂和破裂發(fā)展問題、以及顆粒的流動等大位移問題。在巖土體工程中可以用來研究結構開裂、堆石材料特性和穩(wěn)定性、礦山崩落開采、邊坡解體、爆破沖擊等一系列傳統(tǒng)數(shù)值方法難以解決的問題。顆粒流理論是通過離散單元法來模擬圓形顆粒介質的運動及顆粒間的相互作用,允許離散的顆粒單元發(fā)生平移和旋轉,可以彼此分離并且在計算過程中重新構成新的接觸。顆粒流方法中顆粒單元的直徑可以是一定的,也可按高斯分布規(guī)律分布,可以通過調整顆粒單元直徑調節(jié)孔隙率。它以牛頓第二定律和力-位移定律為基礎,對模型顆粒進行循環(huán)計算,采用顯式時步循環(huán)運算規(guī)則。根據牛頓第二定律確定每個顆粒由于接觸力或體積力引起的顆粒運動(位置和速度),力-位移定律是根據2個實體(顆粒與顆粒或顆粒與墻體)的相對運動,計算彼此的接觸力。顆粒流理論基于以下假設:1)顆粒單元為剛性體;2)接觸發(fā)生在很小的范圍內,即點接觸;3)接觸特性為柔性接觸,接觸處允許有一定的“重疊”量;4)“重疊”量的大小與接觸力有關,與顆粒大小相比,“重疊”量很小;5)接觸處有特殊的連接強度;6)顆粒單元為圓盤形.顆粒流理論的接觸本構模型包括接觸剛度模型、庫侖滑塊模型和連接模型。其中,接觸剛度模型分為線彈性模型和非線形Hertz-Mindlin模型;連接模型分為接觸連接模型和并行連接模型,接觸連接模型僅能傳遞作用力,并行連接模型可以承受作用力和力矩。技術實現(xiàn)要素:本發(fā)明涉及到的方法主要使用PFC3D中的三角形面的組合來實現(xiàn)山地造型。為減少人工和解決造型過程中一些問題,使用了Mathlab和Excel作為輔助工具。由于PFC3D自身的FISH語言的局限性,作者不得不使用MATLAB和EXCEL作為工具處理一些問題,山形構建的流程如圖1所示。第一部分:PFC3D中山形網格的構建用PFC3D已有的工具構建山形網格,以往構建PFC3D模型時使用的墻(wall)是四邊形的,但是山形復雜,四個點很有可能不在一個平面上,所以這里使用三角形面構建山形網格。如圖2~圖3所示為網格的具體劃分措施。圖2,為說明方便結合例子將網格劃分為100×100m,每個網格1×1m。圖中的i和j為程序實現(xiàn)時使用的變量。為使編程方便并考慮到使用三角形面,對網格進行進一步劃分,網格拆分為沿正對角線對稱的兩部分三角形,這樣便保證了三點可以確定唯一平面的幾何特性。使用FISH進行網格構建時可將1×1m的網格作為一個循環(huán)單元,如圖3所示,以每個單元的1點作為標志判斷是否已建立了單元網格。在單元網格中,構造兩個三角形網格,即構建兩個有界三角形面。由于PFC3D中的面是單側受限的,根據面的法線方向使用右手定則判斷點的軸向,即下三角形構造的點序為1點→2點→3點,上三角形的點序為1點→3點→4點。每個點在三維坐標系中由三個值表示,即(x,y,z)。具體的FISH實現(xiàn)見如下代碼。defdo%函數(shù)定義n=100%網格數(shù)量(正方形網格)nn=n-1loopi(1,nn)loopj(1,nn)idd=2*n*(i-1)+j*2-1%下三角形面編號iddd=idd+1%上三角形面編號x1=(j-1)*1%1點的坐標y1=(i-1)*1z1=xtable(i,j)x2=j*1%2點的坐標y2=(i-1)*1z2=xtable(i,j+1)x3=j*1%3點的坐標y3=i*1z3=xtable(i+1,j+1)x4=(j-1)*1%4點的坐標y4=i*1z4=xtable(i+1,j)commandwallid=iddface(x1y1z1)(x2y2z2)(x3y3z3)%建立下三角形,面的性質可以在這里設置,也可以構建完成后%統(tǒng)一設置wallid=idddface(x1y1z1)(x3y3z3)(x4y4z4)%建立上三角形plotwallend_commandend_loopend_loopend第二部分:山形數(shù)據的處理通過程序的可以看出,實現(xiàn)上述網格建立的關鍵是獲得有效的xtable表。在FISH中視乎沒有有效的數(shù)組表達形式,無法像MATLAB那樣方便的操作數(shù)組。xtable是FISH中的關鍵字,可以表示一個二維數(shù)組。根據上節(jié)構造的網格特點,X方向和Y方向是等距劃分的,間隔1m,可以用線性數(shù)值表示(不必使用數(shù)組)。Z(高程)方向的數(shù)據是雜亂的,所以要使用xtable存儲。問題在于在FISH中,無法方便的進行賦值,如本文構造的山形100×100=10000個毫無規(guī)律的數(shù)值,不可能全部人工賦值。這里考慮了兩個方面形成的山形數(shù)據,一種是有一定規(guī)律的山形,可以使用MATLAB通過曲面函數(shù)構造;另一種是完全來源于地理信息系統(tǒng)的數(shù)據,可以將這些數(shù)據導入到EXCEL在進行處理。這里所說的數(shù)據指點的高程Z,因為X和Y是線性的。下面的代碼為MATLAB代碼,他提取了MATLAB中peak(100)函數(shù)形成的山形的高程,并以FISH能使用的形式保存到了TEXT文件中。forii=1:100%100為網格劃分數(shù)x(ii)=ii%X方向的網格y(ii)=ii%Y方向的網格end[x,y,z]=peaks(100)%計算X和Y對應的peak曲面的高程z%z=xlsread('G:\1111.xls')%如果數(shù)據來源于EXCELfid=fopen('G:\a.txt','w+')%打開文件fori=1:100forj=1:100k=z(i,j)string1=['xtable(',num2str(i),',',num2str(j),')=',num2str(k)]%添加一條語句,如xtable(100,59)=1.2fprintf(fid,'%s\r\n',string1)%輸出到文件下一行endendfclose(fid)%關閉文件然后使用1節(jié)定義的函數(shù)便可構造出如MATLAB中peak形狀的山形了。本發(fā)明涉及到的方法能夠方便、準確的構造出MATLAB中peak形狀的山形,從而進行后續(xù)的地質災害分析計算。附圖說明圖1山形構建流程圖。圖2網格的劃分方法。圖3網格的劃分方法。圖4山地構造效果俯視圖。圖5山地構造效果正視圖。具體實施方式本發(fā)明涉及到的方法主要使用PFC3D中的三角形面的組合來實現(xiàn)山地造型。為減少人工和解決造型過程中一些問題,使用了Mathlab和Excel作為輔助工具。由于PFC3D自身的FISH語言的局限性,作者不得不使用MATLAB和EXCEL作為工具處理一些問題,山形構建的流程如圖1所示。第一部分:PFC3D中山形網格的構建用PFC3D已有的工具構建山形網格,以往構建PFC3D模型時使用的墻(wall)是四邊形的,但是山形復雜,四個點很有可能不在一個平面上,所以這里使用三角形面構建山形網格。如圖2~圖3所示為網格的具體劃分措施。圖2,為說明方便結合例子將網格劃分為100×100m,每個網格1×1m。圖中的i和j為程序實現(xiàn)時使用的變量。為使編程方便并考慮到使用三角形面,對網格進行進一步劃分,網格拆分為沿正對角線對稱的兩部分三角形,這樣便保證了三點可以確定唯一平面的幾何特性。使用FISH進行網格構建時可將1×1m的網格作為一個循環(huán)單元,如圖3所示,以每個單元的1點作為標志判斷是否已建立了單元網格。在單元網格中,構造兩個三角形網格,即構建兩個有界三角形面。由于PFC3D中的面是單側受限的,根據面的法線方向使用右手定則判斷點的軸向,即下三角形構造的點序為1點→2點→3點,上三角形的點序為1點→3點→4點。每個點在三維坐標系中由三個值表示,即(x,y,z)。具體的FISH實現(xiàn)見如下代碼。defdo%函數(shù)定義n=100%網格數(shù)量(正方形網格)nn=n-1loopi(1,nn)loopj(1,nn)idd=2*n*(i-1)+j*2-1%下三角形面編號iddd=idd+1%上三角形面編號x1=(j-1)*1%1點的坐標y1=(i-1)*1z1=xtable(i,j)x2=j*1%2點的坐標y2=(i-1)*1z2=xtable(i,j+1)x3=j*1%3點的坐標y3=i*1z3=xtable(i+1,j+1)x4=(j-1)*1%4點的坐標y4=i*1z4=xtable(i+1,j)commandwallid=iddface(x1y1z1)(x2y2z2)(x3y3z3)%建立下三角形,面的性質可以在這里設置,也可以構建完成后%統(tǒng)一設置wallid=idddface(x1y1z1)(x3y3z3)(x4y4z4)%建立上三角形plotwallend_commandend_loopend_loopend第二部分:山形數(shù)據的處理通過程序的可以看出,實現(xiàn)上述網格建立的關鍵是獲得有效的xtable表。在FISH中視乎沒有有效的數(shù)組表達形式,無法像MATLAB那樣方便的操作數(shù)組。xtable是FISH中的關鍵字,可以表示一個二維數(shù)組。根據上節(jié)構造的網格特點,X方向和Y方向是等距劃分的,間隔1m,可以用線性數(shù)值表示(不必使用數(shù)組)。Z(高程)方向的數(shù)據是雜亂的,所以要使用xtable存儲。問題在于在FISH中,無法方便的進行賦值,如本文構造的山形100×100=10000個毫無規(guī)律的數(shù)值,不可能全部人工賦值。這里考慮了兩個方面形成的山形數(shù)據,一種是有一定規(guī)律的山形,可以使用MATLAB通過曲面函數(shù)構造;另一種是完全來源于地理信息系統(tǒng)的數(shù)據,可以將這些數(shù)據導入到EXCEL在進行處理。這里所說的數(shù)據指點的高程Z,因為X和Y是線性的。下面的代碼為MATLAB代碼,他提取了MATLAB中peak(100)函數(shù)形成的山形的高程,并以FISH能使用的形式保存到了TEXT文件中。forii=1:100%100為網格劃分數(shù)x(ii)=ii%X方向的網格y(ii)=ii%Y方向的網格end[x,y,z]=peaks(100)%計算X和Y對應的peak曲面的高程z%z=xlsread('G:\1111.xls')%如果數(shù)據來源于EXCELfid=fopen('G:\a.txt','w+')%打開文件fori=1:100forj=1:100k=z(i,j)string1=['xtable(',num2str(i),',',num2str(j),')=',num2str(k)]%添加一條語句,如xtable(100,59)=1.2fprintf(fid,'%s\r\n',string1)%輸出到文件下一行endendfclose(fid)%關閉文件然后使用1節(jié)定義的函數(shù)便可構造出如MATLAB中peak形狀的山形了。本發(fā)明涉及到的方法能夠方便、準確的構造出MATLAB中peak形狀的山形,從而進行后續(xù)的地質災害分析計算。使用該方法構建了100m×100m的如MATLAB中peak函數(shù)形成的山地形狀。如下列圖4~圖5所示,分別表示了Y方向構造長度為40m的山形圖,圖4表示俯視如,圖5為水平方向正視圖。通過本發(fā)明提供的方法,即可構造出如圖4過程的山區(qū)地形圖。構建了一種構建復雜地質地貌模型的方法,該方法通過使用PFC3D的FISH語言,用有界三角形面構建了如MATLAB的peak曲面。該方法主要關注于線性變化的X和Y及所對應的高程Z的數(shù)據。高程Z的數(shù)據可以通過MATLAB曲面函數(shù)獲得,另一方面也可以通過實際的地理信息系統(tǒng)獲得。通過方法和代碼便可方便的構造復雜地形,從而為研究山地災害進行的模擬提供有效地支持。當前第1頁1 2 3 當前第1頁1 2 3