source:
issm/oecreview/Archive/21724-22754/ISSM-22659-22660.diff
Last change on this file was 22755, checked in by , 7 years ago | |
---|---|
File size: 4.2 KB |
-
../trunk-jpl/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.js
1 /** 2 * INTERPFROMGRIDTOMESH - interpolation from a grid onto a list of points 3 * 4 * This function interpolates a field defined on a grid to a list of points based on a bilinear interpolation. 5 * 6 * Usage: 7 * var data_mesh=InterpFromGridToMesh(xIn,yIn,dataIn,xMeshIn,yMeshIn,defaultValue);\ 8 * 9 * xIn,yIn : coordinates of matrix data. (x and y must be in increasing order) 10 * dataIn : matrix holding the data to be interpolated onto the mesh 11 * xMeshIn,yMeshIn : coordinates of the points onto which we interpolate 12 * defaultValue (optional) : default value if no data is found (holes) 13 * dataMesh : array of mesh interpolated data 14 */ 15 function InterpFromGridToMesh(xIn,yIn,dataIn,xMeshIn,yMeshIn,defaultValue) { 16 /* 17 Variables 18 */ 19 //{{{ 20 var data = {}; 21 var dataMesh = {}; 22 var dataMeshPtr = {}; 23 var ddata = {}; 24 var ddataHeap = {}; 25 var ddataPtr = {}; 26 var defaultValue = 0; // Default value for defaultValue :) 27 var dx = {}; 28 var dxHeap = {}; 29 var dxMesh = {}; 30 var dxMeshHeap = {}; 31 var dxMeshPtr = {}; 32 var dxPtr = {}; 33 var dy = {}; 34 var dyHeap = {}; 35 var dyMesh = {}; 36 var dyMeshHeap = {}; 37 var dyMeshPtr = {}; 38 var dyPtr = {}; 39 var ndata = {}; 40 var nods = 0; 41 var nx = {}; 42 var nxMesh = {}; 43 var ny = {}; 44 var nyMesh = {}; 45 var pdataMesh = {}; 46 var x = {}; 47 var xMesh = {}; 48 var y = {}; 49 var yMesh = {}; 50 //}}} 51 52 53 /* 54 Retrieve default value 55 */ 56 //{{{ 57 if (arguments.length === 6) { 58 var defaultValue = arguments[5]; 59 } 60 //}}} 61 62 63 /* 64 Dynamic allocations 65 */ 66 //{{{ 67 68 /* 69 Input 70 */ 71 //{{{ 72 dx = new Float64Array(xIn); 73 nx = dx.length * dx.BYTES_PER_ELEMENT; 74 dxPtr = Module._malloc(nx); 75 dxHeap = new Uint8Array(Module.HEAPU8.buffer, dxPtr, nx); 76 dxHeap.set(new Uint8Array(dx.buffer)); 77 x = dxHeap.byteOffset; 78 79 dy = new Float64Array(yIn); 80 ny = dy.length * dy.BYTES_PER_ELEMENT; 81 dyPtr = Module._malloc(ny); 82 dyHeap = new Uint8Array(Module.HEAPU8.buffer, dyPtr, ny); 83 dyHeap.set(new Uint8Array(dy.buffer)); 84 y = dyHeap.byteOffset; 85 86 ddata = new Float64Array(dataIn); 87 ndata = ddata.length * ddata.BYTES_PER_ELEMENT; 88 ddataPtr = Module._malloc(ndata); 89 ddataHeap = new Uint8Array(Module.HEAPU8.buffer, ddataPtr, ndata); 90 ddataHeap.set(new Uint8Array(ddata.buffer)); 91 data = ddataHeap.byteOffset; 92 93 dxMesh = new Float64Array(xMeshIn); 94 nxMesh = dxMesh.length * dxMesh.BYTES_PER_ELEMENT; 95 dxMeshPtr = Module._malloc(nxMesh); 96 dxMeshHeap = new Uint8Array(Module.HEAPU8.buffer, dxMeshPtr, nxMesh); 97 dxMeshHeap.set(new Uint8Array(dxMesh.buffer)); 98 xMesh = dxMeshHeap.byteOffset; 99 100 dyMesh = new Float64Array(yMeshIn); 101 nyMesh = dyMesh.length * dyMesh.BYTES_PER_ELEMENT; 102 dyMeshPtr = Module._malloc(nyMesh); 103 dyMeshHeap = new Uint8Array(Module.HEAPU8.buffer, dyMeshPtr, nyMesh); 104 dyMeshHeap.set(new Uint8Array(dyMesh.buffer)); 105 yMesh = dyMeshHeap.byteOffset; 106 107 nods = xIn.length; 108 109 110 /* 111 Output 112 */ 113 dataMeshPtr = Module._malloc(4); 114 //}}} 115 116 //}}} 117 118 119 /* 120 Declare InterpFromGridToMesh module 121 */ 122 //{{{ 123 InterpFromGridToMeshModule = Module.cwrap( 124 'InterpFromGridToMeshModule', 125 'number', 126 [ 127 'number', 128 'number', 129 'number', 130 'number', 131 'number', 132 'number', 133 'number' 134 ] 135 ); 136 //}}} 137 138 139 /* 140 Call InterpFromGridToMesh module 141 */ 142 //{{{ 143 InterpFromGrid2MeshModule( 144 dataMeshPtr, 145 x, 146 y, 147 data, 148 xMesh, 149 yMesh, 150 nods, 151 defaultValue 152 ); 153 //}}} 154 155 156 /* 157 Dynamic copying from heap 158 */ 159 //{{{ 160 dataMeshPtr = Module.getValue(pdataMesh, 'i32'); 161 dataMesh = Module.HEAP64.slice(dataMeshPtr / 8, dataMeshPtr / 8 + nods); 162 //}}} 163 164 165 /* 166 Free resources 167 */ 168 //{{{ 169 Module._free(pdataMesh); 170 //}}} 171 172 173 return dataMesh; 174 } 175 No newline at end of file
Note:
See TracBrowser
for help on using the repository browser.