MeshKit  1.0
IASolverInt.hpp
Go to the documentation of this file.
00001 // IASolver.hpp
00002 // Interval Assignment for Meshkit
00003 // Meshkit calls this class function to find the intervals
00004 // this class calls underlying solvers
00005 //
00006 #ifndef MESHKIT_IA_IASOLVERINT_HP
00007 #define MESHKIT_IA_IASOLVERINT_HP
00008 
00009 #include <map>
00010 
00011 #include "meshkit/IASolverToolInt.hpp"
00012 #include "meshkit/IPData.hpp"
00013 
00014 namespace MeshKit {
00015   
00016 class IAData;
00017 class IASolution;
00018 class IAIntWaveNlp;
00019 
00020 class IASolverInt : public IASolverToolInt
00021 {
00022 public:
00024   IASolverInt(const IAData * ia_data_ptr, IASolution *relaxed_solution_ptr, const bool set_silent = true);
00025 
00027   virtual ~IASolverInt();
00028   
00029   bool solve();
00030   // return true if solved; false if not solved (e.g. infeasible)
00031     
00032 private:  
00033   // hide untrusted default methods
00035   IASolverInt(const IASolverInt&);
00036   IASolverInt& operator=(const IASolverInt&);
00038   
00039   // debug
00040   const bool silent;
00041   const bool debugging;  
00042 
00043 
00044   void cleanup();
00045   
00046   // top level
00047   // several different problem formulations and their solutions are possible
00048   enum SolverType {ROUNDING, BEND, COS, PARABOLA};
00049   bool solve_round();
00050   bool solve_wave(const SolverType solver_type);
00051   // workhorse, lower level routines
00052   bool solve_wave_workhorse(IAIntWaveNlp *mynlp);
00053 
00054 };
00055 
00056 } // namespace MeshKit 
00057 
00058 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines