SimpleEquationInterface.hpp

00001 #ifndef EQUATION_SIMPLEEQUATIONINTERFACE_H
00002 #define EQUATION_SIMPLEEQUATIONINTERFACE_H
00003 
00004 
00005 #include <fem/FemKernel.hpp>
00006 
00007 
00008 namespace imaging
00009 {
00105   template<class fem_types_t>
00106   class SimpleEquationInterface
00107   {
00108   public:
00110     typedef fem_types_t fem_types;
00111   
00113     typedef ublas::fixed_matrix<float_t, fem_types::data_dimension, fem_types::data_dimension> matrix_coefficient_t;
00114 
00116     enum boundary_data_types {
00117       NO_BOUNDARY_DATA ,
00118       IMPLICIT_NEUMANN_DATA ,
00119       NEUMANN_DATA ,
00120       DIRICHLET_DATA ,
00121       MIXED_DATA  
00122     };
00123 
00125     static const bool a_active = true;
00126     
00128     static const bool b_active = true;
00129     
00131     static const bool c_active = true;
00132     
00134     static const bool f_active = true;
00135     
00137     static const bool g_active = true;
00138     
00140     static const size_t boundary_data_type;  
00141     
00146     void stiffness_matrix(std::size_t integrator_node,
00147                           const FemKernel<fem_types> & kernel,
00148                           matrix_coefficient_t & A,
00149                           ublas::fixed_vector<float_t, fem_types::data_dimension> & a,
00150                           ublas::fixed_vector<float_t, fem_types::data_dimension> & b,
00151                           float_t & c) const;
00152       
00153     
00158     void force_vector(std::size_t integrator_node,
00159                       const FemKernel<fem_types> & kernel,
00160                       float_t & f,
00161                       ublas::fixed_vector<float_t, fem_types::data_dimension> & g) const; 
00162     
00167     void stiffness_matrix_at_boundary(std::size_t integrator_node,
00168                                       const FemKernel<fem_types> & kernel,
00169                                       float_t & h) const {}
00170     
00171     
00176     void force_vector_at_boundary(std::size_t integrator_node,
00177                                   const FemKernel<fem_types> & kernel,
00178                                   float_t & v) const {}
00179         
00186     bool sanity_check_stiffness_matrix(const FemKernel<fem_types> & kernel, std::string & error_message) const { return true; }  
00187         
00194     bool sanity_check_force_vector(const FemKernel<fem_types> & kernel, std::string & error_message) const { return true; }      
00195   };
00196 
00197 }
00198 
00199 #endif

Generated on Tue Feb 10 10:01:30 2009 for imaging2 by  doxygen 1.5.5