Changeset 23085
- Timestamp:
- 08/10/18 16:30:54 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/FemModel.cpp
r23066 r23085 1050 1050 /*3: Add distance input to all elements*/ 1051 1051 IssmDouble* distances = xNew<IssmDouble>(vertices->Size()); 1052 IssmDouble d,xn,yn; 1053 for(int i=0;i<vertices->Size();i++){ 1054 Vertex* vertex=dynamic_cast<Vertex*>(this->vertices->GetObjectByOffset(i)); 1055 IssmDouble dmin = 1.e+50; 1052 IssmDouble d,xn,yn,dmin; 1053 int last = -1; 1054 for(int v=0;v<vertices->Size();v++){ 1055 1056 Vertex* vertex=dynamic_cast<Vertex*>(this->vertices->GetObjectByOffset(v)); 1057 IssmDouble x = vertex->x; 1058 IssmDouble y = vertex->y; 1059 1060 /*Most of the time the last checked segment is the closest so start with that one*/ 1061 if(last>0){ 1062 dmin = sqrt(pow(allsegmentlist[4*last+0] - x,2) + pow(y-allsegmentlist[4*last+1],2)); 1063 } 1064 else{ 1065 dmin = 1.e+50; 1066 } 1056 1067 1057 1068 for(int i=0;i<numseg;i++){ 1058 IssmDouble x = vertex->x;1059 IssmDouble y = vertex->y;1060 1069 1061 1070 /*Skip if tip is more than 10xdmin away*/ 1062 if( pow(allsegmentlist[4*i+0] - x,2) + pow(y-allsegmentlist[4*i+1],2) > pow(10*dmin,2)) continue; 1071 if(fabs(allsegmentlist[4*i+0] - x)>10*dmin) continue; 1072 if(fabs(allsegmentlist[4*i+0] - y)>10*dmin) continue; 1063 1073 1064 1074 IssmDouble l2 = (allsegmentlist[4*i+2]-allsegmentlist[4*i+0])*(allsegmentlist[4*i+2]-allsegmentlist[4*i+0]) + (allsegmentlist[4*i+3]-allsegmentlist[4*i+1])*(allsegmentlist[4*i+3]-allsegmentlist[4*i+1]); … … 1067 1077 if(l2==0.){ 1068 1078 d = (x-allsegmentlist[4*i+0])*(x-allsegmentlist[4*i+0])+(y-allsegmentlist[4*i+1])*(y-allsegmentlist[4*i+1]); 1069 if(d<dmin) dmin = d; 1079 if(d<dmin){ 1080 dmin = d; 1081 last = i; 1082 } 1070 1083 continue; 1071 1084 } … … 1090 1103 } 1091 1104 1092 if(d<dmin) dmin = d; 1105 if(d<dmin){ 1106 dmin = d; 1107 last = i; 1108 } 1093 1109 } 1094 1110
Note:
See TracChangeset
for help on using the changeset viewer.