51 lines
1.7 KiB
Mathematica
51 lines
1.7 KiB
Mathematica
|
|
%%%%%%%%%%% һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嵥Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>) %%%%%%%%%%%
|
|||
|
|
% Uλ<EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% E<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|||
|
|
% u<EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>
|
|||
|
|
% Forces<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n*3 [<EFBFBD>ڵ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>С]
|
|||
|
|
% Constraintsλ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>n*3 [<EFBFBD>ڵ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>С]
|
|||
|
|
% Nodes<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
% Elements<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>Ϣ
|
|||
|
|
function [U]=StaticsSolver(E,u,epsilon0,Constraints,Nodes,Elements)
|
|||
|
|
Dof=3;
|
|||
|
|
NodeCount = size(Nodes,1); % <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ElementCount= size(Elements,1); %<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Dofs = Dof*NodeCount; %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
U=sparse(Dofs,1); % <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ṹλ<EFBFBD><EFBFBD>
|
|||
|
|
K = sparse(Dofs,Dofs); %<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Force = sparse(Dofs,1); %<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>-Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D
|
|||
|
|
D=LinearIsotropicD(E,u);
|
|||
|
|
for I=1:ElementCount
|
|||
|
|
% <EFBFBD><EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ElementNodeCoordinate=Nodes(Elements(I,:),:);
|
|||
|
|
% <EFBFBD><EFBFBD><EFBFBD>㵥<EFBFBD><EFBFBD>
|
|||
|
|
[ElementStiffnessMatrix,P_dT]=Ke(D,ElementNodeCoordinate,epsilon0);%<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>Ԫ<EFBFBD><EFBFBD>Ч<EFBFBD>¶<EFBFBD><EFBFBD>غ<EFBFBD>
|
|||
|
|
% <EFBFBD><EFBFBD><EFBFBD>㵥Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶȱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ElementNodeDOF=zeros(1,24);
|
|||
|
|
for J=1:8
|
|||
|
|
II=(J-1)*Dof+1;
|
|||
|
|
ElementNodeDOF(II:II+2)=(Elements(I,J)-1)*Dof+1:(Elements(I,J)-1)*Dof+3;
|
|||
|
|
end
|
|||
|
|
K(ElementNodeDOF,ElementNodeDOF)=K(ElementNodeDOF,ElementNodeDOF)+ElementStiffnessMatrix;%<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD> <EFBFBD><EFBFBD>װ<EFBFBD>ܸ<EFBFBD>
|
|||
|
|
Force(ElementNodeDOF)=Force(ElementNodeDOF)+P_dT;%%<EFBFBD><EFBFBD>Ч<EFBFBD>¶<EFBFBD><EFBFBD>غ<EFBFBD>
|
|||
|
|
end
|
|||
|
|
% ʩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% if size(Forces,1)>0
|
|||
|
|
% ForceDOF = Dof*(Forces(:,1)-1)+Forces(:,2); %<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶȱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% Force(ForceDOF) = Force(ForceDOF) + Forces(:,3);
|
|||
|
|
% end
|
|||
|
|
% <EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʩ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>
|
|||
|
|
BigNumber=1e8;
|
|||
|
|
ConstraintsNumber=size(Constraints,1);
|
|||
|
|
if ConstraintsNumber~=0
|
|||
|
|
FixedDof=Dof*(Constraints(:,1)-1)+Constraints(:,2); %<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶȱ<EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
for i=1:ConstraintsNumber
|
|||
|
|
K(FixedDof(i),FixedDof(i))=K(FixedDof(i),FixedDof(i))*BigNumber;
|
|||
|
|
Force(FixedDof(i))=Constraints(i,3)*K(FixedDof(i),FixedDof(i));
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
|||
|
|
U = K\Force;
|
|||
|
|
save data Force
|
|||
|
|
end
|