XIAN-FEM-2026June/3D opticsfem-master/function/BF_Prism.cpp

50 lines
1.6 KiB
C++

#include"BF.h"
void BF_Prism_Nedelec(BF_INPUT)
{
switch (order)
{
case 1:
switch (numBF)
{
case 1: o(0) = (1. - v) * (1. - w) / 2.; o(1) = u * (1. - w) / 2.; o(2) = 0.; break; //12
case 2: o(0) = v * (1. - w) / 2.; o(1) = (1. - u) * (1. - w) / 2.; o(2) = 0.; break; //13
case 3: o(0) = 0.; o(1) = 0.; o(2) = (1. - u - v) / 2.; break; //14
case 4: o(0) = -v * (1. - w) / 2.; o(1) = u * (1. - w) / 2.; o(2) = 0.; break; //23
case 5: o(0) = 0.; o(1) = 0.; o(2) = u / 2.; break; //25
case 6: o(0) = 0.; o(1) = 0.; o(2) = v / 2.; break; //36
case 7: o(0) = (1. - v) * (1. + w) / 2.; o(1) = u * (1. + w) / 2.; o(2) = 0.; break; //45
case 8: o(0) = v * (1. + w) / 2.; o(1) = (1. - u) * (1. + w) / 2.; o(2) = 0.; break; //46
case 9: o(0) = -v * (1. + w) / 2.; o(1) = u * (1. + w) / 2.; o(2) = 0.; break; //56
default: break;
}
break;
default:
break;
}
}
void BF_Prism_Curl_Nedelec(BF_INPUT)
{
switch (order)
{
case 1:
switch (numBF)
{
case 1: o(0) = u / 2.; o(1) = (v - 1.) / 2.; o(2) = 1. - w; break; //12
case 2: o(0) = (1. - u) / 2; o(1) = -v / 2.; o(2) = w - 1.; break; //13
case 3: o(0) = -1. / 2.; o(1) = 1. / 2.; o(2) = 0.; break; //14
case 4: o(0) = u / 2.; o(1) = v / 2.; o(2) = 1. - w; break; //23
case 5: o(0) = 0.; o(1) = -1. / 2.; o(2) = 0.; break; //25
case 6: o(0) = 0.5; o(1) = 0.; o(2) = 0.; break; //36
case 7: o(0) = -u / 2.; o(1) = (1. - v) / 2.; o(2) = 1. + w; break; //45
case 8: o(0) = (u - 1.) / 2.; o(1) = v / 2.; o(2) = -1. - w; break; //46
case 9: o(0) = -u / 2.; o(1) = -v / 2.; o(2) = 1. + w; break; //56
default:
break;
}
break;
default:
break;
}
}