Go to the documentation of this file.00001 #ifndef OPENTISSUE_DYNAMICS_MBD_MBD_SUB_CONSTRAINT_INTERFACE_H
00002 #define OPENTISSUE_DYNAMICS_MBD_MBD_SUB_CONSTRAINT_INTERFACE_H
00003
00004
00005
00006
00007
00008
00009
00010 #include <OpenTissue/configuration.h>
00011
00012 #include <OpenTissue/dynamics/mbd/interfaces/mbd_core_constraint_interface.h>
00013
00014 namespace OpenTissue
00015 {
00016 namespace mbd
00017 {
00027 template< typename mbd_types >
00028 class SubConstraintInterface : public CoreConstraintInterface<mbd_types>
00029 {
00030 public:
00031
00032 typedef typename mbd_types::math_policy::size_type size_type;
00033 typedef typename mbd_types::math_policy::real_type real_type;
00034 typedef typename mbd_types::math_policy::vector_range vector_range;
00035 typedef typename mbd_types::math_policy::idx_vector_range idx_vector_range;
00036 typedef typename mbd_types::math_policy::matrix_range matrix_range;
00037
00038 public:
00039
00040 SubConstraintInterface(){}
00041 virtual ~SubConstraintInterface(){}
00042
00043 public:
00044
00045 virtual void get_linear_jacobian_A(matrix_range & J,size_type const & offset) const = 0;
00046 virtual void get_linear_jacobian_B(matrix_range & J,size_type const & offset) const = 0;
00047 virtual void get_angular_jacobian_A(matrix_range & J,size_type const & offset) const = 0;
00048 virtual void get_angular_jacobian_B(matrix_range & J,size_type const & offset) const = 0;
00049 virtual void get_stabilization_term(vector_range & b_error,size_type const & offset) const = 0;
00050 virtual void get_low_limits(vector_range & lo,size_type const & offset) const = 0;
00051 virtual void get_high_limits(vector_range & hi,size_type const & offset) const = 0;
00052 virtual void get_dependency_indices(idx_vector_range & dep,size_type const & offset) const = 0;
00053 virtual void get_dependency_factors(vector_range & factors,size_type const & offset) const = 0;
00054 virtual void set_regularization(vector_range const & gamma,size_type const & offset) = 0;
00055 virtual void get_regularization(vector_range & gamma,size_type const & offset) const = 0;
00056 virtual void set_solution(vector_range const & solution,size_type const & offset) = 0;
00057 virtual void get_solution(vector_range & solution,size_type const & offset) const = 0;
00058
00059 };
00060
00061 }
00062 }
00063
00064 #endif