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