国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 4311|回復: 7

分析一段matlab有限元程序

[復制鏈接]
1#
發表于 2013-3-24 13:41:49 | 只看該作者 |倒序瀏覽 |閱讀模式
這是關于梁單元的,可能大家覺得很簡單。。。
0 |5 T8 S* b1 I. M- ?2 |' i今天翻電腦里的東西時發現的,是我大三時有限元時的作業,記得當時花了很多時間研究,學了不少東西,一個簡單的作業可以涉及各方面的知識。
" @* h+ w9 p& s畢業半年了,雖然記不清彈性矩陣、剛度矩陣等,但是只要一看書(好像現在的心境不下來)應該會,學校交的學習方法和理解問題的能力,有些東西不必記,除非每天從事,那該叫熟能生巧。/ Z+ l! X7 Z4 e0 {' L
記得當時編了兩個程序,梁和三維實體的,我分享一下梁的程序吧,起碼有亮點和創意,可以自己選擇劃分個數,在matlab方面花了不少功夫。( L0 l* }# ?  L) y1 t9 y2 F- c
非常感謝當時的有限元授課老師“韓清凱”,雖然老師已經到了大工。上課的教材為韓清凱 的《彈性力學及有限元法基礎教程》,書上有個梁單元的例子,在82頁。
6 L+ B- _3 h, ]( T3 A--------------------------------------------------------------------------------* J, X3 ~) ~+ X, M( ?
梁程序如下,名字就不寫了,用昵稱吧“太平島”,這是常用的網絡昵稱& C  v+ X% v4 j1 |/ t; m8 X
  Q. |- N) V  r7 i

: z9 j% ^; @2 m+ S8 a1 B%------------------------ BEAM2  ----------------
( j* h: q5 l, u9 [3 ~& Gdisp('========================================');
& q& Y4 t. D# A# Odisp('            PROGRAM BEAM2               ');4 b9 `4 S4 a2 `, O0 @( L
disp('        Beam Bending Analysis           ');- M% I7 n* S; t4 ?
disp('        The programmer:太平島           ');" @2 o. ^  Q  n! W
disp('========================================');* H0 @/ c5 D1 b- @
disp(' ');                        %輸出空行
# k. H: a& S; d& w8 Iwarning off all                        %關閉所有警告提示(求積分時,警告信息比較多). P4 v7 m8 k2 L9 k% ^
Ne=input('Please input the number of elements:');        %Ne為劃分的單元數
+ H9 K- D0 }% L* m8 S. C1 pNJ=Ne+1;                        %NJ為節點數
' `, z2 _9 Q7 Qx1=0;
5 f3 R8 F' u4 \+ a. h# f/ |7 Fx2=sym('L');
5 c% U* _% x4 g& a- c2 w9 gx=sym('x');                        
' `* d9 Q% ]8 n4 A. yj=0:3;
4 D8 S! j+ ?0 s1 Rv=x.^j;
. g: V, g* M9 _+ }A=[1,x1,x1^2,x1^3;0,1,2*x1,3*x1^2;1,x2,x2^2,x2^3;0,1,2*x2,3*x2^2];  a) E6 e. q/ v7 S+ o, B
N=v*inv(A);                        %形函數4 e2 n7 ?0 [4 Z' @5 Y" A
%-----------------------------------------------
* X1 h# W& I6 p4 e% 求單元剛度矩陣1 p& \9 q% [: f2 n( C
E=4.0e11;/ M+ q- x% U1 Q) m: v) n8 y, K
I=5.2e-7;                        %I=bh^3/12=5.2e-7;
: E9 \. O  s- p5 W5 ?1 mEI=4.0e11*5.2e-7;
$ K7 a2 Q' B' y$ i, a6 U6 r* I" QB=diff(N,2);) [. }+ B. z# Y- ]' F( g
k=B'*B;1 P! h' ?' Y, l$ D1 x
Kee=EI*int(k,x,0,'L');7 ?$ ?1 H5 b, |& \9 b! y
Ke=sym(zeros(4,4,Ne));        %用三維矩陣存放單元剛度矩陣,每頁存一個,并初始化0
; Z) W% X, Z* u; I& PKe(:,:,1)=subs(Kee,'L',(10/Ne));- v9 E. i+ d9 j) n5 x
T=eye(4);                % 因為梁于x軸的夾角為0,所以坐標變換矩陣為T=eye(4)
% a1 h7 b0 h! v1 zKe(:,:,1)=T*Ke(:,:,1)*T';
$ F1 o$ j- I+ D' z/ wfor ii=2:Ne' e4 I) Y' S; s
    Ke(:,:,ii)=Ke(:,:,1);
