⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fe_bernstein.c

📁 一个用来实现偏微分方程中网格的计算库
💻 C
📖 第 1 页 / 共 2 页
字号:
// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		  return 1;// 		case 8:// 		case 9:// 		case 10:// 		case 11:// 		case 12:// 		case 13:// 		case 14:// 		case 15:// 		case 16:// 		case 17:// 		case 18:// 		case 19:// 		  return 2;		  // 		case 20:// 		case 21:// 		case 22:// 		case 23:// 		case 24:// 		case 25:// 		  return 4;		  // 		case 26:// 		  return 8;// 		}// 	    }	    // 	  default:// 	    libmesh_error();	    // 	  }//       }//       // The fourth-order Bernstein shape functions//     case FOURTH://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE2:// 	  case EDGE3:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		  return 1;// 		case 2:// 		  return 3;		  // 		default:// 		  libmesh_error();		  // 		}// 	    }	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		  return 1;// 		case 3:// 		case 4:// 		case 5:// 		  return 3;// 		case 6:// 		  return 3;// 		default:// 		  libmesh_error();// 		}// 	    }// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD8:// 	  case QUAD9:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		  return 1;// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		  return 3;		  // 		case 8:// 		  return 9;		  // 		default:// 		  libmesh_error();// 		}// 	    }// 	    // The 3D Bernsteins defined on a ten-noded tetrahedral.// 	  case TET10:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		  return 1;// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		case 8://         case 9:// 		  return 3;		  // 		default:// 		  libmesh_error();// 		}// 	    }// 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		  return 1;// 		case 8:// 		case 9:// 		case 10:// 		case 11:// 		case 12:// 		case 13:// 		case 14:// 		case 15:// 		case 16:// 		case 17:// 		case 18:// 		case 19:// 		  return 3;		  // 		case 20:// 		case 21:// 		case 22:// 		case 23:// 		case 24:// 		case 25:// 		  return 9;		  // 		case 26:// 		  return 27;// 		}// 	    }	    // 	  default:// 	    libmesh_error();	    // 	  }//       }//       // The fifth-order Bernstein shape functions//     case FIFTH://       {// 	switch (t)// 	  {// 	    // The 1D  Bernstein defined on a three-noded edge// 	  case EDGE2:// 	  case EDGE3:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		  return 1;// 		case 2:// 		  return 4;		  // 		default:// 		  libmesh_error();		  // 		}// 	    }	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		  return 1;// 		case 3:// 		case 4:// 		case 5:// 		  return 4;// 		case 6:// 		  return 6;// 		default:// 		  libmesh_error();// 		}// 	    }// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD8:// 	  case QUAD9:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		  return 1;// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		  return 4;		  // 		case 8:// 		  return 16;		  // 		default:// 		  libmesh_error();// 		}// 	    }// 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		  return 1;// 		case 8:// 		case 9:// 		case 10:// 		case 11:// 		case 12:// 		case 13:// 		case 14:// 		case 15:// 		case 16:// 		case 17:// 		case 18:// 		case 19:// 		  return 4;		  // 		case 20:// 		case 21:// 		case 22:// 		case 23:// 		case 24:// 		case 25:// 		  return 16;		  // 		case 26:// 		  return 64;// 		}// 	    }	    // 	  default:// 	    libmesh_error();	    // 	  } // switch ElemType//       } // case FIFTH//       // The sixth-order Bernstein shape functions//     case SIXTH://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE2:// 	  case EDGE3:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		  return 1;// 		case 2:// 		  return 5;		  // 		default:// 		  libmesh_error();		  // 		}// 	    }	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		  return 1;// 		case 3:// 		case 4:// 		case 5:// 		  return 5;// 		case 6:// 		  return 10;// 		default:// 		  libmesh_error();// 		}// 	    }// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD8:// 	  case QUAD9:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		  return 1;// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		  return 5;		  // 		case 8:// 		  return 25;		  // 		default:// 		  libmesh_error();// 		}// 	    }// 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    {// 	      switch (n)// 		{// 		case 0:// 		case 1:// 		case 2:// 		case 3:// 		case 4:// 		case 5:// 		case 6:// 		case 7:// 		  return 1;// 		case 8:// 		case 9:// 		case 10:// 		case 11:// 		case 12:// 		case 13:// 		case 14:// 		case 15:// 		case 16:// 		case 17:// 		case 18:// 		case 19:// 		  return 5;		  // 		case 20:// 		case 21:// 		case 22:// 		case 23:// 		case 24:// 		case 25:// 		  return 25;		  // 		case 26:// 		  return 125;// 		}// 	    }	    // 	  default:// 	    libmesh_error();	    // 	  } // switch ElemType//       } // case SIXTH      //     default://       libmesh_error();//       //     }  //   libmesh_error();//   return 0;}template <unsigned int Dim, FEFamily T>unsigned int FE<Dim,T>::n_dofs_per_elem(const ElemType t,					const Order o){  switch (t)    {    case EDGE2:    case EDGE3:      return 0;    case TRI3:    case QUAD4:      return 0;    case TRI6:      return ((o-1)*(o-2)/2);    case QUAD8:      if (o <= 2)	return 0;    case QUAD9:      return ((o-1)*(o-1));    case HEX8:      libmesh_assert(o < 2);    case HEX20:      libmesh_assert(o < 3);      return 0;    case HEX27:      return ((o-1)*(o-1)*(o-1));    case TET4:      libmesh_assert (o<2);    case TET10:      libmesh_assert (o<3);	return 0;    default:      libmesh_error();    }  libmesh_error();  return 0;//   switch (o)//     {//       // The first-order Bernstein shape functions//     case FIRST://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a two-noded edge// 	  case EDGE2:// 	    return 0;	    // 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE3:// 	    return 0;	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    return 0;// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD8:// 	    return 0;	    // 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD9:// 	    return 0;	    // 	    // The 3D Bernsteins defined on a four-noded hexahedral.// 	  case TET4:// 	    return 0;	    // 	    // The 3D Bernsteins defined on a ten-noded hexahedral.// 	  case TET10:// 	    return 0;	    // 	    // The 3D Bernsteins defined on a 20-noded hexahedral.// 	  case HEX20:// 	    return 0;// 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    return 0;	    	    // 	  default:// 	    libmesh_error();	    // 	  }//       }//       // The second-order Bernstein shape functions//     case SECOND://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a two-noded edge// 	  case EDGE2:// 	    return 1;	    // 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE3:// 	    return 0;	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    return 0;// 	    // The 2D tensor-product Bernsteins defined on a// 	    // eight-noded quadrilateral.// 	  case QUAD8:// 	    return 0;// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD9:// 	    return 0;	    	    // 	    // The 3D Bernsteins defined on a ten-noded hexahedral.// 	  case TET10:// 	    return 0;	    	    // 	    // The 3D Bernsteins defined on a 20-noded hexahedral.// 	  case HEX20:// 	    return 0;// 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    return 0;	    // 	  default:// 	    libmesh_error();	    // 	  }//       }//       // The third-order Bernstein shape functions//     case THIRD://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a two-noded edge// 	  case EDGE2:// 	    return 2;	    // 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE3:// 	    return 0;	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    return 1;	    // 	    // The 2D tensor-product Bernsteins defined on a// 	    // eight-noded quadrilateral.// 	  case QUAD8:// 	    return 4;// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD9:// 	    return 0;	    	    // 	    // The 3D Bernsteins defined on a ten-noded hexahedral.// 	  case TET10:// 	    return 4;	    // 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    return 0;	    // 	  default:// 	    libmesh_error();	    // 	  }//       }//       // The fourth-order Bernstein shape functions//     case FOURTH://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a two-noded edge// 	  case EDGE2:// 	    return 3;	    // 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE3:// 	    return 0;	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    return 3;	    // 	    // The 2D tensor-product Bernsteins defined on a// 	    // eight-noded quadrilateral.// 	  case QUAD8:// 	    return 9;// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD9:// 	    return 0;	    // 	    // The 3D Bernsteins defined on a ten-noded hexahedral.// 	  case TET10:// 	    return 13;	               	    // 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    return 0;	    // 	  default:// 	    libmesh_error();	    // 	  }//       }//       // The fifth-order Bernstein shape functions//     case FIFTH://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a two-noded edge// 	  case EDGE2:// 	    return 4;	    // 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE3:// 	    return 0;	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    return 6;	    // 	    // The 2D tensor-product Bernsteins defined on a// 	    // eight-noded quadrilateral.// 	  case QUAD8:// 	    return 16;// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD9:// 	    return 0;	    // 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    return 0;	    // 	  default:// 	    libmesh_error();	    // 	  }//       }//       // The sixth-order Bernstein shape functions//     case SIXTH://       {// 	switch (t)// 	  {// 	    // The 1D Bernstein defined on a two-noded edge// 	  case EDGE2:// 	    return 5;	    // 	    // The 1D Bernstein defined on a three-noded edge// 	  case EDGE3:// 	    return 0;	    // 	    // The 2D Bernstein defined on a 6-noded triangle// 	  case TRI6:// 	    return 10;	    // 	    // The 2D tensor-product Bernsteins defined on a// 	    // eight-noded quadrilateral.// 	  case QUAD8:// 	    return 25;// 	    // The 2D tensor-product Bernsteins defined on a// 	    // nine-noded quadrilateral.// 	  case QUAD9:// 	    return 0;	    // 	    // The 3D tensor-product Bernsteins defined on a// 	    // twenty-seven noded hexahedral.// 	  case HEX27:// 	    return 0;	    // 	  default:// 	    libmesh_error();	    // 	  }//       }      //       // Otherwise no DOFS per element//     default://       return 0;//     }}template <unsigned int Dim, FEFamily T>FEContinuity FE<Dim,T>::get_continuity() const{  return C_ZERO;}template <unsigned int Dim, FEFamily T>bool FE<Dim,T>::is_hierarchic() const{  return false;}template <unsigned int Dim, FEFamily T>bool FE<Dim,T>::shapes_need_reinit() const{  // reinit is only necessary for  // approximation orders >= 3,  // but we might reach that with p refinement//  if(this->fe_type.order == FIRST ||//     this->fe_type.order == SECOND)//    return false;//  else    return true;}//--------------------------------------------------------------// Explicit instantiations for member functionsINSTANTIATE_MBRF(1,BERNSTEIN);INSTANTIATE_MBRF(2,BERNSTEIN);INSTANTIATE_MBRF(3,BERNSTEIN);#endif //ENABLE_HIGHER_ORDER_SHAPES

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -