C MARCH 3, 2001; MARCH 24, 2005 C FUNCTION DECLARATIONS FOR THE COST FUNCTION OF A GENERALIZED C NETWORK FLOW PROBLEM. THE FUNCTIONS C(I,F), DC(I,F), DCINV(I,F) C GIVE THE FUNCTION VALUE, DERIVATIVE VALUE, DERIVATIVE INVERSE VALUE C FOR A LINEAR COST FUNCTION OR AN C INVERSE COST FUNCTION F/(U(I,1)-F) + A(I)*F C FOR ARC I WITH FLOW F. THIS ASSUMES U(I,1) IS "FINITE". C THE FUNCTION PARAMETERS A(I), CDAT(I,1) ARE SPECIFIED IN THE C ASCII FILE NL013.DAT C A(I) IS THE LINEAR COST COEFFICIENT. U(I,1) IS THE CAPACITY C OF ARC I. CDAT(I,1)=0.0 INDICATES A LINEAR COST ARC. FUNCTION C(I,F) IMPLICIT NONE INTEGER*4 MAXARCS,MAXNDAT,I,N,NA PARAMETER (MAXARCS=20000, MAXNDAT=5) REAL*8 A(MAXARCS),CDAT(MAXARCS,MAXNDAT),F,C,U(MAXARCS),LARGE,ZERO COMMON /SCALARS/N,NA,LARGE,ZERO COMMON /LCOS/A COMMON /QCO1/CDAT COMMON /UBOUND/U IF (CDAT(I,1).EQ.ZERO) THEN C=A(I)*F ELSE IF (F.GE.U(I)) THEN C=LARGE ELSE C=F/(U(I)-F) + A(I)*F END IF END IF RETURN END FUNCTION DC(I,F) IMPLICIT NONE INTEGER*4 MAXARCS,MAXNDAT,I,N,NA PARAMETER (MAXARCS=20000, MAXNDAT=5) REAL*8 A(MAXARCS),CDAT(MAXARCS,MAXNDAT),F,DC,U(MAXARCS),LARGE,ZERO COMMON /SCALARS/N,NA,LARGE,ZERO COMMON /LCOS/A COMMON /QCO1/CDAT COMMON /UBOUND/U IF (CDAT(I,1).EQ.ZERO) THEN DC=A(I) ELSE IF (F.GE.U(I)) THEN DC=LARGE ELSE DC=U(I)/(U(I)-F)**2 + A(I) END IF END IF RETURN END FUNCTION DCINV(I,T) IMPLICIT NONE INTEGER*4 MAXARCS,MAXNDAT,I PARAMETER (MAXARCS=20000, MAXNDAT=5) REAL*8 A(MAXARCS),CDAT(MAXARCS,MAXNDAT),T,DCINV,U(MAXARCS) COMMON /LCOS/A COMMON /QCO1/CDAT COMMON /UBOUND/U IF (T.LE.A(I)+1./U(I)) THEN DCINV=0.0 ELSE DCINV=U(I)-DSQRT(U(I)/(T-A(I))) END IF RETURN END