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

79 lines
1.5 KiB
Matlab

function [out]=BF_curlEdge(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)=0;
out(2)=0;
out(3)=2;
elseif num==2 %42
out(1)=0;
out(2)=-2;
out(3)=0;
elseif num==3 %43
out(1)=0;
out(2)=2;
out(3)=-2;
elseif num==4 %12
out(1)=2;
out(2)=0;
out(3)=0;
elseif num==5 %13
out(1)=-2;
out(2)=0;
out(3)=2;
elseif num==6 %23
out(1)=2;
out(2)=-2;
out(3)=0;
else
disp("基函数旋度获取错误");
end
elseif type==2
if num==1
out(1)=u/2;
out(2)=(v-1)/2;
out(3)=1-w;
elseif num==2
out(1)=(1-u)/2;
out(2)=-v/2;
out(3)=w-1;
elseif num==3
out(1)=-1/2;
out(2)=1/2;
out(3)=0;
elseif num==4
out(1)=u/2;
out(2)=v/2;
out(3)=1-w;
elseif num==5
out(1)=0;
out(2)=-1/2;
out(3)=0;
elseif num==6
out(1)=1;
out(2)=0;
out(3)=0;
elseif num==7
out(1)=-u/2;
out(2)=(1-v)/2;
out(3)=1+w;
elseif num==8
out(1)=(u-1)/2;
out(2)=v/2;
out(3)=-1-w;
elseif num==9
out(1)=-u/2;
out(2)=-v/2;
out(3)=1+w;
else
disp("基函数旋度获取错误");
end
else
disp("基函数旋度获取错误");
end
end