00001 #ifndef EQUATION_EQUATIONINTERFACE_H 00002 #define EQUATION_EQUATIONINTERFACE_H 00003 00004 00005 #include <fem/FemKernel.hpp> 00006 00007 00008 namespace imaging 00009 { 00064 template <class fem_types> 00065 class EquationInterface 00066 { 00067 00068 public: 00070 std::size_t system_size() const; 00071 00076 float_t stiffness_matrix(std::size_t k, std::size_t l, 00077 std::size_t i, std::size_t j, 00078 std::size_t integrator_node, 00079 const FemKernel<fem_types> & kernel) const; 00080 00085 float_t force_vector(std::size_t k, 00086 std::size_t i, 00087 std::size_t integrator_node, 00088 const FemKernel<fem_types> & kernel) const; 00089 00094 float_t stiffness_matrix_at_boundary(std::size_t k, std::size_t l, 00095 std::size_t i, std::size_t j, 00096 std::size_t integrator_node, 00097 const FemKernel<fem_types> & kernel) const; 00098 00103 float_t force_vector_at_boundary(std::size_t k, 00104 std::size_t i, 00105 std::size_t integrator_node, 00106 const FemKernel<fem_types> & kernel) const; 00107 00114 bool sanity_check_stiffnesss_matrix(const FemKernel<fem_types> & kernel, std::string & error_message) const { return true; } 00115 00122 bool sanity_check_force_vector(const FemKernel<fem_types> & kernel, std::string & error_message) const { return true; } 00123 }; 00124 } 00125 00126 #endif