本征应变问题有限元弱形式推导(Maple)

本文介绍了使用Maple软件进行二维及三维情况下弹性矩阵的计算过程。通过定义节点函数及其导数,构建了B矩阵,并利用该矩阵与材料属性矩阵C进行运算得到刚度矩阵。此外,还展示了如何计算特定向量作用下的响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维情况下

> restart:
> with(linalg):
> C:=array(1..3,1..3,[[2*mu+lambda,lambda,0],[lambda,2*mu+lambda,0],[0,0,mu]]);
> B:=array(1..3,1..8,sparse):
> NN1:=N1(x1,x2):
> NN2:=N2(x1,x2):
> NN3:=N3(x1,x2):
> NN4:=N4(x1,x2):
> for i from 1 to 4 do:
> B[1,2*i-1]:=diff(NN||i,x1);
> B[2,2*i]:=diff(NN||i,x2);
> B[3,2*i-1]:=diff(NN||i,x2);
> B[3,2*i]:=diff(NN||i,x1);
> end do:
> #print(B):
> aa:=simplify(evalm(transpose(B)&*C&*B)):
> comp:=array(1..8,[1,2,1,2,1,2,1,1]):
> base:=array(1..8,[1,1,2,2,3,3,4,4]):
> deta:=array(1..2,1..2,[[1,0],[0,1]]):
> a:=array(1..8,1..8,sparse):
> for i from 1 to 8 do:
> for j from 1 to 8 do:
> a[i,j]:=lambda*diff(NN||(base[i]),x||(comp[i]))*diff(NN||(base[j]),x||(comp[j]))+mu*diff(NN||(base[i]),x||(comp[j]))*diff(NN||(base[j]),x||(comp[i]))+mu*deta[comp[i],comp[j]]*(diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||1)+diff(NN||(base[j]),x||2)*diff(NN||(base[j]),x||2)):
> end do:
> end do:
> e:=array(1..3,[0,0,2]):
> evalm(transpose(B)&*C&*e);

三维情况下

>restart:with(linalg):
> C:=array(1..6,1..6,[[2*mu+lambda,lambda,lambda,0,0,0],[lambda,2*mu+lambda,lambda,0,0,0],[lambda,lambda,2*mu+lambda,0,0,0],[0,0,0,mu,0,0],[0,0,0,0,mu,0],[0,0,0,0,0,mu]]);
> B:=array(1..6,1..24,sparse):
> NN1:=N1(x1,x2,x3):
> NN2:=N2(x1,x2,x3):
> NN3:=N3(x1,x2,x3):
> NN4:=N4(x1,x2,x3):
> NN5:=N5(x1,x2,x3):
> NN6:=N6(x1,x2,x3):
> NN7:=N7(x1,x2,x3):
> NN8:=N8(x1,x2,x3):
> for i from 1 to 8 do:
> B[1,3*i-2]:=diff(NN||i,x1):
> B[2,3*i-1]:=diff(NN||i,x2):
> B[3,3*i]:=diff(NN||i,x3):
> B[4,3*i-1]:=diff(NN||i,x3):
> B[4,3*i]:=diff(NN||i,x2):
> B[5,3*i-2]:=diff(NN||i,x3):
> B[5,3*i]:=diff(NN||i,x1):
> B[6,3*i-2]:=diff(NN||i,x2):
> B[6,3*i-1]:=diff(NN||i,x1):
> end do:
> aa:=simplify(evalm(transpose(B)&*C&*B)):
> comp:=array(1..24,sparse):
> for i from 1 to 8 do:
> comp[3*i-2]:=1:
> comp[3*i-1]:=2:
> comp[3*i]:=3:
> end do:
> base:=array(1..24,[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8]):
> deta:=array(1..3,1..3,[[1,0,0],[0,1,0],[0,0,1]]):
> a:=array(1..24,1..24,sparse):
> for i from 1 to 24 do:
> for j from 1 to 24 do:
> a[i,j]:=lambda*diff(NN||(base[i]),x||(comp[i]))*diff(NN||(base[j]),x||(comp[j]))+mu*diff(NN||(base[i]),x||(comp[j]))*diff(NN||(base[j]),x||(comp[i]))+mu*deta[comp[i],comp[j]]*(diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||1)+diff(NN||(base[j]),x||2)*diff(NN||(base[j]),x||2)+diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||3)*diff(NN||(base[i]),x||1)*diff(NN||(base[j]),x||3)):
> end do:
> end do:
> e:=array(1..6,[0,0,0,0,0,1]):
> d:=evalm(transpose(B)&*C&*e):
> print(simplify(d)):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值