📄 fe_interface_inf_fe.c
字号:
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 + -