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

Go to the source code of this file.

Functions

void InterpFromMeshToMesh3dUsage (void)
 
 WRAPPER (InterpFromMeshToMesh3d_python)
 

Function Documentation

◆ InterpFromMeshToMesh3dUsage()

void InterpFromMeshToMesh3dUsage ( void  )

Definition at line 7 of file InterpFromMeshToMesh3d.cpp.

7  {/*{{{*/
8  _printf0_("INTERPFROMMESHTOMESH3D - interpolation from a 3d hexahedron mesh onto a list of point\n");
9  _printf0_("\n");
10  _printf0_(" This function is a multi-threaded mex file that interpolates a field\n");
11  _printf0_(" defined on a triangular mesh onto a list of point\n");
12  _printf0_("\n");
13  _printf0_(" Usage:\n");
14  _printf0_(" data_prime=InterpFromMeshToMesh3d(index,x,y,z,data,x_prime,y_prime,z_prime,default_value);\n");
15  _printf0_("\n");
16  _printf0_(" index: index of the mesh where data is defined\n");
17  _printf0_(" x,y,z: coordinates of the nodes where data is defined\n");
18  _printf0_(" data: matrix holding the data to be interpolated onto the mesh.\n");
19  _printf0_(" x_prime,y_prime,z_prime: coordinates of the points onto which we interpolate.\n");
20  _printf0_(" default_value: default value if no data is found (holes).\n");
21  _printf0_(" data_prime: vector of mesh interpolated data.\n");
22  _printf0_("\n");
23  _printf0_(" Example:\n");
24  _printf0_(" load('temperature.mat');\n");
25  _printf0_(" md.initialization.temperature=InterpFromMeshToMesh3d(index,x,y,z,temperature,md.mesh.x,md.mesh.y,md.mesh.z,253);\n");
26  _printf0_("\n");
27 }/*}}}*/

◆ WRAPPER()

WRAPPER ( InterpFromMeshToMesh3d_python  )

Definition at line 28 of file InterpFromMeshToMesh3d.cpp.

28  {
29 
30  /*input: */
31  double* index_data=NULL;
32  int index_data_rows;
33 
34  double* x_data=NULL;
35  double* y_data=NULL;
36  double* z_data=NULL;
37 
38  int x_data_rows;
39  int y_data_rows;
40  int z_data_rows;
41 
42  double* data=NULL;
43  int data_rows;
44  int data_cols;
45 
46  double* x_prime=NULL;
47  double* y_prime=NULL;
48  double* z_prime=NULL;
49 
50  int x_prime_rows;
51  int y_prime_rows;
52  int z_prime_rows;
53 
54  double default_value;
55 
56  /*Intermediary*/
57  int nods_data;
58  int nels_data;
59  int nods_prime;
60 
61  /* output: */
62  IssmSeqVec<double>* data_prime=NULL;
63 
64  /*Boot module: */
65  MODULEBOOT();
66 
67  /*checks on arguments on the matlab side: */
68  #ifdef _HAVE_MATLAB_MODULES_
70  #endif
71 
72  /*Input datasets: */
73  FetchData(&index_data,&index_data_rows,NULL,INDEXHANDLE);
74  FetchData(&x_data,&x_data_rows,NULL,XHANDLE);
75  FetchData(&y_data,&y_data_rows,NULL,YHANDLE);
76  FetchData(&z_data,&z_data_rows,NULL,ZHANDLE);
77  FetchData(&data,&data_rows,&data_cols,DATAHANDLE);
78  FetchData(&x_prime,&x_prime_rows,NULL,XPRIMEHANDLE);
79  FetchData(&y_prime,&y_prime_rows,NULL,YPRIMEHANDLE);
80  FetchData(&z_prime,&z_prime_rows,NULL,ZPRIMEHANDLE);
81  FetchData(&default_value,DEFAULTHANDLE);
82 
83  /*some checks*/
84  if (x_data_rows!=y_data_rows || x_data_rows!=z_data_rows){
85  _error_("vectors x, y and z should have the same length!");
86  }
87  if (x_prime_rows!=y_prime_rows || x_prime_rows!=z_prime_rows){
88  _error_("vectors x_prime, y_prime and z_prime should have the same length!");
89  }
90  /*get number of elements and number of nodes in the data*/
91  nels_data=index_data_rows;
92  nods_data=x_data_rows;
93  nods_prime=x_prime_rows;
94 
95  /* Run core computations: */
96  InterpFromMeshToMesh3dx(&data_prime,index_data,x_data,y_data,z_data,nods_data,nels_data,data,data_rows,x_prime,y_prime,z_prime,nods_prime,default_value);
97 
98  /*Write data: */
99  WriteData(DATAPRIME,data_prime);
100 
101  /*end module: */
102  xDelete<double>(index_data);
103  xDelete<double>(x_data);
104  xDelete<double>(y_data);
105  xDelete<double>(z_data);
106  xDelete<double>(data);
107  xDelete<double>(x_prime);
108  xDelete<double>(y_prime);
109  xDelete<double>(z_prime);
110  delete data_prime;
111 
112  /*end module: */
113  MODULEEND();
114 }
InterpFromMeshToMesh3dx
int InterpFromMeshToMesh3dx(IssmSeqVec< IssmPDouble > **pdata_prime, double *index_data, double *x_data, double *y_data, double *z_data, int nods_data, int nels_data, double *data, int data_length, double *x_prime, double *y_prime, double *z_prime, int nods_prime, double default_value)
Definition: InterpFromMeshToMesh3dx.cpp:8
_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
IssmSeqVec
Definition: IssmSeqVec.h:31
CheckNumMatlabArguments
int CheckNumMatlabArguments(int nlhs, int NLHS, int nrhs, int NRHS, const char *THISFUNCTION, void(*function)(void))
Definition: CheckNumMatlabArguments.cpp:7
FetchData
void FetchData(char **pstring, char *stringin)
Definition: FetchJavascriptData.cpp:16
__FUNCT__
#define __FUNCT__
Definition: Chacox.h:43
NLHS
#define NLHS
Definition: BamgConvertMesh.h:50
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
InterpFromMeshToMesh3dUsage
void InterpFromMeshToMesh3dUsage(void)
Definition: InterpFromMeshToMesh3d.cpp:7