Optimizer instructions - Kawajiri Research Group

Guidance of installing and running program on Windows
Version 1.1
Zeyu Yang
[email protected]
School of Chemical and Biomolecular Engineering
Georgia Institute of Technology
July, 20th 2016
This documentation provides how to install software and packages required to run the simulated moving
bed process simulation using the optimizer attached, and provides how to use the optimizer to perform
desired simulations. The method used in the optimizer and the default parameter setting are identical as the
study by Kawajiri and Biegler (Kawajiri & Biegler, 2006).
The code of optimizer was originally created by Suriya Arulselvan in December 2015, revised and
developed by Zeyu Yang in July 2016.
Section 1: Software and Package Installation
The following installation guide can be applied for running program under Windows operating system,
Cygwin terminal is used.
Step by step installation guide is following:
1. Install Cygwin
Cygwin is a Linux-like environment for Windows. Go to the website and download 32 or 64 bits version
depend on operating system (but strongly suggest to install 32 bits version even if you have 64 bits OS).
https://cygwin.com/install.html
1) Click next
2) Select ‘install from the internet’ (default) and click next
3) Select a directory where Cygwin is to be installed (you can leave the default) and choose all other
things to your liking, then click next
4) Select a temp directory for Cygwin setup to store some files (if you put it on your desktop you will
later remember to delete it)
5) Select ‘direct connection’ (default) and click next
6) Select some mirror site that seems close by to you and click next
7) At the step of select packages, select the following packages:
‘Devel’: gcc-core: GNU Compiler Collection (C, OpenMP)
‘Devel’: gcc-fortran: GNU Compiler Collection (Fortran)
‘Devel’: pkg-config
‘Devel’: subversion
‘Archive’: unzip
‘Utils’: patch
‘Utils’: patcher & patchutils
‘Web’: wget
‘Libs’: libfreetype-devel: Free Type font engine
‘Libs’: libpng-devel: PNG library
‘Python’: python: Python language interpreter
‘Python’: python-numpy
‘Python’: python-ply
‘Python’: python-pyparsing
‘Python’: python-setuptools
‘Python’: python-six
When a Resolving Dependencies window comes up, be sure to ‘Select required packages
(RECOMMENDED)’. This will automatically also select some other packages. From now on the
directory where Cygwin installed will be called $Cygwin in this documentation.
2. Install Pyomo
An older version of pyomo will be installed. From
https://software.sandia.gov/trac/pyomo/downloader
Download pyomo_4.0.9682.zip and pyomo_install
At the same time, download ‘get-pip.py’ from
http://www.pyomo.org/installation
Put all files above to $Cygwin\home\your_user_name
Run Cygwin terminal as administrator, go to this directory, enter following lines:
$ python get-pip.py
$ python pyomo_install --zip=pyomo_4.0.9682.zip
The $ indicates the command line prompt, do not type $.
3. Install Ipopt
Ipopt is an open source software package for large-scale nonlinear optimization.
Download the latest version in .tgz file of Ipopt from
http://www.coin-or.org/download/source/Ipopt
The name of the file looks like Ipopt-x.y.z.tgz, where x.y.z is the version number, such as 3.12.0.
Also put the file in $Cygwin\home\your_user_name
Where your_user_name is the user name of your computer.
In Cygwin terminal, go to the directory, run following lines:
$
$
$
$
gunzip Ipopt-x.y.z.tgz
tar xvf Ipopt-x.y.z.tar
mv Ipopt-x.y.z CoinIpopt
cd CoinIpopt
These commands unpacked the tgz file, renamed the directory and go to the directory. From now on
this directory will be called $IPOPTDIR in this documentation.
Next, some external code will be downloaded, this includes BLAS, LAPACK and ASL.
Run the following command:
$
$
$
$
$
$
cd ThirdParty/Blas
./get.Blas
cd ../Lapack
./get.Lapack
cd ../ASL
./get.ASL
Next, HSL will be required, follow the following steps,
1)
2)
3)
4)
Go to http://hsl.rl.ac.uk/ipopt
Choose HSL Full code. To download, select the relevant ‘source’ link.
Follow the instructions on the website, read the license, and submit the registration form.
Wait for an email containing a download link (this should take no more than one working
day).
5) Download the .zip file of HSL.
6) Unpack the archive, then move and rename the resulting directory so that it becomes
$IPOPTDIR/ThirdParty/HSL/coinhsl
Last we compile Ipopt.
1) Download the make file from http://www.cmake.org/files/cygwin/make.exe and save it to
$Cygwin/bin, if this make file does not work, download another version from
http://www.cmake.org/files/cygwin/make.exe-cygwin1.7, rename this file and save it to
$Cygwin/bin
2) Type the following lines,
i.
ii.
iii.
$ mkdir $IPOPTDIR/build
cd $IPOPTDIR/build
../configure
These lines create a directory to configure and do the configuration. After typing these lines, if
the last output line reads ‘configure: Main configuration of Ipopt successful’ then everything
worked fine. Otherwise, look at the screen output, have a look at the config.log output files
and/or consult http://www.coin-or.org/Ipopt/documentation/node19.html#ExpertInstall
3) Type the following lines,
i.
$ make
ii.
$ make install
If that will work. The IPOPT solver executable will be in the subdirectory bin called
‘ipopt.exe’.
4. All the rest
Type the following lines,
i.
ii.
$ pip install matplotlib
$ export PATH=$PATH
“/cygdrive/$Cygwin/home/your_user_name/CoinIpopt/build/bin”
Where at the second step, you should type in the directory where ipopt.exe stored in your computer.
Now, all software and packages should be successfully installed and ready to use.
Note: If there is any problem encountered during the installation process, try to run Cygwin as
administrator. If this does work, then reference
https://software.sandia.gov/downloads/pub/pyomo/PyomoInstallGuide.html for Pyomo and
http://www.coin-or.org/Ipopt/documentation/node10.html for Ipopt.
Section 2: Performing Simulations
For running the program without changing any parameter, follow the step below.
1. For SMB, in Cygwin terminal, go to the directory ‘SMB’ and enter any subdirectory, enter the
following line,
$ python Optimization_SMB.py
2. For PowerFeed, in Cygwin terminal, go to the directory ‘PowerFeed’ and enter any subdirectory,
enter the following line,
$ python Optimization_PowerFeed.py
The program would generate a .txt file and one or three .png files. Appendix 2 has listed the result of SMB
simulation with linear isotherm and PowerFeed simulation with nonlinear isotherm.
If you are not new to Pyomo and Ipopt or want to perform simulations using other parameters other than
provided, then read the following for explanation and details of running the program.
Mathematical model from previous study by Kawajiri and Biegler (Kawajiri & Biegler, 2006) is used in this
program. This partial differential equation model is highly accurate and simple. Detail of the mathematical
model can be found in Appendix 1.
Two types of simulated moving bed process are provided: standard SMB and PowerFeed process. The
folder named ‘SMB’ provides all files used to run SMB and the folder named ‘Powerfeed’ provides all files
used to run PowerFeed simulations. Both folders include two sub folders named ‘linear isotherm’ and
‘nonlinear isotherm’, and both sub folders include another sub folder each named ‘result’ which includes
all auto-generated files by the program. Besides the result folder, the following files are included:
1) ‘Optimization_SMB.py’ or ‘Optimization_PowerFeed.py’
Main file of the model. Provides detail of parameters of Ipopt and perform the simulations.
2) ‘SMB.py’ or ‘SMBModel.py’
‘SMB.py’ files are in the ‘SMB’ folder while ‘SMBModel.py’ files are in ‘PowerFeed’ folder.
These files provide the mathematical model of SMB process in linear isotherm or nonlinear
isotherm.
3) ‘data__.dat’ or ‘data__SMB.dat’
Files named ‘data__SMB.dat’ are in ‘SMB’ folder while files named ‘data__.dat’ are in the
‘PowerFeed’ folder. These files provide parameters of the model. Details of each parameter in
these files are following:
a) NComp: Number of composition. The program only works when there are two
components.
b) NCP: Number of collocation points. The program only works when there are three
collocation points.
c) eb: Void fraction, this parameter should be changed according to different simulations.
d) K & H: Parameters of isotherm relation, K is dimensionless and H in g/L, these
parameters should be changed according to different simulations.
e) Kap: Mass transfer coefficient, in 1/s, this parameter should be changed according to
different simulations.
f) ExtractRecMin: Minimum extract recovery, with a range of 0-100, this parameter
should be changed according to different simulations.
g) ExtractPurMin: Minimum extract purity, with a range of 0-100, this parameter
should be changed according to different simulations.
h) RaffinateRecMin: Minimum raffinate recovery, with a range of 0-100, this
parameter should be changed according to different simulations.
i) RaffinatePurMin: Minimum raffinate purity, with a range of 0-100, this
parameter should be changed according to different simulations.
j) A: Parameters of collocation points. This should not be changed if NCP =3.
4) ‘Initdata_SMB.py’ or ‘Initdata.py’
These files provide parameters of the model as well as initial operating condition. Details of
each parameter in these files are following:
a) U1Init: Initial operating fluid velocity of zone 1, in m/s, this parameter should be
changed according to different simulations.
b) U2Init: Initial operating fluid velocity of zone 2, in m/s, this parameter should be
changed according to different simulations.
c) U3Init: Initial operating fluid velocity of zone 3, in m/s, this parameter should be
changed according to different simulations.
d) U4Init: Initial operating fluid velocity of zone 4, in m/s, this parameter should be
changed according to different simulations.
e) StepTimeInit: Initial step time, in s, this parameter should be changed according
to different simulations.
f) Colum: Number of total column. The number entered must be a multiple of 4, i.e. 4,
8, etc. This parameter should be changed according to different simulations.
g) Nfet: Number of finite element in temporal domain, this parameter should be changed
according to different simulations.
h) Nfex: Number of finite element in spatial domain, this parameter should be changed
according to different simulations.
i) ColL: Length of each column, in m, this parameter should be changed according to
different simulations.
j) UB: Upper bound of fluid velocity, in m/h, this parameter should be changed according
to different simulations.
k) LB: Lower bound of fluid velocity, in m/h, this parameter should be changed according
to different simulations.
Step by step instruction of running simulation should be following:
1. Decide if running SMB process or PowerFeed process
If you want to perform a SMB simulation, enter the ‘SMB’ folder and edit files in that folder. If
you want to perform a PowerFeed simulation, enter the ‘Powerfeed’ folder and edit files in that
folder.
2. Decide if running linear isotherm or nonlinear isotherm
Enter the ‘linear isotherm’ folder if you want to perform the linear isotherm simulation or enter the
‘nonlinear isotherm’ folder if you want to perform nonlinear isotherm simulation.
3. Change parameters (if needed)
Parameters should be changed according to specific requirement. For the SMB simulation, edit the
file ‘Initdata_SMB.py’, and if using linear isotherm, edit ‘data_linearSMB.dat’ or if using nonlinear
isotherm, edit ‘data_nonlinearSMB.dat’.
For the PowerFeed simulation, edit the file ‘Initdata.py’, and if using linear isotherm, edit
‘data_linear.dat’ or if using nonlinear isotherm, edit ‘data_nonlinear.dat’. Edit parameters
according to the explanation above.
Note: The default setting is using the same parameters from the study by Kawajiri and Biegler
(Kawajiri & Biegler, 2006), you may not change anything if you want to perform the same
simulation as Kawajiri and Biegler’s study.
4. Run the simulation
In Cygwin terminal, go to the directory of saving files above, enter the following line,
$ python Optimization_XXX.py
Where XXX may stand for SMB or PowerFeed. For example, if you are running PowerFeed
process, type the following
$ python Optimization_PowerFeed.py
Note: The simulation should be performed under python 2.
The program will generate following files automatically in the same folder where simulation performed:
1) ‘Output_PowerFeed.txt’ or ‘Output_SMB.txt’ file which gives the result of simulation. You
can find the final result at the end of this auto-generated file. At the same time, details about
the simulation such as total time taken and number of iterations performed as well as the fluid
velocity profile is also provided in this file.
2) ‘concentration_profile.png’ which gives a plot of concentration profile of both components.
For PowerFeed simulation the following two additional files will also be automatically generated:
1) ‘zone_4_powerfeed.png’ file which gives the plot of velocity profile of zone 4 in PowerFeed
simulations.
2) ‘fluid_velocity_powerfeed.png’ which gives plots of extract, raffinate, desorbent and feed
velocities in PowerFeed simulations.
Appendix 2 shows two examples of output files generated by simulations including standard SMB with
linear isotherm and PowerFeed simulation with nonlinear isotherm. The same parameters from Kawajiri
and Biegler’s study (Kawajiri & Biegler, 2006) has been used in these simulations. For the output of SMB
nonlinear isotherm simulation and PowerFeed linear isotherm simulation, please reference attached files.
Parameters of these simulation are also from Kawajiri and Biegler’s research (Kawajiri & Biegler, 2006).
Reference
1. Kawajiri Y, Biegler LT, Optimization Strategies for Simulated Moving Bed and PowerFeed Processes.
AIChE Journal. 2006;52:1343-1350.
Appendix
Appendix 1. Mathematical model of SMB process
Mass balance in liquid
𝜀𝑏
𝜕𝐶𝑛,𝑖 (𝑥, 𝑡)
𝜕𝑞𝑛,𝑖 (𝑥, 𝑡)
𝜕𝐶𝑛,𝑖 (𝑥, 𝑡)
+ (1 − 𝜀𝑏 )
+ 𝑢𝑚 (𝑡)
=0
𝜕𝑡
𝜕𝑡
𝜕𝑥
Mass balance in adsorbent
Liquid phase based
(1 − 𝜀𝑏 )
𝜕𝑞𝑛,𝑖 (𝑥, 𝑡)
𝑒𝑞
= 𝐾𝑎𝑝𝑝𝑙,𝑖 (𝐶𝑛,𝑖 (𝑥, 𝑡) − 𝐶𝑛,𝑖 (𝑥, 𝑡))
𝜕𝑡
(1)
Solid phase based
𝜕𝑞𝑛,𝑖 (𝑥, 𝑡)
𝑒𝑞
= 𝐾𝑎𝑝𝑝𝑠,𝑖 (𝑞𝑛,𝑖 (𝑥, 𝑡) − 𝑞𝑛,𝑖 (𝑥, 𝑡))
𝜕𝑡
(2)
Boundary condition
𝑖𝑛
𝐶𝑛,𝑖 (0, 𝑡) = 𝐶𝑛,𝑖
(𝑡),
𝑖 = 1, … , 𝑁𝑐 ,
𝑛 = 1, … , 𝑁𝑐𝑜𝑙𝑢𝑚𝑛
𝑚 = 𝐼, 𝐼𝐼, 𝐼𝐼𝐼, 𝐼𝑉
Where 𝜀𝑏 is void fraction and should be specified as a parameter, 𝐶𝑛,𝑖 (𝑥, 𝑡) and 𝑞𝑛,𝑖 (𝑥, 𝑡) are concentration
𝑖𝑛
in liquid phase and solid phase of component 𝑖 in column 𝑛, respectively. 𝐶𝑛,𝑖
(𝑡) is the inlet concentration
𝑒𝑞
𝑒𝑞
in column 𝑛. 𝑢𝑚 is liquid velocity in zone 𝑚, 𝐶𝑛,𝑖 (𝑥, 𝑡) and 𝑞𝑛,𝑖 (𝑥, 𝑡) are equilibrium concentration in
liquid and solid phase, respectively. 𝐾𝑎𝑝𝑝𝑠,𝑖 and 𝐾𝑎𝑝𝑝𝑙,𝑖 are mass transfer coefficient of solid based and
liquid based, respectively, they should be specified as parameters.
Mass balance in each port is given by the following:
Desorbent inlet port
𝑢𝐼𝑉 (𝑡) + 𝑢𝐷 (𝑡) = 𝑢𝐼 (𝑡)
𝑖𝑛
(𝑡)𝑢𝐼 (𝑡) = 𝐶𝑁𝑐𝑜𝑙𝑢𝑚𝑛 ,𝑖 (𝐿, 𝑡)𝑢𝐼𝑉 (𝑡)
𝐶1,𝑖
Extract outlet port
𝑢𝐼 (𝑡) − 𝑢𝐸 (𝑡) = 𝑢𝐼𝐼 (𝑡)
𝐶𝑁𝑖𝑛𝐼 +1,𝑖 (𝑡) = 𝐶𝑁𝐼 ,𝑖 (𝐿, 𝑡)
Feed inlet port
𝑢𝐼𝐼 (𝑡) + 𝑢𝐹 (𝑡) = 𝑢𝐼𝐼𝐼 (𝑡)
𝐶𝑁𝑙 +𝑁𝐼𝐼 ,𝑖 (𝐿, 𝑡)𝑢𝐼𝐼 (𝑡) + 𝐶𝐹,𝑖 (𝑡)𝑢𝐹 (𝑡) = 𝐶𝑁𝑖𝑛𝐼 +𝑁𝐼𝐼 +1 (𝑡)𝑢𝐼𝐼𝐼 (𝑡)
Raffinate outlet port
𝑢𝐼𝐼𝐼 (𝑡) − 𝑢𝑅 (𝑡) = 𝑢𝐼𝑉 (𝑡)
𝐶𝑁𝑖𝑛𝐼 +𝑁𝐼𝐼 +𝑁𝐼𝐼𝐼 +1,𝑖 (𝑡)𝑢𝐼 (𝑡) = 𝐶𝑁𝐼 +𝑁𝐼𝐼 +𝑁𝐼𝐼𝐼 ,𝑖 (𝐿, 𝑡)
Where 𝑢𝐷 (𝑡), 𝑢𝐸 (𝑡), 𝑢𝐹 (𝑡), 𝑢𝑅 (𝑡) are fluid velocities of desorbent, extract, feed and raffinate, respectively.
Moreover, the unit of fluid velocity in all equations above is m/h which has been divided by cross sectional
area of columns already.
In CSS, the concentration profile at the beginning of a cycle should be the same as the concentration profile
at the end of the cycle. Since the operation of each column is the same in SMB, the concentration profile at
beginning of a time step in a column should be equal to the concentration profile at the end of the time step
at the next column.
𝐶𝑛,𝑖 (𝑥, 0) = 𝐶𝑛+1,𝑖 (𝑥, 𝑡𝑠𝑡𝑒𝑝 )
𝑞𝑛,𝑖 (𝑥, 0) = 𝑞𝑛+1,𝑖 (𝑥, 𝑡𝑠𝑡𝑒𝑝 )
With 𝑛 = 1, … , 𝑁𝑐𝑜𝑙𝑢𝑚𝑛 − 1, and
𝐶𝑁𝑐𝑜𝑙𝑢𝑚𝑛 ,𝑖 (𝑥, 0) = 𝐶1,𝑖 (𝑥, 𝑡𝑠𝑡𝑒𝑝 )
𝑞𝑁𝑐𝑜𝑙𝑢𝑚𝑛 ,𝑖 (𝑥, 0) = 𝑞1,𝑖 (𝑥, 𝑡𝑠𝑡𝑒𝑝 )
Where 𝑡𝑠𝑡𝑒𝑝 denotes the step time, which equals to the time interval of valve change and the initial value
of step time should be specified as a parameter.
In the SMB, the maximization of the feed velocity is always the objective, with reaching the minimum
purity and recovery requirements.
Objective:
max 𝑎𝑣𝑔(𝑢𝐹 ) =
1
𝑡𝑠𝑡𝑒𝑝
𝑡𝑠𝑡𝑒𝑝
∫
𝑢𝐹 (𝑡)𝑑𝑡
0
Subject to
𝑡
∫0 𝑠𝑡𝑒𝑝 𝑢𝐸 (𝑡)𝐶𝐸,𝑘 (𝑡)𝑑𝑡
𝑡
𝑠𝑡𝑒𝑝
𝑐
∑𝑁
𝑢𝐸 (𝑡)𝐶𝐸,𝑘 (𝑡)𝑑𝑡
𝑖=1 ∫0
≥ 𝑃𝑢𝑟𝑚𝑖𝑛
𝑡
∫0 𝑠𝑡𝑒𝑝 𝑢𝐸 (𝑡)𝐶𝐸,𝑘 (𝑡)𝑑𝑡
𝑡𝑠𝑡𝑒𝑝
∫0
𝑢𝐹 (𝑡)𝐶𝐹,𝑘 (𝑡)𝑑𝑡
≥ 𝑅𝑒𝑐𝑚𝑖𝑛
Where the first inequality is the product purity constrain and the second inequality is the product recovery
constrain. 𝐶𝐸,𝑖 (𝑡) and 𝐶𝐹,𝑖 (𝑡) are concentration of component 𝑖 in extract stream and feed stream,
respectively with 𝑘 stands for the desired product index.
There is also a lower bond and an upper bond for both fluid velocity and time step,
𝑢𝑙 ≤ 𝑢𝑚 ≤ 𝑢𝑢
𝑡𝑠𝑡𝑒𝑝𝑙 ≤ 𝑡𝑠𝑡𝑒𝑝 ≤ 𝑡𝑠𝑡𝑒𝑝𝑢
The lower bond and an upper bond for fluid velocity should be specified as parameters for simulation.
For linear isotherm, following equation is used and mass balance equation in liquid phase (Equation (1))
should be used,
𝑒𝑞
𝑞𝑛,𝑖 (𝑥, 𝑡) = 𝐾𝑖 𝐶𝑛,𝑖 (𝑥, 𝑡)
While 𝐾𝑖 is parameter of isotherm relation and should be specified as a parameter.
For nonlinear isotherm, following equation of bi-Langmuir isotherm is used and mass balance equation in
solid phase (Equation (2)) should be used,
𝑒𝑞
𝑞𝑛,𝑖 =
𝐻1,𝑖 𝐶𝑛,𝑖 (𝑥, 𝑡)
𝐻2,𝑖 𝐶𝑛,𝑖 (𝑥, 𝑡)
+
1 + 𝐾11 𝐶𝑛,1 (𝑥, 𝑡) + 𝐾12 𝐶𝑛,2 (𝑥, 𝑡) 1 + 𝐾21 𝐶𝑛,1 (𝑥, 𝑡) + 𝐾22 𝐶𝑛,2 (𝑥, 𝑡)
Where 𝐾and 𝐻 are parameters of isotherm relation and should be specified as parameters.
The initial value of operating fluid velocity in each zone should also be specified as parameters.
Appendix 2. Example of output files
1. SMB simulation with linear isotherm.
In this example, same parameters from Kawajiri and Biegler’s study (Kawajiri & Biegler, 2006)
has been used. The program generates a .txt file named ‘Output_SMB.txt’ and a .png file named
‘concentration_profile.png’. Details of these two files are following:
Output_SMB.txt:
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
***********************************************************************
*******
This program contains Ipopt, a library for large-scale nonlinear
optimization.
Ipopt is released as open source code under the Eclipse Public License
(EPL).
For more information visit http://projects.coin-or.org/Ipopt
***********************************************************************
*******
This is Ipopt version 3.12, running with linear solver ma27.
Number of nonzeros in equality constraint Jacobian...:
Number of nonzeros in inequality constraint Jacobian.:
Number of nonzeros in Lagrangian Hessian.............:
135214
2
9921
Total number of variables............................:
variables with only lower bounds:
variables with lower and upper bounds:
variables with only upper bounds:
Total number of equality constraints.................:
Total number of inequality constraints...............:
inequality constraints with only lower bounds:
inequality constraints with lower and upper bounds:
inequality constraints with only upper bounds:
34001
4
5
0
34001
4
4
0
0
iter
objective
inf_pr
inf_du lg(mu) ||d|| lg(rg) alpha_du
alpha_pr ls
0 -3.5999964e+01 5.00e-01 1.01e+02 -3.0 0.00e+00
- 0.00e+00
0.00e+00
0
1 -3.3752214e+01 4.69e-01 9.47e+01 -3.0 3.19e+01
- 3.03e-02
6.25e-02h 5
2 -3.1644808e+01
6.25e-02h 5
3 -2.7693158e+01
1.25e-01h 4
4 -2.4234970e+01
1.25e-01h 4
5 -2.1208624e+01
1.25e-01h 4
6 -1.8560193e+01
1.25e-01h 4
7 -1.6242484e+01
1.25e-01h 4
8 -1.4214199e+01
1.25e-01h 4
9 -1.2439197e+01
1.25e-01h 4
iter
objective
alpha_pr ls
10 -1.0885848e+01
1.25e-01h 4
11 -1.0849884e-02
1.00e+00w 1
12 -1.0000800e-02
1.00e+00h 1
13 -1.0000800e-02
1.00e+00h 1
4.39e-01 8.89e+01
-3.0 2.86e+01
-
1.00e+00
3.85e-01 7.78e+01
-3.0 2.39e+01
-
1.64e-01
3.37e-01 6.82e+01
-3.0 1.65e+01
-
1.00e+00
2.95e-01 5.97e+01
-3.0 1.26e+01
-
4.66e-01
2.58e-01 5.24e+01
-3.0 8.19e+00
2.26e-01 4.60e+01
-3.0 7.85e+00
-
8.76e-01
1.97e-01 4.04e+01
-3.0 1.00e+01
-
1.00e+00
1.73e-01 3.56e+01
-3.0 1.29e+01
-
1.00e+00
inf_pr
inf_du lg(mu)
||d||
-4.0 1.00e+00
lg(rg) alpha_du
1.51e-01 3.14e+01
-3.0 1.60e+01
-
1.00e+00
1.64e-01 1.43e+00
-3.0 1.76e+01
-
1.00e+00
1.86e-05 4.58e+00
-3.0 2.45e+01
-
1.00e+00
5.50e-15 5.59e-05
-3.0 2.08e-03
-4.5 1.00e+00
Number of Iterations....: 13
Objective...............:
1.0000800000000559e-02
Dual infeasibility......:
1.0231815394945443e-12
Constraint violation....:
5.4956039718945249e-15
Complementarity.........:
0.0000000000000000e+00
Overall NLP error.......:
1.0231815394945443e-12
Number of
Number of
Number of
Number of
Number of
Number of
Number of
Total CPU
Total CPU
(scaled)
-2.7780000000001553e-04
(unscaled)
-
2.8421709430404007e-14
5.4956039718945249e-15
0.0000000000000000e+00
5.4956039718945249e-15
objective function evaluations
objective gradient evaluations
equality constraint evaluations
inequality constraint evaluations
equality constraint Jacobian evaluations
inequality constraint Jacobian evaluations
Lagrangian Hessian evaluations
secs in IPOPT (w/o function evaluations)
secs in NLP function evaluations
EXIT: Optimal Solution Found.
=
=
=
=
=
=
=
=
=
56
14
56
56
14
14
13
7.568
0.529
Ipopt 3.12: Optimal Solution Found
-------------------Initial Condition Solution---------------------Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Control Varialbes:
1
2
:
:
1
2
:
:
:
:
:
:
4.44182773014
80.4416001917
5.23285621102
94.767143789
95.5581758394
19.5584033779
83.0099161121
16.9900838879
U
U[1] = 7.9999992
U[2] = 5.0000004
U[3] = 5.0100012
U[4] = 3.4999992
UD
UD[1] = 4.5
UD[2] = 0
UD[3] = 0
UD[4] = 0
UE
UE[1] = 2.9999988
UE[2] = 0
UE[3] = 0
UE[4] = 0
UF
UF[1] = 0
UF[2] = 0
UF[3] = 0.0100008
UF[4] = 0
UR
UR[1] = 0
UR[2] = 0
UR[3] = 1.510002
UR[4] = 0
Step Time 1140
Comp A conc in extract = 0.00740364115777
Comp B conc in extract = 0.134080108046
Comp A conc in raffinate = 0.316442683792
Comp B conc in raffinate = 0.0647680180289
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
***********************************************************************
*******
This program contains Ipopt, a library for large-scale nonlinear
optimization.
Ipopt is released as open source code under the Eclipse Public License
(EPL).
For more information visit http://projects.coin-or.org/Ipopt
***********************************************************************
*******
This is Ipopt version 3.12, running with linear solver ma27.
Number of nonzeros in equality constraint Jacobian...:
Number of nonzeros in inequality constraint Jacobian.:
Number of nonzeros in Lagrangian Hessian.............:
148719
120
33203
Total number of variables............................:
variables with only lower bounds:
variables with lower and upper bounds:
variables with only upper bounds:
Total number of equality constraints.................:
Total number of inequality constraints...............:
inequality constraints with only lower bounds:
inequality constraints with lower and upper bounds:
inequality constraints with only upper bounds:
34005
7
6
0
34001
14
7
0
7
iter
objective
alpha_pr ls
0 -3.5999964e+01
0.00e+00
0
1 -3.2564798e+00
9.11e-01h 1
2 -3.1510889e+00
3.26e-02h 1
3 -2.4707821e-01
9.21e-01h 1
4 -2.4240048e-01
1.92e-02h 1
5 -2.1879676e-01
1.06e-01f 1
6 -1.0011879e-01
5.48e-01h 1
7 -1.0000011e-01
1.83e-02h 1
8 -1.0000579e-01
2.80e-03h 1
9 -1.0002888e-01
5.68e-02f 2
iter
objective
alpha_pr ls
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
2.80e+01 2.14e-03
-3.0 0.00e+00
2.34e+00 1.26e+02
-3.0 3.02e+00
-4.0 9.00e-02
2.25e+00 1.21e+02
-3.0 2.33e+00
-3.6 3.12e-01
3.35e-03 3.81e+02
-3.0 6.84e+00
3.28e-03 3.79e+02
-3.0 2.82e+00
-3.1 1.40e-01
2.93e-03 3.64e+02
-3.0 3.49e+00
-3.6 2.54e-01
1.32e-03 3.71e+02
-3.0 1.62e+00
-4.1 1.81e-01
1.30e-03 4.84e+02
-3.0 2.22e+01
-
3.86e-02
1.29e-03 8.49e+02
-3.0 4.16e+01
-
7.15e-03
1.24e-03 8.19e+02
-3.0 4.78e+01
-
3.46e-02
inf_pr
inf_du lg(mu)
||d||
-
-
0.00e+00
9.12e-02
lg(rg) alpha_du
10 -1.1149894e-01
3.91e-03f 1
11 -1.0001149e-01
1.31e-01f 1
12 -1.0581357e-01
5.00e-01f 2
13 -1.0290968e-01
9.52e-02h 2
14 -1.0677328e-01
4.01e-02h 3
15 -1.0339002e-01
1.06e-01h 2
16 -1.0254336e-01
1.41e-01h 3
17 -1.0190815e-01
5.89e-02h 3
18 -1.0128007e-01
1.00e+00h 1
19 -1.0204231e-01
1.00e+00h 1
iter
objective
alpha_pr ls
20 -3.7252357e-01
5.00e-01f 2
21 -4.1393695e-01
1.00e+00h 1
22 -4.4299250e-01
1.00e+00h 1
23 -4.8576769e-01
1.00e+00H 1
24 -4.7513273e-01
1.00e+00h 1
25 -4.7834914e-01
1.00e+00h 1
26 -4.7247500e-01
1.00e+00h 1
27 -4.7246322e-01
1.00e+00h 1
28 -5.0296010e-01
1.00e+00h 1
29 -5.1981927e-01
1.00e+00h 1
iter
objective
alpha_pr ls
30 -5.1877275e-01
1.00e+00h 1
31 -5.2097412e-01
1.00e+00h 1
32 -5.2100404e-01
1.00e+00h 1
33 -5.2101677e-01
1.00e+00h 1
1.23e-03 8.20e+02
-3.0 1.29e+03
1.07e-03 6.94e+02
-3.0 1.80e+00
1.20e-03 3.41e+02
-3.0 5.13e+02
1.08e-03 4.56e+02
-3.0 3.55e+01
-5.1 9.63e-01
9.96e-04 4.27e+02
-3.0 1.21e+03
-5.5 3.12e-02
8.92e-04 2.75e+02
-3.0 6.02e+01
-5.1 1.00e+00
7.58e-04 2.86e+02
-3.0 8.49e+01
-5.6 1.00e+00
7.14e-04 2.71e+02
-3.0 3.79e+01
-5.2 1.00e+00
8.70e-05 2.24e+02
-3.0 1.15e+01
-5.6 1.00e+00
1.61e-05 3.57e+01
-3.0 6.13e+00
-6.1 9.52e-01
inf_pr
inf_du lg(mu)
||d||
-
1.07e-05
-4.6 9.99e-01
-
1.06e-01
lg(rg) alpha_du
1.67e-03 5.82e+01
-3.0 1.13e+02
2.12e-04 1.55e+01
-3.0 2.43e+01
9.22e-04 6.88e+00
-3.0 9.07e+01
-
1.00e+00
1.80e-03 1.56e+01
-3.0 2.40e+02
-
1.00e+00
1.26e-03 8.84e+00
-3.0 1.45e+02
-
1.00e+00
1.09e-04 3.58e-01
-3.0 1.12e+01
-
1.00e+00
1.25e-05 3.74e-02
-3.0 1.76e+01
-
1.00e+00
2.75e-08 1.45e-05
-3.0 7.53e-01
-
1.00e+00
5.59e-05 5.72e+01
-4.5 2.02e+01
-
9.52e-01
3.66e-05 1.77e-01
-4.5 1.97e+01
-
1.00e+00
inf_pr
inf_du lg(mu)
||d||
-
1.88e-01
-6.6 1.00e+00
lg(rg) alpha_du
7.58e-08 1.85e-04
-4.5 8.83e-01
-
1.00e+00
5.47e-07 1.18e-02
-6.8 2.37e+00
-
1.00e+00
3.23e-10 7.89e-07
-6.8 6.61e-02
-
1.00e+00
1.90e-11 3.85e-07
-9.0 1.41e-02
-
1.00e+00
34 -5.2101677e-01 4.09e-13 5.83e-13
1.00e+00h 1
-9.0 2.20e-06
-
1.00e+00
Number of Iterations....: 34
(scaled)
-1.4472687980989125e-02
Objective...............:
5.2101676731560853e-01
Dual infeasibility......:
2.0974329839773705e-11
Constraint violation....:
4.0856207306205761e-13
Complementarity.........:
3.2727272727712488e-08
Overall NLP error.......:
3.2727272727712488e-08
Number of
Number of
Number of
Number of
Number of
Number of
Number of
Total CPU
Total CPU
(unscaled)
-
5.8262027332704736e-13
4.0856207306205761e-13
9.0909090910312459e-10
9.0909090910312459e-10
objective function evaluations
objective gradient evaluations
equality constraint evaluations
inequality constraint evaluations
equality constraint Jacobian evaluations
inequality constraint Jacobian evaluations
Lagrangian Hessian evaluations
secs in IPOPT (w/o function evaluations)
secs in NLP function evaluations
=
=
=
=
=
=
=
=
=
54
35
54
54
35
35
34
35.057
1.073
EXIT: Optimal Solution Found.
Ipopt 3.12: Optimal Solution Found
-------------------Power Feed Solution---------------------Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Control Varialbes:
U
U[1] = 7.9999992
U[2] = 3.73911904562
U[3] = 4.26013581293
U[4] = 3.12961132903
UD
UD[1] = 4.87038787097
UD[2] = 0
UD[3] = 0
1
2
:
:
1
2
:
:
:
:
:
:
8.88902662837
79.9998634692
10.0001548209
89.9998451791
91.1109769412
20.0001401004
81.9998748704
18.0001251296
UD[4] = 0
UE
UE[1] = 4.26088015438
UE[2] = 0
UE[3] = 0
UE[4] = 0
UF
UF[1] = 0
UF[2] = 0
UF[3] = 0.521016767316
UF[4] = 0
UR
UR[1] = 0
UR[2] = 0
UR[3] = 1.1305244839
UR[4] = 0
Step Time 1414.67516407
Throughput: 0.521016767316 [m/hr]
Desorbent: 4.87038787097 [m/hr]
D/F ratio: 9.34785246176
Comp A conc in extract =
Comp B conc in extract =
Comp A conc in raffinate
Comp B conc in raffinate
Optimization Completed
0.543471253048
4.891157138
= 20.9948327764
= 4.60866089915
‘concentration_profile.png’
2. Powerfeed nonlinear isotherm
In this example, same parameters from Kawajiri and Biegler’s study (Kawajiri & Biegler, 2006)
has been used as well. Four files are generated from the program: A .txt file named
‘Output_PowerFeed.txt’ and three .png files named ‘concentration_profile.png’,
‘zone_4_powerfeed.png’and ‘fluid_velocity_powerfeed.png’. Details of these four files are
following:
Output_PowerFeed.txt
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
***********************************************************************
*******
This program contains Ipopt, a library for large-scale nonlinear
optimization.
Ipopt is released as open source code under the Eclipse Public License
(EPL).
For more information visit http://projects.coin-or.org/Ipopt
***********************************************************************
*******
This is Ipopt version 3.12, running with linear solver ma27.
Number of nonzeros in equality constraint Jacobian...:
Number of nonzeros in inequality constraint Jacobian.:
Number of nonzeros in Lagrangian Hessian.............:
76221
30
16075
Total number of variables............................:
variables with only lower bounds:
variables with lower and upper bounds:
variables with only upper bounds:
Total number of equality constraints.................:
Total number of inequality constraints...............:
inequality constraints with only lower bounds:
inequality constraints with lower and upper bounds:
inequality constraints with only upper bounds:
18109
40
5
0
18109
40
40
0
0
iter
objective
alpha_pr ls
0 -3.5999964e+01
0.00e+00
0
1r-3.5999964e+01
4.77e-07R 22
2r-1.1988744e+01
1.09e-02f 1
3r-1.1152614e+01
1.30e-03f 1
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
4.85e-01 1.01e+02
-3.0 0.00e+00
-
0.00e+00
4.85e-01 9.99e+02
-0.3 0.00e+00
-
0.00e+00
3.03e-01 9.88e+02
-0.3 1.67e+01
-
1.05e-03
1.14e-02 9.97e+02
-0.3 2.33e+02
-
1.14e-01
4r-1.1315293e-02
1.32e-01f 1
5r-4.3735875e-01
1.59e-01f 2
6r-5.2176465e-01
9.43e-01f 1
7r-2.3051653e-01
1.00e+00f 1
8r-7.4049253e-02
7.13e-01f 1
9r-2.3549349e-02
7.27e-01f 1
iter
objective
alpha_pr ls
10r-1.0107843e-02
7.36e-01f 1
11r-3.3739484e-03
1.00e+00f 1
12r-9.0801258e-04
9.54e-01f 1
13r-7.3274429e-04
1.00e+00f 1
14r-6.4442771e-04
1.00e+00h 1
15r-3.8631855e-04
9.44e-01f 1
16r-6.0483750e-04
2.20e-01f 1
17r-1.0798090e-03
2.01e-01f 1
18r-3.0331090e-03
1.00e+00f 1
19r-3.0806671e-03
1.00e+00h 1
iter
objective
alpha_pr ls
20r-3.0816468e-03
1.00e+00h 1
21r-3.0850346e-03
1.00e+00f 1
22r-7.4664326e-03
2.94e-02f 1
23r-1.4782926e-02
5.52e-02h 1
24r-4.2520100e-02
1.00e+00h 1
25r-5.5125806e-02
1.79e-01h 1
26r-6.9154940e-02
2.42e-01h 1
27r-1.1307691e-01
1.00e+00h 1
3.13e-03 8.30e+02
-0.3 7.25e-02
-
1.00e+00
1.98e-03 5.61e+03
-0.3 2.04e-01
-
2.32e-01
8.30e-04 6.57e+02
-0.3 3.87e-02
-
1.00e+00
8.17e-04 1.14e+00
-0.3 1.19e-02
-
1.00e+00
1.37e-04 6.28e+01
-2.6 2.52e-03
-
1.00e+00
8.45e-05 2.85e+01
-2.6 5.67e-02
-
6.24e-01
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
7.02e-05 1.35e+02
-2.6 1.76e-02
-
9.66e-01
6.86e-05 2.12e-02
-2.6 9.55e-03
-
1.00e+00
6.81e-05 2.75e+01
-3.9 2.84e-02
-
1.00e+00
6.69e-05 7.44e-01
-3.9 2.00e-02
-
1.00e+00
5.94e-05 6.46e-03
-3.9 3.63e-03
-
1.00e+00
6.01e-05 1.74e+01
-5.8 8.43e-03
-
9.81e-01
1.14e-04 7.63e+01
-5.8 3.48e-02
-
2.73e-01
1.14e-04 6.11e+01
-5.8 1.11e-01
-
1.87e-01
1.12e-04 3.99e+01
-5.8 1.19e-01
-
3.69e-01
1.12e-04 5.71e-01
-5.8 3.65e-02
-
9.58e-01
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
1.12e-04 4.57e-05
-5.8 4.69e-03
-
1.00e+00
1.14e-04 3.28e-01
-8.7 5.35e-03
-
8.91e-01
3.80e-04 2.50e+00
-8.7 9.79e+00
-
1.37e-02
1.26e-03 4.68e+00
-8.7 7.63e+00
-
3.83e-02
1.02e-02 2.54e+01
-8.7 1.11e+00
9.50e-03 6.70e+00
-8.7 3.24e+00
-
3.66e-01
8.63e-03 5.08e+00
-8.7 2.26e+00
-
4.67e-01
1.66e-02 2.32e+00
-8.7 1.38e+00
-
1.00e+00
-4.0 1.37e-01
28r-1.1318338e-01 3.94e-03 7.25e-01
7.69e-01h 1
29r-1.1314308e-01 9.10e-05 7.56e-04
1.00e+00h 1
-8.7 9.39e-02
-
1.00e+00
-8.7 3.30e-02
-
1.00e+00
Number of Iterations....: 29
(scaled)
-1.5713920653197058e-02
Objective...............:
1.1314022870301882e-01
Dual infeasibility......:
7.1999999667846623e+02
Constraint violation....:
9.0987458893826206e-05
Complementarity.........:
1.5464254094650691e-08
Overall NLP error.......:
7.1999999667846623e+02
Number of
Number of
Number of
Number of
Number of
Number of
Number of
Total CPU
Total CPU
(unscaled)
-
9.9999999538675880e+01
9.0987458893826206e-05
2.1478130687014849e-09
9.0987458893826206e-05
objective function evaluations
objective gradient evaluations
equality constraint evaluations
inequality constraint evaluations
equality constraint Jacobian evaluations
inequality constraint Jacobian evaluations
Lagrangian Hessian evaluations
secs in IPOPT (w/o function evaluations)
secs in NLP function evaluations
=
=
=
=
=
=
=
=
=
53
3
57
57
32
32
30
11.455
0.728
EXIT: Converged to a point of local infeasibility. Problem may be
infeasible.
Ipopt 3.12: Converged to a locally infeasible point. Problem may be
infeasible.
WARNING - Loading a SolverResults object with a warning status
-------------------Initial Consition Solution---------------------Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Control Varialbes:
U
U[1][1] = 6.4239984
U[1][2] = 6.4239984
U[1][3] = 6.4239984
1
2
:
:
1
2
:
:
:
:
:
:
99.2087923071
8.02147215627
92.5193953438
7.48060465617
0.791210303713
91.9785300158
0.852875410655
99.1471245893
U[1][4] = 6.4239984
U[1][5] = 6.4239984
U[2][1] = 6.42399840009
U[2][2] = 6.42399840006
U[2][3] = 6.42399840004
U[2][4] = 6.42399840003
U[2][5] = 6.42399840002
U[3][1] = 4.3909992
U[3][2] = 4.3909992
U[3][3] = 4.3909992
U[3][4] = 4.3909992
U[3][5] = 4.3909992
U[4][1] = 4.39100397399
U[4][2] = 4.39100000038
U[4][3] = 4.39099962925
U[4][4] = 4.3909995103
U[4][5] = 4.39099945979
U[5][1] = 4.8030012
U[5][2] = 4.8030012
U[5][3] = 4.8030012
U[5][4] = 4.8030012
U[5][5] = 4.8030012
U[6][1] = 4.80300120053
U[6][2] = 4.80300120072
U[6][3] = 4.80300120092
U[6][4] = 4.80300120112
U[6][5] = 4.80300120128
U[7][1] = 3.9989988
U[7][2] = 3.9989988
U[7][3] = 3.9989988
U[7][4] = 3.9989988
U[7][5] = 3.9989988
U[8][1] = 3.9989988
U[8][2] = 3.99899880001
U[8][3] = 3.99899880001
U[8][4] = 3.99899880002
U[8][5] = 3.99899880003
UD
UD[1][1] = 2.67228345379
UD[1][2] = 2.70966423521
UD[1][3] = 2.7494019673
UD[1][4] = 2.75255476409
UD[1][5] = 2.73540244361
UD[2][1] = 0
UD[2][2] = 0
UD[2][3] = 0
UD[2][4] = 0
UD[2][5] = 0
UD[3][1] = 0
UD[3][2] = 0
UD[3][3] = 0
UD[3][4] = 0
UD[3][5] = 0
UD[4][1]
UD[4][2]
UD[4][3]
UD[4][4]
UD[4][5]
UD[5][1]
UD[5][2]
UD[5][3]
UD[5][4]
UD[5][5]
UD[6][1]
UD[6][2]
UD[6][3]
UD[6][4]
UD[6][5]
UD[7][1]
UD[7][2]
UD[7][3]
UD[7][4]
UD[7][5]
UD[8][1]
UD[8][2]
UD[8][3]
UD[8][4]
UD[8][5]
UE
UE[1][1]
UE[1][2]
UE[1][3]
UE[1][4]
UE[1][5]
UE[2][1]
UE[2][2]
UE[2][3]
UE[2][4]
UE[2][5]
UE[3][1]
UE[3][2]
UE[3][3]
UE[3][4]
UE[3][5]
UE[4][1]
UE[4][2]
UE[4][3]
UE[4][4]
UE[4][5]
UE[5][1]
UE[5][2]
UE[5][3]
UE[5][4]
UE[5][5]
UE[6][1]
UE[6][2]
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
2.03299920027
2.03299920017
2.03299920011
2.03299920007
2.03299920004
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
UE[6][3]
UE[6][4]
UE[6][5]
UE[7][1]
UE[7][2]
UE[7][3]
UE[7][4]
UE[7][5]
UE[8][1]
UE[8][2]
UE[8][3]
UE[8][4]
UE[8][5]
UF
UF[1][1]
UF[1][2]
UF[1][3]
UF[1][4]
UF[1][5]
UF[2][1]
UF[2][2]
UF[2][3]
UF[2][4]
UF[2][5]
UF[3][1]
UF[3][2]
UF[3][3]
UF[3][4]
UF[3][5]
UF[4][1]
UF[4][2]
UF[4][3]
UF[4][4]
UF[4][5]
UF[5][1]
UF[5][2]
UF[5][3]
UF[5][4]
UF[5][5]
UF[6][1]
UF[6][2]
UF[6][3]
UF[6][4]
UF[6][5]
UF[7][1]
UF[7][2]
UF[7][3]
UF[7][4]
UF[7][5]
UF[8][1]
UF[8][2]
UF[8][3]
UF[8][4]
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
0
0
0
0
0
0
0
0
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0.164718147234
0.127337366017
0.0875996341943
0.0844468376785
0.101599158391
0
0
0
0
0
0
0
0
0
0
0
0
0
0
UF[8][5] = 0
UR
UR[1][1] = 0
UR[1][2] = 0
UR[1][3] = 0
UR[1][4] = 0
UR[1][5] = 0
UR[2][1] = 0
UR[2][2] = 0
UR[2][3] = 0
UR[2][4] = 0
UR[2][5] = 0
UR[3][1] = 0
UR[3][2] = 0
UR[3][3] = 0
UR[3][4] = 0
UR[3][5] = 0
UR[4][1] = 0
UR[4][2] = 0
UR[4][3] = 0
UR[4][4] = 0
UR[4][5] = 0
UR[5][1] = 0
UR[5][2] = 0
UR[5][3] = 0
UR[5][4] = 0
UR[5][5] = 0
UR[6][1] = 0.804002400754
UR[6][2] = 0.804002401053
UR[6][3] = 0.80400240138
UR[6][4] = 0.804002401696
UR[6][5] = 0.804002401963
UR[7][1] = 0
UR[7][2] = 0
UR[7][3] = 0
UR[7][4] = 0
UR[7][5] = 0
UR[8][1] = 0
UR[8][2] = 0
UR[8][3] = 0
UR[8][4] = 0
UR[8][5] = 0
Step Time 180
Comp A conc in extract = 0.165634669943
Comp B conc in extract = 0.0133922998372
Comp A conc in raffinate = 0.00334020313993
Comp B conc in raffinate = 0.388300017484
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
mu_init=0.001
ma57_pivtol=1e-08
max_iter=5000
linear_system_scaling=mc19
***********************************************************************
*******
This program contains Ipopt, a library for large-scale nonlinear
optimization.
Ipopt is released as open source code under the Eclipse Public License
(EPL).
For more information visit http://projects.coin-or.org/Ipopt
***********************************************************************
*******
This is Ipopt version 3.12, running with linear solver ma27.
Number of nonzeros in equality constraint Jacobian...:
Number of nonzeros in inequality constraint Jacobian.:
Number of nonzeros in Lagrangian Hessian.............:
82736
230
27691
Total number of variables............................:
variables with only lower bounds:
variables with lower and upper bounds:
variables with only upper bounds:
Total number of equality constraints.................:
Total number of inequality constraints...............:
inequality constraints with only lower bounds:
inequality constraints with lower and upper bounds:
inequality constraints with only upper bounds:
18130
60
6
0
18109
86
43
0
43
iter
objective
alpha_pr ls
0 -3.5999964e+01
0.00e+00
0
1 -3.1139041e+01
1.38e-01h 1
2 -2.5383395e+00
9.44e-01h 1
3 -2.4747749e+00
3.19e-02H 1
4 -2.1782249e+00
1.18e-01h 4
5 -2.1282176e+00
2.80e-02h 5
6 -1.2272009e+00
4.49e-01h 2
7 -1.2134290e+00
1.56e-02h 7
8 -1.1149148e+00
8.97e-02h 4
9 -1.1092728e+00
7.81e-03h 8
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
2.96e+01 1.01e+02
-3.0 0.00e+00
-
0.00e+00
2.58e+01 8.71e+01
-3.0 4.91e+00
-4.0 6.37e-02
1.43e+00 4.86e+00
-3.0 4.21e+00
-4.5 4.76e-01
1.38e+00 1.23e+02
-3.0 4.46e+00
-5.0 8.55e-01
1.19e+00 2.43e+02
-3.0 3.18e+00
-5.4 3.79e-01
1.15e+00 2.31e+02
-3.0 1.05e+01
-5.9 1.52e-01
4.60e-01 1.04e+02
-3.0 7.74e+00
-6.4 2.66e-01
4.43e-01 2.40e+02
-3.0 4.94e+00
-5.1 6.30e-01
3.05e-01 5.96e+00
-3.0 6.64e+00
-4.6 5.08e-01
2.94e-01 2.60e+02
-3.0 9.37e+00
-5.1 4.55e-01
iter
objective
alpha_pr ls
10 -9.9405695e-01
1.22e-01h 4
11 -9.9239010e-01
3.63e-03h 9
12 -8.9351831e-01
1.23e-01h 4
13 -8.9233422e-01
3.48e-03h 9
14 -2.3034949e-01
9.72e-01w 1
15 -3.6486769e-01
1.00e+00w 1
16 -7.6386650e-01
2.75e-01w 1
17 -8.0958613e-01
1.21e-01h 3
18 -2.3941445e-01
1.00e+00H 1
19 -2.5188317e-01
6.25e-02h 5
iter
objective
alpha_pr ls
20 -3.4692861e-01
1.00e+00H 1
21 -3.6498835e-01
6.25e-02h 5
22 -4.8218615e-01
1.00e+00H 1
23 -4.9415092e-01
3.12e-02h 6
24 -6.3119840e-01
1.00e+00h 1
25 -1.0820627e+00
9.92e-01h 1
26 -9.8012664e-01
1.00e+00h 1
27 -9.4547658e-01
7.87e-01h 1
28 -8.9416147e-01
1.00e+00h 1
29 -8.9281362e-01
1.00e+00h 1
iter
objective
alpha_pr ls
30 -8.9253208e-01
1.00e+00h 1
31 -9.3466964e-01
7.82e-01h 1
32 -9.5620446e-01
5.30e-01h 1
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
1.47e-01 1.71e+02
-3.0 1.73e+00
-4.7 9.99e-01
1.45e-01 2.35e+02
-3.0 5.78e+01
-5.2 2.09e-01
4.58e-02 1.60e+02
-3.0 2.16e+00
-4.7 1.00e+00
4.42e-02 2.11e+02
-3.0 4.69e+01
-5.2 2.71e-01
7.54e-02 4.76e+00
-3.0 2.15e+00
-4.8 1.00e+00
5.12e-01 3.29e+02
-3.0 1.34e+01
-5.3 5.31e-01
6.15e+00 2.18e+02
-3.0 1.52e+02
-5.7 1.79e-01
1.01e-02 1.47e+02
-3.0 2.49e+01
-5.3 1.00e+00
7.72e-03 4.20e+00
-3.0 2.15e+00
-4.9 1.00e+00
8.84e-03 1.83e+02
-3.0 5.50e+00
-5.4 4.42e-01
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
6.60e-03 4.56e+00
-3.0 1.78e+00
-4.9 1.00e+00
9.80e-03 4.18e+01
-3.0 1.06e+01
-5.4 6.43e-01
8.00e-03 1.61e+00
-3.0 2.71e+00
-5.0 1.00e+00
9.31e-03 2.85e+02
-3.0 1.06e+01
-5.5 7.02e-01
3.29e-01 2.52e+00
-3.0 2.71e+00
-5.0 1.00e+00
4.58e+00 1.42e+02
-3.0 1.19e+01
-5.5 6.90e-01
7.59e-01 9.96e+00
-3.0 2.18e+01
-6.0 1.00e+00
4.15e-01 6.87e+01
-3.0 9.82e+00
-6.5 1.00e+00
1.18e-01 5.10e-01
-3.0 5.95e+00
-
1.00e+00
7.48e-02 6.23e-02
-3.0 2.41e+00
-
1.00e+00
inf_pr
inf_du lg(mu)
||d||
lg(rg) alpha_du
1.67e-03 1.07e-03
-3.0 4.83e-01
-
1.00e+00
6.47e-02 1.30e+01
-4.5 7.61e+00
-
7.12e-01
9.06e-02 1.75e+00
-4.5 1.30e+01
-
6.46e-01
33 -9.7081043e-01
5.02e-01h 1
34 -9.8137254e-01
5.30e-01h 1
35 -9.8754687e-01
1.00e+00h 1
36 -9.8763031e-01
1.00e+00h 1
37 -9.9182560e-01
8.64e-01h 1
38 -9.9253681e-01
1.00e+00h 1
39 -9.9253210e-01
1.00e+00h 1
iter
objective
alpha_pr ls
40 -9.9253230e-01
1.00e+00h 1
41 -9.9253239e-01
1.00e+00h 1
42 -9.9256038e-01
1.00e+00h 1
43 -9.9256040e-01
1.00e+00h 1
1.70e-01 1.73e+01
-4.5 1.38e+01
8.51e-02 9.67e+00
-4.5 4.43e+00
-
1.00e+00
5.70e-03 3.00e-02
-4.5 1.04e+00
-
1.00e+00
4.37e-05 1.82e-05
-4.5 9.99e-02
-
1.00e+00
4.46e-03 1.24e-01
-6.8 1.17e+00
-
8.93e-01
4.24e-03 3.79e-02
-6.8 1.61e+00
-
9.47e-01
8.43e-04 3.48e-04
-6.8 5.78e-01
-
1.00e+00
inf_pr
inf_du lg(mu)
||d||
-6.0 9.06e-01
lg(rg) alpha_du
1.30e-05 2.21e-05
-6.8 7.37e-02
-
1.00e+00
7.15e-09 7.31e-08
-6.8 2.38e-03
-
1.00e+00
7.07e-06 4.15e-06
-9.0 6.26e-02
-
1.00e+00
3.02e-09 8.98e-09
-9.0 1.30e-03
-
1.00e+00
Number of Iterations....: 43
Objective...............:
9.9256039784784844e-01
Dual infeasibility......:
6.4621826033369709e-08
Constraint violation....:
3.0246985032318348e-09
Complementarity.........:
6.6029449162341676e-09
Overall NLP error.......:
6.4621826033369709e-08
Number of
Number of
Number of
Number of
Number of
Number of
Number of
Total CPU
Total CPU
(scaled)
-1.3785561081220110e-01
(unscaled)
-
8.9752536157457874e-09
3.0246985032318348e-09
9.1707568281030052e-10
8.9752536157457874e-09
objective function evaluations
objective gradient evaluations
equality constraint evaluations
inequality constraint evaluations
equality constraint Jacobian evaluations
inequality constraint Jacobian evaluations
Lagrangian Hessian evaluations
secs in IPOPT (w/o function evaluations)
secs in NLP function evaluations
EXIT: Optimal Solution Found.
Ipopt 3.12: Optimal Solution Found
=
=
=
=
=
=
=
=
=
146
44
146
146
44
44
43
46.971
1.545
-------------------Power Feed Solution---------------------Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Comp A product recovery
Comp A product recovery
Comp B product purity 1
Comp B product purity 2
Control Varialbes:
U
U[1][1]
U[1][2]
U[1][3]
U[1][4]
U[1][5]
U[2][1]
U[2][2]
U[2][3]
U[2][4]
U[2][5]
U[3][1]
U[3][2]
U[3][3]
U[3][4]
U[3][5]
U[4][1]
U[4][2]
U[4][3]
U[4][4]
U[4][5]
U[5][1]
U[5][2]
U[5][3]
U[5][4]
U[5][5]
U[6][1]
U[6][2]
U[6][3]
U[6][4]
U[6][5]
U[7][1]
U[7][2]
U[7][3]
U[7][4]
U[7][5]
U[8][1]
U[8][2]
U[8][3]
U[8][4]
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
6.42399900372
6.42399929458
6.42399934602
6.42399933866
6.42399929805
6.42399900372
6.42399929458
6.42399934602
6.42399933866
6.42399929805
4.26312341759
3.62194059303
4.32988084673
4.37949854257
4.61393403098
4.26312341759
3.62194059303
4.32988084673
4.37949854257
4.61393403098
6.42399544875
6.42397786425
4.32984533959
4.37946267711
4.61389809042
6.42399544875
6.42397786425
4.32984533959
4.37946267711
4.61389809042
0.93043073109
3.37847163124
4.32987635115
4.37949702897
4.61393324695
0.93043073109
3.37847163124
4.32987635115
4.37949702897
1
2
:
:
1
2
:
:
:
:
:
:
79.9970616196
2.4753822029
96.9985341913
3.00146580866
20.001636154
97.5240065646
17.0189549203
82.9810450797
U[8][5] = 4.61393324695
UD
UD[1][1] = 5.49356827263
UD[1][2] = 3.04552766334
UD[1][3] = 2.09412299487
UD[1][4] = 2.04450230969
UD[1][5] = 1.8100660511
UD[2][1] = 0
UD[2][2] = 0
UD[2][3] = 0
UD[2][4] = 0
UD[2][5] = 0
UD[3][1] = 0
UD[3][2] = 0
UD[3][3] = 0
UD[3][4] = 0
UD[3][5] = 0
UD[4][1] = 0
UD[4][2] = 0
UD[4][3] = 0
UD[4][4] = 0
UD[4][5] = 0
UD[5][1] = 0
UD[5][2] = 0
UD[5][3] = 0
UD[5][4] = 0
UD[5][5] = 0
UD[6][1] = 0
UD[6][2] = 0
UD[6][3] = 0
UD[6][4] = 0
UD[6][5] = 0
UD[7][1] = 0
UD[7][2] = 0
UD[7][3] = 0
UD[7][4] = 0
UD[7][5] = 0
UD[8][1] = 0
UD[8][2] = 0
UD[8][3] = 0
UD[8][4] = 0
UD[8][5] = 0
UE
UE[1][1] = 0
UE[1][2] = 0
UE[1][3] = 0
UE[1][4] = 0
UE[1][5] = 0
UE[2][1] = 2.16087558613
UE[2][2] = 2.80205870156
UE[2][3] = 2.09411849929
UE[2][4] = 2.0445007961
UE[2][5] = 1.81006526707
UE[3][1]
UE[3][2]
UE[3][3]
UE[3][4]
UE[3][5]
UE[4][1]
UE[4][2]
UE[4][3]
UE[4][4]
UE[4][5]
UE[5][1]
UE[5][2]
UE[5][3]
UE[5][4]
UE[5][5]
UE[6][1]
UE[6][2]
UE[6][3]
UE[6][4]
UE[6][5]
UE[7][1]
UE[7][2]
UE[7][3]
UE[7][4]
UE[7][5]
UE[8][1]
UE[8][2]
UE[8][3]
UE[8][4]
UE[8][5]
UF
UF[1][1]
UF[1][2]
UF[1][3]
UF[1][4]
UF[1][5]
UF[2][1]
UF[2][2]
UF[2][3]
UF[2][4]
UF[2][5]
UF[3][1]
UF[3][2]
UF[3][3]
UF[3][4]
UF[3][5]
UF[4][1]
UF[4][2]
UF[4][3]
UF[4][4]
UF[4][5]
UF[5][1]
UF[5][2]
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2.16087203116
2.80203727123
UF[5][3]
UF[5][4]
UF[5][5]
UF[6][1]
UF[6][2]
UF[6][3]
UF[6][4]
UF[6][5]
UF[7][1]
UF[7][2]
UF[7][3]
UF[7][4]
UF[7][5]
UF[8][1]
UF[8][2]
UF[8][3]
UF[8][4]
UF[8][5]
UR
UR[1][1]
UR[1][2]
UR[1][3]
UR[1][4]
UR[1][5]
UR[2][1]
UR[2][2]
UR[2][3]
UR[2][4]
UR[2][5]
UR[3][1]
UR[3][2]
UR[3][3]
UR[3][4]
UR[3][5]
UR[4][1]
UR[4][2]
UR[4][3]
UR[4][4]
UR[4][5]
UR[5][1]
UR[5][2]
UR[5][3]
UR[5][4]
UR[5][5]
UR[6][1]
UR[6][2]
UR[6][3]
UR[6][4]
UR[6][5]
UR[7][1]
UR[7][2]
UR[7][3]
UR[7][4]
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0.0
0.0
0.0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
5.49356471766
3.04550623301
0.0
0.0
0.0
0
0
0
0
UR[7][5] = 0
UR[8][1] = 0
UR[8][2] = 0
UR[8][3] = 0
UR[8][4] = 0
UR[8][5] = 0
Step Time 172.403989672
Throughput: 0.992581860477 [m/hr]
Desorbent: 2.89755745833 [m/hr]
D/F ratio: 2.91921258458
Comp A conc in extract =
Comp B conc in extract =
Comp A conc in raffinate
Comp B conc in raffinate
Optimization Completed
‘concentration_profile.png’
‘fluid_velocity_powerfeed.png’
1.09154696262
0.0337761896523
= 0.348748604486
= 1.70042895148
‘zone_4_powerfeed.png’