版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
matlab連續(xù)梁程序的編制與使用matlab連續(xù)梁程序的編制與使用matlab連續(xù)梁程序的編制與使用xxx公司matlab連續(xù)梁程序的編制與使用文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度連續(xù)梁程序的編制與使用結(jié)構(gòu)力學(xué)中的矩陣位移法是隨著電子計(jì)算機(jī)進(jìn)入結(jié)構(gòu)力學(xué)領(lǐng)域中而產(chǎn)生的一種方法,而Matlab語言正是進(jìn)行矩陣運(yùn)算的強(qiáng)大工具,因此,用Matlab語言編寫結(jié)構(gòu)力學(xué)程序有更大的優(yōu)越性。本章將詳細(xì)介紹如何利用Matlab語言編制連續(xù)梁結(jié)構(gòu)的計(jì)算程序。矩陣位移法的解題思路是將結(jié)構(gòu)離散為單元(桿件),建立單元桿端力與桿端位移之間的關(guān)系-單元剛度方程;再將各單元集成為原結(jié)構(gòu),在滿足變形連續(xù)條件和平衡條件時(shí),建立整體剛度方程;在邊界條件處理完畢后,由整體剛度方程解出節(jié)點(diǎn)位移,進(jìn)而求出結(jié)構(gòu)內(nèi)力。用矩陣位移法計(jì)算連續(xù)梁的步驟如下:整理原始數(shù)據(jù),如材料性質(zhì)、荷載條件、約束條件等,并進(jìn)行編碼:單元編碼、結(jié)點(diǎn)編碼、結(jié)點(diǎn)位移編碼、選取坐標(biāo)系。建立局部坐標(biāo)系下的單元剛度矩陣。建立整體坐標(biāo)系下的單元剛度矩陣。集成總剛。建立整體結(jié)構(gòu)的等效節(jié)點(diǎn)荷載和總荷載矩陣邊界條件處理。解方程,求出節(jié)點(diǎn)位移。求出各單元的桿端內(nèi)力。圖3-1程序流程圖實(shí)際上,圖3-1程序流程圖程序說明%*******************************************************************%矩陣位移法解連續(xù)梁主程序%*******************************************************************功能:運(yùn)用矩陣位移法解連續(xù)梁的基本原理編制的計(jì)算主程序。基本思想:結(jié)點(diǎn)(結(jié)點(diǎn)位移)編碼默認(rèn)為從左至右,從1開始順序進(jìn)行;桿端彎矩的方向默認(rèn)為逆時(shí)針。荷載類型:可計(jì)算結(jié)點(diǎn)荷載,每單元作用的跨中集中力和均布荷載。說明:主程序的作用是通過賦值語句、讀取和寫入文件、函數(shù)調(diào)用等完成算法的全過程,即實(shí)現(xiàn)程序流程圖的程序表達(dá)。%-----------------------------------------------------------------------------------------------------1程序準(zhǔn)備 formatshorte %設(shè)定輸出類型 clearall %清除所有已定義變量clc %清屏說明:formatshorte -設(shè)定計(jì)算過程中顯示在屏幕上的數(shù)字類型為短格式、科學(xué)計(jì)數(shù)法;clearall -清除所有已定義變量,目的是在本程序的運(yùn)行過程中,不會發(fā)生變量名相同等可能使計(jì)算出錯的情況;clc -清屏,使屏幕在本程序運(yùn)行開始時(shí)%-----------------------------------------------------------------------------------------------------2打開文件 FP1=fopen('','rt'); %打開輸入數(shù)據(jù)文件存放初始數(shù)據(jù) FP2=fopen('','wt'); %打開輸出數(shù)據(jù)文件存放計(jì)算結(jié)果說明:FP1=fopen('','rt'); -打開已存在的輸入數(shù)據(jù)文件,且設(shè)置其為只讀格式,使程序在執(zhí)行過程中不能改變輸入文件中的數(shù)值,并用文件句柄FP1來FP2=fopen('','wt'); -打開輸出數(shù)據(jù)文件,該文件不存在時(shí),通過此命令創(chuàng)建新文件,該文件存在時(shí)則將原有內(nèi)容全部刪除。該文件設(shè)置為可寫格式,可在程序執(zhí)行過程中向輸出文件寫入數(shù)據(jù)。%-----------------------------------------------------------------------------------------------------3讀入程序控制信息 NELEM =fscanf(FP1,'%d',1);%單元個(gè)數(shù)(單元編碼總數(shù)) NPOIN =fscanf(FP1,'%d',1);%結(jié)點(diǎn)個(gè)數(shù)(結(jié)點(diǎn)編碼總數(shù)) NVFIX =fscanf(FP1,'%d',1); %約束個(gè)數(shù)(零位移總數(shù)) NFPOIN=fscanf(FP1,'%d',1); %結(jié)點(diǎn)荷載個(gè)數(shù)(作用在結(jié)點(diǎn)上集中力偶總數(shù)) NFPRES=fscanf(FP1,'%d',1); %非結(jié)點(diǎn)荷載數(shù)(作用在單元上分布荷載總數(shù)) YOUNG=fscanf(FP1,'%f',1); %彈性模量說明:從輸入文件FP1中讀入單元個(gè)數(shù),結(jié)點(diǎn)個(gè)數(shù),約束個(gè)數(shù),結(jié)點(diǎn)荷載個(gè)數(shù),非結(jié)點(diǎn)荷載個(gè)數(shù),彈性模量;程序中彈性模量僅輸入了一個(gè)值,表明本程序僅能求解一種材料構(gòu)成的結(jié)構(gòu),如:鋼筋混凝土結(jié)構(gòu)、鋼結(jié)構(gòu),不能求解鋼筋混凝土-鋼組合結(jié)構(gòu)。采用了命令fscanf,其中:’%d’表示讀入整數(shù)格式;1表示讀取1個(gè)數(shù)。%------------------------------------------------------------------------------------------ fprintf(FP2,'\n結(jié)構(gòu)初始數(shù)據(jù)\n\n'); fprintf(FP2,'單元總數(shù)=%d結(jié)點(diǎn)總數(shù)=%d約束總數(shù)=%d\n',NELEM,NPOIN,NVFIX); fprintf(FP2,'結(jié)點(diǎn)荷載個(gè)數(shù)=%d非結(jié)點(diǎn)荷載個(gè)數(shù)=%d彈性模量=%12.5g\n',NFPOIN,NFPRES,YOUNG);說明:在輸出文件FP2中顯示輸入的控制信息,便于程序執(zhí)行完畢后,從輸出文件中查找輸入錯誤。采用了命令fprintf,其中:\n為換行標(biāo)志,表示換一行;%12.5g表示輸出12位且有5位小數(shù)的實(shí)數(shù)。括在引號中的信息'單元總數(shù)=%d結(jié)點(diǎn)總數(shù)=%d約束總數(shù)=%d\n'為輸出到FP2文件中時(shí)的格式,其后的變量表NELEM,NPOIN,NVFIX依次將其代表的數(shù)值輸出到%d所對應(yīng)的位置。%-----------------------------------------------------------------------------------------------------4調(diào)用讀取初始數(shù)據(jù)函數(shù),生成結(jié)構(gòu)信息[LNODS,COORD,FPOIN,FPRES,FIXED]=…ele_INITIALDATA(FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVFIX);%-----------------------------------------------------------------------------------------------------5調(diào)用總剛計(jì)算函數(shù),生成單剛并集成總剛[HK]=ele_HK(NPOIN,NELEM,LNODS,COORD,YOUNG);%-----------------------------------------------------------------------------------------------------6調(diào)用荷載計(jì)算函數(shù),由結(jié)點(diǎn)荷載與非結(jié)點(diǎn)荷載生成總荷載向量列陣[FORCE]=…ele_FORCE(NPOIN,NFPOIN,FPOIN,NFPRES,FPRES,LNODS,COORD);%-----------------------------------------------------------------------------------------------------7調(diào)用邊界條件處理函數(shù),總剛、總荷載進(jìn)行邊界條件處理[HK,FORCE]=ele_BOUNDARY(NVFIX,FIXED,HK,FORCE);%-----------------------------------------------------------------------------------------------------8方程求解DISP=zeros(NPOIN,1);%建立并初始化結(jié)構(gòu)的結(jié)點(diǎn)位移列矩陣DISP=HK\FORCE;%計(jì)算出結(jié)構(gòu)所有的結(jié)點(diǎn)位移%-----------------------------------------------------------------------------------------------------9調(diào)用單元桿端力計(jì)算函數(shù),求單元桿端力[FE]=ele_MOMENTS(FP2,NPOIN,DISP,NELEM,LNODS,…COORD,YOUNG,NFPRES,FPRES);%*******************************************************************10關(guān)閉輸出數(shù)據(jù)文件fclose(FP2);%*******************************************************************%讀取初始數(shù)據(jù)函數(shù)ele_INITIALDATA%*******************************************************************%入口參數(shù):FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVFIX%出口參數(shù):LNODS,COORD,FPOIN,FPRES,FIXED%------------------------------------------------------------------------------------------function[LNODS,COORD,FPOIN,FPRES,FIXED]=…ele_INITIALDATA(FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVFIX)說明:FP1-文件句柄,指示輸入數(shù)據(jù)文件;FP2-文件句柄,指示輸出數(shù)據(jù)文件;%------------------------------------------------------------------------------------------%讀取結(jié)構(gòu)信息 LNODS=fscanf(FP1,'%f',[3,NELEM])';說明:建立LNODS矩陣,該矩陣指出了每一單元的連接信息和慣性矩。矩陣的每一行針對每一單元,共計(jì)NELEM;每一列相應(yīng)為單元左結(jié)點(diǎn)號(編碼)、(編碼)、慣性矩。命令中,[3,NELEM]表示讀取NELEM行3列數(shù)據(jù)賦值給LNODS矩陣。顯然,LNODS(i,1:3)依次表示i單元的左結(jié)點(diǎn)號、右結(jié)點(diǎn)號、慣性矩。從這種定義可見,每一單元的慣性矩均為常數(shù),均為等截面直桿。%------------------------------------------------------------------------------------------fprintf(FP2,'單元號左結(jié)點(diǎn)號右結(jié)點(diǎn)號慣性矩\n'); fori=1:NELEMfprintf(FP2,'%3d%3d%3d%\n',i,LNODS(i,:)); end說明:在輸出文件FP2中顯示輸入的單元連接等信息。從1單元到NELEM單元進(jìn)行循環(huán),并依次輸出每一單元的連接等信息。%---------------------------------------------------------------------------------------------------- COORD=fscanf(FP1,'%f',[NPOIN])';%坐標(biāo):x坐標(biāo)(共計(jì)NPOIN組)說明:建立COORD矩陣,該矩陣用來存儲各結(jié)點(diǎn)x方向的坐標(biāo)值。連續(xù)梁結(jié)構(gòu)各結(jié)點(diǎn)均分布在x軸,以1結(jié)點(diǎn)為起始點(diǎn)順序編碼,因此表征各結(jié)點(diǎn)位置時(shí)僅需存儲其x方向的坐標(biāo)即可。從FP1文件中讀取全部結(jié)點(diǎn)個(gè)數(shù)NPOIN的坐標(biāo)值。COORD(i)表示第i個(gè)結(jié)點(diǎn)的x坐標(biāo)。%------------------------------------------------------------------------------------------ fprintf(FP2,'結(jié)點(diǎn)定義數(shù)據(jù):結(jié)點(diǎn)號x坐標(biāo)\n'); fori=1:NPOINfprintf(FP2,'%3d%6.2f\n',i,COORD(i)); end說明:在輸出文件FP2中顯示輸入的結(jié)點(diǎn)坐標(biāo)信息。從1結(jié)點(diǎn)到NPOIN結(jié)點(diǎn)進(jìn)行循環(huán),并依次輸出每一結(jié)點(diǎn)的坐標(biāo)信息。%-----------------------------------------------------------------------------------------------------FPOIN=fscanf(FP1,'%f',[2,NFPOIN])';說明:建立FPOIN矩陣,該矩陣用來存儲直接作用在結(jié)點(diǎn)上的荷載信息。從FP1文件讀取NFPOIN行2列數(shù)據(jù),賦值給FPOIN矩陣。每一行的第一列表示荷載作用的結(jié)點(diǎn)號;第二列表示荷載的數(shù)值大小。連續(xù)梁結(jié)構(gòu)每一結(jié)點(diǎn)僅有1個(gè)轉(zhuǎn)角位移,相應(yīng)地直接作用在結(jié)點(diǎn)上的荷載為力偶,以順時(shí)針轉(zhuǎn)動為正。FPOIN(i,1)表示第i個(gè)直接結(jié)點(diǎn)荷載作用的結(jié)點(diǎn)號,F(xiàn)POIN(i,2)表示第i個(gè)直接結(jié)點(diǎn)荷載的數(shù)值大小。若控制數(shù)據(jù)NFPOIN等于零,則此行命令不執(zhí)行。%------------------------------------------------------------------------------------------ ifNFPOIN>0fprintf(FP2,'結(jié)點(diǎn)荷載數(shù)據(jù):結(jié)點(diǎn)號M力偶\n'); fori=1:NFPOINfprintf(FP2,'%3d%3d%6.2f\n',i,FPOIN(i,:)); endend說明:首先判斷控制數(shù)據(jù)NFPOIN是否為零,若為零則不需輸出數(shù)據(jù);若不為零,表明本算例有直接作用在結(jié)點(diǎn)上的荷載,需要在輸出文件FP2中顯示輸入的結(jié)點(diǎn)荷載信息。從第1到第NFPOIN個(gè)直接結(jié)點(diǎn)荷載進(jìn)行循環(huán),并依次輸出每個(gè)直接結(jié)點(diǎn)荷載的順序號、結(jié)點(diǎn)號和荷載大小。%-----------------------------------------------------------------------------------------------------FPRES=fscanf(FP1,'%f',[3,NFPRES])';說明:建立FPRES矩陣,該矩陣用來存儲非結(jié)點(diǎn)荷載信息。從FP1文件讀取NFPRES行3列數(shù)據(jù),賦值給FPRES矩陣。每一行的第一列表示非結(jié)點(diǎn)荷載作用的單元號;第二列表示荷載類型;第三列表示荷載的數(shù)值大小。連續(xù)梁結(jié)構(gòu)的局部坐標(biāo)系x軸以向右為正、y軸以向上為正、轉(zhuǎn)動方向以順時(shí)針為正。FPRES(i,1)表示第i個(gè)非結(jié)點(diǎn)荷載作用的單元號,F(xiàn)PRES(i,2)表示第i個(gè)非結(jié)點(diǎn)荷載的類型(類型定義在函數(shù)ele_FORCE中),F(xiàn)PRES(i,3)表示第i個(gè)非結(jié)點(diǎn)荷載的數(shù)值大小。若控制數(shù)據(jù)NFPRES等于零,則此行命令不執(zhí)行。%------------------------------------------------------------------------------------------ ifNFPRES>0fprintf(FP2,'非結(jié)點(diǎn)荷載數(shù)據(jù):荷載號單元號荷載類型荷載大小\n'); fori=1:NFPRESfprintf(FP2,'%3d%3d%6.2f%6.2f\n',i,FPRES(i,:)); endend說明:首先判斷控制數(shù)據(jù)NFPRES是否為零,若為零則不需輸出數(shù)據(jù);若不為零,表明本算例有非結(jié)點(diǎn)荷載,需要在輸出文件FP2中顯示輸入的非結(jié)點(diǎn)荷載信息。從第1到第NFPRES個(gè)非結(jié)點(diǎn)荷載進(jìn)行循環(huán),并依次輸出每個(gè)非結(jié)點(diǎn)荷載作用的荷載序號、單元號、荷載類型和荷載大小。%-----------------------------------------------------------------------------------------------------FIXED=fscanf(FP1,'%f',NVFIX)';說明:建立FIXED矩陣,該矩陣用來存儲零位移對應(yīng)的位移編碼信息(即有限制轉(zhuǎn)動的約束使結(jié)點(diǎn)的轉(zhuǎn)角位移為零,對應(yīng)的結(jié)點(diǎn)位移編碼。對于連續(xù)梁結(jié)構(gòu)即固定支座對應(yīng)的結(jié)點(diǎn)編碼)。從FP1文件讀取NVFIX行數(shù)據(jù),賦值給FIXED列矩陣。每一行表示零位移對應(yīng)的結(jié)點(diǎn)位移編碼。FIXED(i)表示第i個(gè)零位移對應(yīng)的結(jié)點(diǎn)位移編碼。若控制數(shù)據(jù)NFPRES等于零,則此行命令不執(zhí)行。%----------------------------------------------------------------------------------------------- ifNVFIX>0 fprintf(FP2,'零位移約束數(shù)據(jù):位移編號位移編號\n'); fprintf(FP2,'%3d%3d\n',FIXED(:));end說明:首先判斷控制數(shù)據(jù)NVFIX是否為零,若為零則不需輸出數(shù)據(jù);若不為零,表明本算例有零位移,需要在輸出文件FP2中顯示零位移約束數(shù)據(jù)。從第1到第NVFIX個(gè)零位移進(jìn)行循環(huán),依次輸出每個(gè)零位移對應(yīng)的結(jié)點(diǎn)號。%-----------------------------------------------------------------------------------------------------return說明:return表明主程序終止。%*******************************************************************%計(jì)算總剛矩陣函數(shù)ele_HK%*******************************************************************%入口參數(shù):結(jié)點(diǎn)數(shù)、單元數(shù)、單元信息數(shù)組、結(jié)點(diǎn)坐標(biāo)、彈性模量%出口參數(shù):整體剛度矩陣function[HK]=ele_HK(NPOIN,NELEM,LNODS,COORD,YOUNG)%----------------------------------------------------------------------------------------------------- HK=zeros(NPOIN,NPOIN);%生成總剛矩陣并清零 %生成單剛并組成總剛 fori=1:NELEM%對單元個(gè)數(shù)循環(huán)%調(diào)用生成局部單剛(局部坐標(biāo))函數(shù)EK=ele_EK(i,LNODS,COORD,YOUNG);HK(i:i+1,i:i+1)=HK(i:i+1,i:i+1)+EK; end說明:對每一單元順序循環(huán),依次計(jì)算每一單元的局部單元剛度矩陣。EK為一個(gè)臨時(shí)變量,計(jì)算得到i單元的單剛EK后,通過下一條語句集成入總剛矩陣中。在下一次循環(huán)中,則計(jì)算i+1單元的單剛,并賦值給EK,再進(jìn)行集成。顯然,隨著循環(huán)的不斷進(jìn)行,EK對應(yīng)著不同單元的單剛,值不斷發(fā)生改變。單剛到總剛的集成是利用了連續(xù)梁結(jié)構(gòu)的特點(diǎn),以分塊的形式放入總剛矩陣中。例如:對于第i個(gè)單元,其四個(gè)單剛元素分別放入總剛矩陣的第(i,i)、(i,i+1)、(i+1,i)、(i+1,i+1)四個(gè)位置,因此通過HK的下標(biāo)(i:i+1,i:i+1)來表示相應(yīng)的元素位置。由于相鄰單元的單剛集成時(shí),有元素疊加的情況,因此相應(yīng)的總剛矩陣元素的疊加采用了HK(i:i+1,i:i+1)=HK(i:i+1,i:i+1)+EK的表達(dá)形式。%-----------------------------------------------------------------------------------------------------return%*******************************************************************%計(jì)算單元剛度矩陣函數(shù)ele_EK%*******************************************************************%入口參數(shù):單元號、單元信息、結(jié)點(diǎn)坐標(biāo)、彈性模量%出口參數(shù):局部單元剛度矩陣說明:在ele_HK函數(shù)中調(diào)用本函數(shù)時(shí),彈性模量的入口參數(shù)符號為YOUNG,而在本函數(shù)的輸入?yún)?shù)表中,符號為E。函數(shù)調(diào)用時(shí)可以采用此種用法。%-----------------------------------------------------------------------------------------------------functionEK=ele_EK(i,LNODS,COORD,E)%-----------------------------------------------------------------------------------------------------NL=LNODS(i,1);%左結(jié)點(diǎn)號NR=LNODS(i,2);%右結(jié)點(diǎn)號L=COORD(NR)-COORD(NL);%單元長度I=LNODS(i,3);%慣性矩i=E*I/L;說明:利用已知信息,計(jì)算每一單元的線剛度。LNODS(i,1)為i單元左結(jié)點(diǎn)的結(jié)點(diǎn)號賦值給NL;LNODS(i,2)為i單元右結(jié)點(diǎn)的結(jié)點(diǎn)號賦值給NR。COORD(NR)為第NR個(gè)結(jié)點(diǎn)的x坐標(biāo);COORD(NL)為第NL個(gè)結(jié)點(diǎn)的x坐標(biāo);二者的差為單元的長度。LNODS(i,1)為i單元的慣性矩。%----------------------------------------------------------------------------------------------%生成單剛(局部坐標(biāo))右手坐標(biāo)系EK=[4*i2*i;2*i4*i];%----------------------------------------------------------------------------------------------return%*******************************************************************%生成總荷載向量函數(shù)ele_FORCE%*******************************************************************%入口參數(shù):結(jié)點(diǎn)數(shù),結(jié)點(diǎn)荷載個(gè)數(shù),結(jié)點(diǎn)荷載信息,非結(jié)點(diǎn)荷載個(gè)數(shù),非結(jié)點(diǎn)荷載信息,單元信息,結(jié)點(diǎn)坐標(biāo)%出口參數(shù):單元固端力—左右兩端的桿端彎矩function[FORCE]=ele_FORCE(NPOIN,NFPOIN,FPOIN,NFPRES,…FPRES,LNODS,COORD)%----------------------------------------------------------------------------------------------------FORCE=zeros(NPOIN,1);%生成總荷載向量并清零fori=1:NFPOIN%對結(jié)點(diǎn)荷載個(gè)數(shù)進(jìn)行循環(huán)FORCE(FPOIN(i,1))=FORCE(FPOIN(i,1))+FPOIN(i,2);%取出結(jié)點(diǎn)荷載end說明:建立并初始化總荷載向量FORCE,其行數(shù)與總剛矩陣、總位移列矩陣相同,即與總結(jié)點(diǎn)數(shù)NPOIN相同(對于連續(xù)梁結(jié)構(gòu))。對結(jié)點(diǎn)荷載個(gè)數(shù)進(jìn)行循環(huán),將每個(gè)結(jié)點(diǎn)荷載的數(shù)值放入所在結(jié)點(diǎn)號對應(yīng)的總荷載向量FORCE對應(yīng)的行處FPOIN(i,1)為第i個(gè)結(jié)點(diǎn)荷載所作用的結(jié)點(diǎn)號;FPOIN(i,2)為第i個(gè)結(jié)點(diǎn)荷載的大?。籉ORCE(FPOIN(i,1))為總荷向量對應(yīng)結(jié)點(diǎn)號處的荷載。%---------------------------------------------------------------------------------------------------- fori=1:NFPRES%對非結(jié)點(diǎn)荷載個(gè)數(shù)進(jìn)行循環(huán)F0=ele_FPRES(i,FPRES,LNODS,COORD);%計(jì)算單元固端力%對單元局部桿端力要進(jìn)行坐標(biāo)轉(zhuǎn)換ele=FPRES(i,1);%取荷載所在的單元號NL=LNODS(ele,1);NR=LNODS(ele,2);%單元的左右結(jié)點(diǎn)號FORCE(NL)=FORCE(NL)-F0(1);%將固端力變成等效結(jié)點(diǎn)荷載FORCE(NR)=FORCE(NR)-F0(2);%固端力與等效荷載符號相反 end說明:計(jì)算由非結(jié)點(diǎn)荷載引起的等效結(jié)點(diǎn)荷載,并集成入已有的總荷向量中。對非結(jié)點(diǎn)荷載個(gè)數(shù)進(jìn)行循環(huán),即有幾個(gè)非結(jié)點(diǎn)荷載循環(huán)幾次,若沒有非結(jié)點(diǎn)荷載,則本循環(huán)語句不執(zhí)行。調(diào)用計(jì)算非結(jié)點(diǎn)荷載引起的單元固端力函數(shù),計(jì)算出非結(jié)點(diǎn)荷載所在單元的兩端固端力。FPRES(i,1)為第i個(gè)非結(jié)點(diǎn)荷載所在的單元號賦值給ele;LNODS(ele,1)為ele單元左結(jié)點(diǎn)的結(jié)點(diǎn)號賦值給NL;LNODS(ele,2)為ele單元右結(jié)點(diǎn)的結(jié)點(diǎn)號賦值給NR。FORCE(NL)、FORCE(NR)分別為單元的左、右桿端的桿端力;-F0(1)、-F0(2)為非結(jié)點(diǎn)荷載引起的左、右端固端力的負(fù)值,即等效結(jié)點(diǎn)荷載。FORCE(NL)=FORCE(NL)-F0(1)為直接作用在單元左端結(jié)點(diǎn)上的荷載與左端等效結(jié)點(diǎn)荷載的疊加;FORCE(NR)=FORCE(NR)-F0(2)為直接作用在單元右端結(jié)點(diǎn)上的荷載與右端等效結(jié)點(diǎn)荷載的疊加。%----------------------------------------------------------------------------------------------------return%*******************************************************************%計(jì)算非結(jié)點(diǎn)荷載引起的單元固端力函數(shù)ele_FPRES%符號規(guī)定:正方向?yàn)椋篨向右Y向上M順時(shí)針%*******************************************************************%入口參數(shù):荷載序號,非結(jié)點(diǎn)荷載信息,單元信息,結(jié)點(diǎn)坐標(biāo)%出口參數(shù):單元固端力(左右兩端固端彎矩)%----------------------------------------------------------------------------------------------------functionF0=ele_FPRES(i,FPRES,LNODS,COORD)%----------------------------------------------------------------------------------------------------ele=FPRES(i,1);%取荷載所在的單元號G=FPRES(i,3);%單元荷載大小NL=LNODS(ele,1);NR=LNODS(ele,2);%單元的左右結(jié)點(diǎn)號L=COORD(NR)-COORD(NL);%單元長度說明:將已知非結(jié)點(diǎn)荷載信息分別賦值給相應(yīng)的變量。FPRES(i,1)為第i個(gè)非結(jié)點(diǎn)荷載作用的單元號;G=FPRES(i,3)為第i個(gè)非結(jié)點(diǎn)荷載的大?。籐NODS(ele,1)為ele單元左結(jié)點(diǎn)的結(jié)點(diǎn)號賦值給NL;LNODS(ele,2)為ele單元右結(jié)點(diǎn)的結(jié)點(diǎn)號賦值給NR。COORD(NR)為第NR個(gè)結(jié)點(diǎn)的x坐標(biāo);COORD(NL)為第NL個(gè)結(jié)點(diǎn)的x坐標(biāo);二者的差為單元的長度。%----------------------------------------------------------------------------------------------------F0=[0;0];%單元固端彎矩清零switchFPRES(i,2)case1%橫向均布荷載F0(1)=-G*L^2/;F0(2)=G*L^2/;case2%橫向集中力F0(1)=-G*L/8;F0(2)=G*L/8;end說明:根據(jù)荷載類型,求解單元桿端的桿端彎矩。FPRES(i,2)為第i個(gè)非結(jié)點(diǎn)荷載的類型。該類型是在下面的switch判斷模塊中定義的。當(dāng)FPRES(i,2)=1時(shí),為橫向均布荷載(橫向指垂直于桿件軸線);當(dāng)FPRES(i,2)=2時(shí),為橫向集中力。即荷載類型分別為1、2,這兩個(gè)數(shù)值需要在輸入非結(jié)點(diǎn)荷載信息時(shí)針對荷載的類型進(jìn)行輸入。每種非結(jié)點(diǎn)荷載作用下的單元固端力的計(jì)算公式是按照結(jié)構(gòu)力學(xué)教材得到的。其中,F(xiàn)0(1)表示單元左端的固端彎矩;F0(2)表示單元右端的固端彎矩。%----------------------------------------------------------------------------------------------------return%*******************************************************************%總剛、總荷載進(jìn)行邊界條件處理函數(shù)ele_BOUNDARY%*******************************************************************%入口參數(shù):零位移個(gè)數(shù),約束信息,總剛矩陣,總荷載矩陣%出口參數(shù):總剛矩陣,總荷載矩陣%----------------------------------------------------------------------------------------------------function[HK,FORCE]=ele_BOUNDARY(NVFIX,FIXED,HK,FORCE)%---------------------------------------------------------------------------------------------------- forj=1:NVFIX%對約束個(gè)數(shù)進(jìn)行循環(huán)N1=FIXED(j);%找出約束所在的結(jié)點(diǎn)位移編碼HK(N1,N1)=HK(N1,N1)*1E10;%乘大數(shù)法 end說明:采用乘大數(shù)法處理邊界條件,僅需對總剛元素進(jìn)行處理即可。FIXED(j)為第j個(gè)約束所在的結(jié)點(diǎn)位移編碼(連續(xù)梁即結(jié)點(diǎn)號)賦值給N1。對約束個(gè)數(shù)進(jìn)行循環(huán),對每j個(gè)約束處理時(shí),需對總剛矩陣中的第j行第j列的主對角線元素HK(N1,N1)乘以一個(gè)大數(shù),如。%----------------------------------------------------------------------------------------------------若采用置0置1法處理邊界條件,其相應(yīng)程序?yàn)?forj=1:NVFIXN1=FIXED(j);%找出約束所在的結(jié)點(diǎn)位移編碼HK(:,N1)=0;%將總剛矩陣HK(:,N1)的第N1列所有元素賦值為0。HK(N1,:)=0;%將總剛矩陣HK(N1,:)的第N1行所有元素賦值為0。HK(N1,N1)=1;%將總剛矩陣HK(N1,N1)主對角線元素賦值為1。FORCE(N1)=0;%將總荷載矩陣FORCE(N1)的第N1行元素賦值為0 end%----------------------------------------------------------------------------------------------------return%*******************************************************************%計(jì)算單元桿端力函數(shù)ele_MOMENTS%*******************************************************************%入口參數(shù):輸出文件句柄,結(jié)點(diǎn)數(shù),結(jié)構(gòu)位移列陣,單元數(shù),單元信息,結(jié)點(diǎn)坐標(biāo),彈性模量,非結(jié)點(diǎn)荷載個(gè)數(shù),非結(jié)點(diǎn)荷載信息%出口參數(shù):單元桿端力—左右兩端的桿端彎矩function[FE]=ele_MOMENTS(FP2,NPOIN,DISP,NELEM,LNODS,…COORD,YOUNG,NFPRES,FPRES)%---------------------------------------------------------------------------------------------------- fprintf(FP2,'\n計(jì)算結(jié)果\n\n'); fprintf(FP2,'輸出結(jié)構(gòu)結(jié)點(diǎn)位移結(jié)點(diǎn)號轉(zhuǎn)角\n'); fori=1:NPOINfprintf(FP2,'%3d%\n',i,DISP(i)); end說明:在輸出文件FP2中顯示提示信息:計(jì)算結(jié)果。通過循環(huán)按照結(jié)點(diǎn)位移編碼(連續(xù)梁結(jié)構(gòu)即結(jié)點(diǎn)編碼)的順序,在文件FP2中輸出所有結(jié)點(diǎn)位移的數(shù)值。%----------------------------------------------------------------------------------------------------EDISP=zeros(2,1);%單元位移列向量清零fprintf(FP2,'輸出單元桿端內(nèi)力,以順時(shí)針為正\n');fori=1:NELEM%對單元個(gè)數(shù)進(jìn)行循環(huán),依次計(jì)算每一單元的桿端力forj=1:2N1=LNODS(i,j);%單元桿端結(jié)點(diǎn)號EDISP(j)=DISP(N1);%取N1端的單元位移列向量end說明:通過循環(huán),依次從結(jié)構(gòu)位移列陣中對號,賦值給第i個(gè)單元的單元位移向量EDISP;j=1時(shí)N1為左端,j=2時(shí)N1為右端。%--------------------------------------------------------------------------------------EK=ele_EK(i,LNODS,COORD,YOUNG);%生成局部單剛(局部坐標(biāo))FE=EK*EDISP;%計(jì)算局部坐標(biāo)系下的由結(jié)點(diǎn)位移產(chǎn)生的桿端力說明:計(jì)算第i個(gè)單元的單剛EK;由單剛乘以單元位移得到單元僅由結(jié)點(diǎn)位移產(chǎn)生的桿端力。%--------------------------------------------------------------------------------------forj=1:NFPRESifFPRES(j,1)==i%成立時(shí),當(dāng)前單元上有非結(jié)點(diǎn)荷載F0=ele_FPRES(j,FPRES,LNODS,COORD);%計(jì)算單元固端力FE=FE+F0;%考慮由非結(jié)點(diǎn)荷載引起的桿端力,直接疊加endend說明:對非結(jié)點(diǎn)個(gè)數(shù)進(jìn)行循環(huán)。FPRES(j,1)為第j個(gè)非結(jié)點(diǎn)荷載作用的單元號,若等于當(dāng)前循環(huán)的單元號i,則表明當(dāng)前單元上有非結(jié)點(diǎn)荷載。調(diào)用計(jì)算單元固端力函數(shù),得到非結(jié)點(diǎn)荷載引起的單元固端力。將桿端位移引起的桿端力和非結(jié)點(diǎn)荷載引起的單元固端力疊加,得到當(dāng)前單元的全部桿端力。%------------------------------------------------------------------------------------------fprintf(FP2,'單元(%d)桿端力彎矩\n',i);fprintf(FP2,'左端%3d結(jié)點(diǎn)%7.2f\n',LNODS(i,1),FE(1));fprintf(FP2,'右端%3d結(jié)點(diǎn)%7.2f\n',LNODS(i,2),FE(2));說明:輸出單元的結(jié)點(diǎn)號,對應(yīng)的桿端彎矩。end%對單元循環(huán)結(jié)束。%----------------------------------------------------------------------------------------------------return程序應(yīng)用舉例【例1】利用連續(xù)梁程序計(jì)算圖2-9所示的連續(xù)梁結(jié)構(gòu)。35353563圖2-9%-----------------------------------------------------------------------------------------------------輸入數(shù)據(jù)文件為:34112122334212314%-----------------------------------------------------------------------------------------------------說明:第一行:讀入程序控制信息NELEM =fscanf(FP1,'%d',1);%單元個(gè)數(shù)(單元編碼總數(shù))NPOIN =fscanf(FP1,'%d',1);%結(jié)點(diǎn)個(gè)數(shù)(結(jié)點(diǎn)編碼總數(shù))NVFIX =fscanf(FP1,'%d',1); %約束個(gè)數(shù)(零位移總數(shù))NFPOIN=fscanf(FP1,'%d',1); %結(jié)點(diǎn)荷載個(gè)數(shù)(作用在結(jié)點(diǎn)上集中力偶總數(shù))NFPRES=fscanf(FP1,'%d',1); %非結(jié)點(diǎn)荷載數(shù)(作用在單元上分布荷載總數(shù))YOUNG=fscanf(FP1,'%f',1); %彈性模量第二、三四行:讀入單元連接信息:LNODS=fscanf(FP1,'%f',[3,NELEM])';%單元號,左結(jié)點(diǎn)號,右結(jié)點(diǎn)號,慣性矩第五、六、七、八行:讀入結(jié)點(diǎn)坐標(biāo)COORD=fscanf(FP1,'%f',[NPOIN])';%結(jié)點(diǎn)坐標(biāo)值第九行:讀入結(jié)點(diǎn)荷載信息FPOIN=fscanf(FP1,'%f',[2,NFPOIN])';%結(jié)點(diǎn)號,結(jié)點(diǎn)荷載數(shù)值(以順時(shí)針為正)第十、十一行:讀入非結(jié)點(diǎn)荷載信息FPRES=fscanf(FP1,'%f',[3,NFPRES])';%荷載號,單元號,荷載類型,荷載大小%荷載類型:1為均布荷載,2為集中力第十二行:讀入零位移信息FIXED=fscanf(FP1,'%f',NVFIX)';%零位移約束所在的結(jié)點(diǎn)位移編碼%-----------------------------------------------------------------------------------------------------輸出數(shù)據(jù)文件結(jié)構(gòu)初始數(shù)據(jù)單元總數(shù)=3結(jié)點(diǎn)總數(shù)=4約束總數(shù)=1結(jié)點(diǎn)荷載個(gè)數(shù)=1非結(jié)點(diǎn)荷載個(gè)數(shù)=2彈性模量=1單元定義數(shù)據(jù):單元號左結(jié)點(diǎn)號右結(jié)點(diǎn)號慣性矩112+000223+000334+000結(jié)點(diǎn)定義數(shù)據(jù):結(jié)點(diǎn)號x坐標(biāo)1234結(jié)點(diǎn)荷載數(shù)據(jù):結(jié)點(diǎn)號M力偶12非結(jié)點(diǎn)荷載數(shù)據(jù):荷載號單元號荷載類型荷載大小1123零位移約束數(shù)據(jù):位移編號位移編號4計(jì)算結(jié)果輸出結(jié)構(gòu)結(jié)點(diǎn)位移結(jié)點(diǎn)號轉(zhuǎn)角1+0012+0013+0014輸出單元桿端彎矩(順時(shí)針為正)單元(1)桿端力彎矩左端1結(jié)點(diǎn)右端2結(jié)點(diǎn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年購房合同改革趨勢3篇
- 2024年股權(quán)交易合同:個(gè)人股權(quán)無保留轉(zhuǎn)讓
- 二零二五年度國際勞務(wù)派遣與培訓(xùn)服務(wù)合同3篇
- 2024年虛擬現(xiàn)實(shí)內(nèi)容創(chuàng)作與推廣合同
- 2024年中國高速離心噴霧干燥塔市場調(diào)查研究報(bào)告
- 2024年員工勞動合同終止與離職后客戶關(guān)系維護(hù)協(xié)議3篇
- 二零二五年度辦理房屋抵押貸款業(yè)務(wù)代理合同2篇
- 2024年電腦硬件購銷合同版B版
- 二零二五年度企業(yè)兼職客戶關(guān)系維護(hù)員聘用協(xié)議3篇
- 2024年中國阻尼大電流電容器市場調(diào)查研究報(bào)告
- 2025年工程春節(jié)停工期間安全措施
- 2024版人才引進(jìn)住房租賃補(bǔ)貼協(xié)議3篇
- 川藏鐵路勘察報(bào)告范文
- 新零售智慧零售門店解決方案
- 小學(xué)一年級數(shù)學(xué)20以內(nèi)的口算題(可直接打印A4)
- 上海黃浦區(qū)2025屆物理高一第一學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 肺結(jié)核課件教學(xué)課件
- 新生兒心臟病護(hù)理查房
- 規(guī)劃設(shè)計(jì)行業(yè)數(shù)字化轉(zhuǎn)型趨勢
- 2024年廣告代理合同的廣告投放范圍與分成比例
- 物業(yè)年終總結(jié)匯報(bào)工作
評論
0/150
提交評論