Changeset 2362
- Timestamp:
- 10/02/09 10:47:13 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp
r2292 r2362 22 22 double zeta,bed,surface; 23 23 double data_value; 24 double xmin,xmax; 25 double ymin,ymax; 24 double x_prime_min,x_prime_max; 25 double y_prime_min,y_prime_max; 26 double x_tria_min,y_tria_min; 27 double x_tria_max,y_tria_max; 26 28 27 29 /*some checks*/ … … 45 47 46 48 /*Get prime mesh extrema coordinates*/ 47 x min=x_prime[0]; xmax=x_prime[0];ymin=y_prime[0]; ymax=y_prime[0];49 x_prime_min=x_prime[0]; x_prime_max=x_prime[0];y_prime_min=y_prime[0]; y_prime_max=y_prime[0]; 48 50 for (i=1;i<nods_prime;i++){ 49 if (x_prime[i]<x min) xmin=x_prime[i];50 if (x_prime[i]>x max) xmax=x_prime[i];51 if (y_prime[i]<y min) ymin=y_prime[i];52 if (y_prime[i]>y max) ymax=y_prime[i];51 if (x_prime[i]<x_prime_min) x_prime_min=x_prime[i]; 52 if (x_prime[i]>x_prime_max) x_prime_max=x_prime[i]; 53 if (y_prime[i]<y_prime_min) y_prime_min=y_prime[i]; 54 if (y_prime[i]>y_prime_max) y_prime_max=y_prime[i]; 53 55 } 54 56 … … 64 66 if (debug && fmod((double)i,(double)100)==0) printf("\b\b\b\b\b\b\b%5.2lf %%",(double)i/nels_data*100); 65 67 68 /*Get extrema coordinates of current elements*/ 69 x_tria_min=x_data[(int)index_data[6*i+0]-1]; x_tria_max=x_tria_min; 70 y_tria_min=y_data[(int)index_data[6*i+0]-1]; y_tria_max=y_tria_min; 71 for (j=1;j<3;j++){ 72 if(x_data[(int)index_data[6*i+j]-1]<x_tria_min) x_tria_min=x_data[(int)index_data[6*i+j]-1]; 73 if(x_data[(int)index_data[6*i+j]-1]>x_tria_max) x_tria_max=x_data[(int)index_data[6*i+j]-1]; 74 if(y_data[(int)index_data[6*i+j]-1]<y_tria_min) y_tria_min=y_data[(int)index_data[6*i+j]-1]; 75 if(y_data[(int)index_data[6*i+j]-1]>y_tria_max) y_tria_max=y_data[(int)index_data[6*i+j]-1]; 76 } 77 66 78 /*if there is no point inside the domain, go to next iteration*/ 67 if ( (x_data[(int)index_data[6*i+0]-1]<xmin) && (x_data[(int)index_data[6*i+1]-1]<xmin) && (x_data[(int)index_data[6*i+2]-1]<xmin)) continue;68 if ( (x_data[(int)index_data[6*i+0]-1]>xmax) && (x_data[(int)index_data[6*i+1]-1]>xmax) && (x_data[(int)index_data[6*i+2]-1]>xmax)) continue;69 if ( (y_data[(int)index_data[6*i+0]-1]<ymin) && (y_data[(int)index_data[6*i+1]-1]<ymin) && (y_data[(int)index_data[6*i+2]-1]<ymin)) continue;70 if ( (y_data[(int)index_data[6*i+0]-1]>ymax) && (y_data[(int)index_data[6*i+1]-1]>ymax) && (y_data[(int)index_data[6*i+2]-1]>ymax)) continue;79 if ( x_prime_max < x_tria_min ) continue; 80 if ( x_prime_min > x_tria_max ) continue; 81 if ( y_prime_max < y_tria_min ) continue; 82 if ( y_prime_min > y_tria_max ) continue; 71 83 72 84 /*get area of the current element (Jacobian = 2 * area)*/ … … 78 90 /*loop over the prime nodes*/ 79 91 for (j=0;j<nods_prime;j++){ 92 93 /*if the current point is not in the triangle, continue*/ 94 if ( x_prime[j] < x_tria_min ) continue; 95 if ( x_prime[j] > x_tria_max ) continue; 96 if ( y_prime[j] < y_tria_min ) continue; 97 if ( y_prime[j] > y_tria_max ) continue; 80 98 81 99 /*Get first area coordinate = det(x-x3 x2-x3 ; y-y3 y2-y3)/area*/
Note:
See TracChangeset
for help on using the changeset viewer.