Bound Constrained Linear Solver
As I declared in a related question (https:/
Finally, I found the time to work on the subject and I implemented an interface in dolfin for TAO, a library of large scale optimization based on petsc (http://
Taking as example the interface for the PETSc and SLEPc solvers available in dolfin/la, I implemented I C++ class to interface with TAO in order to solve linear bound constrained problem, i.e. problem of the type
A x =b, with xl < = x <= xu.
You may have a look to a preliminary version of the source here:
I enjoyed very much the automatic generation of the python interface within dolfin.
Now I have some example (poisson with constraints or linear elasticity with constraints) running correctly both in cpp and python.
To have an idea of how the interface is working, see the script of the two examples that I tested (do not try to run, they need some hacking of the dolfin installation to have them working):
I wonder if you are interested to include this interface in dolfin.
Note that such solvers may be useful for several applications, for example contact mechanics, but they are generally missing in many finite element applications. Eventually I may provide my programs and help improving them, defining test cases and examples, etc ... For me it would be useful to have this directly in the dolfin distribution instead of manually setting it on my machines each time. I am very far from being an expert of C++ programming, so there may be many things that should be improved.
The compilation and linking of TAO (ver 2.0) with dolfin is quite easy. It works exactly as SLEPc, taking the configure generated by PETSc. I have written a FindTao.cmake, taking inspiration from FindSLEPc.cmake.
You find the file at this link: http://