24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 2281  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 工科求调剂 +15 11ggg 2026-04-03 15/750 2026-04-05 16:24 by zzx2138
[考研] 复试调剂 +12 呼呼?~+123456 2026-04-05 12/600 2026-04-05 14:15 by shanshui11
[考研] 288求调剂,一志愿华南理工大学071005 +6 ioodiiij 2026-04-04 6/300 2026-04-05 10:09 by guoweigw
[考研] 283求调剂 +10 A child 2026-04-04 10/500 2026-04-05 08:22 by qlm5820
[考研] 344材料与化工调剂 +9 调剂上岸玘 2026-04-03 9/450 2026-04-04 23:10 by happyddm
[考研] 可跨专业调剂 +3 周的得地 2026-04-04 6/300 2026-04-04 22:21 by barlinike
[考研] 一志愿东北大学085901土木专硕345求调剂 +3 zxt11111 2026-04-04 3/150 2026-04-04 14:21 by 土木硕士招生
[考研] 085501一志愿天工大,机械专硕求调剂,跨材料 +3 33上 2026-04-03 3/150 2026-04-03 14:08 by 1753564080
[考研] 专硕085601求调剂 +7 suyifei 2026-04-03 8/400 2026-04-03 14:00 by 欣喜777
[考研] 初试成绩337找调剂 +3 ??? ?. ? 2026-04-03 3/150 2026-04-03 11:43 by 土木硕士招生
[考研] 085801 总分275 本科新能源 求调剂 +19 bradoner 2026-04-01 23/1150 2026-04-03 10:07 by linyelide
[考研] 318求调剂,计算材料方向 +10 吸喵有害笙命 2026-04-01 11/550 2026-04-02 16:29 by oooqiao
[考研] 266求调剂 +4 学员97LZgn 2026-04-02 4/200 2026-04-02 13:03 by yulian1987
[考研] 能源动力 调剂 +3 不破不立0 2026-04-02 3/150 2026-04-02 12:46 by ffffjjjj
[考研] 372求调剂 +3 jj涌77 2026-04-02 3/150 2026-04-02 09:57 by olim
[考研] 0710生物学,325求调剂 +3 mkkkkkl 2026-04-01 3/150 2026-04-02 09:48 by Jaylen.
[考研] 土木304求调剂 +6 兔突突突, 2026-03-31 7/350 2026-04-02 09:06 by coolminer
[考研] 310分求调剂 +4 成功上岸wang 2026-04-01 4/200 2026-04-01 20:35 by liu823948201
[考研] 350求调剂 +7 阿佳~ 2026-03-31 7/350 2026-04-01 16:12 by yanflower7133
[考研] 哈尔滨工业大学材料与化工专硕378求调剂 +3 塔比乌斯 2026-03-30 3/150 2026-03-30 22:55 by 无际的草原
信息提示
请填处理意见