diff options
Diffstat (limited to 'intern/itasc/WDLSSolver.hpp')
-rw-r--r-- | intern/itasc/WDLSSolver.hpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/intern/itasc/WDLSSolver.hpp b/intern/itasc/WDLSSolver.hpp new file mode 100644 index 00000000000..4418e73675c --- /dev/null +++ b/intern/itasc/WDLSSolver.hpp @@ -0,0 +1,47 @@ +/* $Id: WDLSSolver.hpp 20622 2009-06-04 12:47:59Z ben2610 $ + * WDLSSolver.hpp + * + * Created on: Jan 8, 2009 + * Author: rubensmits + */ + +#ifndef WDLSSOLVER_HPP_ +#define WDLSSOLVER_HPP_ + +#include "Solver.hpp" + +namespace iTaSC { + +class WDLSSolver: public iTaSC::Solver { +private: + e_matrix m_AWq,m_WyAWq,m_U,m_V,m_WqV; + e_vector m_S,m_temp,m_Wy_ydot; + double m_lambda; + double m_epsilon; + double m_qmax; + int m_ns; +public: + WDLSSolver(); + virtual ~WDLSSolver(); + + virtual bool init(unsigned int nq, unsigned int nc, const std::vector<bool>& gc); + virtual bool solve(const e_matrix& A, const e_vector& Wy, const e_vector& ydot, const e_matrix& Wq, e_vector& qdot, e_scalar& nlcoef); + virtual void setParam(SolverParam param, double value) + { + switch (param) { + case DLS_QMAX: + m_qmax = value; + break; + case DLS_LAMBDA_MAX: + m_lambda = value; + break; + case DLS_EPSILON: + m_epsilon = value; + break; + } + } +}; + +} + +#endif /* WDLSSOLVER_HPP_ */ |