                   ****************************
                   *                          *
                   *  USING PASA WITH CUTEst  *
                   *                          *
                   ****************************

                (Last modified on 15 February 2022)

WHAT IS PASA?
-------------

The PASA package is for solving optimization problems whose feasible
set is a polyhedron (a system of linear equalities and inequalities).
It is the main component of the optimization package SuiteOPT. Any
polyhedral constrained optimization problem can be fed to pasa, and it
will automatically call any of the solvers in CGDESCENT, NAPHEAP, or PPROJ,
based on an analysis of the problem structure, to solve the input problem.

HOW DO I GET SUITEOPT?
------------------

It can be downloaded from the web site of William W. Hager:
http://users.clas.ufl.edu/hager/papers/Software/

INSTALLING PASA IN CUTEst
-------------------------

Download and install CUTEst package of Nicholas Gould, Dominique Orban, and
Philippe Toint.  If an existing version of CUTEst is already installed,
be sure to update to a version after August, 2019, since CUTEst was
modified at that date to enable use with PASA.  Currently, CUTEst can be
downloaded from https://github.com/ralna/CUTEst/wiki
Install the packages archdefs, cutest, and sifdecode, as well as the
CUTE library of test problems. Assuming the CUTEst environment variables
have been set up by the user, go to the file $CUTEST/bin/sys/$MYARCH and
add two lines to provide your BLAS and LAPACK information.  This same
information appears in your Userconfig.mk file except that quotation marks
should be inserted around the information.

BLAS="... -lgfortran -lpthread"
LAPACK="..."

Another environment variable which should be set is LD_LIBRARY_PATH.
This provides the path to dynamic libraries that are loaded at run time.
The command for setting up this environment variable is something like
the following (the full path name should be in quotes):

setenv LD_LIBRARY_PATH "path"

If there are multiple paths in the load library, then each path is
separated by a colon.

Once this setup is complete, the installation of pasa and cg descent in
CUTEst is completed by typing "make cute" in the top level directory of
SuiteOPT. As the codes are compiled and installed into CUTEst, the
following two files are created:

    SuiteOPT/CGDESCENT/CUTEst/runcutest
    SuiteOPT/PASA/CUTEst/runcutest

These files contain aliases for running either pasa or cg descent in CUTEst.
If these aliases are placed in a file such as ".cshrc" or ".bashrc" that
is executed at startup, then the aliases can be used in any window that
is opened subsequently. The command for solving a polyhedral constrained
optimization problem PROB.SIF using the PASA alias is "pasarun PROB".
If the problem is unconstrained, then it could also be solved using the
command "cgrun PROB"; in either case, when the problem is unconstrained,
it is solved using cg_descent.

The default parameter values and their documentation appear in the
files pasa_default.c, pproj_default.c, cg_default.c, and napheap_default.c,
which are found in the "Source" directories for PASA, PPROJ, CG, and NAPHEAP
respectively.  New values can be set in the pasa_main.c file of this directory,
right before execution of the call to pasa.  Of course, when new parameter
values are set, then the pasa_main must be recompiled by typing "make".
A future version of pasa will check for a spec file, and when parameter
values are read from a spec file, there would be no need to type "make" after
changing parameter values.
=====================================
