Re: Filing
From: mark.e.sale@gsk.com
Subject: Re: [NMusers] Filing
Date: 10/22/2003 8:54 AM
Paul,
Re: your last comment, below is Fortran code for this. Put a call to
this (CALL WRITERES) right before the STOP in cfiles.for and recompile
including this source code file. By putting just before STOP (after all
other files are closed) you can be sure not to change anything else. (please
forgive my non-standard use of actual comments in fortran code). We have not
tested this with any compiler other than G77.
SUBROUTINE WRITERES
C BY MARK SALE, GLAXOSMITHKLINE, LAST REVISED 8/13/2003
INCLUDE 'NSIZES'
COMMON /ROCM9/ IERE,IERC
C IERE AND RC AS INTERNAL ERROR CODES FOR ESTIMATION AND COVARIANCE
INTEGER IERE,IERC
C MIN IS 0,1 MINIMIZED SUCCESSFULLY
INTEGER MIN
C CORR IS 0,1 PASSED CORRELATION TEST, COV IS 0,1 PASSED COVARIANCE TEST
INTEGER I,N,CORR,P,COV
C ABSOLUTE VALUE OF OFFDIAGONAL CORRELATION MATRIX
REAL ABSVAL
COMMON /CM2/ NETA,NEPS,NRE2
COMMON /CM1/ NTHETA,NTH,DB(LTH),LB(LTH),UB(LTH),ITR(LTH)
C OBJECTIVE FUNCTION VALUE
COMMON /ROCM8/ OBJECT
DOUBLE PRECISION OBJECT
C CORRELATION MATRIX IS CORRM
COMMON /CM12/ COVM(LPAR3),COVINM(LPAR3),STHTA(LTH),SEN(LVR,LVR),
1 CORRM(LPAR3),NVLS,VLS(LPAR)
COMMON /CM4/ MAXFN,NSIG,OPRPT,OPINT,OPFLP,OPETA1,IDUM(8),OPTWO
MIN = 1
C ERROR CODES 0 = OK, 139 = BOUNDARY, OTHER IS ERROR
IF(IERE.EQ.0.OR.IERE.EQ.139) MIN = 0
C IF IT FAILS MINIMZATION, IT FAILS COVARIANCE
IF(MIN.EQ.0.AND.IERC.EQ.0) THEN
COV=0
ELSE
COV = 1
END IF
C open OUTPUT file
OPEN(UNIT= 44,FILE = 'GSKNOUT')
WRITE(44,8) OBJECT
8 FORMAT ('OBJECTIVEFUNCTIONVALUE=',F16.2)
WRITE(44,'(A13,I3)'), 'MINIMIZATION=', MIN
WRITE(44,'(A11,I3)'), 'COVARIANCE=', COV
C AND THE CORRELATION, FIRST HOW MANY EFFECTS (DIMENSION OF MATRIX)
NEFF = NTHETA + (NETA*(NETA+1))/2 + (NEPS*(NEPS+1))/2
CORR = 0
P = 0
DO 66 I = 1,NEFF
DO 65 N = 1,I
P = P + 1
C CORRELATION MATRIX IS IN CORRM, LOWER TRIANGULAR
ABSVAL = ABS(CORRM(P))
IF((ABSVAL.GT.0.95).AND.(I.NE.N).AND.(ABSVAL.LE.1.00)) CORR = 1
65 CONTINUE
66 CONTINUE
C Correlation?
IF(MIN.EQ.0.AND.COV.EQ.0.AND.CORR.EQ.0) THEN
WRITE(44,'(A15)') 'CORRELATION= 0'
ELSE
WRITE(44,'(A15)') 'CORRELATION= 1'
END IF
CLOSE(44)
END
Mark