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) && !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
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: engPutVariable((Engine *)mengine,obj->name,mat);
29:
30: VecRestoreArray(vec,&array);
31: return(0);
32: }
33: EXTERN_C_END
35: EXTERN_C_BEGIN
38: int VecMatlabEngineGet_Default(PetscObject obj,void *mengine)
39: {
40: int ierr,n;
41: Vec vec = (Vec)obj;
42: PetscScalar *array;
43: mxArray *mat;
46: VecGetArray(vec,&array);
47: VecGetLocalSize(vec,&n);
48: mat = engGetVariable((Engine *)mengine,obj->name);
49: if (!mat) SETERRQ1(1,"Unable to get object %s from matlab",obj->name);
50: PetscMemcpy(array,mxGetPr(mat),n*sizeof(PetscScalar));
51: VecRestoreArray(vec,&array);
52: return(0);
53: }
54: EXTERN_C_END
55: #endif