24小时热门版块排行榜    

查看: 2258  |  回复: 8

11hours

铜虫 (小有名气)

[求助] matlab 有限元计算扩散问题,建立整体矩阵好慢。大家帮忙看看代码

扩散问题,其中有应力场作用。在建立整体矩阵时(不知道该叫什么名字)速度很慢。先贴段代码,就这段特别慢。

UK1=zeros(NodeNum,NodeNum);%NodeNum=443 是节点数量
UK2=zeros(NodeNum,NodeNum);
%不知道组装整体矩阵的方法对不对,我是把单元矩阵的元素放到整体矩阵对应的节点位置上,累加。这是不是叫贡献法?
for EN=1:EleNum%EleNum=401单元数量
    Bi=subs(B,{x1,x2,x3,x4,y1,y2,y3,y4},...%{C,x C,y}T=[B]{C},{C}是单元的四个节点浓度,B就是求C梯度的矩阵。B中变量有,单元局部坐标xi 和 eta,整体坐标{x1,x2,x3,x4,y1,y2,y3,y4}
        {Node(Elem(EN,2),2),Node(Elem(EN,3),2),Node(Elem(EN,4),2),Node(Elem(EN,5),2),...
        Node(Elem(EN,2),3),Node(Elem(EN,3),3),Node(Elem(EN,4),3),Node(Elem(EN,5),3)});
    Press=[Pressure(Elem(EN,2),2),Pressure(Elem(EN,3),2),Pressure(Elem(EN,4),2),Pressure(Elem(EN,5),2)]';%Pressure是节点应力矩阵。第一列是节点号,第二列是应力值,
%Node()是节点坐标矩阵,第一列是编号,第二列和三列是x y坐标。Elem()是单元矩阵,第一列是单元编号,第2至5列是四个节点的编号。
%这段我是想把每个单元节点的坐标代入B,下来就可以对xi 和 eta积分了。   
    dK1=Bi'*Bi;
    dK2=Bi'*VH/R/T*Bi*Press*A; %VH/R/T都是常数,Press每个载荷步要变——!
    %积分K1
    [r,c]=size(dK1);
    K1=zeros(r,c);
    for m=1:r
     for n=1:c
      dk1=matlabFunction(dK1(m,n));
      K1(m,n)=dblquad(dk1,-1,1,-1,1);
     end
    end
    %积分K2
    [r,c]=size(dK2);
    K2=zeros(r,c);
    for m=1:r
     for n=1:c
      dk2=matlabFunction(dK2(m,n));
      K2(m,n)=dblquad(dk2,-1,1,-1,1);
     end
    end
    %组装UK1,UK2
    UK1Loc=Elem(EN,2:5); %确定总体矩阵中的存放位置
    for i=1:4
        for j=1:4
            UK1(UK1Loc(1,i),UK1Loc(1,j))=UK1(UK1Loc(1,i),UK1Loc(1,j))+K1(i,j);
            UK2(UK1Loc(1,i),UK1Loc(1,j))=UK2(UK1Loc(1,i),UK1Loc(1,j))+K2(i,j);
        end
    end
    %UK组装完毕
end
%%%%%%%%%结束
UK1也就罢了,组装一次也就行了,以后不会变。但UK2中有个Press是每个载荷步要变。
dK2=Bi'*VH/R/T*Bi*Press*A;

[r,c]=size(dK2);
    K2=zeros(r,c);
    for m=1:r
     for n=1:c
      dk2=matlabFunction(dK2(m,n));
      K2(m,n)=dblquad(dk2,-1,1,-1,1);
     end
    end
这样每个载荷步都要求一次K2,而每次求都会很慢。
初次自己写有限元程序,大家帮我看看:
1、整体矩阵组装的方法对不对
2、积分有没有更快的方法。
3、整个过程能不能加速。
谢谢
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

awenluxm

禁虫 (正式写手)


感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与! 2012-07-09 00:04:16
本帖内容被屏蔽

2楼2012-07-08 23:39:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

有限元的计算量很大的,完全不适合用matlab来做
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
3楼2012-07-09 08:56:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

11hours

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by awenluxm at 2012-07-08 23:39:52
我建议你用通用有限元软件!更成熟

我要计算的载荷步很多,还有些特殊结果通用的没法计算。
4楼2012-07-09 10:05:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

