XIAN-FEM-2026June/三维matlab代码/2023-2-端口激励问题(四面体网格)/波束包络/BF_Edge.m

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