久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 4214|回復: 7

分析一段matlab有限元程序

[復制鏈接]
1#
發表于 2013-3-24 13:41:49 | 只看該作者 |倒序瀏覽 |閱讀模式
這是關于梁單元的,可能大家覺得很簡單。。。
5 k# Z* n! {. S! h今天翻電腦里的東西時發現的,是我大三時有限元時的作業,記得當時花了很多時間研究,學了不少東西,一個簡單的作業可以涉及各方面的知識。* r7 p% U+ K# w& O( F6 O
畢業半年了,雖然記不清彈性矩陣、剛度矩陣等,但是只要一看書(好像現在的心境不下來)應該會,學校交的學習方法和理解問題的能力,有些東西不必記,除非每天從事,那該叫熟能生巧。
# O; |+ v8 I! j+ k記得當時編了兩個程序,梁和三維實體的,我分享一下梁的程序吧,起碼有亮點和創意,可以自己選擇劃分個數,在matlab方面花了不少功夫。* t5 w& k' d6 G' l3 w1 [/ O. r! X- U
非常感謝當時的有限元授課老師“韓清凱”,雖然老師已經到了大工。上課的教材為韓清凱 的《彈性力學及有限元法基礎教程》,書上有個梁單元的例子,在82頁。
; C" k3 T2 G% U1 v5 {8 [--------------------------------------------------------------------------------$ F7 T/ N4 l! ^; w
梁程序如下,名字就不寫了,用昵稱吧“太平島”,這是常用的網絡昵稱7 c4 [+ W: U2 w2 I* `$ V

- l( @7 l; e# _) ?4 ~& Y) S) c% `3 R
) k& b% B* M! l  J+ f) S%------------------------ BEAM2  ----------------
) a2 _& r, r9 d# \disp('========================================');4 D1 v( P9 H" ]
disp('            PROGRAM BEAM2               ');
& y2 M$ H% |# W2 I9 ^& w1 Ldisp('        Beam Bending Analysis           ');/ `" y+ h7 k. Y( Q3 w0 v, ]7 i
disp('        The programmer:太平島           ');
# @, |  X7 R  l' |disp('========================================');
( G: g/ V" h6 }! e. q! K5 l- I9 `disp(' ');                        %輸出空行7 G& v2 A# A# L: E) x! b% R
warning off all                        %關閉所有警告提示(求積分時,警告信息比較多)6 v/ }6 N/ y/ _+ b& r) x
Ne=input('Please input the number of elements:');        %Ne為劃分的單元數
  s* e# x2 f4 ^* b. g+ }0 n& `' sNJ=Ne+1;                        %NJ為節點數, u/ d. _: Q3 Q$ O: O% n0 u
x1=0;+ `6 k9 Q+ _+ y' Q1 T. {! a/ @
x2=sym('L');
$ e' n5 p; ]5 x3 l, R: ?+ R+ [* ^, v$ vx=sym('x');                        
% o2 r* B% P. @/ O' j1 c% L+ bj=0:3;
- j1 O6 C; ?/ ^. {v=x.^j;
( e5 q, p  G6 I) x7 bA=[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];
5 `) [# E- i6 Q# `3 H+ F8 iN=v*inv(A);                        %形函數
5 t/ a/ D* X! h5 @%-----------------------------------------------
# y: y+ Z' l( `. F% 求單元剛度矩陣' F" W; d6 o+ X& s3 P9 V
E=4.0e11;
2 m1 r- H6 M% w- k2 q  y1 VI=5.2e-7;                        %I=bh^3/12=5.2e-7;/ l0 |! i  R9 B
EI=4.0e11*5.2e-7;
" ^- J( Q: X+ M; R$ VB=diff(N,2);  {# _; w) Y8 n+ z( M, }
k=B'*B;
( @& v% c6 S0 {  s5 a7 M, DKee=EI*int(k,x,0,'L');7 P# T* U5 P5 }& U7 `
Ke=sym(zeros(4,4,Ne));        %用三維矩陣存放單元剛度矩陣,每頁存一個,并初始化01 t% h/ F1 S8 t- N+ b! ]5 b
Ke(:,:,1)=subs(Kee,'L',(10/Ne));0 a" U6 n* C! R( a3 x$ C
T=eye(4);                % 因為梁于x軸的夾角為0,所以坐標變換矩陣為T=eye(4)
/ ]* s8 U6 f$ L* ?Ke(:,:,1)=T*Ke(:,:,1)*T';
( \4 o& F4 Q) R1 _for ii=2:Ne
9 D5 X. W8 p6 ~' O. }8 N    Ke(:,:,ii)=Ke(:,:,1);
2 f7 ?3 n: Q6 F+ Kend ) M! M/ C2 c  O+ o5 h3 j7 f$ j+ T
Ke=double(Ke);' o% L0 W1 g* v
%------------------------------------------------0 ]% o: p, W5 m0 E, g
% 由矩陣裝換法求整體剛度矩陣% Y' t$ s- [4 J% g) R# [# @
% 自由度Ndof=2*NJ2 P! Z' y% l* v+ ]5 I% H
Ndof=2*NJ;
% _$ {) ~+ K1 C; j8 u& h2 NK=zeros(Ndof);
8 K$ k, Z# a8 R4 _! U- Hfor ii=1:Ne+ R6 F' z: F' f4 `5 c% m" x
    G=[zeros(4,2*(ii-1)),eye(4,Ndof-2*(ii-1))];
8 w1 W/ i) x2 m7 B, \, y; e- O    KK=G'*Ke(:,:,Ne)*G;- ?4 e, {! s; p& a& C% q
    K=K+KK;
