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: #undef __FUNCT__
11: int VecMatlabEnginePut_Default(PetscObject obj,void *mengine)
12: {
13: int ierr,n;
14: Vec vec = (Vec)obj;
15: PetscScalar *array;
16: mxArray *mat;
19: VecGetArray(vec,&array);
20: VecGetLocalSize(vec,&n);
21: #if !defined(PETSC_USE_COMPLEX)
22: mat = mxCreateDoubleMatrix(n,1,mxREAL);
23: #else
24: mat = mxCreateDoubleMatrix(n,1,mxCOMPLEX);
25: #endif
26: PetscMemcpy(mxGetPr(mat),array,n*sizeof(PetscScalar));
27: PetscObjectName(obj);
28: mxSetName(mat,obj->name);
29: engPutArray((Engine *)mengine,mat);
30:
31: VecRestoreArray(vec,&array);
32: return(0);
33: }
34: EXTERN_C_END
36: EXTERN_C_BEGIN
37: #undef __FUNCT__
39: int VecMatlabEngineGet_Default(PetscObject obj,void *mengine)
40: {
41: int ierr,n;
42: Vec vec = (Vec)obj;
43: PetscScalar *array;
44: mxArray *mat;
47: VecGetArray(vec,&array);
48: VecGetLocalSize(vec,&n);
49: mat = engGetArray((Engine *)mengine,obj->name);
50: if (!mat) SETERRQ1(1,"Unable to get object %s from matlab",obj->name);
51: PetscMemcpy(array,mxGetPr(mat),n*sizeof(PetscScalar));
52: VecRestoreArray(vec,&array);
53: return(0);
54: }
55: EXTERN_C_END
56: #endif