BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
mumufit::Kernel Class Reference

Description

A main class to run fitting.

Definition at line 34 of file Kernel.h.

Collaboration diagram for mumufit::Kernel:
[legend]

Public Member Functions

 Kernel ()
 
 ~Kernel ()
 
MinimizerResult minimize (fcn_residual_t fcn, const Parameters &parameters) const
 
MinimizerResult minimize (fcn_scalar_t fcn, const Parameters &parameters) const
 
void setMinimizer (const std::string &minimizerName, const std::string &algorithmName="", const std::string &options="")
 
void setMinimizer (IMinimizer *minimizer)
 

Private Member Functions

void setParameters (const Parameters &parameters)
 

Private Attributes

std::unique_ptr< IMinimizerm_minimizer
 

Constructor & Destructor Documentation

◆ Kernel()

Kernel::Kernel ( )

Definition at line 29 of file Kernel.cpp.

30 {
31  setMinimizer(default_minimizer, default_algorithm);
32 }
void setMinimizer(const std::string &minimizerName, const std::string &algorithmName="", const std::string &options="")
Definition: Kernel.cpp:36

References setMinimizer().

Here is the call graph for this function:

◆ ~Kernel()

Kernel::~Kernel ( )
default

Member Function Documentation

◆ minimize() [1/2]

MinimizerResult Kernel::minimize ( fcn_residual_t  fcn,
const Parameters parameters 
) const

Definition at line 62 of file Kernel.cpp.

63 {
64  WallclockTimer timer;
65  timer.start();
66  auto result = m_minimizer->minimize_residual(fcn, parameters);
67  timer.stop();
68 
69  result.setDuration(timer.runTime());
70  return result;
71 }
A timer for measuring real (wall-clock) time spent between 'start' and 'stop' commands.
double runTime() const
Returns run time in sec.
std::unique_ptr< IMinimizer > m_minimizer
Definition: Kernel.h:50

References m_minimizer, WallclockTimer::runTime(), WallclockTimer::start(), and WallclockTimer::stop().

Here is the call graph for this function:

◆ minimize() [2/2]

MinimizerResult Kernel::minimize ( fcn_scalar_t  fcn,
const Parameters parameters 
) const

Definition at line 47 of file Kernel.cpp.

48 {
49  WallclockTimer timer;
50  timer.start();
51  if (m_minimizer->requiresResiduals())
52  throw std::runtime_error(
53  "Error in Kernel::minimize: the chosen minimizer requires residuals computation. "
54  "Please use FitObjective::evaluate_residuals with this minimizer.");
55  auto result = m_minimizer->minimize_scalar(fcn, parameters);
56  timer.stop();
57 
58  result.setDuration(timer.runTime());
59  return result;
60 }

References m_minimizer, WallclockTimer::runTime(), WallclockTimer::start(), and WallclockTimer::stop().

Here is the call graph for this function:

◆ setMinimizer() [1/2]

void Kernel::setMinimizer ( const std::string &  minimizerName,
const std::string &  algorithmName = "",
const std::string &  options = "" 
)

Definition at line 36 of file Kernel.cpp.

38 {
39  m_minimizer.reset(MinimizerFactory::createMinimizer(minimizerName, algorithmName, options));
40 }
static IMinimizer * createMinimizer(const std::string &minimizerName, const std::string &algorithmType="", const std::string &optionString="")

References MinimizerFactory::createMinimizer(), and m_minimizer.

Referenced by Kernel().

Here is the call graph for this function:

◆ setMinimizer() [2/2]

void Kernel::setMinimizer ( IMinimizer minimizer)

Definition at line 42 of file Kernel.cpp.

43 {
44  m_minimizer.reset(minimizer);
45 }

References m_minimizer.

◆ setParameters()

void mumufit::Kernel::setParameters ( const Parameters parameters)
private

Member Data Documentation

◆ m_minimizer

std::unique_ptr<IMinimizer> mumufit::Kernel::m_minimizer
private

Definition at line 50 of file Kernel.h.

Referenced by minimize(), and setMinimizer().


The documentation for this class was generated from the following files: