header file for Bamg module
More...
Go to the source code of this file.
|
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) |
|
header file for Bamg module
Definition in file InterpFromMeshToMesh2dx.h.
◆ 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 at line 16 of file InterpFromMeshToMesh2dx.cpp.
22 double* data_interp=NULL;
25 double xmin,xmax,ymin,ymax;
39 if (M_data!=nods_data && M_data!=nels_data){
40 _error_(
"data provided should have either " << nods_data <<
" or " << nels_data <<
" lines (not " << M_data <<
")");
48 options->
Get(&defaultvalue,
"default");
53 data_interp=xNew<double>(N_interp*N_data);
57 Mesh* Th=
new Mesh(index_data,x_data,y_data,nods_data,nels_data,bamgopts);
60 long* reft = xNew<long>(Th->
nbt);
65 xmin=x_data[0]; ymin=y_data[0];
66 xmax=x_data[0]; ymax=y_data[0];
67 for(i=1;i<nods_data;i++){
68 if(x_data[i]<xmin) xmin=x_data[i];
69 if(x_data[i]>xmax) xmax=x_data[i];
70 if(y_data[i]<ymin) ymin=y_data[i];
71 if(y_data[i]>ymax) ymax=y_data[i];
75 int* connectivity = xNew<int>(nods_data);
76 for(i=0;i<nels_data;i++){
78 k = index_data[i*3+j]-1;
85 for(i=0;i<N_interp;i++){
89 if(x_interp[i]<xmin || x_interp[i]>xmax || y_interp[i]<ymin || y_interp[i]>ymax){
90 for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
96 r.
x=x_interp[i]; r.
y=y_interp[i];
106 areacoord[0]= reCast<double>(dete[0])/reCast<double>(tb.
det);
107 areacoord[1]= reCast<double>(dete[1])/reCast<double>(tb.
det);
108 areacoord[2]= reCast<double>(dete[2])/reCast<double>(tb.
det);
117 if (reft[it]<0 && isdefault){
118 for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
125 for(j=0;j<N_data;j++) data_interp[i*N_data+j]=defaultvalue;
146 if (M_data==nods_data){
147 for (j=0;j<N_data;j++){
148 data_interp[i*N_data+j]=areacoord[0]*data[N_data*i0+j]+areacoord[1]*data[N_data*i1+j]+areacoord[2]*data[N_data*i2+j];
154 if(tb.
det<0 || reft[it]<0){
158 for(j=0;j<N_data;j++) data_interp[i*N_data+j]=data[N_data*it+j];
162 if(it<0 || it>=nels_data){
163 _error_(
"Triangle number " << it <<
" not in [0 " << nels_data
164 <<
"], report bug to developers (interpolation point: " <<x_interp[i]<<
" "<<y_interp[i]<<
")");
166 for (j=0;j<N_data;j++) data_interp[i*N_data+j]=data[N_data*it+j];
176 xDelete<int>(connectivity);
177 *pdata_interp=data_interp;
180 _error_(
"Cannot interpolate without bamg support");