92 lines
2.5 KiB
Matlab
92 lines
2.5 KiB
Matlab
function out=getBF(type,n,u,v,w)
|
|
%type 1-E 2-curlE
|
|
%n number of BF 2*NbrEdge+2*NbrFace 2*6+2*4
|
|
%(u,v,w) reference coordinate
|
|
|
|
if type==1 %1-(1,0,0) 2-(0,1,0) 3-(0,0,1) 4-(0,0,0)
|
|
if n==1
|
|
out=[v-3*u*v,-u+3*u*u,0];
|
|
elseif n==2
|
|
out=[v-3*v*v,-u+3*u*v,0];
|
|
elseif n==3
|
|
out=[w-3*u*w,0,-u+3*u*u];
|
|
elseif n==4
|
|
out=[w-3*w*w,0,-u+3*u*w];
|
|
elseif n==5
|
|
out=[1-3*u-v+3*u*v-w+3*u*w,u-3*u*u,u-3*u*u];
|
|
elseif n==6
|
|
out=[-2+3*u+5*v-3*u*v-3*v*v+5*w-3*u*w-6*v*w-3*w*w,-2*u+3*u*u+3*u*v+3*u*w,-2*u+3*u*u+3*u*v+3*u*w];
|
|
elseif n==7
|
|
out=[0,w-3*v*w,-v+3*v*v];
|
|
elseif n==8
|
|
out=[0,w-3*w*w,-v+3*v*w];
|
|
elseif n==9
|
|
out=[v-3*v*v,1-u-3*v+3*u*v-w+3*v*w,v-3*v*v];
|
|
elseif n==10
|
|
out=[-2*v+3*u*v+3*v*v+3*v*w,-2+5*u-3*u*u+3*v-3*u*v+5*w-6*u*w-3*v*w-3*w*w,-2*v+3*u*v+3*v*v+3*v*w];
|
|
elseif n==11
|
|
out=[w-3*w*w,w-3*w*w,1-u-v-3*w+3*u*w+3*v*w];
|
|
elseif n==12
|
|
out=[-2*w+3*u*w+3*v*w+3*w*w,-2*w+3*u*w+3*v*w+3*w*w,-2+5*u-3*u*u+5*v-6*u*v-3*v*v+3*w-3*u*w-3*v*w];
|
|
elseif n==13 %123
|
|
out=[-3*v*w,3*u*w,0];
|
|
elseif n==14 %312
|
|
out=[-3*v*w,0,3*u*v];
|
|
elseif n==15
|
|
out=[-3*v+3*u*v+3*v*v+3*v*w,3*u-3*u*u-3*u*v-3*u*w,0];
|
|
elseif n==16
|
|
out=[-3*v+3*v*v+3*v*w,-3*u*v,-3*u*v];
|
|
elseif n==17
|
|
out=[-3*w+3*u*w+3*v*w+3*w*w,0,3*u-3*u*u-3*u*v-3*u*w];
|
|
elseif n==18
|
|
out=[-3*w+3*v*w+3*w*w,-3*u*w,-3*u*w];
|
|
elseif n==19
|
|
out=[0,-3*w+3*u*w+3*v*w+3*w*w,3*v-3*u*v-3*v*v-3*v*w];
|
|
elseif n==20
|
|
out=[-3*v*w,-3*w+3*u*w+3*w*w,-3*v*w];
|
|
end
|
|
elseif type==2
|
|
if n==1
|
|
out=[0,0,-2+9*u];
|
|
elseif n==2
|
|
out=[0,0,-2+9*v];
|
|
elseif n==3
|
|
out=[0,2-9*u,0];
|
|
elseif n==4
|
|
out=[0,2-9*w,0];
|
|
elseif n==5
|
|
out=[0,-2+9*u,2-9*u];
|
|
elseif n==6
|
|
out=[0,7-9*u-9*v-9*w,-7+9*u+9*v+9*w];
|
|
elseif n==7
|
|
out=[-2+9*v,0,0];
|
|
elseif n==8
|
|
out=[-2+9*w,0,0];
|
|
elseif n==9
|
|
out=[2-9*v,0,-2+9*v];
|
|
elseif n==10
|
|
out=[-7+9*u+9*v+9*w,0,7-9*u-9*v-9*w];
|
|
elseif n==11
|
|
out=[-2+9*w,2-9*w,0];
|
|
elseif n==12
|
|
out=[7-9*u-9*v-9*w,-7+9*u+9*v+9*w,0];
|
|
elseif n==13
|
|
out=[-3*u,-3*v,6*w];
|
|
elseif n==14
|
|
out=[3*u,-6*v,3*w];
|
|
elseif n==15
|
|
out=[3*u,3*v,6-9*u-9*v-6*w];
|
|
elseif n==16
|
|
out=[-3*u,6*v,3-9*v-3*w];
|
|
elseif n==17
|
|
out=[-3*u,-6+9*u+6*v+9*w,-3*w];
|
|
elseif n==18
|
|
out=[3*u,-3+3*v+9*w,-6*w];
|
|
elseif n==19
|
|
out=[6-6*u-9*v-9*w,3*v,3*w];
|
|
elseif n==20
|
|
out=[3-3*u-9*w,-3*v,6*w];
|
|
end
|
|
end
|
|
|
|
end |