C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBROUTINE mexFunction( nlhs, plhs, nrhs, prhs ) C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C Matlab Gateway for the Sparse Hessian C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ INTEGER nlhs, nrhs INTEGER plhs(*), prhs(*) INTEGER mxGetPr, mxCreateFull, mxGetM, mxgetN INTEGER VPtr, FPtr, RPtr, HESSPtr KPP_REAL V(KPP_NVAR), F(KPP_NFIX), RCT(KPP_NREACT) KPP_REAL HESS(KPP_NHESS) C Check for the right number of input arguments IF ( nrhs .ne. 3 ) THEN CALL mexErrMsgTxt('Hessian requires 3 input vectors: &V(KPP_NVAR), F(KPP_NFIX), RCT(KPP_NREACT)') END IF C Check for the right number of output arguments IF ( nlhs .ne. 1 ) THEN CALL mexErrMsgTxt('Hessian requires 1 output vector: &HESS(KPP_NHESS)') END IF plhs(1) = mxCreateDoubleMatrix(KPP_NHESS,1,0) VPtr = mxGetPr(prhs(1)) CALL mxCopyPtrToReal8(VPtr,V,KPP_NVAR) FPtr = mxGetPr(prhs(2)) CALL mxCopyPtrToReal8(FPtr,F,KPP_NFIX) RPtr = mxGetPr(prhs(3)) CALL mxCopyPtrToReal8(RPtr,RCT,KPP_NREACT) HESSPtr = mxGetPr(plhs(1)) CALL Hessian( V, F, RCT, HESS ) CALL mxCopyReal8ToPtr(HESS, HESSPtr, KPP_NHESS) RETURN END