#include"BF.h" void BF_Triangle_Lagrange(BF_INPUT) { switch (order) { case 1: switch (numBF) { case 1: o(0) = o(1) = 0.; o(2) = 1. - u - v; break; case 2: o(0) = o(1) = 0.; o(2) = u; break; case 3: o(0) = o(1) = 0.; o(2) = v; break; default: break; } break; case 2: switch (numBF) { case 1: o(0) = o(1) = 0.; o(2) = 1.0 - 3.0 * u + 2.0 * u * u - 3.0 * v + 4.0 * u * v + 2.0 * v * v; break;//200 case 2: o(0) = o(1) = 0.; o(2) = -u + 2.0 * u * u; break;//020 case 3: o(0) = o(1) = 0.; o(2) = -v + 2.0 * v * v; break;//002 case 4: o(0) = o(1) = 0.; o(2) = 4.0 * u - 4.0 * u * u - 4.0 * u * v; break;//110 case 5: o(0) = o(1) = 0.; o(2) = 4.0 * v - 4.0 * u * v - 4.0 * v * v; break;//101 case 6: o(0) = o(1) = 0.; o(2) = 4.0 * u * v; break;//011 default: break; } break; default:break; } } void BF_Triangle_Grad_Lagrange(BF_INPUT) { switch (order) { case 1: switch (numBF) { case 1: o(0) = -1.; o(1) = -1.; o(2) = 0.; break; case 2: o(0) = 1.; o(1) = 0.; o(2) = 0.; break; case 3: o(0) = 0.; o(1) = 1.; o(2) = 0.; break; default: break; } break; case 2: switch (numBF) { case 1: o(0) = -3. + 4. * u + 4. * v; o(1) = -3. + 4. * u + 4. * v; o(2) = 0.; break;//200 case 2: o(0) = -1. + 4. * u; o(1) = 0.; o(2) = 0.; break;//020 case 3: o(0) = 0.; o(1) = -1. + 4. * v; o(2) = 0.; break;//002 case 4: o(0) = 4. - 8. * u - 4. * v; o(1) = -4. * u; o(2) = 0.; break;//110 case 5: o(0) = -4. * v; o(1) = 4. - 4. * u - 8. * v; o(2) = 0.; break;//101 case 6: o(0) = 4. * v; o(1) = 4. * u; o(2) = 0.; break;//011 default: break; } break; default:break; } } void BF_Triangle_Curl_Lagrange(BF_INPUT) { switch (order) { case 1: switch (numBF) { case 1: o(0) = -1.; o(1) = 1.; o(2) = 0.; break; case 2: o(0) = 0.; o(1) = -1.; o(2) = 0.; break; case 3: o(0) = 1.; o(1) = 0.; o(2) = 0.; break; default: break; } break; case 2: switch (numBF) { case 1: o(0) = -3. + 4. * u + 4. * v; o(1) = 3. - 4. * u - 4. * v; o(2) = 0.; break;//200 case 2: o(0) = 0.; o(1) = 1. - 4. * u; o(2) = 0.; break;//020 case 3: o(0) = -1. + 4. * v; o(1) = 0.; o(2) = 0.; break;//002 case 4: o(0) = -4. * u; o(1) = -4. + 8. * u + 4. * v; o(2) = 0.; break;//110 case 5: o(0) = 4. - 4. * u - 8. * v; o(1) = 4. * v; o(2) = 0.; break;//101 case 6: o(0) = 4. * u; o(1) = -4. * v; o(2) = 0.; break;//011 default: break; } break; default:break; } } void BF_Triangle_Nedelec(BF_INPUT) { switch (order) { case 1: switch (numBF) { case 1: o(0) = 1. - v; o(1) = u; o(2) = 0.; break; //1-2 case 2: o(0) = v; o(1) = -u + 1.; o(2) = 0.; break; //1-3 case 3: o(0) = -v; o(1) = u; o(2) = 0.; break; //2-3 default:break; } break; case 2: switch (numBF) { case 1: o(0) = -1. + 3. * u + v - 3. * u * v; o(1) = -u + 3. * u * u; o(2) = 0.; break; //3-120 1-2 case 2: o(0) = 2. - 3. * u - 5. * v + 3. * u * v + 3. * v * v; o(1) = 2. * u - 3. * u * u - 3. * u * v; o(2) = 0.; break; //3-210 1-2 case 3: o(0) = -v + 3. * v * v; o(1) = -1. + u + 3. * v - 3. * u * v; o(2) = 0.; break; //2-102 1-3 case 4: o(0) = 2. * v - 3. * u * v - 3. * v * v; o(1) = 2. - 5. * u + 3. * u * u - 3. * v + 3. * u * v; o(2) = 0.; break; //2-201 1-3 case 5: o(0) = v - 3. * v * v; o(1) = -u + 3. * u * v; o(2) = 0.; break; //1-012 2-3 case 6: o(0) = v - 3. * u * v; o(1) = -u + 3. * u * u; o(2) = 0.; break; //1-021 2-3 case 7: o(0) = 1.5 * (3. * v - 3. * v * v); o(1) = 1.5 * (3. * u * v); o(2) = 0.; break; //3-111 1-2 case 8: o(0) = 1.5 * (3. * u * v); o(1) = 1.5 * (3. * u - 3. * u * u); o(2) = 0.; break; //2-111 1-3 default:break; } break; default:break; } } void BF_Triangle_Curl_Nedelec(BF_INPUT) { switch (order) { case 1: switch (numBF) { case 1: o(0) = 0.; o(1) = 0.; o(2) = 2.; break; case 2: o(0) = 0.; o(1) = 0.; o(2) = -2.; break; case 3: o(0) = 0.; o(1) = 0.; o(2) = 2.; break; default: break; } break; case 2: switch (numBF) { case 1: o(0) = 0.; o(1) = 0.; o(2) = -2. + 9. * u; break; //3-120 1-2 case 2: o(0) = 0.; o(1) = 0.; o(2) = 7. - 9. * u - 9. * v; break; //3-210 1-2 case 3: o(0) = 0.; o(1) = 0.; o(2) = 2 - 9. * v; break; //2-102 1-3 case 4: o(0) = 0.; o(1) = 0.; o(2) = -7. + 9. * u + 9. * v; break; //2-201 1-3 case 5: o(0) = 0.; o(1) = 0.; o(2) = -2. + 9. * v; break; //1-012 2-3 case 6: o(0) = 0.; o(1) = 0.; o(2) = -2. + 9. * u; break; //1-021 2-3 case 7: o(0) = 0.; o(1) = 0.; o(2) = 1.5 * (-3. + 9. * v); break;//3-111 1-2 case 8: o(0) = 0.; o(1) = 0.; o(2) = 1.5 * (3. - 9. * u); break;//2-111 1-3 default: break; } break; default:break; } }