5 U" b) t0 R8 C+ Y  Z+ X# kend * \% I8 B$ v7 V% H
Ke=double(Ke);, Z3 N. y8 `5 W% U( ]: [, s4 z% o
%------------------------------------------------9 S/ T6 k6 \; t3 J3 L
% 由矩陣裝換法求整體剛度矩陣, ]* B0 D1 ]* ~
% 自由度Ndof=2*NJ
9 T) Y1 |$ `0 |6 R  D' c' lNdof=2*NJ;  l$ @+ v1 @9 j2 p
K=zeros(Ndof);( T% U& d' Z" ~* f, m* A! `
for ii=1:Ne
; V( X7 o2 @2 |" @    G=[zeros(4,2*(ii-1)),eye(4,Ndof-2*(ii-1))];. c& K# G: `- s' ~- T1 a0 L
    KK=G'*Ke(:,:,Ne)*G;
3 Z, ]+ }: B: s! k+ I  k, v    K=K+KK;& j1 n6 }0 t+ K
end    z6 o: R1 S: l# g% c. e0 u! x, H
%------------------------------------------------
8 ~: D* ^' e' \% 約束條件,對整體剛度矩陣進行修正,以便計算4 {$ Y: ]0 h' r: q. |1 J1 ~
F=zeros(Ndof,1);
" r3 q- q0 H/ |$ a- h' lF(Ndof-1)=-100;% f3 V( w4 O4 D; \( ~
% u=F*inv(K),u=[v1,xta1,v2,xta2,v3,xta3,v4,xta4]',v1=0,xta1=08 @! ]* T# ~# T0 G3 V
K(1,=0;        K(:,1)=0;        %可以省略
' c7 V7 }7 P. L0 i( f1 iK(2,=0;        K(:,2)=0;        %可以省略
$ p+ R; C/ }" KKX=K(3:Ndof,3:Ndof);% g! t* ^) H( c4 \& E; f
FX=F(3:Ndof,1);
" n+ V0 i6 N. x# b7 {0 F%------------------------------------------------7 m. Q$ H  ?+ A  C
%求整體節點位移列陣
1 J, t: c! z5 B$ muu=inv(KX)*FX;
7 B, S! n% h1 {4 D6 v* W5 \u=[0;0;uu];" o; U4 c( c3 g4 L
ii=1:2:2*NJ;' X: K# a; }; i
v=u(ii);                        %各節點撓度3 T, x+ t4 [. u6 C' a9 N" o" r
xta=u(ii+1);                        %各節點轉角3 t( r: O) O  s- z1 V7 I
%------------------------------------------------
" y/ H$ V- Z+ R7 T0 U% 后處理,計算單元應變應力+ \" J: f6 b1 `9 e6 k/ O( |; d
B=subs(B,x,'L');
3 @# x, Y* i' r( _4 z' ?B=subs(B,'L',10/Ne);
- q4 K1 v7 X( ZStrain=zeros(1,Ne);                %單元應變,并初始化
$ N7 U3 V$ H, v# N$ L9 UStress=zeros(1,Ne);                %單元應力,并初始化
4 `3 p, I# q# Kfor ii=1:Ne1 {' G3 M6 `" }
    Strain(1,ii)=B*u(2*ii-1:2*ii+2,1);: [' x" d3 d' U; V) x
    Stress(1,ii)=E*Strain(1,ii);+ [& L- U3 t$ R1 b: }
end
' l$ N& a% R% W1 u: J1 r% w5 ~%--------------------------------------------------
, P- i1 M) w! f, }4 [6 |9 O% 以下程序為屏幕輸出處理0 l  p7 v( U, g( Q* {6 y8 {
disp(' ');8 h& W( ?0 D  j9 P5 t
disp(' Input:1-print Node displacement ');
# S$ l6 I: ]. A$ Bdisp(' Input:2-print strain ');
+ i# R. [- }2 N; Adisp(' Input:3-print stress ');9 u+ y* I0 _; N1 C' Z0 C7 o: D
disp(' Input:q-quit or use ''ctrl+c'' Shortcut to end the program');
9 @( q; Z$ O( D% h# _, N; ^$ R3 S( ?; q) {7 X' I1 l" _
while 1  h" h% Y- y6 p3 {# a; |, Q
    ii=input('Please input1 or 2 or 3:','s');
3 v+ ]2 S; W5 S$ ?        switch(ii)
" V+ Z5 `+ D/ p, b. ?4 u            case '1') E, [+ R/ R: q0 N  x5 I# A
                disp('Node displacement');  o: P0 u7 O7 U! E
                disp(u');
) F  r  @3 x& }, i8 ]$ ]            case '2', E: _! ^6 C% q
                disp('element strain');
- H9 a- m* |( p- g% G) {, `% n                disp(Strain);
% O2 B2 O3 h# _' r. i/ F- G            case '3'! X# w0 ~2 X, m8 C
                disp('element stress');; Y# F- Q, j3 X" G
                disp(Stress);# m- u6 ^% c4 }: T
            case 'q'6 K* Y- T& _( i1 O1 N
                disp('End of program');7 j0 _. C# X  C* u
                break;
) J4 s6 W  b) Y! x/ g& c1 c: F            otherwise
  l8 `3 _7 a& t) W& F                disp('error!Please input again');( S; S% s2 L* R6 [5 l  c8 p% c
                continue;
# `0 y' F9 n, R4 O        end9 V, Q: O( i+ B" b& c- {
end
8 [: s# B/ D% m9 U

! R; a8 G' B, ^& t+ O" e' N  _/ z5 K2 z
回復

使用道具 舉報

2#
 樓主| 發表于 2013-3-24 13:44:32 | 只看該作者
那個地方怎么變成笑臉了,冒號+右括號=笑臉,改了下,應該是下面,把英文括號改為中文,就好了吧2 v0 N1 P" B/ {' p$ d8 `$ w- B
K(1,:)=0;        K(:,1)=0;        %可以省略9 ?& i4 X' y% q
K(2,:)=0;        K(:,2)=0;        %可以省略
3#
發表于 2013-3-24 14:55:52 | 只看該作者
沒看懂
4#
發表于 2013-3-24 16:53:09 | 只看該作者
謝謝你啊,太感謝你了
5#
 樓主| 發表于 2013-3-24 18:35:59 | 只看該作者
jiaweicz 發表于 2013-3-24 16:53 * F( ^6 w) q9 ~8 O
謝謝你啊,太感謝你了

4 Z7 G9 {( J5 C) X這謝啥呢?
6#
發表于 2013-3-24 21:21:19 | 只看該作者
我以前編過一個5體展開的多體姿態動力學計算程序。。。可惜早就忘記了,sigh

點評

是啊,很多東西不用就忘記啦  發表于 2013-3-26 12:34
7#
發表于 2013-11-7 20:39:02 | 只看該作者
這程序也運行不了啊
8#
發表于 2013-11-7 20:44:34 | 只看該作者
j=0:3;5 j$ a- B$ a1 n& {0 M
v=x.^j;  是干啥的
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-9-30 16:48 , Processed in 0.084429 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表