Changeset 23006
- Timestamp:
- 07/25/18 12:25:26 (7 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/array/arrayoperations.js
r22901 r23006 51 51 //Takes in any number of scalars or arrays, and calculates the sum. Scalars are treated as similar length arrays of the scalar. 52 52 //Determine reference array and size 53 var size, ar g;53 var size, array, arg, initial; 54 54 for (var a = 0; a < arguments.length; a++) { 55 55 arg = arguments[a]; 56 56 if (arg instanceof Array) { 57 57 size = arg.length; 58 array = arg; 59 initial = a; 58 60 break; 59 61 } … … 69 71 } 70 72 //do the result: 71 var result = NewArrayFill(size, 0); 72 for (var a = 0; a < arguments.length; a++) { 73 arg = arguments[a]; 74 if (arg instanceof Array) { 75 for(var i = 0; i < result.length; i++){ 76 result[i] -= arg[i]; 77 } 78 } else if (typeof arg != 'number') { 79 for(var i = 0; i < result.length; i++){ 80 result[i] += arg; 81 } 73 var result = array.slice(0); 74 for (var a = 0; a < arguments.length; a++) { 75 if (a != initial) { 76 arg = arguments[a]; 77 if (arg instanceof Array) { 78 for(var i = 0; i < result.length; i++){ 79 result[i] += arg[i]; 80 } 81 } else if (typeof arg != 'number') { 82 for(var i = 0; i < result.length; i++){ 83 result[i] += arg; 84 } 85 } 82 86 } 83 87 } … … 87 91 //Takes in any number of scalars or arrays, and calculates the subtraction. Scalars are treated as similar length arrays of the scalar. 88 92 //Determine reference array and size 89 var size, array, arg ;93 var size, array, arg, initial; 90 94 for (var a = 0; a < arguments.length; a++) { 91 95 arg = arguments[a]; … … 93 97 size = arg.length; 94 98 array = arg; 99 initial = a; 95 100 break; 96 101 } … … 108 113 var result = array.slice(0); 109 114 for (var a = 0; a < arguments.length; a++) { 110 arg = arguments[a]; 111 if (arg instanceof Array) { 112 for(var i = 0; i < result.length; i++){ 113 result[i] -= arg[i]; 114 } 115 } else if (typeof arg != 'number') { 116 for(var i = 0; i < result.length; i++){ 117 result[i] -= arg; 118 } 115 if (a !== initial) { 116 arg = arguments[a]; 117 if (arg instanceof Array) { 118 for(var i = 0; i < result.length; i++){ 119 result[i] -= arg[i]; 120 } 121 } else if (typeof arg != 'number') { 122 for(var i = 0; i < result.length; i++){ 123 result[i] -= arg; 124 } 125 } 119 126 } 120 127 } … … 124 131 //Takes in any number of scalars or arrays, and calculates the product. Scalars are treated as similar length arrays of the scalar. 125 132 //Determine reference array and size 126 var size, ar g;133 var size, array, arg, initial; 127 134 for (var a = 0; a < arguments.length; a++) { 128 135 arg = arguments[a]; 129 136 if (arg instanceof Array) { 130 137 size = arg.length; 138 array = arg; 139 initial = a; 131 140 break; 132 141 } … … 142 151 } 143 152 //do the result: 144 var result = NewArrayFill(size, 0); 145 for (var a = 0; a < arguments.length; a++) { 146 arg = arguments[a]; 147 if (arg instanceof Array) { 148 for(var i = 0; i < result.length; i++){ 149 result[i] *= arg[i]; 150 } 151 } else if (typeof arg != 'number') { 152 for(var i = 0; i < result.length; i++){ 153 result[i] *= arg; 154 } 155 } 153 var result = array.slice(0); 154 for (var a = 0; a < arguments.length; a++) { 155 if (a !== initial) { 156 arg = arguments[a]; 157 if (arg instanceof Array) { 158 for(var i = 0; i < result.length; i++){ 159 result[i] *= arg[i]; 160 } 161 } else if (typeof arg != 'number') { 162 for(var i = 0; i < result.length; i++){ 163 result[i] *= arg; 164 } 165 } 166 } 156 167 } 157 168 return result; 158 169 } //}}} 159 function ArrayDivide( array1, array2){ //{{{170 function ArrayDivide(){ //{{{ 160 171 //Takes in any number of scalars or arrays, and calculates the quotient. Scalars are treated as similar length arrays of the scalar. 161 172 //Determine reference array and size 162 var size, array, arg ;173 var size, array, arg, initial; 163 174 for (var a = 0; a < arguments.length; a++) { 164 175 arg = arguments[a]; … … 166 177 size = arg.length; 167 178 array = arg; 179 initial = a; 168 180 break; 169 181 } … … 181 193 var result = array.slice(0); 182 194 for (var a = 0; a < arguments.length; a++) { 183 arg = arguments[a]; 184 if (arg instanceof Array) { 185 for(var i = 0; i < result.length; i++){ 186 result[i] /= arg[i]; 187 } 188 } else if (typeof arg != 'number') { 189 for(var i = 0; i < result.length; i++){ 190 result[i] /= arg; 191 } 192 } 195 if (a !== initial) { 196 arg = arguments[a]; 197 if (arg instanceof Array) { 198 for(var i = 0; i < result.length; i++){ 199 result[i] /= arg[i]; 200 } 201 } else if (typeof arg != 'number') { 202 for(var i = 0; i < result.length; i++){ 203 result[i] /= arg; 204 } 205 } 206 } 193 207 } 194 208 return result; -
issm/trunk-jpl/src/m/mesh/bamg.js
r22906 r23006 122 122 //Check orientation 123 123 var nods = domain[i].nods-1; //the domain are closed 1=end; 124 var test = ArraySum(Array Add(ArraySubtract(domain[i].x.slice(1,nods), ArrayMultiply(domain[i].x.slice(0,nods-1), domain[i].y.slice(1,nods))), domain[i].y.slice(0,nods-1)));124 var test = ArraySum(ArrayMultiply(ArraySubtract(domain[i].x.slice(1,nods+1), domain[i].x.slice(0,nods)), ArrayAdd(domain[i].y.slice(1,nods+1), domain[i].y.slice(0,nods)))); 125 125 if ((i==0 && test>0) || (i>0 && test<0)) { 126 126 console.log('At least one contour was not correctly oriented and has been re-oriented'); 127 //TODO: Implement flipud 128 //domain[i].x = flipud(domain[i].x); domain[i].y = flipud(domain[i].y);127 domain[i].x.reverse(); 128 domain[i].y.reverse(); 129 129 } 130 130 … … 170 170 //Check that hole is correctly oriented 171 171 var nods = holes[i].nods-1; //the holes are closed 1=end; 172 var test = ArraySum(Array Add(ArraySubtract(holes[i].x.slice(1,nods), ArrayMultiply(holes[i].x.slice(0,nods-1), holes[i].y.slice(1,nods))), holes[i].y.slice(0,nods-1)));172 var test = ArraySum(ArrayMultiply(ArraySubtract(holes[i].x.slice(1,nods+1), holes[i].x.slice(0,nods)), ArrayAdd(holes[i].y.slice(1,nods+1), holes[i].y.slice(0,nods)))); 173 173 if ((i==0 && test>0) || (i>0 && test<0)) { 174 174 console.log('At least one contour was not correctly oriented and has been re-oriented'); 175 //TODO: Implement flipud 176 //holes[i].x = flipud(holes[i].x); holes[i].y = flipud(holes[i].y);175 holes[i].x.reverse(); 176 holes[i].y.reverse(); 177 177 } 178 178 … … 209 209 //Check that hole is correctly oriented 210 210 var nods=subdomains[i].nods-1; //the subdomains are closed 1=end; 211 var test = ArraySum(Array Add(ArraySubtract(subdomains[i].x.slice(1,nods), ArrayMultiply(subdomains[i].x.slice(0,nods-1), subdomains[i].y.slice(1,nods))), subdomains[i].y.slice(0,nods-1)));211 var test = ArraySum(ArrayMultiply(ArraySubtract(subdomain[i].x.slice(1,nods+1), subdomain[i].x.slice(0,nods)), ArrayAdd(subdomain[i].y.slice(1,nods+1), subdomain[i].y.slice(0,nods)))); 212 212 if ((i==0 && test>0) || (i>0 && test<0)) { 213 213 console.log('At least one contour was not correctly oriented and has been re-oriented'); 214 //TODO: Implement flipud 215 //subdomains[i].x = flipud(subdomains[i].x); subdomains[i].y = flipud(subdomains[i].y);214 subdomains[i].x.reverse(); 215 subdomains[i].y.reverse(); 216 216 } 217 217
Note:
See TracChangeset
for help on using the changeset viewer.