| Makefile | Makefile to build fdriver and
cdriver. |
| debug.h | Definitions of debug macros used
in PDNET. |
| pdnet.h | General use definitions and
macros used in PDNET ANSI C modules. |
| cdriver.c | C language driver: Main
procedure for invoking the PDNET FORTRAN subroutines for the solution of
linear minimum cost network flow problems. |
| pderr.c | Error message printing
procedures. |
| pdmxfl.c | FORTRAN callable functions to
test feasibility and detect early optimality of minimum cost network
problems in PDNET. |
| pdrdmc.c | Functions to read a
DIMACS-format network data file. It includes an interface suitable for
use with FORTRAN programs. |
| fdriver.f | Driver program for pdnet.f:
Fortran subroutines for the solution of linear minimum cost network flow
problems. |
| dblas1.f | FORTRAN 77 reference
implementation for the Level 1 BLAS. |
| dnsubs.f | Constructs the layered network
of the residual network with respect to the current flow. |
| pdattx.f | Computes the product
y=a*(1/teta)*a'x. |
| pdbdst.f | Builds a data structure for
accessing each individual tree in a spanning forest from subroutine
pdmxst. Vertices are listed in ascending order of indices in each tree
list. |
| pdbkst.f | Given a spanning tree defined by
vertices in dfs order and parent edges, computes the solution the
system s'x = b (back substitution). |
| pdchkp.f | Checks validity of parameters. |
| pdchmf.f | Checks optimality of flow by
using max flow criterion. |
| pdckfs.f | Checks if the network has enough
capacity for the proposed flow. |
|
pdcosn.f |
Computes approximate cosine of
directions. |
|
pdcrhs.f |
Computes the right-hand side of the normal equations to be solved. Predefines the sets l and u. |
| pddflt.f | Sets in info array default
values for PDNET internal parameters. |
| pddkey.f | Decreases the key of a node in
the Fibonacci heap and performs multispliting and multilinking to
restore the invariants of the heap. |
| pddlob.f | Computes dual objective value for a given solution of an LP with upper bounds and 0 lower bounds. |
| pddlof.f | Based on a tentative optimal
dual solution, determines the corresponding optimal face. Assumes the
given dual solution is interior to the optimal face. |
|
pddlot.f |
Orthogonally project current
interior dual solution onto hyperplane defined by spanning forest. |
| pddmin.f | Deletes the node with minimum
key in the Fibonnacci heap. |
| pddstr.f | Constructs an additional data
structure used by the primal-dual interior-point algorithm. |
| pdfdst.f | Returns the canonical element of
the set containing x. Each set is represented by a rooted tree.
The nodes of the tree are the elements of the set; the canonical
element is the root of the tree. Each node x has a pointer p(x)
to its parent in the tree; the root points to itself. |
| pdginf.f | Gets values of all parameters
and statistics from arrays info() and dinfo(). |
| pdhprm.f | Picks-up a minimum spanning tree
from a directed network. It uses a Fibonacci heap data structure to
maintain the set of nodes that have not yet been included in the
spanning tree. |
| pdierr.f | Prints error message
corresponding to code ierror. |
| pdinst.f | Inserts a new tree in the
Fibonacci heap and performs multilinking to restore the heap invariants. |
| pdiqrd.f | Constructs the diagonal matrix
diag and the vector ndiag wich stores the nondiagonal elements of the matrix f. |
| pdivec.f | Performs the operation x =
const. It is based on dcopy dblas routine. |
| pdlink.f | Links two subtrees in a Fiboncci
heap by updating the arrays pred, rank, llink, rlink and first. |
| pdlkst.f | Forms a new set that is the
union of the two sets whose canonical elements are x and y,
destroying the two old sets. select and return the canonical
element of the new set. This operation assumes x != y. This
routine uses a union by rank heuristic. |
| pdmkob.f | Computes the current value of
the objective function. |
| pdmxst.f | Given a graph g and a ordering
of the edges, this subroutine applies Kruskal's algorithm and builds a
maximum spanning forest. |
| pdnet.f | Main subroutine for the PDNET
package. |
| pdodst.f | Given a spanning tree or forest,
this subroutine finds permutations for vertices and tree edges that
yield an incidence matrix with a block triangular structure. |
| pdoptm.f | Checks the optimality of the
sets b, l, and u indicated by the primal-dual interior point method. If
the sets are optimal, then the optimal flows are computed. |
| pdout.f | Prints summary report. |
| pdpcgd.f | Solves the system a*teta*at x =
b by means of a preconditioned conjugate gradient (PCG) algorithm. |
| pdpdat.f | Finds the data characteristics
of the problem. |
| pdphdr.f | Print report header with program
identification, problem instance information, run-time and compile-time
parameters. |
| pdpntr.f | Distributes the auxiliary
vectors over a working vector. |
| pdprtb.f | Perturbs and transforms the data
to double precision. |
| pdpryx.f | Computes the scalar product
alfa=x'y. This subroutine is based on the dblas ddot routine. |
| pdresd.f | Computes the l1 norm of z. |
| pdsbvc.f | Performs the operation z=x-y.
The vectors x, z and y have dimension dim. This subroutine is based on
the dblas daxpy routine. |
| pdsedg.f | Sorts edges according to weights. |
|
pdsinf.f |
Sets values of all parameters
and statistics from arrays info() and dinfo(). |
| pdsout.f | Prints summary report at the end
of each iteration. |
| pdsplt.f | Splits a tree into two subtrees
in a Fibonacci heap by updating the arrays pred, rank, llink, rlink,
first and lost. |
|
pdsprm.f |
Sets values of external
parameters stored in info(). |
|
pdstat.f |
Gets output statistics from
info() array. |
|
pdsteq.f |
Performs the operation x =
y. The vectors x and y have both dimension dim. This
subroutine is based on dcopy dblas routine. |
| pdstpt.f | Computes the starting values for
the primal-dual interior point algorithm. |
| pdsviq.f | Solves a system with the IQRD
matrix. |
| pdtpia.f | Uses Tapia indicators to
determine edge classes = (low,active,cap). |
|
pdtrfm.f |
Removes the lower bounds from
the formulation. |
| pdupsl.f | Updates the primal and dual
solutions in the network primal-dual interior-point algorithm.
Furthermore, this subroutine updates the parameter miu. |
| pdupv1.f | Updates the vector x by using
the formula x = x + alfa*y, where y is a scalar. This subroutine is
based on the dblas daxpy routine. |
| pdupv2.f | Updates the vector x by using
the formula x = y + alfa*x, where alfa is a scalar. |
| pdwrkd.f | Computes the size requiremnt for
double precision workspace array. |