79 lines
1.5 KiB
Matlab
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 |