commit Ipopt for openSUSE:Factory
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package Ipopt for openSUSE:Factory checked in at 2021-07-31 18:51:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/Ipopt (Old) and /work/SRC/openSUSE:Factory/.Ipopt.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "Ipopt" Sat Jul 31 18:51:23 2021 rev:8 rq:909506 version:3.14.2 Changes: -------- --- /work/SRC/openSUSE:Factory/Ipopt/Ipopt.changes 2021-07-05 22:23:09.113642128 +0200 +++ /work/SRC/openSUSE:Factory/.Ipopt.new.1899/Ipopt.changes 2021-07-31 18:52:27.482453874 +0200 @@ -1,0 +2,13 @@ +Wed Jul 28 10:29:43 UTC 2021 - Atri Bhattacharya <badshah400@gmail.com> + +- Update to version 3.14.2: + * Added OptionsList::UnsetValue() to remove an option setting. + * Added missing translation of some Ipopt status codes into AMPL + solve result codes. + * If using the MPI-parallel version of MUMPS: Moved calls to + MPI_Init()/MPI_Finalize() in MUMPS interface into global + constructor/destructor of Ipopt library (if building with + GCC/clang). Use configure flag --disable-mpiinit to disable. + [gh#coin-or/Ipopt#500]. + +------------------------------------------------------------------- Old: ---- Ipopt-3.14.1.tar.gz New: ---- Ipopt-3.14.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ Ipopt.spec ++++++ --- /var/tmp/diff_new_pack.8V731k/_old 2021-07-31 18:52:27.834453453 +0200 +++ /var/tmp/diff_new_pack.8V731k/_new 2021-07-31 18:52:27.838453448 +0200 @@ -18,7 +18,7 @@ %define shlib libipopt0 Name: Ipopt -Version: 3.14.1 +Version: 3.14.2 Release: 0 Summary: A software package for large-scale nonlinear optimization methods License: EPL-2.0 ++++++ Ipopt-3.14.1.tar.gz -> Ipopt-3.14.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/.travis.yml new/Ipopt-releases-3.14.2/.travis.yml --- old/Ipopt-releases-3.14.1/.travis.yml 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/.travis.yml 2021-07-21 09:31:43.000000000 +0200 @@ -101,8 +101,8 @@ brew update; brew install bash gcc metis hwloc; $SINGLEPRECISION && brew install lapack; - if [[ "$OSX" == 10.14 ]] ; then export CC=gcc-9 ; export CXX=g++-9 ; - elif [[ "$OSX" == 10.15 ]] ; then export CC=gcc-10 ; export CXX=g++-10 ; + if [[ "$OSX" == 10.14 ]] ; then export CC=gcc-11 ; export CXX=g++-11 ; + elif [[ "$OSX" == 10.15 ]] ; then export CC=gcc-11 ; export CXX=g++-11 ; elif [[ "$OSX" == 11 ]] ; then export CC=gcc-11 ; export CXX=g++-11 ; fi ; $CC --version; $CXX --version; gfortran --version; fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/ChangeLog.md new/Ipopt-releases-3.14.2/ChangeLog.md --- old/Ipopt-releases-3.14.1/ChangeLog.md 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/ChangeLog.md 2021-07-21 09:31:43.000000000 +0200 @@ -7,6 +7,15 @@ ## 3.14 +### 3.14.2 (2021-07-21) + +- Added `OptionsList::UnsetValue()` to remove an option setting. +- Added missing translation of some Ipopt status codes into AMPL solve result codes. +- If using the MPI-parallel version of MUMPS: Moved calls to + `MPI_Init()`/`MPI_Finalize()` in MUMPS interface into global constructor/destructor + of Ipopt library (if building with GCC/clang). Use configure flag + `--disable-mpiinit` to disable. [#500] + ### 3.14.1 (2021-06-25) - Fixed invalidation of cached Hessians when reoptimizing with same structure. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/README.md new/Ipopt-releases-3.14.2/README.md --- old/Ipopt-releases-3.14.1/README.md 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/README.md 2021-07-21 09:31:43.000000000 +0200 @@ -47,9 +47,9 @@ In order to compile Ipopt, certain third party code is required (such as some linear algebra routines). Those are available under different conditions/licenses. -If you want to learn more about Ipopt, you can find references in the [bibliography of the documentation](https://coin-or.github.io/Ipopt/citelist.html) and this ["Papers about Ipopt" page](https://github.com/coin-or/Ipopt/wiki/IpoptPapers). +If you want to learn more about Ipopt, you can find references in the [bibliography of the documentation](https://coin-or.github.io/Ipopt/citelist.html). -For information on projects that use Ipopt, refer to the [Success Stories page](https://github.com/coin-or/Ipopt/wiki/SuccessStories). +For information on projects or papers that use Ipopt, refer to the [Ipopt usage stories and papers](https://github.com/coin-or/Ipopt/discussions/497) discussion. Getting Started @@ -124,7 +124,6 @@ Please include as much information as possible, and if possible some (ideally simple) example code so that we can reproduce the error. * **[Discussions](https://github.com/coin-or/Ipopt/discussions)**: ask questions, share ideas, engage with the Ipopt community * **[Mailing list archive](http://list.coin-or.org/pipermail/ipopt/)** (2002-2020): predecessor of Discussions - * **[Ipopt Wiki](https://github.com/coin-or/Ipopt/wiki)** with hints and tricks * External resources: * [short Ipopt tutorial](http://drops.dagstuhl.de/volltexte/2009/2089/pdf/09061.WaechterAndreas.Paper...) * [build Ipopt on Windows step-by-step](https://github.com/Ishanki/IPOPT-Installation-on-Windows-10) @@ -133,7 +132,7 @@ -------------- We provide this program in the hope that it may be useful to others, and we would very much like to hear about your experience with it. -If you found it helpful and are using it within our software, we encourage you to add your feedback to the [Success Stories page](https://github.com/coin-or/Ipopt/wiki/SuccessStories). +If you found it helpful and are using it within our software, we encourage you to add your feedback to the [Ipopt usage stories and papers](https://github.com/coin-or/Ipopt/discussions/497) discussion. Since a lot of time and effort has gone into Ipopt's development, **please cite the following publication if you are using Ipopt for your own research**: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/configure new/Ipopt-releases-3.14.2/configure --- old/Ipopt-releases-3.14.1/configure 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/configure 2021-07-21 09:31:43.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Ipopt 3.14.1. +# Generated by GNU Autoconf 2.71 for Ipopt 3.14.2. # # Report bugs to <https://github.com/coin-or/Ipopt/issues/new>. # @@ -627,8 +627,8 @@ # Identity of this package. PACKAGE_NAME='Ipopt' PACKAGE_TARNAME='ipopt' -PACKAGE_VERSION='3.14.1' -PACKAGE_STRING='Ipopt 3.14.1' +PACKAGE_VERSION='3.14.2' +PACKAGE_STRING='Ipopt 3.14.2' PACKAGE_BUGREPORT='https://github.com/coin-or/Ipopt/issues/new' PACKAGE_URL='https://github.com/coin-or/Ipopt' @@ -911,6 +911,7 @@ with_mumps with_mumps_lflags with_mumps_cflags +enable_mpiinit with_hsl with_hsl_lflags with_hsl_cflags @@ -1494,7 +1495,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Ipopt 3.14.1 to adapt to many kinds of systems. +\`configure' configures Ipopt 3.14.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1565,7 +1566,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Ipopt 3.14.1:";; + short | recursive ) echo "Configuration of Ipopt 3.14.2:";; esac cat <<\_ACEOF @@ -1594,6 +1595,9 @@ --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) + --disable-mpiinit disable that (un)loading the Ipopt library + initalizes (finalizes) MPI if the MPI version of + MUMPS is linked --disable-pardisomkl disable check for MKL version of Pardiso in Lapack --enable-inexact-solver enable inexact linear solver version EXPERIMENTAL! (default: no) @@ -1760,7 +1764,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Ipopt configure 3.14.1 +Ipopt configure 3.14.2 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2645,7 +2649,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Ipopt $as_me 3.14.1, which was +It was created by Ipopt $as_me 3.14.2, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4266,7 +4270,7 @@ -printf "%s\n" "#define IPOPT_VERSION \"3.14.1\"" >>confdefs.h +printf "%s\n" "#define IPOPT_VERSION \"3.14.2\"" >>confdefs.h printf "%s\n" "#define IPOPT_VERSION_MAJOR 3" >>confdefs.h @@ -4275,7 +4279,7 @@ printf "%s\n" "#define IPOPT_VERSION_MINOR 14" >>confdefs.h -printf "%s\n" "#define IPOPT_VERSION_RELEASE 1" >>confdefs.h +printf "%s\n" "#define IPOPT_VERSION_RELEASE 2" >>confdefs.h @@ -4386,7 +4390,7 @@ # Define the identity of the package. PACKAGE='ipopt' - VERSION='3.14.1' + VERSION='3.14.2' # Some tools Automake needs. @@ -22135,9 +22139,9 @@ - LT_LDFLAGS="$LT_LDFLAGS -version-number 3:14:1" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: libtool version info: -version-number 3:14:1" >&5 -printf "%s\n" "$as_me: libtool version info: -version-number 3:14:1" >&6;} + LT_LDFLAGS="$LT_LDFLAGS -version-number 3:14:2" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: libtool version info: -version-number 3:14:2" >&5 +printf "%s\n" "$as_me: libtool version info: -version-number 3:14:2" >&6;} LT_LDFLAGS="$LT_LDFLAGS -no-undefined" @@ -24168,6 +24172,25 @@ fi +# Check whether --enable-mpiinit was given. +if test ${enable_mpiinit+y} +then : + enableval=$enable_mpiinit; case "$enableval" in + no | yes) ;; + *) + as_fn_error $? "invalid argument for --enable-mpiinit: $enableval" "$LINENO" 5;; + esac + mpiinit=$enableval +else $as_nop + mpiinit=yes +fi + +if test $mpiinit = yes ; then + +printf "%s\n" "#define IPOPT_MPIINIT 1" >>confdefs.h + +fi + ####### # HSL # ####### @@ -25963,7 +25986,7 @@ JAVA_TEST=Test.java CLASS_TEST=Test.class cat << \EOF > $JAVA_TEST -/* #line 25966 "configure" */ +/* #line 25989 "configure" */ public class Test { } EOF @@ -26489,7 +26512,7 @@ JAVA_TEST=Test.java CLASS_TEST=Test.class cat << \EOF > $JAVA_TEST -/* #line 26492 "configure" */ +/* #line 26515 "configure" */ public class Test { } EOF @@ -26524,7 +26547,7 @@ CLASS_TEST=Test.class TEST=Test cat << \EOF > $JAVA_TEST -/* [#]line 26527 "configure" */ +/* [#]line 26550 "configure" */ public class Test { public static void main (String args[]) { System.exit (0); @@ -27975,7 +27998,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Ipopt $as_me 3.14.1, which was +This file was extended by Ipopt $as_me 3.14.2, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28048,7 +28071,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Ipopt config.status 3.14.1 +Ipopt config.status 3.14.2 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/configure.ac new/Ipopt-releases-3.14.2/configure.ac --- old/Ipopt-releases-3.14.1/configure.ac 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/configure.ac 2021-07-21 09:31:43.000000000 +0200 @@ -8,7 +8,7 @@ # Names and other basic things # ############################################################################# -AC_INIT([Ipopt],[3.14.1],[https://github.com/coin-or/Ipopt/issues/new],[],[https://github.com/coin-or/Ipopt]) +AC_INIT([Ipopt],[3.14.2],[https://github.com/coin-or/Ipopt/issues/new],[],[https://github.com/coin-or/Ipopt]) AC_COPYRIGHT([ Copyright 2004, 2011 International Business Machines and others. @@ -128,6 +128,19 @@ # we assume that MPI_Finalized is present if MPI_Initialized is present AC_CHECK_FUNCS([MPI_Initialized]) +AC_ARG_ENABLE([mpiinit], + [AS_HELP_STRING([--disable-mpiinit],[disable that (un)loading the Ipopt library initalizes (finalizes) MPI if the MPI version of MUMPS is linked])], + [case "$enableval" in + no | yes) ;; + *) + AC_MSG_ERROR([invalid argument for --enable-mpiinit: $enableval]);; + esac + mpiinit=$enableval], + [mpiinit=yes]) +if test $mpiinit = yes ; then + AC_DEFINE(IPOPT_MPIINIT,1,[Define to 1 if MPI should be initialized (finalized) when Ipopt library is (un)loaded.]) +fi + ####### # HSL # ####### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/doc/install.dox new/Ipopt-releases-3.14.2/doc/install.dox --- old/Ipopt-releases-3.14.1/doc/install.dox 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/doc/install.dox 2021-07-21 09:31:43.000000000 +0200 @@ -302,10 +302,15 @@ in [METIS](http://glaros.dtc.umn.edu/gkhome/metis/metis/overview) are available on the system. -\note MUMPS uses internally a fake implementation of MPI. If you are -using %Ipopt within an MPI program together with MUMPS, the -code will not run. You will have to modify the MUMPS sources so that the -MPI symbols inside the MUMPS code are renamed. +\note The non-MPI version of MUMPS uses internally a fake implementation +of MPI, which can prevent using %Ipopt together with MUMPS within an MPI program. +You will have to either modify the MUMPS sources so that the MPI symbols +inside the MUMPS code are renamed or use a MPI-parallel version of MUMPS. +In the latter case and if a GCC compatible compiler is used, the %Ipopt +library will call `MPI_Init()` and `MPI_Finalize()` when loaded and unloaded, +respectively. To prevent this, use the configure flag `--disable-mpiinit`. +Note that the %Ipopt executable, tests, and examples will not work in this +case (if using MUMPS as linear solver). \note Branch `stable/2.1` of project ThirdParty-Mumps can be used to build a library of MUMPS 4 that is usable with %Ipopt. Initial experiments on diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/doc/main.dox new/Ipopt-releases-3.14.2/doc/main.dox --- old/Ipopt-releases-3.14.1/doc/main.dox 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/doc/main.dox 2021-07-21 09:31:43.000000000 +0200 @@ -79,8 +79,8 @@ Writing high-quality numerical software takes a lot of time and effort, and does usually not translate into a large number of publications, therefore we believe this request is only fair :). -We also have space in the [%Ipopt wiki](https://github.com/coin-or/Ipopt/wiki) -where we list publications, +We also have space in the [%Ipopt usage stories and papers](https://github.com/coin-or/Ipopt/discussions/497) +discussion where we list publications, projects, etc., in which %Ipopt has been used. We would be very happy to hear about your experiences. @@ -317,8 +317,7 @@ \subsection MOREINFO More Information and Contributions -An issue tracking, discussion system, and a wiki can be found at the %Ipopt -homepage, +An issue tracking and discussion system can be found at the %Ipopt homepage, https://github.com/coin-or/Ipopt. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.cpp new/Ipopt-releases-3.14.2/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.cpp --- old/Ipopt-releases-3.14.1/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.cpp 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.cpp 2021-07-21 09:31:43.000000000 +0200 @@ -14,9 +14,6 @@ // - Since Mumps 5.1.0, mumps_->nz (MUMPS_INT) is deprecated and mumps_->nnz (MUMPS_INT8) should be used. // For now (Mumps 5.4.0), mumps_->nz still works and has no disadvantage for us. -// The following line is a fix for otherwise twice-defined global variable -// (This would have to be taken out for a parallel MUMPS version!) -#define MPI_COMM_WORLD IPOPT_MPI_COMM_WORLD #ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wunused-variable" #endif @@ -55,23 +52,13 @@ static std::mutex mumps_call_mutex; #endif -namespace Ipopt -{ -#if IPOPT_VERBOSITY > 0 -static const Index dbg_verbosity = 0; -#endif - #define USE_COMM_WORLD -987654 -int MumpsSolverInterface::instancecount_mpi = 0; - -MumpsSolverInterface::MumpsSolverInterface() +// initialize MPI when library is loaded; finalize MPI when library is unloaded +#if defined(__GNUC__) && defined(IPOPT_MPIINIT) && !defined(MUMPS_MPI_H) && defined(HAVE_MPI_INITIALIZED) +__attribute__((constructor)) +static void MPIinit(void) { - DBG_START_METH("MumpsSolverInterface::MumpsSolverInterface()", - dbg_verbosity); - -#ifndef MUMPS_MPI_H -#if defined(HAVE_MPI_INITIALIZED) int mpi_initialized; MPI_Initialized(&mpi_initialized); if( !mpi_initialized ) @@ -79,18 +66,31 @@ int argc = 1; char** argv = NULL; MPI_Init(&argc, &argv); - assert(instancecount_mpi == 0); - instancecount_mpi = 1; - } - else if( instancecount_mpi > 0 ) - { - ++instancecount_mpi; } +} + +__attribute__((destructor)) +static void MPIfini(void) +{ + int mpi_finalized; + MPI_Finalized(&mpi_finalized); + if(!mpi_finalized) + MPI_Finalize(); +} #endif - int myid; - MPI_Comm_rank(MPI_COMM_WORLD, &myid); + + +namespace Ipopt +{ +#if IPOPT_VERBOSITY > 0 +static const Index dbg_verbosity = 0; #endif +MumpsSolverInterface::MumpsSolverInterface() +{ + DBG_START_METH("MumpsSolverInterface::MumpsSolverInterface()", + dbg_verbosity); + //initialize mumps MUMPS_STRUC_C* mumps_ = static_cast<MUMPS_STRUC_C*>(calloc(1, sizeof(MUMPS_STRUC_C))); mumps_->job = -1; //initialize mumps @@ -121,18 +121,6 @@ MUMPS_STRUC_C* mumps_ = static_cast<MUMPS_STRUC_C*>(mumps_ptr_); mumps_->job = -2; //terminate mumps mumps_c(mumps_); -#ifndef MUMPS_MPI_H -#ifdef HAVE_MPI_INITIALIZED - if( instancecount_mpi == 1 ) - { - int mpi_finalized; - MPI_Finalized(&mpi_finalized); - assert(!mpi_finalized); - MPI_Finalize(); - } - --instancecount_mpi; -#endif -#endif delete[] mumps_->a; free(mumps_); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.hpp new/Ipopt-releases-3.14.2/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.hpp --- old/Ipopt-releases-3.14.1/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.hpp 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Algorithm/LinearSolvers/IpMumpsSolverInterface.hpp 2021-07-21 09:31:43.000000000 +0200 @@ -140,11 +140,6 @@ * again. */ bool refactorize_; - /** Counter on number of alive Mumps interface objects, if we have called MPI_Initialize. - * - * When the last object is destroyed, we will call MPI_Finalize. - */ - static int instancecount_mpi; ///@} /** @name Solver specific data/options */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Apps/AmplSolver/AmplTNLP.cpp new/Ipopt-releases-3.14.2/src/Apps/AmplSolver/AmplTNLP.cpp --- old/Ipopt-releases-3.14.1/src/Apps/AmplSolver/AmplTNLP.cpp 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Apps/AmplSolver/AmplTNLP.cpp 2021-07-21 09:31:43.000000000 +0200 @@ -827,60 +827,98 @@ obj_sol_ = obj_value; std::string message = " \nIpopt " IPOPT_VERSION ": "; - if( status == SUCCESS ) + switch( status ) { - message += "Optimal Solution Found"; - solve_result_num = 0; - } - else if( status == MAXITER_EXCEEDED ) - { - message += "Maximum Number of Iterations Exceeded."; - solve_result_num = 400; - } - else if( status == CPUTIME_EXCEEDED ) - { - message += "Maximum CPU Time Exceeded."; - solve_result_num = 401; - } - else if( status == WALLTIME_EXCEEDED ) - { - message += "Maximum Wallclock Time Exceeded."; - solve_result_num = 402; - } - else if( status == STOP_AT_TINY_STEP ) - { - message += "Search Direction becomes Too Small."; - solve_result_num = 500; - } - else if( status == STOP_AT_ACCEPTABLE_POINT ) - { - message += "Solved To Acceptable Level."; - solve_result_num = 1; - } - else if( status == FEASIBLE_POINT_FOUND ) - { - message += "Found feasible point for square problem."; - solve_result_num = 2; - } - else if( status == LOCAL_INFEASIBILITY ) - { - message += "Converged to a locally infeasible point. Problem may be infeasible."; - solve_result_num = 200; - } - else if( status == RESTORATION_FAILURE ) - { - message += "Restoration Phase Failed."; - solve_result_num = 501; - } - else if( status == DIVERGING_ITERATES ) - { - message += "Iterates diverging; problem might be unbounded."; - solve_result_num = 300; - } - else - { - message += "Unknown Error"; - solve_result_num = 502; + case SUCCESS: + message += "Optimal Solution Found"; + solve_result_num = 0; + break; + + case STOP_AT_ACCEPTABLE_POINT: + message += "Solved To Acceptable Level."; + solve_result_num = 1; + break; + + case FEASIBLE_POINT_FOUND: + message += "Found feasible point for square problem."; + solve_result_num = 2; + break; + + case LOCAL_INFEASIBILITY: + message += "Converged to a locally infeasible point. Problem may be infeasible."; + solve_result_num = 200; + break; + + case DIVERGING_ITERATES: + message += "Iterates diverging; problem might be unbounded."; + solve_result_num = 300; + break; + + case MAXITER_EXCEEDED: + message += "Maximum Number of Iterations Exceeded."; + solve_result_num = 400; + break; + + case CPUTIME_EXCEEDED: + message += "Maximum CPU Time Exceeded."; + solve_result_num = 401; + break; + + case WALLTIME_EXCEEDED: + message += "Maximum Wallclock Time Exceeded."; + solve_result_num = 402; + break; + + case USER_REQUESTED_STOP: + message += "User requested stop."; + solve_result_num = 403; + break; + + case STOP_AT_TINY_STEP: + message += "Search Direction becomes Too Small."; + solve_result_num = 500; + break; + + case RESTORATION_FAILURE: + message += "Restoration Phase Failed."; + solve_result_num = 501; + break; + + case ERROR_IN_STEP_COMPUTATION: + message += "Error in step computation."; + solve_result_num = 502; + break; + + // the following should be dead code, i.e., finalize_solution isn't called in these cases + case INVALID_NUMBER_DETECTED: + message += "Invalid number in NLP function or derivative detected."; + solve_result_num = 550; + break; + + case TOO_FEW_DEGREES_OF_FREEDOM: + message += "NLP has too few degrees of freedom."; + solve_result_num = 551; + break; + + case INVALID_OPTION: + message += "Invalid option setting."; + solve_result_num = 552; + break; + + case OUT_OF_MEMORY: + message += "Out of memory."; + solve_result_num = 553; + break; + + case INTERNAL_ERROR: + message += "Internal error."; + solve_result_num = 554; + break; + + case UNASSIGNED: + message += "Unknown Error"; + solve_result_num = 599; + break; } if( IsValid(suffix_handler_) ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Common/IpOptionsList.cpp new/Ipopt-releases-3.14.2/src/Common/IpOptionsList.cpp --- old/Ipopt-releases-3.14.1/src/Common/IpOptionsList.cpp 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Common/IpOptionsList.cpp 2021-07-21 09:31:43.000000000 +0200 @@ -283,6 +283,27 @@ return true; } +bool OptionsList::UnsetValue( + const std::string& tag +) +{ + if( !will_allow_clobber(tag) ) + { + if( IsValid(jnlst_) ) + { + std::string msg = "WARNING: Tried to unset option \"" + tag; + msg += "\",\n but the current value is set to disallow clobbering.\n"; + msg += " The setting will remain as: \"" + tag; + msg += " " + options_[lowercase(tag)].GetValue(); + msg += "\"\n"; + jnlst_->Printf(J_WARNING, J_MAIN, "%s", msg.c_str()); + } + return false; + } + + return options_.erase(lowercase(tag)) > 0; +} + bool OptionsList::SetStringValueIfUnset( const std::string& tag, const std::string& value, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Common/IpOptionsList.hpp new/Ipopt-releases-3.14.2/src/Common/IpOptionsList.hpp --- old/Ipopt-releases-3.14.1/src/Common/IpOptionsList.hpp 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Common/IpOptionsList.hpp 2021-07-21 09:31:43.000000000 +0200 @@ -239,6 +239,14 @@ { return SetStringValue(tag, value ? "yes" : "no", allow_clobber, dont_print); } + + /// Resets an option to its default value, if clobber is allowed. + /// + /// @return Whether value has been unset, i.e., value was set before and clobber was allowed. + /// @since 3.14.2 + virtual bool UnsetValue( + const std::string& tag + ); ///@} /** @name Methods for setting options only if they have not been set before */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Common/config.h.in new/Ipopt-releases-3.14.2/src/Common/config.h.in --- old/Ipopt-releases-3.14.1/src/Common/config.h.in 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Common/config.h.in 2021-07-21 09:31:43.000000000 +0200 @@ -155,6 +155,10 @@ /* As IPOPT_LAPACK_FUNC, but for C identifiers containing underscores. */ #undef IPOPT_LAPACK_FUNC_ +/* Define to 1 if MPI should be initialized (finalized) when Ipopt library is + (un)loaded. */ +#undef IPOPT_MPIINIT + /* Define to 1 if using single precision floating point */ #undef IPOPT_SINGLE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Common/config_ipopt_default.h new/Ipopt-releases-3.14.2/src/Common/config_ipopt_default.h --- old/Ipopt-releases-3.14.1/src/Common/config_ipopt_default.h 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Common/config_ipopt_default.h 2021-07-21 09:31:43.000000000 +0200 @@ -5,7 +5,7 @@ /***************************************************************************/ /* Version number of project */ -#define IPOPT_VERSION "3.14.1" +#define IPOPT_VERSION "3.14.2" /* Major Version number of project */ #define IPOPT_VERSION_MAJOR 3 @@ -14,7 +14,7 @@ #define IPOPT_VERSION_MINOR 14 /* Release Version number of project */ -#define IPOPT_VERSION_RELEASE 1 +#define IPOPT_VERSION_RELEASE 2 /* Define to the C type corresponding to Fortran INTEGER * @deprecated Use ipindex instead. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Interfaces/IpIpoptApplication.cpp new/Ipopt-releases-3.14.2/src/Interfaces/IpIpoptApplication.cpp --- old/Ipopt-releases-3.14.1/src/Interfaces/IpIpoptApplication.cpp 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Interfaces/IpIpoptApplication.cpp 2021-07-21 09:31:43.000000000 +0200 @@ -679,8 +679,10 @@ } catch( IpoptNLP::Eval_Error& exc ) { + // this can happen if the final point was accepted because functions can be evaluated, + // but functions are not differentiable, so dual infeasibility cannot be computed status = INVALID_NUMBER_DETECTED; - exc.ReportException(*jnlst_, J_ERROR); + exc.ReportException(*jnlst_, J_STRONGWARNING); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Interfaces/IpIpoptApplication.hpp new/Ipopt-releases-3.14.2/src/Interfaces/IpIpoptApplication.hpp --- old/Ipopt-releases-3.14.1/src/Interfaces/IpIpoptApplication.hpp 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Interfaces/IpIpoptApplication.hpp 2021-07-21 09:31:43.000000000 +0200 @@ -157,9 +157,8 @@ /** Solve a problem (that inherits from TNLP) for a repeated time. * * The OptimizeTNLP method must have been called before. The - * TNLP must be the same object, and the structure (number of - * variables and constraints and position of nonzeros in Jacobian - * and Hessian must be the same). + * TNLP must be the same object. The IpoptAlgorithm object from the + * previous solve will be reused. */ virtual ApplicationReturnStatus ReOptimizeTNLP( const SmartPtr<TNLP>& tnlp @@ -168,9 +167,8 @@ /** Solve a problem (that inherits from NLP) for a repeated time. * * The OptimizeNLP method must have been called before. The - * NLP must be the same object, and the structure (number of - * variables and constraints and position of nonzeros in Jacobian - * and Hessian must be the same). + * NLP must be the same object. The IpoptAlgorithm object from the + * previous solve will be reused. */ virtual ApplicationReturnStatus ReOptimizeNLP( const SmartPtr<NLP>& nlp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Ipopt-releases-3.14.1/src/Interfaces/IpStdCInterface.h new/Ipopt-releases-3.14.2/src/Interfaces/IpStdCInterface.h --- old/Ipopt-releases-3.14.1/src/Interfaces/IpStdCInterface.h 2021-06-25 11:22:34.000000000 +0200 +++ new/Ipopt-releases-3.14.2/src/Interfaces/IpStdCInterface.h 2021-07-21 09:31:43.000000000 +0200 @@ -158,17 +158,17 @@ */ typedef bool (*Intermediate_CB)( ipindex alg_mod, /**< algorithm mode: 0 is regular, 1 is restoration */ - ipindex iter_count, - ipnumber obj_value, - ipnumber inf_pr, - ipnumber inf_du, - ipnumber mu, - ipnumber d_norm, - ipnumber regularization_size, - ipnumber alpha_du, - ipnumber alpha_pr, - ipindex ls_trials, - UserDataPtr user_data + ipindex iter_count,/**< iteration number */ + ipnumber obj_value, /**< objective function value */ + ipnumber inf_pr, /**< primal infeasibility */ + ipnumber inf_du, /**< dual infeasibility */ + ipnumber mu, /**< barrier parameter */ + ipnumber d_norm, /**< infinity-norm of primal step */ + ipnumber regularization_size, /**< size of regularization of Hessian of Lagrangian */ + ipnumber alpha_du, /**< step length for dual variables */ + ipnumber alpha_pr, /**< step length for primal variables */ + ipindex ls_trials, /**< number of backtracking line search steps */ + UserDataPtr user_data /**< user data */ ); /** Function for creating a new Ipopt Problem object.
participants (1)
-
Source-Sync