9 _printf0_(
" data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime);\n");
10 _printf0_(
" or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value);\n");
11 _printf0_(
" or data_prime=InterpFromMesh2d(index,x,y,data,x_prime,y_prime,default_value,contourname);\n");
13 _printf0_(
" x,y: coordinates of the nodes where data is defined\n");
14 _printf0_(
" index: index of the mesh where data is defined\n");
15 _printf0_(
" data - vector holding the data to be interpolated onto the points.\n");
16 _printf0_(
" x_prime,y_prime: coordinates of the mesh vertices onto which we interpolate.\n");
17 _printf0_(
" default_value: a scalar or vector of size length(x_prime).\n");
18 _printf0_(
" contourname: linear interpolation will happen on all x_interp,y_interp inside the contour, default value will be adopted on the rest of the mesh.\n");
19 _printf0_(
" data_prime: vector of prime interpolated data.\n");
39 double* default_values=NULL;
40 int num_default_values=0;
44 mxArray *matlabstructure = NULL;
63 _error_(
"InterpFromMeshToMesh2dUsage usage error");
65 if((nrhs!=6) && (nrhs!=7) && (nrhs!=8)){
67 _error_(
"InterpFromMeshToMesh2dUsage usage error");
71 FetchData(&index_data,&index_data_rows,&dummy,INDEXHANDLE);
72 FetchData(&x_data,&x_data_rows,NULL,XHANDLE);
73 FetchData(&y_data,&y_data_rows,NULL,YHANDLE);
74 FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
75 FetchData(&x_prime,&x_prime_rows,NULL,XPRIMEHANDLE);
76 FetchData(&y_prime,&y_prime_rows,NULL,YPRIMEHANDLE);
80 FetchData(&default_values,&num_default_values,DEFAULTHANDLE);
89 #ifdef _HAVE_MATLAB_MODULES_
91 mexCallMATLAB( 1, &matlabstructure, 1, (mxArray**)&FILENAME,
"expread");
94 numcontours=mxGetNumberOfElements(matlabstructure);
95 contours=xNew<Contour<double> *>(numcontours);
96 for(i=0;i<numcontours;i++){
100 contouri->
nods=(int)mxGetScalar(mxGetField(matlabstructure,i,
"nods"));
102 contouri->
x=mxGetPr(mxGetField(matlabstructure,i,
"x"));
103 contouri->
y=mxGetPr(mxGetField(matlabstructure,i,
"y"));
104 *(contours+i)=contouri;
116 if (x_data_rows!=y_data_rows){
117 _error_(
"vectors x and y should have the same length!");
119 if (x_prime_rows!=y_prime_rows){
120 _error_(
"vectors x_prime and y_prime should have the same length!");
124 nels_data=index_data_rows;
125 nods_data=x_data_rows;
126 nods_prime=x_prime_rows;
129 InterpFromMesh2dx(&data_prime,index_data,x_data,y_data,nods_data,nels_data,data,data_rows,x_prime,y_prime,nods_prime,default_values,num_default_values,contours,numcontours);
135 xDelete<int>(index_data);
136 xDelete<double>(x_data);
137 xDelete<double>(y_data);
138 xDelete<double>(data);
139 xDelete<double>(x_prime);
140 xDelete<double>(y_prime);
141 xDelete<double>(default_values);