Commit 280c07a9c182b791d23a44c7c82337e0b2efd775

Authored by Jürgen Knödlseder
1 parent 950dc556

Add opt() method.

pyext/ctulimit.i
@@ -48,6 +48,7 @@ public: @@ -48,6 +48,7 @@ public:
48 void run(void); 48 void run(void);
49 void save(void); 49 void save(void);
50 const GObservations& obs(void) const; 50 const GObservations& obs(void) const;
  51 + const GOptimizer* opt(void) const;
51 const double& diff_ulimit(void) const; 52 const double& diff_ulimit(void) const;
52 const double& flux_ulimit(void) const; 53 const double& flux_ulimit(void) const;
53 const double& eflux_ulimit(void) const; 54 const double& eflux_ulimit(void) const;
src/ctulimit/ctulimit.cpp
@@ -232,9 +232,6 @@ void ctulimit::run(void) @@ -232,9 +232,6 @@ void ctulimit::run(void)
232 // Save original models 232 // Save original models
233 GModels models_orig = m_obs.models(); 233 GModels models_orig = m_obs.models();
234 234
235 - // Allocate a new optimizer  
236 - m_opt = new GOptimizerLM();  
237 -  
238 // Initialise best fit optimizer 235 // Initialise best fit optimizer
239 GOptimizerLM best_opt; 236 GOptimizerLM best_opt;
240 237
@@ -418,7 +415,17 @@ void ctulimit::init_members(void) @@ -418,7 +415,17 @@ void ctulimit::init_members(void)
418 m_flux_ulimit = 0.0; 415 m_flux_ulimit = 0.0;
419 m_diff_ulimit = 0.0; 416 m_diff_ulimit = 0.0;
420 m_eflux_ulimit = 0.0; 417 m_eflux_ulimit = 0.0;
421 - m_opt = NULL; 418 + m_opt = NULL;
  419 +
  420 + // Allocate LM optimizer
  421 + GOptimizerLM* opt = new GOptimizerLM();
  422 +
  423 + // Set optimizer parameters
  424 + opt->max_iter(m_max_iter);
  425 + opt->max_stalls(10);
  426 +
  427 + // Set optimizer pointer
  428 + m_opt = opt;
422 429
423 // Return 430 // Return
424 return; 431 return;
@@ -451,7 +458,7 @@ void ctulimit::copy_members(const ctulimit& app) @@ -451,7 +458,7 @@ void ctulimit::copy_members(const ctulimit& app)
451 m_diff_ulimit = app.m_diff_ulimit; 458 m_diff_ulimit = app.m_diff_ulimit;
452 m_flux_ulimit = app.m_flux_ulimit; 459 m_flux_ulimit = app.m_flux_ulimit;
453 m_eflux_ulimit = app.m_eflux_ulimit; 460 m_eflux_ulimit = app.m_eflux_ulimit;
454 - m_opt = NULL; 461 + m_opt = app.m_opt->clone();
455 462
456 // Extract model parameter 463 // Extract model parameter
457 get_model_parameter(); 464 get_model_parameter();
src/ctulimit/ctulimit.hpp
@@ -68,6 +68,7 @@ public: @@ -68,6 +68,7 @@ public:
68 void run(void); 68 void run(void);
69 void save(void); 69 void save(void);
70 const GObservations& obs(void) const; 70 const GObservations& obs(void) const;
  71 + const GOptimizer* opt(void) const;
71 const double& diff_ulimit(void) const; 72 const double& diff_ulimit(void) const;
72 const double& flux_ulimit(void) const; 73 const double& flux_ulimit(void) const;
73 const double& eflux_ulimit(void) const; 74 const double& eflux_ulimit(void) const;