* SUBROUTINE PLMINN ALL SYSTEMS 97/12/01 C PORTABILITY : ALL SYSTEMS C 97/12/01 LU : ORIGINAL VERSION * * PURPOSE : * DETERMINATION OF THE NEW ACTIVE LINEAR CONSTRAINT. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NC NUMBER OF CONSTRAINTS. * RI CF(NC) VECTOR CONTAINING VALUES OF THE CONSTRAINT FUNCTIONS. * RO CFD(NC) VECTOR CONTAINING INCREMENTS OF THE CONSTRAINT * FUNCTIONS. * II IC(NC) VECTOR CONTAINING TYPES OF CONSTRAINTS. * RI CL(NC) VECTOR CONTAINING LOWER BOUNDS FOR CONSTRAINT FUNCTIONS. * RI CU(NC) VECTOR CONTAINING UPPER BOUNDS FOR CONSTRAINT FUNCTIONS. * RI CG(NF*NC) MATRIX WHOSE COLUMNS ARE NORMALS OF THE LINEAR * CONSTRAINTS. * RI S(NF) DIRECTION VECTOR. * RI EPS9 TOLERANCE FOR ACTIVE CONSTRAINTS. * RA PAR AUXILIARY VARIABLE. * II KBC SPECIFICATION OF LINEAR CONSTRAINTS. KBC=0-NO LINEAR * CONSTRAINTS. KBC=1-ONE SIDED LINEAR CONSTRAINTS. KBC=2=TWO * SIDED LINEAR CONSTRAINTS. * IO INEW INDEX OF THE NEW ACTIVE CONSTRAINT. * IO KNEW SIGNUM OF THE NEW ACTIVE NORMAL. * * SUBPROGRAMS USED : * RF MXVDOT DOT PRODUCT OF TWO VECTORS. * SUBROUTINE PLMINN(NF,NC,CF,CFD,IC,CL,CU,CG,S,EPS9,PAR,KBC,INEW, & KNEW) INTEGER NF,NC,IC(*),KBC,INEW,KNEW DOUBLE PRECISION CF(*),CFD(*),CL(*),CU(*),CG(*),S(*),EPS9,PAR DOUBLE PRECISION TEMP,POM,MXVDOT INTEGER JCG,KC IF (KBC.GT.0) THEN JCG=1 DO 1 KC=1,NC IF (IC(KC).GT.0) THEN TEMP=MXVDOT(NF,CG(JCG),S) CFD(KC)=TEMP TEMP=CF(KC)+TEMP IF (IC(KC).EQ.1.OR.IC(KC).GE.3) THEN POM=TEMP-CL(KC) IF (POM.LT.MIN(PAR,-EPS9*MAX(ABS(CL(KC)),1.0D 0))) THEN INEW=KC KNEW= 1 PAR=POM ENDIF ENDIF IF (IC(KC).EQ.2.OR.IC(KC).GE.3) THEN POM=CU(KC)-TEMP IF (POM.LT.MIN(PAR,-EPS9*MAX(ABS(CU(KC)),1.0D 0))) THEN INEW=KC KNEW=-1 PAR=POM ENDIF ENDIF ENDIF JCG=JCG+NF 1 CONTINUE ENDIF RETURN END