Saturday 2 February 2008

Force Inverter

Well, I didn't blog for quite some time due to some reasons:

  • lack of time

  • I don't think one reads actually what I write :(

  • I wanted to show pictures next :)


I did the force inverter, which is a optimization for selected
solution variables (e.g. max where l=(0 0 0 0 1 0 0)^T
(I call the objective "output") already in Denmark the last
summer in Matlab and shortly later in C++ in our own academic
FEM solver.

This requires the solution of the adjoint pde, technically
one only solves for another right hand side (l).

To optimize for the solution variable is a really interesting
objective, but the
optimization becomes quite challenging (in mechanics):

  • IPOPT can't do it (at least the simple example I show)

  • With SCPIP I had quite some problems but finally I found out
    with the help of SCPIP's author, Christian Zillober, that
    it was my fault. I compiled SCPIP with -O2 (g77) what was fine for
    compliance but led to wrong results here.

  • As mentioned in the book by Bendsoe and Sigmund, one can adopt the optimality condition
    method. It is not that easy but works ok in an ugly way
    (implementation and performance) but doing it nicer cost me
    already too much time w/o good results. In the end I much prefer
    SCPIP


So finally: Here is the force inverter, the standard example we
did in Denmark within a very nice lecture by Ole Sigmund: We press
on the left and want the point on the right to move against the
input force direction. There is a small spring added the the output
node for regularization.




And the movie