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