FEM-Course-Matlab/15.温度应力问题有限元编程/Ke.m

37 lines
1.5 KiB
Mathematica
Raw Permalink Normal View History

2024-01-28 16:46:36 +00:00
%%%%%%%%%%% һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>λ<EFBFBD>նȾ<EFBFBD><EFBFBD><EFBFBD> %%%%%%%%%%%
% Ke<EFBFBD><EFBFBD>λ<EFBFBD>նȾ<EFBFBD><EFBFBD><EFBFBD>
% D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>-Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% ElementNodeCoordinate<EFBFBD><EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8*3<EFBFBD><EFBFBD>ÿһ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function [Ke,P_dT]=Ke(D, ElementNodeCoordinate,epsilon0)
% <EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GaussCoordinate=[-0.57735026918963D0, 0.57735026918963D0];
%<EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ȩ<EFBFBD><EFBFBD>
GaussWeight=[1.00000000000000D0, 1.00000000000000D0];
%<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD>
Ke=zeros(24,24);
P_dT=zeros(24,1);
%ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>
for X=1:2
for Y=1:2
for Z=1:2
GP1=GaussCoordinate(X); GP2=GaussCoordinate(Y); GP3=GaussCoordinate(Z); %<EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NDerivative<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſɱȾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>JacobiDET<EFBFBD><EFBFBD>
[~,NDerivative, JacobiDET] = ShapeFunction([GP1 GP2 GP3], ElementNodeCoordinate);
Coefficient=GaussWeight(X)*GaussWeight(Y)*GaussWeight(Z)*JacobiDET;
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NDerivative<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>
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; %<EFBFBD><EFBFBD><EFBFBD>Ӹն<EFBFBD><EFBFBD><EFBFBD>
P_dT=P_dT+Coefficient*B'*D*epsilon0;%<EFBFBD><EFBFBD>Ч<EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD>
end
end
end
end