!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBROUTINE mexFunction( nlhs, plhs, nrhs, prhs ) !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! Matlab Gateway for the Sparse Jacobian Function Jac_SP !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ USE cbm_Model INTEGER nlhs, nrhs INTEGER plhs(*), prhs(*) INTEGER mxGetPr, mxCreateFull, mxGetM, mxgetN INTEGER VPtr, FPtr, RPtr, JVSPtr REAL(kind=dp) V(32), F(1), RCT(81) REAL(kind=dp) JVS(300) ! Check for the right number of input arguments IF ( nrhs .ne. 3 ) THEN CALL mexErrMsgTxt('Jac_SP requires 3 input vectors: & &V(32), F(1), RCT(81)') END IF ! Check for the right number of output arguments IF ( nlhs .ne. 1 ) THEN CALL mexErrMsgTxt('Jac_SP requires 1 output vector: & &JVS(300)') END IF plhs(1) = mxCreateDoubleMatrix(300,1,0) VPtr = mxGetPr(prhs(1)) CALL mxCopyPtrToReal8(VPtr,V,32) FPtr = mxGetPr(prhs(2)) CALL mxCopyPtrToReal8(FPtr,F,1) RPtr = mxGetPr(prhs(3)) CALL mxCopyPtrToReal8(RPtr,RCT,81) JVSPtr = mxGetPr(plhs(1)) CALL Jac_SP( V, F, RCT, JVS ) CALL mxCopyReal8ToPtr(JVS, JVSPtr, 300) END SUBROUTINE mexFunction