Changeset 2360
- Timestamp:
- 10/02/09 10:17:11 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp
r2292 r2360 21 21 double area_1,area_2,area_3; 22 22 double data_value; 23 double xmin,xmax; 24 double ymin,ymax; 23 double x_prime_min,x_prime_max; 24 double y_prime_min,y_prime_max; 25 double x_tria_min,y_tria_min; 26 double x_tria_max,y_tria_max; 25 27 26 28 /*some checks*/ … … 44 46 45 47 /*Get prime mesh extrema coordinates*/ 46 x min=x_prime[0]; xmax=x_prime[0];ymin=y_prime[0]; ymax=y_prime[0];48 x_prime_min=x_prime[0]; x_prime_max=x_prime[0];y_prime_min=y_prime[0]; y_prime_max=y_prime[0]; 47 49 for (i=1;i<nods_prime;i++){ 48 if (x_prime[i]<x min) xmin=x_prime[i];49 if (x_prime[i]>x max) xmax=x_prime[i];50 if (y_prime[i]<y min) ymin=y_prime[i];51 if (y_prime[i]>y max) ymax=y_prime[i];50 if (x_prime[i]<x_prime_min) x_prime_min=x_prime[i]; 51 if (x_prime[i]>x_prime_max) x_prime_max=x_prime[i]; 52 if (y_prime[i]<y_prime_min) y_prime_min=y_prime[i]; 53 if (y_prime[i]>y_prime_max) y_prime_max=y_prime[i]; 52 54 } 53 55 … … 64 66 65 67 /*if there is no point inside the domain, go to next iteration*/ 66 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; 67 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; 68 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; 69 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; 68 if ( (x_data[(int)index_data[3*i+0]-1]<x_prime_min) && (x_data[(int)index_data[3*i+1]-1]<x_prime_min) && (x_data[(int)index_data[3*i+2]-1]<x_prime_min)) continue; 69 if ( (x_data[(int)index_data[3*i+0]-1]>x_prime_max) && (x_data[(int)index_data[3*i+1]-1]>x_prime_max) && (x_data[(int)index_data[3*i+2]-1]>x_prime_max)) continue; 70 if ( (y_data[(int)index_data[3*i+0]-1]<y_prime_min) && (y_data[(int)index_data[3*i+1]-1]<y_prime_min) && (y_data[(int)index_data[3*i+2]-1]<y_prime_min)) continue; 71 if ( (y_data[(int)index_data[3*i+0]-1]>y_prime_max) && (y_data[(int)index_data[3*i+1]-1]>y_prime_max) && (y_data[(int)index_data[3*i+2]-1]>y_prime_max)) continue; 72 73 /*Get extrema coordinates of current elements*/ 74 x_tria_min=x_data[(int)index_data[3*i+0]-1]; x_tria_max=x_tria_min; 75 y_tria_min=y_data[(int)index_data[3*i+0]-1]; y_tria_max=y_tria_min; 76 for (j=1;j<3;j++){ 77 if(x_data[(int)index_data[3*i+j]-1]<x_tria_min) x_tria_min=x_data[(int)index_data[3*i+j]-1]; 78 if(x_data[(int)index_data[3*i+j]-1]>x_tria_max) x_tria_max=x_data[(int)index_data[3*i+j]-1]; 79 if(y_data[(int)index_data[3*i+j]-1]<y_tria_min) y_tria_min=y_data[(int)index_data[3*i+j]-1]; 80 if(y_data[(int)index_data[3*i+j]-1]>y_tria_max) y_tria_max=y_data[(int)index_data[3*i+j]-1]; 81 } 70 82 71 83 /*get area of the current element (Jacobian = 2 * area)*/ … … 77 89 /*loop over the prime nodes*/ 78 90 for (j=0;j<nods_prime;j++){ 91 92 /*if the current point is not in the triangle, continue*/ 93 if ( (x_tria_min>x_prime[j]) || (x_tria_max<x_prime[j]) || (y_tria_min>y_prime[j]) || (y_tria_max<y_prime[j]) ) continue; 79 94 80 95 /*Get first area coordinate = det(x-x3 x2-x3 ; y-y3 y2-y3)/area*/
Note:
See TracChangeset
for help on using the changeset viewer.