版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、#include<stdio.h>#include<math.h>#include<stdlib.h>#define M 5int n,nc,nn,m,e,f;/節(jié)點總數(shù),固定節(jié)點數(shù),自由度數(shù),桿件數(shù)int io,jo;/單根桿對號指示數(shù)int ihlM,ihrM;/桿件左右節(jié)點號double aM;/各桿截面積double mmM;/桿件質(zhì)量double eaM;/桿件EA的值double xM,yM;/節(jié)點坐標double dpM;/總體系下的節(jié)點載荷double t2;/0,1分別為坐標轉(zhuǎn)換矩陣的cos(),sin()double c22;/總體系下的
2、單剛double clxy3;/0,1,2分別為桿長,正弦,余弦double hM;/桿件軸力double rMM;/總剛度陣double rd;/桁架軸力桿局部系單剛double uM;/桁架節(jié)點位移double v2;/存放節(jié)點位移差double dM;/LDLT分解時的D矩陣的對角線元素double lMM;/LDLT分解時的D矩陣的對角線元素double fdpM;/總體系下支座反力void iojo(int k)/計算對號指示數(shù) io,jo int i,j; i=ihlk-1;/k號桿左節(jié)點號進入i j=ihrk-1;/k號桿節(jié)點右號進入i io=2*(i-nc-1);/uxi前未知
3、位移的個數(shù) jo=2*(j-nc-1);/uyi前未知位移的個數(shù)void ch(int k)/計算桿長與方向余弦函數(shù) int i,j; i=ihlk-1;/k號桿左節(jié)點進入i j=ihrk-1;/k號桿右節(jié)點進入j clxy1=xj-1-xi-1;/k號桿x坐標差 clxy2=yj-1-yi-1;/k號桿y坐標差 clxy0=sqrt(clxy1*clxy1+clxy2*clxy2);/k號桿長 clxy1=clxy1/clxy0;/k號桿件x軸余弦 clxy2=clxy2/clxy0;/k號桿件y軸余弦void stif(int k)/計算k號桿件總體系下的單元剛度陣 int i,j; ch
4、(k);/調(diào)用ch(),計算k號桿件桿長與余弦 t0=clxy1; t1=clxy2; rd=eak-1/clxy0; for(i=0;i<2;i+) for(j=0;j<2;j+) cij=ti*tj*rd; void dor()/總體系下的總剛度陣的組集 int i,j,k;for(i=0;i<nn;i+) for(j=0;j<nn;j+) rij=0.0;/總剛度陣清0 for(k=1;k<=m;k+) iojo(k);/調(diào)用k的對號指示函數(shù),從而確定組集位置 stif(k);/第k號桿件的總體系下的單剛if(io>=0) for(i=io+1;i&l
5、t;=io+2;i+) for(j=io+1;j<=io+2;j+) ri-1j-1+=ci-io-1j-io-1;/在r中io+1,io+2行以及io+1,io+2列位置累加k的單剛 for(j=jo+1;j<=jo+2;j+) ri-1j-1-=ci-io-1j-jo-1;/在r中io+1,io+2行以及jo+1,jo+2列位置累加k的負單剛 rj-1i-1=ri-1j-1; for(i=jo+1;i<=jo+2;i+) for(j=jo+1;j<=jo+2;j+) ri-1j-1+=ci-jo-1j-jo-1;/在r中jo+1,jo+2行以及jo+1,jo+2列位
6、置累加k的單剛 else if(jo>=0)/如果io<0,即左節(jié)點為固定節(jié)點,jo>=0,右端為可動節(jié)點,則只在jo+1,jo+2對角分塊位置累加 for(i=jo+1;i<=jo+2;i+) for(j=jo+1;j<=jo+2;j+) ri-1j-1+=ci-jo-1j-jo-1;/在r中jo+1,jo+2行以及jo+1,jo+2列位置累加k的單剛 void choldlt()/總剛度陣的LDLT分解 int i,j,k; double m,tMM; for(i=0;i<nn;i+) lii=1.0; d0=r00;/d0=r00 for(i=1;i&
7、lt;nn;i+) for(j=0;j<i;j+) m=0.0; for(k=0;k<j;k+) m+=tik*ljk; tij=rij-m; lij=tij/dj; /計算lij m=0.0; for(k=0;k<i;k+) m+=tik*lik; di=rii-m; /計算di lji=lij; void trildlt()/回代求節(jié)點位移 int i,k; double m,yM; y0=dp0; for(i=1;i<nn;i+) m=0.0; for(k=0;k<i;k+) m+=lik*yk; yi=dpi-m; /計算yi unn-1=ynn-1/dn
8、n-1; for(i=nn-1;i>=0;i-) m=0.0; for(k=i+1;k<nn;k+) m+=lki*uk; ui=yi/di-m; /計算ui void doh()/計算桿件的軸力 int i,k; for(k=1;k<=m;k+) iojo(k);/調(diào)用第k號桿件的左右端點的位移指示數(shù) for(i=0;i<2;i+)/計算每個節(jié)點2個自由度循環(huán) if(io<0)/把右節(jié)點的2個位移存入v0,v1 vi=ujo+i; else/把右節(jié)點的2個位移存入v0,v1 vi=ujo+i-uio+i; stif(k);/計算第k號桿件總體系單剛,存入2 hk
9、-1=0.0;/數(shù)組hk-1清零 for(i=1;i<=2;i+)/對兩個位移循環(huán) hk-1=hk-1+ti-1*vi-1*rd;/軸力存入hk-1 void dowt() /考慮自重,且規(guī)定y軸豎直向上int k,ko,i;double g; /g為重力printf("請輸入桿件質(zhì)量:n");for(i=0;i<m;i+) /各桿件質(zhì)量值輸入printf("mm%d=",i+1);scanf("%lf",&mmi);for(k=1;k<=m;k+) /對桁架桿件循環(huán)iojo(k); /調(diào)用函數(shù)ch(k);g
10、=mmk-1*9.80665; /重力計算公式if(io>=0) /左節(jié)點為自由節(jié)點dpio+1=dpio+1-(g/2); /左節(jié)點的y軸荷載減少二分之一重力dpjo+1=dpjo+1-(g/2); /右節(jié)點的y軸荷載減少二分之一重力else if(jo>=0) /若右節(jié)點為自由節(jié)點,則僅有右節(jié)點做如下處理ko=io+2*nc; /定義反力指示數(shù)ko等于2*(固定節(jié)點號-1)dpjo+1=dpjo+1-(g/2);fdpko+1=fdpko+1-(g/2); /支座反力疊加重力的一半void dofanli() /計算反力int k,ko;for(k=1;k<=m;k+)
11、/對桿件循環(huán)iojo(k); /引用函數(shù)ch(k);ko=io+2*nc; /記錄左節(jié)點if(io<0) /左節(jié)點為固定節(jié)點fdpko=fdpko-hk-1*clxy1; /為第i個節(jié)點x軸向力加桿件軸力反力fdpko+1=fdpko+1-hk-1*clxy2; /為第i個節(jié)點y軸向力加桿件軸力反力void verify() /強度校核函數(shù)int k,i;double sigema,sigema0,sigema1; /定義應(yīng)力,拉伸許用應(yīng)力,壓縮許用應(yīng)力 printf("請輸入各桿截面積:n"); /截面面積輸入for(i=0;i<m;i+)printf(&qu
12、ot;a%d=",i+1);scanf("%lf",&ai);printf("請輸入桿件拉伸許用應(yīng)力:n"); /桿件拉伸許用應(yīng)力輸入scanf("%lf",&sigema0);printf("請輸入桿件壓縮許用應(yīng)力(輸入正數(shù)):n"); /桿件壓縮許用應(yīng)力輸入scanf("%lf",&sigema1);for(k=1;k<=m;k+) /對桿件循環(huán)sigema=hk-1/ak-1; /計算公式軸力與面積之商if(sigema>sigema0|sig
13、ema<-1*sigema1) /對應(yīng)力,許用應(yīng)力進行比較(注:壓應(yīng)力為負值,所以不小于壓縮許用應(yīng)力)printf("第%d根桿件超過許用應(yīng)力,為危險桿件,請增加橫截面積或更換其他材料n",k);void assemble() /裝配應(yīng)力計算int k,ko;double l; /定義桿件被拉長lprintf("請輸入存在裝配應(yīng)力的桿件號:n");scanf("%d",&k);printf("請輸入桿件裝配時的拉長長度:n");scanf("%lf",&l);iojo(k)
14、; /引用函數(shù)ch(k);hk-1=hk-1+eak-1*l/clxy0; /儲存裝配桿件的應(yīng)力值if(io>=0)dpio=dpio+eak-1*l*clxy1/clxy0; /左節(jié)點x軸方向附加載荷增加P=l*EA/l乘其方向余弦dpio+1=dpio+1+eak-1*l*clxy2/clxy0; /y軸方向同上操作dpjo=dpjo-eak-1*l*clxy1/clxy0; /注:右節(jié)點與左節(jié)點附加裝配應(yīng)力相反 dpjo+1=dpjo+1-eak-1*l*clxy2/clxy0;elseko=io+2*nc; dpjo=dpjo-eak-1*l*clxy1/clxy0; /注:右節(jié)
15、點與左節(jié)點附加裝配應(yīng)力相反 dpjo+1=dpjo+1-eak-1*l*clxy2/clxy0;printf("%f,%fn",dpjo,dpjo+1);fdpko=fdpko+eak-1*l*clxy1/clxy0; /固定節(jié)點ihl反力疊加裝配應(yīng)力fdpko+1=fdpko+1+eak-1*l*clxy1/clxy0;void tem() /計算溫度應(yīng)力int k,ko;double t0,arf,t1,t2,detal; /定義變量,溫差,熱膨脹系數(shù),初始溫度,最終溫度,溫變引起的長度變化printf("請輸入初始溫度n"); /變量輸入scanf
16、("%lf",&t1);printf("請輸入最終溫度n");scanf("%lf",&t2);printf("請輸入桿件的熱膨脹系數(shù)n");scanf("%lf",&arf);t0=t2-t1;for(k=1;k<=m;k+)iojo(k); /引用函數(shù)ch(k);detal=-1*arf*t0*clxy0; /等效為裝配應(yīng)力桿件受壓 hk-1=hk-1+eak-1*detal/clxy0;if(io>=0)dpio=dpio+eak-1*detal*clx
17、y1/clxy0; /左節(jié)點x軸方向附加載荷增加P=l*EA/l乘其方向余弦dpio+1=dpio+1+eak-1*detal*clxy2/clxy0; /y軸方向同上操作dpjo=dpjo-eak-1*detal*clxy1/clxy0; /注:右節(jié)點與左節(jié)點附加溫度應(yīng)力相反 dpjo+1=dpjo+1-eak-1*detal*clxy2/clxy0;elseko=io+2*nc; dpjo=dpjo-eak-1*detal*clxy1/clxy0; /注:右節(jié)點與左節(jié)點附加溫度應(yīng)力相反 dpjo+1=dpjo+1-eak-1*detal*clxy2/clxy0;fdpko=fdpko+ea
18、k-1*detal*clxy1/clxy0; /固定節(jié)點ihl反力疊加溫度應(yīng)力fdpko+1=fdpko+1+eak-1*detal*clxy1/clxy0;int main() int i; printf(" *求解平面桁架節(jié)點位移與桿端力程序*nn");printf("n -輸入數(shù)據(jù)時請用空格或回車符間隔-n"); printf("nn請輸入桁架節(jié)點總數(shù)n,固定節(jié)點數(shù)nc,桿件數(shù)m:n"); scanf("%d,%d,%d",&n,&nc,&m); nn=2*(n-nc); printf
19、("請輸入節(jié)點坐標:n"); for(i=0;i<n;i+) printf("x%d=",i+1); scanf("%lf",&xi); printf("y%d=",i+1); scanf("%lf",&yi); printf("輸入桿件左右節(jié)點號:n"); for(i=0;i<m;i+) printf("ihl%d=",i+1); scanf("%d",&ihli); printf("ih
20、r%d=",i+1); scanf("%d",&ihri); printf("請輸入桿件的EA值ea:n"); for(i=0;i<m;i+) printf("ea%d=",i+1); scanf("%lf",&eai); printf("請輸入節(jié)點載荷dp:n"); for(i=0;i<nn;i+) printf("dp%d=",i+1); scanf("%lf",&dpi); dor(); choldlt();printf("是否需要考慮自重,需要請輸入1,不需要請輸入0。n");scanf("%d",&e);if(e=1)dowt();e=0;printf("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年密封墊片項目申請報告模稿
- 2025年壓紋機項目立項申請報告
- 2024-2025學年滎陽市三上數(shù)學期末預測試題含解析
- 2025年有機膦類水處理劑項目規(guī)劃申請報告
- 2024-2025學年烏魯木齊市數(shù)學三上期末檢測試題含解析
- 2025年18-萘內(nèi)酰亞胺項目申請報告
- 2025年油田服務(wù)項目申請報告模稿
- 2025年大型設(shè)備安裝服務(wù)項目規(guī)劃申請報告
- 幼兒園教師工作計劃15篇
- 大三學生實習報告怎么寫10篇
- 服務(wù)營銷學教案
- 限制被執(zhí)行人駕駛令申請書
- 皮帶輸送機巡檢規(guī)程
- 遼寧省大連市沙河口區(qū)2022-2023學年七年級上學期期末語文試題(含答案)
- 華為DSTE戰(zhàn)略管理體系完整版
- 新版深度學習完整整套教學課件
- 2023學年四川省成都市九年級(上)期末化學試卷
- 醫(yī)院醫(yī)保常見問題及處理
- 3200鉆機操作規(guī)程60
- 東大光明清潔生產(chǎn)審核報告
- ISO9001:2023年質(zhì)量體系認證輔導計劃
評論
0/150
提交評論