21 #include "libmesh/optimization_solver.h" 22 #include "libmesh/tao_optimization_solver.h" 23 #include "libmesh/nlopt_optimization_solver.h" 24 #include "libmesh/enum_solver_package.h" 36 objective_object(nullptr),
37 gradient_object(nullptr),
38 hessian_object(nullptr),
39 equality_constraints_object(nullptr),
40 equality_constraints_jacobian_object(nullptr),
41 inequality_constraints_object(nullptr),
42 inequality_constraints_jacobian_object(nullptr),
43 lower_and_upper_bounds_object(nullptr),
44 max_objective_function_evaluations(500),
45 objective_function_relative_tolerance(1.e-4),
61 std::unique_ptr<OptimizationSolver<T>>
68 switch (solver_package)
71 #if defined(LIBMESH_HAVE_PETSC_TAO) && !defined(LIBMESH_USE_COMPLEX_NUMBERS) 73 return std::make_unique<TaoOptimizationSolver<T>>(s);
74 #endif // #if defined(LIBMESH_HAVE_PETSC_TAO) && !defined(LIBMESH_USE_COMPLEX_NUMBERS) 76 #if defined(LIBMESH_HAVE_NLOPT) && !defined(LIBMESH_USE_COMPLEX_NUMBERS) 78 return std::make_unique<NloptOptimizationSolver<T>>(s);
79 #endif // #if defined(LIBMESH_HAVE_NLOPT) && !defined(LIBMESH_USE_COMPLEX_NUMBERS) 82 libmesh_error_msg(
"ERROR: Unrecognized solver package: " << solver_package);
virtual ~OptimizationSolver()
Destructor.
static std::unique_ptr< OptimizationSolver< T > > build(sys_type &s, const SolverPackage solver_package=libMesh::default_solver_package())
Builds an OptimizationSolver using the package specified by solver_package.
The libMesh namespace provides an interface to certain functionality in the library.
void libmesh_ignore(const Args &...)
bool _is_initialized
Flag that tells if init() has been called.
This System subclass enables us to assemble an objective function, gradient, Hessian and bounds for o...
An object whose state is distributed along a set of processors.
OptimizationSolver(sys_type &s)
Constructor.
This base class can be inherited from to provide interfaces to optimization solvers from different pa...
SolverPackage
Defines an enum for various linear solver packages.