37 lines
1.5 KiB
Matlab
37 lines
1.5 KiB
Matlab
%%%%%%%%%%% 一阶六面体单元单位刚度矩阵 %%%%%%%%%%%
|
||
% Ke单位刚度矩阵
|
||
% D计算各向同性线弹性材料应力-应变矩阵
|
||
% ElementNodeCoordinate单元节点坐标(8*3,每一行代表一个节点的坐标)
|
||
function [Ke,P_dT]=Ke(D, ElementNodeCoordinate,epsilon0)
|
||
% 高斯积分点坐标
|
||
GaussCoordinate=[-0.57735026918963D0, 0.57735026918963D0];
|
||
%高斯积分点权重
|
||
GaussWeight=[1.00000000000000D0, 1.00000000000000D0];
|
||
%初始化单元刚度阵
|
||
Ke=zeros(24,24);
|
||
P_dT=zeros(24,1);
|
||
%循环高斯点
|
||
for X=1:2
|
||
for Y=1:2
|
||
for Z=1:2
|
||
GP1=GaussCoordinate(X); GP2=GaussCoordinate(Y); GP3=GaussCoordinate(Z); %高斯点坐标
|
||
% 计算形函数对总体坐标的导数(NDerivative)及雅可比矩阵行列式(JacobiDET)
|
||
[~,NDerivative, JacobiDET] = ShapeFunction([GP1 GP2 GP3], ElementNodeCoordinate);
|
||
Coefficient=GaussWeight(X)*GaussWeight(Y)*GaussWeight(Z)*JacobiDET;
|
||
%计算B矩阵 利用形函数对总体坐标的导数(NDerivative)对B进行计算
|
||
B=zeros(6,24);
|
||
for I=1:8
|
||
COL=(I-1)*3+1:(I-1)*3+3;
|
||
B(:,COL)=[NDerivative(1,I) 0 0;
|
||
0 NDerivative(2,I) 0;
|
||
0 0 NDerivative(3,I);
|
||
NDerivative(2,I) NDerivative(1,I) 0;
|
||
0 NDerivative(3,I) NDerivative(2,I);
|
||
NDerivative(3,I) 0 NDerivative(1,I)];
|
||
end
|
||
Ke=Ke+Coefficient*B'*D*B; %叠加刚度阵
|
||
P_dT=P_dT+Coefficient*B'*D*epsilon0;%等效温度荷载
|
||
end
|
||
end
|
||
end
|
||
end |