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

📄 fe_interface_inf_fe.c

📁 一个用来实现偏微分方程中网格的计算库
💻 C
📖 第 1 页 / 共 2 页
字号:
	  case ELLIPSOIDAL:	    return InfFE<1,JACOBI_20_00,ELLIPSOIDAL>::inverse_map(elem, p, tolerance);*/	  default:	    libmesh_error();	  }      }            // 2D    case 2:      {	switch (fe_t.inf_map)	  {	  case CARTESIAN:	    return InfFE<2,JACOBI_20_00,CARTESIAN>::inverse_map(elem, p, tolerance, secure);	  case SPHERICAL:	  case ELLIPSOIDAL:	    {	      std::cerr << "ERROR: Spherical and Ellipsoidal IFEMs not (yet) " << std::endl			<< "implemented." << std::endl;	      libmesh_error();	    }/*	  case SPHERICAL:	    return InfFE<2,JACOBI_20_00,SPHERICAL>::inverse_map(elem, p, tolerance);	  case ELLIPSOIDAL:	    return InfFE<2,JACOBI_20_00,ELLIPSOIDAL>::inverse_map(elem, p, tolerance);*/	  default:	    libmesh_error();	  }      }            // 3D    case 3:      {	switch (fe_t.inf_map)	  {	  case CARTESIAN:	    return InfFE<3,JACOBI_20_00,CARTESIAN>::inverse_map(elem, p, tolerance, secure);	  case SPHERICAL:	  case ELLIPSOIDAL:	    {	      std::cerr << "ERROR: Spherical and Ellipsoidal IFEMs not (yet) " << std::endl			<< "implemented." << std::endl;	      libmesh_error();	    }/*	  case SPHERICAL:	    return InfFE<3,JACOBI_20_00,SPHERICAL>::inverse_map(elem, p, tolerance);	  case ELLIPSOIDAL:	    return InfFE<3,JACOBI_20_00,ELLIPSOIDAL>::inverse_map(elem, p, tolerance);*/	  default:	    libmesh_error();	  }      }    default:      libmesh_error();    }    libmesh_error();  Point pt;  return pt;}void FEInterface::ifem_inverse_map (const unsigned int dim,				    const FEType& fe_t,				    const Elem* elem,				    const std::vector<Point>& physical_points,				    std::vector<Point>&       reference_points,				    const Real tolerance,				    const bool secure){  switch (dim)    {      // 1D    case 1:      {	switch (fe_t.inf_map)	  {	  case CARTESIAN:	    InfFE<1,JACOBI_20_00,CARTESIAN>::inverse_map(elem, physical_points, reference_points, tolerance, secure);	    return;	  default:	    libmesh_error();	  }      }            // 2D    case 2:      {	switch (fe_t.inf_map)	  {	  case CARTESIAN:	   InfFE<2,JACOBI_20_00,CARTESIAN>::inverse_map(elem, physical_points, reference_points, tolerance, secure);	   return;	  default:	    libmesh_error();	  }      }            // 3D    case 3:      {	switch (fe_t.inf_map)	  {	  case CARTESIAN:	   InfFE<3,JACOBI_20_00,CARTESIAN>::inverse_map(elem, physical_points, reference_points, tolerance, secure);	   return;	  default:	    libmesh_error();	  }      }    default:      libmesh_error();    }  libmesh_error();  return;}bool FEInterface::ifem_on_reference_element(const Point& p,					    const ElemType t,					    const Real eps){  return FEBase::on_reference_element(p,t,eps);}Real FEInterface::ifem_shape(const unsigned int dim,			     const FEType& fe_t,			     const ElemType t,			     const unsigned int i,			     const Point& p){  switch (dim)    {      // 1D    case 1:      {	switch (fe_t.radial_family)	  {	    /*	     * For no derivatives (and local coordinates, as	     * given in \p p) the infinite element shapes	     * are independent of mapping type	     */	  case INFINITE_MAP:	    return InfFE<1,INFINITE_MAP,CARTESIAN>::shape(fe_t, t, i, p);	  case JACOBI_20_00:	    return InfFE<1,JACOBI_20_00,CARTESIAN>::shape(fe_t, t, i, p);	  case JACOBI_30_00:	    return InfFE<1,JACOBI_30_00,CARTESIAN>::shape(fe_t, t, i, p);	  case LEGENDRE:   	    return InfFE<1,LEGENDRE,CARTESIAN>::shape(fe_t, t, i, p);	  case LAGRANGE:	    return InfFE<1,LAGRANGE,CARTESIAN>::shape(fe_t, t, i, p);	  default:	    libmesh_error();	  }      }            // 2D    case 2:      {	switch (fe_t.radial_family)	  {	  case INFINITE_MAP:	    return InfFE<2,INFINITE_MAP,CARTESIAN>::shape(fe_t, t, i, p);	  case JACOBI_20_00:	    return InfFE<2,JACOBI_20_00,CARTESIAN>::shape(fe_t, t, i, p);	  case JACOBI_30_00:	    return InfFE<2,JACOBI_30_00,CARTESIAN>::shape(fe_t, t, i, p);	  case LEGENDRE:   	    return InfFE<2,LEGENDRE,CARTESIAN>::shape(fe_t, t, i, p);	  case LAGRANGE:	    return InfFE<2,LAGRANGE,CARTESIAN>::shape(fe_t, t, i, p);	  default:	    libmesh_error();	  }      }            // 3D    case 3:      {	switch (fe_t.radial_family)	  {	  case INFINITE_MAP:	    return InfFE<3,INFINITE_MAP,CARTESIAN>::shape(fe_t, t, i, p);	  case JACOBI_20_00:	    return InfFE<3,JACOBI_20_00,CARTESIAN>::shape(fe_t, t, i, p);	  case JACOBI_30_00:	    return InfFE<3,JACOBI_30_00,CARTESIAN>::shape(fe_t, t, i, p);	  case LEGENDRE:   	    return InfFE<3,LEGENDRE,CARTESIAN>::shape(fe_t, t, i, p);	  case LAGRANGE:	    return InfFE<3,LAGRANGE,CARTESIAN>::shape(fe_t, t, i, p);	  default:	    libmesh_error();	  }      }    default:      libmesh_error();    }    libmesh_error();  return 0.;}Real FEInterface::ifem_shape(const unsigned int dim,			     const FEType& fe_t,			     const Elem* elem,			     const unsigned int i,			     const Point& p){  switch (dim)    {      // 1D    case 1:      {	switch (fe_t.radial_family)	  {	    /*	     * For no derivatives (and local coordinates, as	     * given in \p p) the infinite element shapes	     * are independent of mapping type	     */	  case INFINITE_MAP:	    return InfFE<1,INFINITE_MAP,CARTESIAN>::shape(fe_t, elem, i, p);	  case JACOBI_20_00:	    return InfFE<1,JACOBI_20_00,CARTESIAN>::shape(fe_t, elem, i, p);	  case JACOBI_30_00:	    return InfFE<1,JACOBI_30_00,CARTESIAN>::shape(fe_t, elem, i, p);	  case LEGENDRE:   	    return InfFE<1,LEGENDRE,CARTESIAN>::shape(fe_t, elem, i, p);	  case LAGRANGE:	    return InfFE<1,LAGRANGE,CARTESIAN>::shape(fe_t, elem, i, p);	  default:	    libmesh_error();	  }      }      // 2D    case 2:      {	switch (fe_t.radial_family)	  {	  case INFINITE_MAP:	    return InfFE<2,INFINITE_MAP,CARTESIAN>::shape(fe_t, elem, i, p);	  case JACOBI_20_00:	    return InfFE<2,JACOBI_20_00,CARTESIAN>::shape(fe_t, elem, i, p);	  case JACOBI_30_00:	    return InfFE<2,JACOBI_30_00,CARTESIAN>::shape(fe_t, elem, i, p);	  case LEGENDRE:   	    return InfFE<2,LEGENDRE,CARTESIAN>::shape(fe_t, elem, i, p);	  case LAGRANGE:	    return InfFE<2,LAGRANGE,CARTESIAN>::shape(fe_t, elem, i, p);	  default:	    libmesh_error();	  }      }                  // 3D    case 3:      {	switch (fe_t.radial_family)	  {	  case INFINITE_MAP:	    return InfFE<3,INFINITE_MAP,CARTESIAN>::shape(fe_t, elem, i, p);	  case JACOBI_20_00:	    return InfFE<3,JACOBI_20_00,CARTESIAN>::shape(fe_t, elem, i, p);	  case JACOBI_30_00:	    return InfFE<3,JACOBI_30_00,CARTESIAN>::shape(fe_t, elem, i, p);	  case LEGENDRE:   	    return InfFE<3,LEGENDRE,CARTESIAN>::shape(fe_t, elem, i, p);	  case LAGRANGE:	    return InfFE<3,LAGRANGE,CARTESIAN>::shape(fe_t, elem, i, p);	  default:	    libmesh_error();	  }      }    default:      libmesh_error();    }    libmesh_error();  return 0.;}void FEInterface::ifem_compute_data(const unsigned int dim,				    const FEType& fe_t,				    const Elem* elem,				    FEComputeData& data){  switch (dim)    {      // 1D    case 1:      {	switch (fe_t.radial_family)	  {	    /*	     * For no derivatives (and local coordinates, as	     * given in \p p) the infinite element shapes	     * are independent of mapping type	     */	  case INFINITE_MAP:	    InfFE<1,INFINITE_MAP,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case JACOBI_20_00:	    InfFE<1,JACOBI_20_00,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case JACOBI_30_00:	    InfFE<1,JACOBI_30_00,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case LEGENDRE:   	    InfFE<1,LEGENDRE,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case LAGRANGE:	    InfFE<1,LAGRANGE,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  default:	    libmesh_error();	  }	break;      }      // 2D    case 2:      {	switch (fe_t.radial_family)	  {	  case INFINITE_MAP:	    InfFE<2,INFINITE_MAP,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case JACOBI_20_00:	    InfFE<2,JACOBI_20_00,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case JACOBI_30_00:	    InfFE<2,JACOBI_30_00,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case LEGENDRE:   	    InfFE<2,LEGENDRE,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case LAGRANGE:	    InfFE<2,LAGRANGE,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  default:	    libmesh_error();	  }	break;      }                  // 3D    case 3:      {	switch (fe_t.radial_family)	  {	  case INFINITE_MAP:	    InfFE<3,INFINITE_MAP,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case JACOBI_20_00:	    InfFE<3,JACOBI_20_00,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case JACOBI_30_00:	    InfFE<3,JACOBI_30_00,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case LEGENDRE:   	    InfFE<3,LEGENDRE,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  case LAGRANGE:	    InfFE<3,LAGRANGE,CARTESIAN>::compute_data(fe_t, elem, data);	    break;	  default:	    libmesh_error();	  }	break;      }    default:      libmesh_error();      break;    }  return;}#endif // ifdef ENABLE_INFINITE_ELEMENTS

⌨️ 快捷键说明

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