source: issm/trunk/src/c/matlab/io/matlabio.h@ 13395

Last change on this file since 13395 was 13395, checked in by Mathieu Morlighem, 12 years ago

merged trunk-jpl and trunk for revision 13393

File size: 4.4 KB
Line 
1/*\file matlabio.h
2 *\brief: I/O for ISSM in matlab mode
3 */
4
5#ifndef _MATLAB_IO_H_
6#define _MATLAB_IO_H_
7
8#ifdef HAVE_CONFIG_H
9#include <config.h>
10#else
11#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
12#endif
13
14#include <mex.h>
15#include "../../classes/classes.h"
16#include "../../Container/Container.h"
17#include "../../include/include.h"
18
19void WriteData(mxArray** pdataref,SeqMat<double>* matrix);
20void WriteData(mxArray** pdataref,double* matrix, int M,int N);
21void WriteData(mxArray** pdataref,int* matrix, int M,int N);
22void WriteData(mxArray** pdataref,SeqVec<double>* vector);
23void WriteData(mxArray** pdataref,double* vector, int M);
24void WriteData(mxArray** pdataref,int integer);
25void WriteData(mxArray** pdataref,bool boolean);
26void WriteData(mxArray** pdataref,double scalar);
27void WriteData(mxArray** pdataref,char* string);
28void WriteData(mxArray** pdataref,BamgGeom* bamggeom);
29void WriteData(mxArray** pdataref,BamgMesh* bamgmesh);
30
31void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref);
32void FetchData(double** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
33void FetchData(int** pmatrix,int* pM,int *pN,const mxArray* dataref);
34void FetchData(bool** pmatrix,int* pM,int *pN,const mxArray* dataref);
35void FetchData(bool** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
36void FetchData(Matrix<double>** pmatrix,const mxArray* dataref);
37void FetchData(int** pvector,int* pM,const mxArray* dataref);
38void FetchData(float** pvector,int* pM,const mxArray* dataref);
39void FetchData(double** pvector,int* pM,const mxArray* dataref);
40void FetchData(bool** pvector,int* pM,const mxArray* dataref);
41void FetchData(Vector<double>** pvector,const mxArray* dataref);
42void FetchData(char** pstring,const mxArray* dataref);
43void FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref);
44void FetchData(double* pscalar,const mxArray* dataref);
45void FetchData(int* pinteger,const mxArray* dataref);
46void FetchData(bool* pbool,const mxArray* dataref);
47void FetchData(BamgGeom** bamggeom,const mxArray* dataref);
48void FetchData(BamgMesh** bamgmesh,const mxArray* dataref);
49void FetchData(BamgOpts** bamgopts,const mxArray* dataref);
50void FetchData(Options** poptions,int istart, int nrhs,const mxArray** pdataref);
51void FetchData(DataSet** pcontours,const mxArray* dataref);
52
53Option* OptionParse(char* name, const mxArray* prhs[]);
54GenericOption<double>* OptionDoubleParse( char* name, const mxArray* prhs[]);
55GenericOption<double*>* OptionDoubleArrayParse( char* name, const mxArray* prhs[]);
56GenericOption<bool*>* OptionLogicalParse( char* name, const mxArray* prhs[]);
57GenericOption<char*>* OptionCharParse( char* name, const mxArray* prhs[]);
58GenericOption<Options**>* OptionStructParse( char* name, const mxArray* prhs[]);
59GenericOption<Options*>* OptionCellParse( char* name, const mxArray* prhs[]);
60
61mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
62void SetStructureField(mxArray* dataref,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
63int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void ));
64
65/*Matlab to Matrix routines: */
66Matrix<double>* MatlabMatrixToMatrix(const mxArray* mxmatrix);
67Vector<double>* MatlabVectorToVector(const mxArray* mxvector);
68
69/*Matlab to double* routines: */
70int MatlabVectorToDoubleVector(double** pvector,int* pvector_rows,const mxArray* mxvector);
71int MatlabMatrixToDoubleMatrix(double** pmatrix,int* pmatrix_rows,int* pmatrix_cols,const mxArray* mxmatrix);
72int MatlabNArrayToNArray(double** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix);
73int MatlabNArrayToNArray(bool** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix);
74int MatlabNArrayToNArray(char** pmatrix,int* pmatrix_numel,int* pmatrix_ndims,int** pmatrix_size,const mxArray* mxmatrix);
75
76/*Matlab to SeqMat routines: */
77SeqMat<double>* MatlabMatrixToSeqMat(const mxArray* dataref);
78SeqVec<double>* MatlabVectorToSeqVec(const mxArray* dataref);
79
80/*Matlab to Petsc routines: */
81#ifdef _HAVE_PETSC_
82int MatlabMatrixToPetscMat(Mat* matrix,int* prows,int* pcols, const mxArray* mxmatrix);
83PetscMat* MatlabMatrixToPetscMat(const mxArray* mxmatrix);
84int MatlabVectorToPetscVec(Vec* pvector,int* pvector_rows,const mxArray* mxvector);
85PetscVec* MatlabVectorToPetscVec(const mxArray* mxvector);
86#endif
87
88#endif /* _IO_H_ */
Note: See TracBrowser for help on using the repository browser.