Changeset 3128
- Timestamp:
- 02/24/10 15:58:48 (15 years ago)
- Location:
- issm/trunk/src/mex
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/mex/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
r2627 r3128 1 /*!\file InterpFromMeshToMesh2d.c 2 * \brief: data interpolation from a list of (x,y,values) into mesh grids 3 4 InterpFromMeshToMesh2d.c 5 6 usage: 7 data_mesh=InterpFromMeshToMesh2d(index,x,y,data,x_mesh,y_mesh); 8 9 where: 10 11 input: 12 x,y: coordinates of matrix data 13 data - matrix holding the data to be interpolated onto the mesh. 14 x_mesh,y_mesh: coordinates of the mesh grids onto which we interpolate. 15 16 output: 17 data_mesh: vector of mesh interpolated data. 18 19 */ 20 1 /*\file InterpFromMeshToMesh2d.c 2 *\brief: bamg module. 3 */ 21 4 #include "./InterpFromMeshToMesh2d.h" 22 5 23 void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) 6 void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){ 24 7 25 8 /*input: */ 26 double* index_data=NULL; 27 int index_data_rows; 9 double* index=NULL; 28 10 29 11 double* x_data=NULL; 30 12 int x_data_rows; 31 13 32 14 double* y_data=NULL; 33 15 int y_data_rows; … … 37 19 int data_cols; 38 20 39 double* x_ prime=NULL;40 double* y_ prime=NULL;41 42 int x_ prime_rows;43 int y_ prime_rows;21 double* x_interp=NULL; 22 double* y_interp=NULL; 23 24 int x_interp_rows; 25 int y_interp_rows; 44 26 45 27 double default_value; … … 48 30 int nods_data; 49 31 int nels_data; 50 int nods_prime; 32 int nods_interp; 33 int verbose=0; 51 34 52 35 /* output: */ 53 Vec data_prime=NULL;36 double* data_interp=NULL; 54 37 55 38 /*Boot module: */ … … 60 43 61 44 /*Input datasets: */ 62 FetchData(&index_data,&index_data_rows,NULL,INDEXHANDLE); 45 if (verbose) printf("Fetching inputs\n"); 46 FetchData(&index,&nels_data,NULL,INDEXHANDLE); 63 47 FetchData(&x_data,&x_data_rows,NULL,XHANDLE); 64 48 FetchData(&y_data,&y_data_rows,NULL,YHANDLE); 65 49 FetchData(&data,&data_rows,&data_cols,DATAHANDLE); 66 FetchData(&x_ prime,&x_prime_rows,NULL,XPRIMEHANDLE);67 FetchData(&y_ prime,&y_prime_rows,NULL,YPRIMEHANDLE);50 FetchData(&x_interp,&x_interp_rows,NULL,XINTERPHANDLE); 51 FetchData(&y_interp,&y_interp_rows,NULL,YINTERPHANDLE); 68 52 FetchData(&default_value,DEFAULTHANDLE); 69 53 70 54 /*some checks*/ 55 if (verbose) printf("Checking inputs\n"); 71 56 if (x_data_rows!=y_data_rows){ 72 57 throw ErrorException(__FUNCT__,"vectors x and y should have the same length!"); 73 58 } 74 if (x_ prime_rows!=y_prime_rows){75 throw ErrorException(__FUNCT__,"vectors x_ prime and y_primeshould have the same length!");59 if (x_interp_rows!=y_interp_rows){ 60 throw ErrorException(__FUNCT__,"vectors x_interp and y_interp should have the same length!"); 76 61 } 77 62 78 63 /*get number of elements and number of nodes in the data*/ 79 nels_data=index_data_rows;80 64 nods_data=x_data_rows; 81 nods_ prime=x_prime_rows;65 nods_interp=x_interp_rows; 82 66 83 67 /* Run core computations: */ 84 InterpFromMeshToMesh2dx(&data_prime,index_data,x_data,y_data,nods_data,nels_data,data,data_rows,x_prime,y_prime,nods_prime,default_value); 68 if (verbose) printf("Call core\n"); 69 InterpFromMeshToMesh2dx(&data_interp,index,x_data,y_data,nods_data,nels_data,data,data_rows,data_cols,x_interp,y_interp,nods_interp,default_value); 85 70 86 71 /*Write data: */ 87 WriteData(DATA PRIME,data_prime);72 WriteData(DATAINTERP,data_interp,nods_interp,data_cols); 88 73 89 74 /*end module: */ … … 93 78 void InterpFromMeshToMesh2dUsage(void) 94 79 { 95 _printf_("INTER PFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point\n");80 _printf_("INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point\n"); 96 81 _printf_("\n"); 97 82 _printf_(" This function is a multi-threaded mex file that interpolates a field\n"); … … 99 84 _printf_("\n"); 100 85 _printf_(" Usage:\n"); 101 _printf_(" data_ prime=InterpFromMeshToMesh2d(index,x,y,data,x_prime,y_prime,default_value);\n");86 _printf_(" data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,default_value);\n"); 102 87 _printf_("\n"); 103 88 _printf_(" index: index of the mesh where data is defined\n"); 104 89 _printf_(" x,y: coordinates of the nodes where data is defined\n"); 105 _printf_(" data: matrix holding the data to be interpolated onto the mesh. \n");106 _printf_(" x_ prime,y_prime: coordinates of the points onto which we interpolate.\n");90 _printf_(" data: matrix holding the data to be interpolated onto the mesh. (one column per field)\n"); 91 _printf_(" x_interp,y_interp: coordinates of the points onto which we interpolate.\n"); 107 92 _printf_(" default_value: default value if no data is found (holes).\n"); 108 _printf_(" data_ prime: vector of mesh interpolated data.\n");93 _printf_(" data_interp: vector of mesh interpolated data.\n"); 109 94 _printf_("\n"); 110 95 _printf_(" Example:\n"); -
issm/trunk/src/mex/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h
r2290 r3128 3 3 */ 4 4 5 #ifndef _INTERPFROMMESH 2D_H6 #define _INTERPFROMMESH 2D_H5 #ifndef _INTERPFROMMESHTOMESH2d_H 6 #define _INTERPFROMMESHTOMESH2d_H 7 7 8 8 /* local prototypes: */ … … 14 14 #define __FUNCT__ "InterpFromMeshToMesh2d" 15 15 16 #undef CLEANUP17 #define CLEANUP InterpFromMeshToMesh2dLocalCleanup();18 19 16 20 17 /* serial input macros: */ … … 23 20 #define YHANDLE prhs[2] 24 21 #define DATAHANDLE prhs[3] 25 #define X PRIMEHANDLE prhs[4]26 #define Y PRIMEHANDLE prhs[5]22 #define XINTERPHANDLE prhs[4] 23 #define YINTERPHANDLE prhs[5] 27 24 #define DEFAULTHANDLE prhs[6] 28 25 29 26 /* serial output macros: */ 30 #define DATA PRIME(mxArray**)&plhs[0]27 #define DATAINTERP (mxArray**)&plhs[0] 31 28 32 29 /* serial arg counts: */ … … 36 33 #define NRHS 7 37 34 38 #endif /* _INTERPFROMMESHTOMESH2D_H */35 #endif -
issm/trunk/src/mex/Makefile.am
r2892 r3128 85 85 86 86 Bamg_SOURCES = Bamg/Bamg.cpp\ 87 Bamg/Bamg.h 88 87 Bamg/Bamg.h 89 88 90 89 ComputePressure_SOURCES = ComputePressure/ComputePressure.cpp\
Note:
See TracChangeset
for help on using the changeset viewer.