! ], P7 A) t: ]  F4 Nend  " [' S6 r% A% i7 H7 W4 L# T
%------------------------------------------------
7 l. q5 |: e  I2 g+ l$ ?% 約束條件,對整體剛度矩陣進行修正,以便計算: e+ i" C$ G. ?: J' O' ?: a
F=zeros(Ndof,1);
: f4 r3 k8 G; `! gF(Ndof-1)=-100;1 u8 i) q# K9 k0 I. M9 \, r  q
% u=F*inv(K),u=[v1,xta1,v2,xta2,v3,xta3,v4,xta4]',v1=0,xta1=0
* l1 X# O; j% j# L% i5 nK(1,=0;        K(:,1)=0;        %可以省略
$ J5 i, t% u4 ?, eK(2,=0;        K(:,2)=0;        %可以省略
# v4 D% l8 b  b# oKX=K(3:Ndof,3:Ndof);
  i- ?( X6 ]4 g8 DFX=F(3:Ndof,1);0 F/ c$ G# f, u  R
%------------------------------------------------
$ C& E7 Z' w; r0 j* f5 {# ~%求整體節點位移列陣8 u4 x& T0 f5 V% ?! o, a
uu=inv(KX)*FX;
; K( R% R8 ]9 X) A3 S( yu=[0;0;uu];
' @' M8 k& b4 B# P: L# [- d/ V2 ?& Yii=1:2:2*NJ;
* s( B* _$ q1 l4 yv=u(ii);                        %各節點撓度
/ `; A: v4 D  t* M+ s2 ?xta=u(ii+1);                        %各節點轉角
) p5 L9 b7 H* S$ n: C%------------------------------------------------
* O1 b# W$ L- S% 后處理,計算單元應變應力( ~" _2 A. @4 @7 \0 I0 R3 T4 _
B=subs(B,x,'L');+ f: @/ B4 A* A( ^6 X+ r, Y' p0 r* s# A
B=subs(B,'L',10/Ne);% e, R/ @: |' ?9 ?. {
Strain=zeros(1,Ne);                %單元應變,并初始化3 ~0 Z- L  I! K( h4 Q, m
Stress=zeros(1,Ne);                %單元應力,并初始化
) ]- w3 _. g8 P( s) Ufor ii=1:Ne; s0 `, m. H/ y- U; Y
    Strain(1,ii)=B*u(2*ii-1:2*ii+2,1);
& q; r. v) u1 _6 L( ^& {( M    Stress(1,ii)=E*Strain(1,ii);1 J& R) i1 l' z' |0 a
end9 `4 m; o: y1 i5 k' n, h
%--------------------------------------------------
4 M5 u6 F( b, k$ e, O% 以下程序為屏幕輸出處理& L# V6 _/ g2 \# x: ~
disp(' ');- y% x# S: w) L4 c: s
disp(' Input:1-print Node displacement ');
* G' u6 t0 G9 O$ k5 w0 \2 qdisp(' Input:2-print strain ');
. `7 x8 O  e- u3 G4 e" hdisp(' Input:3-print stress ');
: V7 a) c9 r2 d  ], Y4 `! Bdisp(' Input:q-quit or use ''ctrl+c'' Shortcut to end the program');
+ h! v- ^6 N9 Z' u* L
$ R1 s) u, G2 Y$ c2 Qwhile 1
/ I5 Q( @, s5 W* Y6 c8 z1 Y- G4 M& w    ii=input('Please input1 or 2 or 3:','s');6 S3 q9 P5 C5 U4 e
        switch(ii)
. y2 D7 d7 K+ `8 p& f1 V            case '1'1 ?& N; a7 T1 G" D
                disp('Node displacement');
* {8 z, L% o( i" \; ?* g                disp(u');
* c; X8 t; h' T6 p2 Q            case '2', E" m- ^* `' c6 h
                disp('element strain');
: c* @* S* L1 B3 C" H                disp(Strain);
2 C9 {% `  p3 J( ~' G            case '3'
! v5 d( I# A5 Q+ X/ O                disp('element stress');
# u4 m: J! u7 S" s; _                disp(Stress);
) p2 s) D& }9 W$ R& q4 M5 H4 \            case 'q'
2 A" y: k% Z) ^0 O+ `! D* Q* v                disp('End of program');# V/ L" `2 ^. V# E: a
                break;
7 h( H/ k( O8 @4 v9 y. g1 S            otherwise" P* [$ ]1 D/ d5 ^! ?% ]( s
                disp('error!Please input again');
& x3 r; Q  s. |' q9 E                continue;
; w; V8 F0 j) {9 J0 @        end) P/ x2 y' p. _6 s1 N
end0 F) _% g5 S, u/ ~& j0 O' k! X
- p; b8 G7 q+ W0 ]8 ~7 z

7 N* M! h; `7 c
回復

使用道具 舉報

2#
 樓主| 發表于 2013-3-24 13:44:32 | 只看該作者
那個地方怎么變成笑臉了,冒號+右括號=笑臉,改了下,應該是下面,把英文括號改為中文,就好了吧
+ B6 q, G5 l2 gK(1,:)=0;        K(:,1)=0;        %可以省略
+ |3 S- }7 [. D( DK(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 7 ]1 Z  L$ i! P' j4 z
謝謝你啊,太感謝你了

: C* e. |' D- Y  c) y* E' }# M這謝啥呢?
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;
% a7 O" v5 D7 J7 Hv=x.^j;  是干啥的
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

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

GMT+8, 2025-7-22 17:23 , Processed in 0.088548 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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