#ifndef IGL_CROUZEIX_RAVIART_COTMATRIX #define IGL_CROUZEIX_RAVIART_COTMATRIX #include "igl_inline.h" #include #include namespace igl { // CROUZEIX_RAVIART_COTMATRIX Compute the Crouzeix-Raviart cotangent // stiffness matrix. // // See for example "Discrete Quadratic Curvature Energies" [Wardetzky, Bergou, // // Harmon, Zorin, Grinspun 2007] // Inputs: // V #V by dim list of vertex positions // F #F by 3 list of triangle indices // Outputs: // L #E by #E edge-based diagonal cotangent matrix // E #E by 2 list of edges // EMAP #F*3 list of indices mapping allE to E // template void crouzeix_raviart_cotmatrix( const Eigen::MatrixBase & V, const Eigen::MatrixBase & F, Eigen::SparseMatrix & L, Eigen::PlainObjectBase & E, Eigen::PlainObjectBase & EMAP); // wrapper if E and EMAP are already computed (better match!) template void crouzeix_raviart_cotmatrix( const Eigen::MatrixBase & V, const Eigen::MatrixBase & F, const Eigen::MatrixBase & E, const Eigen::MatrixBase & EMAP, Eigen::SparseMatrix & L); } #ifndef IGL_STATIC_LIBRARY # include "crouzeix_raviart_cotmatrix.cpp" #endif #endif