11hours

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by baobiao007 at 2012-07-09 08:56:02
有限元的计算量很大的,完全不适合用matlab来做

正在研究c来实现。过程基本正确吧?
5楼2012-07-09 10:06:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

awenluxm

禁虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
xiegangmai: 金币+1, 谢谢参与! 2012-07-10 23:25:25
11hours: 金币+10, 有帮助 2012-07-14 07:25:02
本帖内容被屏蔽

6楼2012-07-10 12:44:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

11hours

铜虫 (小有名气)

引用回帖:
6楼: Originally posted by awenluxm at 2012-07-10 12:44:04
你可以通过通用有限元软件的二次开发来实现
...

做过C 循环调用abaqus。结果不太满意,主要是结果文件后期超级大,拖慢计算速度。
7楼2012-07-14 07:26:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

seekforunite

木虫 (著名写手)

★ ★
xiegangmai: 金币+2, 谢谢参与 2012-11-04 19:21:33
楼主的问题解决了没?其实采用matlab编写有限元程序时,如果采用先计算出刚度阵元素再逐个累加到总体刚度阵中,则确实是很费时。
解决的方法之一采用稀疏矩阵sparse解决,楼主可以查找sparse的相关的帖子。
坚持努力!
8楼2012-11-03 10:19:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (职业作家)

Matlab专家

本帖仅楼主可见
9楼2013-07-23 09:53:34
已阅   申请仿真EPI   回复此楼   编辑   查看我的主页
相关版块跳转 我要订阅楼主 11hours 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +4 Liwangman 2026-03-15 4/200 2026-03-16 08:01 by wang_dand
[考博] 欢迎申博同学联系 +3 天道酬勤2026686 2026-03-10 7/350 2026-03-15 19:03 by 天道酬勤2026686
[考研] 材料工程327求调剂 +3 xiaohe12w 2026-03-11 3/150 2026-03-14 20:20 by ms629
[考研] 中科大材料专硕319求调剂 +3 孟鑫材料 2026-03-13 3/150 2026-03-14 18:10 by houyaoxu
[考研] 331求调剂(0703有机化学 +5 ZY-05 2026-03-13 6/300 2026-03-14 10:51 by Jy?
[考研] 333求调剂 +3 球球古力 2026-03-09 3/150 2026-03-14 01:57 by JourneyLucky
[考研] 295复试调剂 +5 简木ChuFront 2026-03-09 5/250 2026-03-14 01:29 by JourneyLucky
[考研] 265求调剂 +9 小木虫085600 2026-03-09 12/600 2026-03-14 01:11 by JourneyLucky
[考研] 308求调剂 +3 是Lupa啊 2026-03-10 3/150 2026-03-14 00:30 by JourneyLucky
[考研] 0703,333分求调剂 一志愿郑州大学-物理化学 +3 李魔女斗篷 2026-03-11 3/150 2026-03-13 22:24 by JourneyLucky
[考研] 材料与化工求调剂一志愿 985 总分 295 +8 dream…… 2026-03-12 8/400 2026-03-13 22:17 by 星空星月
[考研] 工科278分求调剂 +5 周慢热啊 2026-03-12 7/350 2026-03-13 15:49 by JourneyLucky
[考研] 求调剂 +3 程雨杭 2026-03-12 3/150 2026-03-13 15:06 by JourneyLucky
[考研] 289求调剂 +3 李政莹 2026-03-12 3/150 2026-03-13 11:02 by 求调剂zz
[考研] 求调剂 资源与环境 285 +3 未名考生 2026-03-10 3/150 2026-03-13 10:31 by houyaoxu
[考研] 工科0856专硕化学工程269能调剂吗 +10 我想读研11 2026-03-10 10/500 2026-03-13 10:14 by Yuyi.
[考研] 270求调剂 085600材料与化工专硕 +3 YXCT 2026-03-11 3/150 2026-03-13 10:13 by houyaoxu
[考研] 0857环境调剂 +5 熠熠_11 2026-03-10 5/250 2026-03-11 10:59 by wang_dand
[考研] 0856材料与化工353分求调剂 +11 NIFFFfff 2026-03-09 11/550 2026-03-10 18:36 by suyuanhai
[考研] 一志愿:武汉理工,材料工程,英二数二 总分314 +3 2202020125 2026-03-10 4/200 2026-03-10 13:54 by xiongyaxuan
信息提示
请填处理意见