Actual source code: gcreatev.c

  1: /*$Id: gcreatev.c,v 1.89 2001/08/07 03:02:17 balay Exp $*/

 3:  #include petscvec.h

  5: #if defined(PETSC_HAVE_MATLAB_ENGINE) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_SINGLE)
  6: #include "engine.h"   /* Matlab include file */
  7: #include "mex.h"      /* Matlab include file */
  8: EXTERN_C_BEGIN
  9: int VecMatlabEnginePut_Default(PetscObject obj,void *engine)
 10: {
 11:   int         ierr,n;
 12:   Vec         vec = (Vec)obj;
 13:   PetscScalar *array;
 14:   mxArray     *mat;

 17:   VecGetArray(vec,&array);
 18:   VecGetLocalSize(vec,&n);
 19: #if !defined(PETSC_USE_COMPLEX)
 20:   mat  = mxCreateDoubleMatrix(n,1,mxREAL);
 21: #else
 22:   mat  = mxCreateDoubleMatrix(n,1,mxCOMPLEX);
 23: #endif
 24:   PetscMemcpy(mxGetPr(mat),array,n*sizeof(PetscScalar));
 25:   PetscObjectName(obj);
 26:   mxSetName(mat,obj->name);
 27:   engPutArray((Engine *)engine,mat);
 28: 
 29:   VecRestoreArray(vec,&array);
 30:   return(0);
 31: }
 32: EXTERN_C_END

 34: EXTERN_C_BEGIN
 35: int VecMatlabEngineGet_Default(PetscObject obj,void *engine)
 36: {
 37:   int         ierr,n;
 38:   Vec         vec = (Vec)obj;
 39:   PetscScalar *array;
 40:   mxArray     *mat;

 43:   VecGetArray(vec,&array);
 44:   VecGetLocalSize(vec,&n);
 45:   mat  = engGetArray((Engine *)engine,obj->name);
 46:   if (!mat) SETERRQ1(1,"Unable to get object %s from matlab",obj->name);
 47:   PetscMemcpy(array,mxGetPr(mat),n*sizeof(PetscScalar));
 48:   VecRestoreArray(vec,&array);
 49:   return(0);
 50: }
 51: EXTERN_C_END
 52: #endif