C++SCPIP Code
Status: Beta
Brought to you by:
road-movie
File | Date | Author | Commit |
---|---|---|---|
BasicEnum.hh | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
BasicException.hh | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
BasicStdVector.hh | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
Readme.txt | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
SCPIPBase.cc | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
SCPIPBase.hh | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
SCPIP_HS071.cc | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
SCPIP_HS071.hh | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
scpip30.hh | 2007-08-10 | road-movie | [r1] Initial version for SIMP compliance minimization |
-------- C++SCPIP -------- 1. Introduction --------------- C++SCPIP is provides a C++ interface that mimiks IPOPT for the FORTRAN optimizer SCPIP by Ch. Zillober. SCPIP itself is not provided. C++SCPIP is open source in the public domain. 2. References ------------- SCPIP implements SQP and MMA. You have to ask Ch. Zillober directly for the code/library. Ch. Zillober: Software manual for SCPIP 3.0. Technical Report, Informatik, Universität Bayreuth, 2004. http://www.mathematik.uni-wuerzburg.de/~zillober/pubs/manual30.pdf IPOPT is a open source optimizer implemented in C++ with a nice and well documented interface. A. Wächter and L. T. Biegler, On the Implementation of a Primal-Dual Interior Point Filter Line Search Algorithm for Large-Scale Nonlinear Programming, Mathematical Programming 106(1), pp. 25-57, 2006 C++SCPIP mimiks not only the interface of IPOPT but also comes with the only slightly modified HS071 examples taken from IPOPT. C++SCPIP itself is written by Fabian Wein, Uni-Erlangen, Germany. The classes BaseEnum, BaseStdVector and BaseException are reduced version from their counterparts of CFS++ a FEM simulation software written in C++ developed at the chair for Sensorics, Uni-Erlangen, Germay. http://www.lse.uni-erlangen.de The author (Fabian Wein) itself can be reached via fabian.wein@lse.e-technik.uni-erlangen.de http://piezo-optimization.blogspot.com/ http://www.lse.e-technik.uni-erlangen.de/_rubric/index.php?rubric=Fabian+Wein 3. Status --------- Not all features of SCPIP can be controlled from outside - but they should be rather simple to be integrated. The current version works fine for topology optimization using the SIMP method using the standard compliance as objective. Added to SCPIP itself are: * A scaling of the objective and gradient and constraints. * Inequality constraints can have abritrary bounds. 4. Requirements --------------- C++SCPIP war written and testet on Linux using gcc 4.1.0 and gcc 4.2.1. You also need "compat-g77" wich is a g77 compiler as SCPIP cannot be compiled with gfortran from the newer gnu compiler suite. Also one needs a BLAS library which is standard on Linux. If it comes to speed and you have a AMD system you can also use the AMD Core Math Library (ACML) which is even parallel with gcc 4.2. 5. Usage -------- It is assumed that you have a library libscpip.a or libscpip.so holding SCPIP 3.0/3.1. This library can be generated as follows: g77 -O2 -c scpblas.f g77 -O2 -c scpdummy.f g77 -O2 -c Scpip30.f g77 -O2 -c Sparsecz.f ar rcs libscpip.a scpblas.o scpdummy.o Scpip30.o Sparsecz.o Below we compile SCPIPBase.cc, the actual C++SCPIP and SCPIP_HS071 an example usage. When linking note the order of the external libraries. For simplicity we do not assume libscpip.a in LD_LIBRARY_PATH. If you have you can ommit "-L./" g++ -O2 -c SCPIPBase.cc g++ -O2 -c SCPIP_HS071.cc g++ -o scpip SCPIPBase.o SCPIP_HS071.o -L./ -lscpip -lg2c -lgfortran -lm 6. Feedback ----------- If there are any issued feel free to contact me at fabian.wein@lse.e-technik.uni-erlangen.de. If you wish to contribute you are most welcome :) Regards, Fabian Wein, August 2007