79 lines
1.5 KiB
Matlab
79 lines
1.5 KiB
Matlab
function [out]=BF_Edge(type,num,u,v,w)
|
|
%type 网格类型 1为四面体 2为三棱柱
|
|
%num 第几个基函数
|
|
%u v w 对应坐
|
|
out=zeros(3,1);
|
|
if type==1
|
|
if num==1 %41
|
|
out(1)=-v;
|
|
out(2)=u;
|
|
out(3)=0;
|
|
elseif num==2 %42
|
|
out(1)=-w;
|
|
out(2)=0;
|
|
out(3)=u;
|
|
elseif num==3 %43
|
|
out(1)=-1+v+w;
|
|
out(2)=-u;
|
|
out(3)=-u;
|
|
elseif num==4 %12
|
|
out(1)=0;
|
|
out(2)=-w;
|
|
out(3)=v;
|
|
elseif num==5 %13
|
|
out(1)=-v;
|
|
out(2)=-1+u+w;
|
|
out(3)=-v;
|
|
elseif num==6 %23
|
|
out(1)=-w;
|
|
out(2)=-w;
|
|
out(3)=-1+u+v;
|
|
else
|
|
disp("基函数获取错误");
|
|
end
|
|
elseif type==2
|
|
if num==1
|
|
out(1)=(1-v)*(1-w)/2;
|
|
out(2)=u*(1-w)/2;
|
|
out(3)=0;
|
|
elseif num==2
|
|
out(1)=v*(1-w)/2;
|
|
out(2)=(1-u)*(1-w)/2;
|
|
out(3)=0;
|
|
elseif num==3
|
|
out(1)=0;
|
|
out(2)=0;
|
|
out(3)=(1-u-v)/2;
|
|
elseif num==4
|
|
out(1)=-v*(1-w)/2;
|
|
out(2)=u*(1-w)/2;
|
|
out(3)=0;
|
|
elseif num==5
|
|
out(1)=0;
|
|
out(2)=0;
|
|
out(3)=u/2;
|
|
elseif num==6
|
|
out(1)=0;
|
|
out(2)=0;
|
|
out(3)=v/2;
|
|
elseif num==7
|
|
out(1)=(1-v)*(1+w)/2;
|
|
out(2)=u*(1+w)/2;
|
|
out(3)=0;
|
|
elseif num==8
|
|
out(1)=v*(1+w)/2;
|
|
out(2)=(1-u)*(1+w)/2;
|
|
out(3)=0;
|
|
elseif num==9
|
|
out(1)=-v*(1+w)/2;
|
|
out(2)=u*(1+w)/2;
|
|
out(3)=0;
|
|
else
|
|
disp("基函数获取错误");
|
|
end
|
|
|
|
else
|
|
disp("基函数获取错误");
|
|
end
|
|
|
|
end |