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

📄 fe_base.h

📁 一个用来实现偏微分方程中网格的计算库
💻 H
📖 第 1 页 / 共 3 页
字号:
   * d(xi)/d(z). Needed for the Jacobian.   */  std::vector<Real>  dxidz_map;    /**   * Map for partial derivatives:   * d(eta)/d(x). Needed for the Jacobian.   */  std::vector<Real>  detadx_map;  /**   * Map for partial derivatives:   * d(eta)/d(y). Needed for the Jacobian.   */  std::vector<Real>  detady_map;  /**   * Map for partial derivatives:   * d(eta)/d(z). Needed for the Jacobian.   */  std::vector<Real>  detadz_map;    /**   * Map for partial derivatives:   * d(zeta)/d(x). Needed for the Jacobian.   */  std::vector<Real>  dzetadx_map;  /**   * Map for partial derivatives:   * d(zeta)/d(y). Needed for the Jacobian.   */  std::vector<Real>  dzetady_map;  /**   * Map for partial derivatives:   * d(zeta)/d(z). Needed for the Jacobian.   */  std::vector<Real>  dzetadz_map;  /**   * Shape function values.   */  std::vector<std::vector<Real> >   phi;  /**   * Have calculations with this object already been started?   * Then all get_* functions should already have been called.   */  mutable bool calculations_started;  /**   * Should we calculate shape functions?   */  mutable bool calculate_phi;  /**   * Should we calculate shape function gradients?   */  mutable bool calculate_dphi;  /**   * Should we calculate shape function hessians?   */  mutable bool calculate_d2phi;  /**   * Shape function derivative values.   */  std::vector<std::vector<RealGradient> >  dphi;  /**   * Shape function derivatives in the xi direction.   */  std::vector<std::vector<Real> >   dphidxi;  /**   * Shape function derivatives in the eta direction.   */  std::vector<std::vector<Real> >   dphideta;    /**   * Shape function derivatives in the zeta direction.   */  std::vector<std::vector<Real> >   dphidzeta;  /**   * Shape function derivatives in the x direction.   */  std::vector<std::vector<Real> >   dphidx;  /**   * Shape function derivatives in the y direction.   */  std::vector<std::vector<Real> >   dphidy;  /**   * Shape function derivatives in the z direction.   */  std::vector<std::vector<Real> >   dphidz;#ifdef ENABLE_SECOND_DERIVATIVES    /**   * Shape function second derivative values.   */  std::vector<std::vector<RealTensor> >  d2phi;  /**   * Shape function second derivatives in the xi direction.   */  std::vector<std::vector<Real> >   d2phidxi2;  /**   * Shape function second derivatives in the xi-eta direction.   */  std::vector<std::vector<Real> >   d2phidxideta;    /**   * Shape function second derivatives in the xi-zeta direction.   */  std::vector<std::vector<Real> >   d2phidxidzeta;  /**   * Shape function second derivatives in the eta direction.   */  std::vector<std::vector<Real> >   d2phideta2;  /**   * Shape function second derivatives in the eta-zeta direction.   */  std::vector<std::vector<Real> >   d2phidetadzeta;    /**   * Shape function second derivatives in the zeta direction.   */  std::vector<std::vector<Real> >   d2phidzeta2;  /**   * Shape function second derivatives in the x direction.   */  std::vector<std::vector<Real> >   d2phidx2;  /**   * Shape function second derivatives in the x-y direction.   */  std::vector<std::vector<Real> >   d2phidxdy;  /**   * Shape function second derivatives in the x-z direction.   */  std::vector<std::vector<Real> >   d2phidxdz;  /**   * Shape function second derivatives in the y direction.   */  std::vector<std::vector<Real> >   d2phidy2;  /**   * Shape function second derivatives in the y-z direction.   */  std::vector<std::vector<Real> >   d2phidydz;  /**   * Shape function second derivatives in the z direction.   */  std::vector<std::vector<Real> >   d2phidz2;  #endif    /**   * Map for the shape function phi.   */  std::vector<std::vector<Real> >   phi_map;  /**   * Map for the derivative, d(phi)/d(xi).   */  std::vector<std::vector<Real> >   dphidxi_map;  /**   * Map for the derivative, d(phi)/d(eta).   */  std::vector<std::vector<Real> >   dphideta_map;  /**   * Map for the derivative, d(phi)/d(zeta).   */  std::vector<std::vector<Real> >   dphidzeta_map;#ifdef ENABLE_SECOND_DERIVATIVES  /**   * Map for the second derivative, d^2(phi)/d(xi)^2.   */  std::vector<std::vector<Real> >   d2phidxi2_map;  /**   * Map for the second derivative, d^2(phi)/d(xi)d(eta).   */  std::vector<std::vector<Real> >   d2phidxideta_map;  /**   * Map for the second derivative, d^2(phi)/d(xi)d(zeta).   */  std::vector<std::vector<Real> >   d2phidxidzeta_map;  /**   * Map for the second derivative, d^2(phi)/d(eta)^2.   */  std::vector<std::vector<Real> >   d2phideta2_map;  /**   * Map for the second derivative, d^2(phi)/d(eta)d(zeta).   */  std::vector<std::vector<Real> >   d2phidetadzeta_map;  /**   * Map for the second derivative, d^2(phi)/d(zeta)^2.   */  std::vector<std::vector<Real> >   d2phidzeta2_map;#endif      /**   * Map for the side shape functions, psi.    */  std::vector<std::vector<Real> >   psi_map;  /**   * Map for the derivative of the side functions,   * d(psi)/d(xi).   */  std::vector<std::vector<Real> >   dpsidxi_map;  /**   * Map for the derivative of the side function,   * d(psi)/d(eta).   */  std::vector<std::vector<Real> >   dpsideta_map;  /**   * Map for the second derivatives (in xi) of the   * side shape functions.  Useful for computing   * the curvature at the quadrature points.   */  std::vector<std::vector<Real> > d2psidxi2_map;  /**   * Map for the second (cross) derivatives in xi, eta   * of the side shape functions.  Useful for   * computing the curvature at the quadrature points.   */  std::vector<std::vector<Real> > d2psidxideta_map;  /**   * Map for the second derivatives (in eta) of the   * side shape functions.  Useful for computing the   * curvature at the quadrature points.   */  std::vector<std::vector<Real> > d2psideta2_map;  #ifdef ENABLE_INFINITE_ELEMENTS  //--------------------------------------------------------------  /* protected members for infinite elements, which are accessed    * from the outside through some inline functions   */  /**   * Used for certain @e infinite element families:   * the first derivatives of the phase term in global coordinates,   * over @e all quadrature points.   */  std::vector<RealGradient> dphase;  /**   * Used for certain @e infinite element families:   * the global derivative of the additional radial weight \f$ 1/{r^2} \f$,   * over @e all quadrature points.   */  std::vector<RealGradient> dweight;  /**   * Used for certain @e infinite element families:   * the additional radial weight \f$ 1/{r^2} \f$ in local coordinates,   * over @e all quadrature points.   */  std::vector<Real>  weight;#endif    /**   * Tangent vectors on boundary at quadrature points.   */  std::vector<std::vector<Point> >  tangents;  /**   * Normal vectors on boundary at quadrature points   */  std::vector<Point>                normals;  /**   * The mean curvature (= one half the sum of the principal   * curvatures) on the boundary at the quadrature points.   * The mean curvature is a scalar value.   */  std::vector<Real>                 curvatures;    /**   * Jacobian*Weight values at quadrature points   */  std::vector<Real>                 JxW;  /**   * The finite element type for this object.  Note that this   * should be constant for the object.   */  const FEType fe_type;    /**   * The element type the current data structures are   * set up for.   */  ElemType elem_type;  /**   * The p refinement level the current data structures are   * set up for.   */  unsigned int _p_level;  /**   * A pointer to the quadrature rule employed   */  QBase* qrule;  /**   * A flag indicating if current data structures   * correspond to quadrature rule points   */  bool shapes_on_quadrature;private:  /**   * @returns \p true when the shape functions (for   * this \p FEFamily) depend on the particular   * element, and therefore needs to be re-initialized   * for each new element.  \p false otherwise.   */  virtual bool shapes_need_reinit() const = 0;#ifdef ENABLE_INFINITE_ELEMENTS  /**   * Make all \p InfFE<Dim,T_radial,T_map> classes friends   * so that they can safely used \p FE<Dim-1,T_base> through   * a \p FEBase* as base approximation.   */  template <unsigned int friend_Dim, FEFamily friend_T_radial, InfMapType friend_T_map>  friend class InfFE;#endif};// ------------------------------------------------------------// FEBase class inline membersinlineFEBase::FEBase(const unsigned int d,	       const FEType& fet) :  dim(d),  calculations_started(false),  calculate_phi(false),  calculate_dphi(false),  calculate_d2phi(false),  fe_type(fet),  elem_type(INVALID_ELEM),  _p_level(0),  qrule(NULL),  shapes_on_quadrature(false){}inlineFEBase::~FEBase(){}#endif

⌨️ 快捷键说明

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