* SUBROUTINE PC1F01 ALL SYSTEMS 97/12/01 C PORTABILITY : ALL SYSTEMS C 97/12/01 LU : ORIGINAL VERSION * * PURPOSE : * COMPUTATION OF THE VALUE AND THE GRADIENT OF THE CONSTRAINT FUNCTION. * * PARAMETERS : * II NF NUMBER OF VARIABLES. * II NC NUMBER OF CONSTRAINTS. * RI X(NF) VECTOR OF VARIABLES. * RI FC VALUE OF THE SELECTED CONSTRAINT FUNCTION. * RI CF(NC) VECTOR CONTAINING VALUES OF CONSTRAINT FUNCTIONS. * RI CL(NC) VECTOR CONTAINING LOWER BOUNDS FOR CONSTRAINT FUNCTIONS. * RI CU(NC) VECTOR CONTAINING UPPER BOUNDS FOR CONSTRAINT FUNCTIONS. * II IC(NC) VECTOR CONTAINING TYPES OF CONSTRAINTS. * RI GC(NF) GRADIENT OF THE SELECTED CONSTRAINT FUNCTION. * RI CG(NF*NC) MATRIX WHOSE COLUMNS ARE GRADIENTS OF CONSTRAINT * FUNCTIONS. * RO CMAX MAXIMUM CONSTRAINT VIOLATION. * II KD DEGREE OF REQUIRED DERVATIVES. * II LD DEGREE OF PREVIOUSLY COMPUTED DERIVATIVES. * * SUBPROGRAMS USED : * S MXVCOP COPYING OF A VECTOR. * SUBROUTINE PC1F01(NF,NC,X,FC,CF,CL,CU,IC,GC,CG,CMAX,KD,LD, + PCON,PDCON) DOUBLE PRECISION FC,CMAX INTEGER KD,LD,NC,NF DOUBLE PRECISION CF(*),CG(*),CL(*),CU(*),GC(*),X(*) INTEGER IC(*) DOUBLE PRECISION POM,TEMP INTEGER KC EXTERNAL PCON,PDCON IF (KD.LE.LD) RETURN IF (LD.LT.0) CMAX = 0.0D0 DO 20 KC = 1,NC IF (KD.LT.0) GO TO 20 IF (LD.GE.0) THEN FC = CF(KC) GO TO 10 ELSE CALL PCON(NF,KC,X,FC) CF(KC) = FC END IF IF (IC(KC).GT.0) THEN POM = 0.0D0 TEMP = CF(KC) IF (IC(KC).EQ.1.OR.IC(KC).GE.3) POM = MIN(POM, + TEMP - CL(KC)) IF (IC(KC).EQ.2.OR.IC(KC).GE.3) POM = MIN(POM, + CU(KC) - TEMP) IF (POM.LT.0.0D0) THEN CMAX = MAX(CMAX,-POM) END IF END IF 10 IF (KD.LT.1) GO TO 20 IF (LD.GE.1) THEN CALL MXVCOP(NF,CG((KC - 1) * NF + 1),GC) GO TO 20 ELSE CALL PDCON(NF,KC,X,GC) CALL MXVCOP(NF,GC,CG((KC - 1) * NF + 1)) END IF 20 CONTINUE LD = KD RETURN END