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