Ice Sheet System Model  4.18
Code documentation
Functions
InterpFromMeshToMesh2d.cpp File Reference
#include "./InterpFromMeshToMesh2d.h"

Go to the source code of this file.

Functions

void InterpFromMeshToMesh2dUsage (void)
 
 WRAPPER (InterpFromMeshToMesh2d_python)
 

Function Documentation

◆ InterpFromMeshToMesh2dUsage()

void InterpFromMeshToMesh2dUsage ( void  )

Definition at line 6 of file InterpFromMeshToMesh2d.cpp.

6  {/*{{{*/
7  _printf0_("INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point\n");
8  _printf0_("\n");
9  _printf0_(" This function is a multi-threaded mex file that interpolates a field\n");
10  _printf0_(" defined on a Delaunay triangulation onto a list of point\n");
11  _printf0_("\n");
12  _printf0_(" Usage:\n");
13  _printf0_(" data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp);\n");
14  _printf0_(" or data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,OPTIONS);\n");
15  _printf0_("\n");
16  _printf0_(" index : index of the mesh where data is defined (e.g. md.mesh.elements)\n");
17  _printf0_(" x,y : coordinates of the nodes where data is defined\n");
18  _printf0_(" data : matrix holding the data to be interpolated onto the mesh. (one column per field)\n");
19  _printf0_(" x_interp,y_interp : coordinates of the points onto which we interpolate.\n");
20  _printf0_(" data_interp : vector of mesh interpolated data.\n");
21  _printf0_(" Available options :\n");
22  _printf0_(" - 'default' : default value if point is outsite of triangulation (instead of linear interpolation)\n");
23  _printf0_("\n");
24  _printf0_(" Example:\n");
25  _printf0_(" load('temperature.mat');\n");
26  _printf0_(" md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y);\n");
27  _printf0_(" md.initialization.temperature=InterpFromMeshToMesh2d(index,x,y,temperature,md.mesh.x,md.mesh.y,'default',253);\n");
28  _printf0_("\n");
29 }/*}}}*/

◆ WRAPPER()

WRAPPER ( InterpFromMeshToMesh2d_python  )

Definition at line 30 of file InterpFromMeshToMesh2d.cpp.

30  {
31 
32  /*Intermediaties*/
33  int *index = NULL;
34  double *x_data = NULL;
35  double *y_data = NULL;
36  double *data = NULL;
37  int nods_data,nels_data;
38  int M_data,N_data;
39  double *x_interp = NULL;
40  double *y_interp = NULL;
41  int N_interp;
42  Options *options = NULL;
43  double *data_interp = NULL;
44  int test1,test2,test;
45 
46  /*Boot module: */
47  MODULEBOOT();
48 
49  /*checks on output arguments on the matlab side: */
50  #ifdef _HAVE_MATLAB_MODULES_
51  if(nlhs!=NLHS){
53  _error_("InterpFromMeshToMesh2dUsage usage error");
54  }
55  #endif
56  /*check on input arguments: */
57  if(nrhs<NRHS){
59  _error_("InterpFromMeshToMesh2dUsage usage error");
60  }
61 
62  /*Fetch inputs: */
63  FetchData(&index,&nels_data,&test,INDEX); if(test!=3) _error_("index should have 3 columns");
64  FetchData(&x_data,&nods_data,X); if(nods_data<3) _error_("there should be at least three points");
65  FetchData(&y_data,&test,Y); if(test!=nods_data) _error_("vectors x and y should have the same length");
66  FetchData(&data,&M_data,&N_data,DATA); if(M_data*N_data<1) _error_("data is empty");
67  FetchData(&x_interp,&N_interp,XINTERP); if(N_interp<1) _error_("no interpolation requested");
68  FetchData(&y_interp,&test,YINTERP); if(test!=N_interp) _error_("vectors x_interp and y_interp should have the same length");
69  FetchData(&options,NRHS,nrhs,ARGUMENTS);
70 
71  /*Run core computations*/
72  InterpFromMeshToMesh2dx(&data_interp,index,x_data,y_data,nods_data,nels_data,data,M_data,N_data,x_interp,y_interp,N_interp,options);
73 
74  /*Write data: */
75  WriteData(DATAINTERP,data_interp,N_interp,N_data);
76 
77  /*end module: */
78  xDelete<int>(index);
79  xDelete<double>(x_data);
80  xDelete<double>(y_data);
81  xDelete<double>(data);
82  xDelete<double>(x_interp);
83  xDelete<double>(y_interp);
84  xDelete<double>(data_interp);
85  delete options;
86  MODULEEND();
87 }
Options
Definition: Options.h:9
_printf0_
#define _printf0_(StreamArgs)
Definition: Print.h:29
WriteData
void WriteData(IssmPDouble **pmatrix, int *pnel, int *matrix, int M, int N)
Definition: WriteJavascriptData.cpp:16
NRHS
#define NRHS
Definition: BamgConvertMesh.h:52
FetchData
void FetchData(char **pstring, char *stringin)
Definition: FetchJavascriptData.cpp:16
NLHS
#define NLHS
Definition: BamgConvertMesh.h:50
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
InterpFromMeshToMesh2dUsage
void InterpFromMeshToMesh2dUsage(void)
Definition: InterpFromMeshToMesh2d.cpp:6
InterpFromMeshToMesh2dx
int InterpFromMeshToMesh2dx(double **pdata_interp, int *index_data, double *x_data, double *y_data, int nods_data, int nels_data, double *data, int M_data, int N_data, double *x_interp, double *y_interp, int N_interp, Options *options)
Definition: InterpFromMeshToMesh2dx.cpp:16