Package_petsc.hpp
Go to the documentation of this file.
1 // Copyright 2019, University of Maryland and the MANGO development team.
2 //
3 // This file is part of MANGO.
4 //
5 // MANGO is free software: you can redistribute it and/or modify it
6 // under the terms of the GNU Lesser General Public License as
7 // published by the Free Software Foundation, either version 3 of the
8 // License, or (at your option) any later version.
9 //
10 // MANGO is distributed in the hope that it will be useful, but
11 // WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with MANGO. If not, see
17 // <https://www.gnu.org/licenses/>.
18 
19 #ifndef MANGO_PACKAGE_PETSC_H
20 #define MANGO_PACKAGE_PETSC_H
21 
22 #ifdef MANGO_PETSC_AVAILABLE
23 #include <petsctao.h>
24 #endif
25 
26 namespace mango {
27 
28  class Solver;
29  class Least_squares_solver;
30 
31  class Package_petsc : public Package {
32  private:
33 #ifdef MANGO_PETSC_AVAILABLE
34  static PetscErrorCode mango_petsc_objective_function(Tao, Vec, PetscReal*, void*);
35  static PetscErrorCode mango_petsc_residual_function(Tao, Vec, Vec, void*);
36  static PetscErrorCode mango_petsc_Jacobian_function(Tao, Vec, Mat, Mat, void*);
37 #endif
38 
39  public:
40  void optimize(Solver*);
42  };
43 }
44 
45 #endif
mango::Package_petsc
Definition: Package_petsc.hpp:31
mango::Package
Definition: Package.hpp:29
mango::Least_squares_solver
Definition: Least_squares_solver.hpp:28
mango::Package_petsc::optimize_least_squares
void optimize_least_squares(Least_squares_solver *)
Definition: optimize_least_squares_petsc.cpp:33
mango::Package_petsc::optimize
void optimize(Solver *)
Definition: optimize_petsc.cpp:30
mango
This C++ namespace contains everything related to MANGO.
Definition: Imfil.hpp:7
mango::Solver
Definition: Solver.hpp:31