IDAES/idaes-pse

Update IPOPT version to 3.14

Opened this issue · 6 comments

We should try to update the version of IPOPT we distribute and use as one of the first things after the August release. This will give us three months to work out any kinks that come up during the change over.

My understanding of what needs to happen for this is:

  • Add branch to IDAES-Ipopt tracking coin-or Ipopt stable/3.14 branch. Create new stable/idaes-3.14 branch.
  • Merge our changes to Ipopt 3.13 into stable/idaes-3.14 (i.e. the diff between stable/idaes-3.13 and stable/3.13)
  • Update branch that we checkout in the idaes-ext compile_solvers.sh script

I'm not sure exactly what changes we've made to Ipopt 3.13 and why these changes are necessary, but our Ipopt 3.13 is about 30 commits ahead of coin-or Ipopt 3.13. Also, when I merge stable/3.14 into our stable/idaes-3.13 branch and test the resulting binaries, I don't see the "IDAES header" that we display along with the Ipopt header. I'm not exactly sure where this header comes from.

The compile_solvers.sh script checks out an idaes-3.13 branch of our Ipopt repo:

# Set a few basic things
export IPOPT_BRANCH="idaes-3.13"
export IPOPT_REPO="https://github.com/idaes/Ipopt"
export IPOPT_L1_BRANCH="restoration_mod"
export IPOPT_L1_REPO="https://github.com/idaes/Ipopt"
export PYNU_BRANCH="main"
export PYNU_REPO="https://github.com/pyomo/pyomo"
export K_AUG_BRANCH="default"
export K_AUG_REPO="https://github.com/idaes/k_aug"
export CC="gcc"
export CXX="g++"

This branch seems not to exist? The branch I see on https://github.com/IDAES/Ipopt is stable/idaes-3.13.

This is waiting for IDAES/idaes-ext#262

The IDAES-Ipopt copyright header is included in print_copyright_message in IpIpoptAlg.cpp. We need to make sure this makes it into the 3.14 branch that we checkout and compile. As mentioned above, our 3.13 branch is about 30 commits ahead of coin-or:stable/3.13, and I don't know what these commits are doing. It would be nice if they were documented.

This is waiting for IDAES/idaes-ext#262

Correct. Updating the Ipopt version raises the following questions:

  • Why does compile_solvers.sh checkout a branch called idaes-3.13 when the "idaes" branch on our fork is called stable/idaes-3.13?
  • What are the changes we have made in the Ipopt source code and, other than the copyright message, why are they necessary?

Because these questions make updating the version not completely trivial, we will make the idaes-ext updates in two stages:

  1. Update distributed libraries to be linkable by cyipopt
  2. Update Ipopt version

Why does compile_solvers.sh checkout a branch called idaes-3.13 when the "idaes" branch on our fork is called stable/idaes-3.13?

The Ipopt source actually gets pulled down with coinbrew fetch $REPO@$BRANCH, which I guess automatically searches for branches named stable/*?