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 <badshah...@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.2089.pdf)
    * [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.

Reply via email to