Changeset 22731
- Timestamp:
- 05/01/18 05:51:22 (7 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp
r16166 r22731 10 10 11 11 int InterpFromMesh2dx(IssmSeqVec<IssmPDouble>** pdata_prime, 12 double* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length,12 int* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length, 13 13 double* x_prime, double* y_prime, int nods_prime, 14 14 double* default_values,int num_default_values,Contour<IssmPDouble>** contours,int numcontours){ -
issm/trunk-jpl/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dx.h
r15000 r22731 15 15 bool debug; 16 16 int nels_data; 17 double*index_data;17 int *index_data; 18 18 double *x_data; 19 19 double *y_data; … … 31 31 } InterpFromMesh2dxThreadStruct; 32 32 33 int InterpFromMesh2dx(IssmSeqVec<IssmPDouble>** pdata_prime, double* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, int nods_prime,33 int InterpFromMesh2dx(IssmSeqVec<IssmPDouble>** pdata_prime,int* index_data, double* x_data, double* y_data, int nods_data,int nels_data, double* data, int data_length, double* x_prime, double* y_prime, int nods_prime, 34 34 double* default_values,int num_default_values,Contour<IssmPDouble>** contours,int numcontours); 35 35 -
issm/trunk-jpl/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
r15557 r22731 23 23 bool debug = gate->debug; 24 24 int nels_data = gate->nels_data; 25 double*index_data = gate->index_data;25 int *index_data = gate->index_data; 26 26 double *x_data = gate->x_data; 27 27 double *y_data = gate->y_data; … … 50 50 51 51 /*if there is no point inside the domain, go to next iteration*/ 52 if ( (x_data[ (int)index_data[3*i+0]-1]<xmin) && (x_data[(int)index_data[3*i+1]-1]<xmin) && (x_data[(int)index_data[3*i+2]-1]<xmin)) continue;53 if ( (x_data[ (int)index_data[3*i+0]-1]>xmax) && (x_data[(int)index_data[3*i+1]-1]>xmax) && (x_data[(int)index_data[3*i+2]-1]>xmax)) continue;54 if ( (y_data[ (int)index_data[3*i+0]-1]<ymin) && (y_data[(int)index_data[3*i+1]-1]<ymin) && (y_data[(int)index_data[3*i+2]-1]<ymin)) continue;55 if ( (y_data[ (int)index_data[3*i+0]-1]>ymax) && (y_data[(int)index_data[3*i+1]-1]>ymax) && (y_data[(int)index_data[3*i+2]-1]>ymax)) continue;52 if ( (x_data[index_data[3*i+0]-1]<xmin) && (x_data[index_data[3*i+1]-1]<xmin) && (x_data[index_data[3*i+2]-1]<xmin)) continue; 53 if ( (x_data[index_data[3*i+0]-1]>xmax) && (x_data[index_data[3*i+1]-1]>xmax) && (x_data[index_data[3*i+2]-1]>xmax)) continue; 54 if ( (y_data[index_data[3*i+0]-1]<ymin) && (y_data[index_data[3*i+1]-1]<ymin) && (y_data[index_data[3*i+2]-1]<ymin)) continue; 55 if ( (y_data[index_data[3*i+0]-1]>ymax) && (y_data[index_data[3*i+1]-1]>ymax) && (y_data[index_data[3*i+2]-1]>ymax)) continue; 56 56 57 57 /*get area of the current element (Jacobian = 2 * area)*/ 58 58 //area =x2 * y3 - y2*x3 + x1 * y2 - y1 * x2 + x3 * y1 - y3 * x1; 59 area=x_data[ (int)index_data[3*i+1]-1]*y_data[(int)index_data[3*i+2]-1]-y_data[(int)index_data[3*i+1]-1]*x_data[(int)index_data[3*i+2]-1]60 + x_data[ (int)index_data[3*i+0]-1]*y_data[(int)index_data[3*i+1]-1]-y_data[(int)index_data[3*i+0]-1]*x_data[(int)index_data[3*i+1]-1]61 + x_data[ (int)index_data[3*i+2]-1]*y_data[(int)index_data[3*i+0]-1]-y_data[(int)index_data[3*i+2]-1]*x_data[(int)index_data[3*i+0]-1];59 area=x_data[index_data[3*i+1]-1]*y_data[index_data[3*i+2]-1]-y_data[index_data[3*i+1]-1]*x_data[index_data[3*i+2]-1] 60 + x_data[index_data[3*i+0]-1]*y_data[index_data[3*i+1]-1]-y_data[index_data[3*i+0]-1]*x_data[index_data[3*i+1]-1] 61 + x_data[index_data[3*i+2]-1]*y_data[index_data[3*i+0]-1]-y_data[index_data[3*i+2]-1]*x_data[index_data[3*i+0]-1]; 62 62 63 63 /*loop over the prime nodes*/ … … 67 67 68 68 /*Get first area coordinate = det(x-x3 x2-x3 ; y-y3 y2-y3)/area*/ 69 area_1=((x_prime[j]-x_data[ (int)index_data[3*i+2]-1])*(y_data[(int)index_data[3*i+1]-1]-y_data[(int)index_data[3*i+2]-1])70 - (y_prime[j]-y_data[ (int)index_data[3*i+2]-1])*(x_data[(int)index_data[3*i+1]-1]-x_data[(int)index_data[3*i+2]-1]))/area;69 area_1=((x_prime[j]-x_data[index_data[3*i+2]-1])*(y_data[index_data[3*i+1]-1]-y_data[index_data[3*i+2]-1]) 70 - (y_prime[j]-y_data[index_data[3*i+2]-1])*(x_data[index_data[3*i+1]-1]-x_data[index_data[3*i+2]-1]))/area; 71 71 /*Get second area coordinate =det(x1-x3 x-x3 ; y1-y3 y-y3)/area*/ 72 area_2=((x_data[ (int)index_data[3*i+0]-1]-x_data[(int)index_data[3*i+2]-1])*(y_prime[j]-y_data[(int)index_data[3*i+2]-1])73 - (y_data[ (int)index_data[3*i+0]-1]-y_data[(int)index_data[3*i+2]-1])*(x_prime[j]-x_data[(int)index_data[3*i+2]-1]))/area;72 area_2=((x_data[index_data[3*i+0]-1]-x_data[index_data[3*i+2]-1])*(y_prime[j]-y_data[index_data[3*i+2]-1]) 73 - (y_data[index_data[3*i+0]-1]-y_data[index_data[3*i+2]-1])*(x_prime[j]-x_data[index_data[3*i+2]-1]))/area; 74 74 /*Get third area coordinate = 1-area1-area2*/ 75 75 area_3=1-area_1-area_2; … … 81 81 if (interpolation_type==1){ 82 82 /*nodal interpolation*/ 83 data_value=area_1*data[ (int)index_data[3*i+0]-1]+area_2*data[(int)index_data[3*i+1]-1]+area_3*data[(int)index_data[3*i+2]-1];83 data_value=area_1*data[index_data[3*i+0]-1]+area_2*data[index_data[3*i+1]-1]+area_3*data[index_data[3*i+2]-1]; 84 84 } 85 85 else{ -
issm/trunk-jpl/src/c/modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp
r22729 r22731 64 64 65 65 /*display current iteration*/ 66 if(debug && fmod(double(n),1000)==0)66 if(debug && n%10000==0) 67 67 _printf_("\r interpolation progress: "<<setw(6)<<setprecision(2)<<double(n)/double(nels)*100<<"% "); 68 68 -
issm/trunk-jpl/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp
r20877 r22731 23 23 24 24 /*input: */ 25 double*index_data=NULL;25 int* index_data=NULL; 26 26 int index_data_rows; 27 27 int dummy; 28 29 28 double* x_data=NULL; 30 29 int x_data_rows; 31 32 30 double* y_data=NULL; 33 31 int y_data_rows; 34 35 32 double* data=NULL; 36 33 int data_rows; 37 34 int data_cols; 38 39 35 double* x_prime=NULL; 40 36 double* y_prime=NULL; 41 42 37 int x_prime_rows; 43 38 int y_prime_rows; 44 45 39 double* default_values=NULL; 46 40 int num_default_values=0; … … 139 133 140 134 /*end module: */ 141 xDelete< double>(index_data);135 xDelete<int>(index_data); 142 136 xDelete<double>(x_data); 143 137 xDelete<double>(y_data);
Note:
See TracChangeset
for help on using the changeset viewer.