Changeset 19711
- Timestamp:
- 11/12/15 15:21:59 (9 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 3 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/mesh/triangle.js
r19702 r19711 1 function triangle(md ,domain, rifts, resolution){1 function triangle(md){ 2 2 //TRIANGLE - create model mesh using the triangle package 3 3 // … … 15 15 // triangle(md,domain, rifts, 1500); 16 16 17 if (!(arguments.length==3 | arguments.length==4)){ 18 console.log('triangle usage error.'); 19 } 20 21 var md=arguments[0]; 22 var domain=arguments[1]; 23 24 if (arguments.length==3){ 25 var resolution=arguments[2]; 26 var rifts=[]; 27 } 28 if (arguments.length==4){ 29 var rifts=arguments[2]; 30 var resolution=arguments[3]; 31 } 32 33 //Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m resolution node would 34 //be made of 1000*1000 area squares). 17 35 var area=Math.pow(resolution,2); 18 36 19 37 //Call mesher: 20 var array =TriMesh(md, domain, rifts, area);38 var return_array=TriMesh(md, domain, rifts, area); 21 39 40 //Plug into md: 41 md.mesh.elements=return_array[0]; 42 md.mesh.x=return_array[1]; 43 md.mesh.y=return_array[2]; 44 md.mesh.segments=return_array[3]; 45 md.mesh.segmentmarkers=return_array[4]; 46 22 47 //Fill in rest of fields: 23 //md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1; 48 md.mesh.numberofelements=md.mesh.elements.length; 49 md.mesh.numberofvertices=md.mesh.x.length; 50 md.mesh.vertexonboundary=new Float64Array(md.mesh.numberofvertices); 51 52 for (i=0;i<md.mesh.segments.length;i++) for(j=0;j<2;j++) md.mesh.vertexonboundary[md.mesh.segments[i][j]-1]=1; 24 53 25 54 //Now, build the connectivity tables for this mesh. 26 //md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);27 //md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 55 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 56 //md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 28 57 29 58 } -
issm/trunk-jpl/src/m/mesh/triangle.m
r17558 r19711 1 function md=triangle(md ,domainname,varargin)1 function md=triangle(md) 2 2 %TRIANGLE - create model mesh using the triangle package 3 3 % -
issm/trunk-jpl/src/wrappers/NodeConnectivity/NodeConnectivity.cpp
r15106 r19711 10 10 _printf0_("\n"); 11 11 }/*}}}*/ 12 WRAPPER(NodeConnectivity ){12 WRAPPER(NodeConnectivity, double** pconnectivity, int* pnods, int *pwidth, int* elementsin, int nelsin, int nodsin){ 13 13 14 14 /*inputs: */ -
issm/trunk-jpl/src/wrappers/NodeConnectivity/NodeConnectivity.h
r14996 r19711 22 22 /*Header files: */ 23 23 #include "../bindings.h" 24 #ifndef _HAVE_JAVASCRIPT_MODULES_ 24 25 #include "../../c/main/globals.h" 26 #endif 25 27 #include "../../c/toolkits/toolkits.h" 26 28 #include "../../c/modules/modules.h" … … 45 47 #endif 46 48 49 #ifdef _HAVE_JAVASCRIPT_MODULES_ 50 /* serial input macros: */ 51 #define ELEMENTS elementsin, nelsin,3 52 #define NUMNODES nodsin 53 /* serial output macros: */ 54 #define CONNECTIVITY pconnectivity,pnods,pwidth 55 #endif 56 47 57 /* serial arg counts: */ 48 58 #undef NLHS -
issm/trunk-jpl/src/wrappers/TriMesh/TriMesh.cpp
r19702 r19711 14 14 _printf_("\n"); 15 15 }/*}}}*/ 16 WRAPPER(TriMesh,double** pindex, double** px, double** py, int* pnel, int* pnods, double* domainx, double* domainy, int domainnods, double areain){16 WRAPPER(TriMesh,double** pindex, double** px, double** py, int* pnel, int* pnods, double** psegments, double** psegmentmarkers, int* pnsegs, double* domainx, double* domainy, int domainnods, double areain){ 17 17 18 18 -
issm/trunk-jpl/src/wrappers/TriMesh/TriMesh.h
r19702 r19711 64 64 #define X px,pnods 65 65 #define Y py,pnods 66 #define SEGMENTS NULL,NULL67 #define SEGMENTMARKERLIST NULL,NULL66 #define SEGMENTS psegments,pnsegs 67 #define SEGMENTMARKERLIST psegmentmarkers,pnsegs 68 68 #endif 69 69 -
issm/trunk-jpl/src/wrappers/TriMesh/TriMesh.js
r19702 r19711 31 31 var px= Module._malloc(4); 32 32 var py= Module._malloc(4); 33 var psegments= Module._malloc(4); 34 var psegmentmarkers= Module._malloc(4); 35 var pnsegs= Module._malloc(4); 33 36 //}}} 34 37 35 38 //Declare TriMesh module: 36 TriMeshModule = Module.cwrap('TriMeshModule','number',['number','number','number','number','number','number','number','number','number' ]);39 TriMeshModule = Module.cwrap('TriMeshModule','number',['number','number','number','number','number','number','number','number','number','number','number','number']); 37 40 38 41 //Call TriMesh module: 39 TriMeshModule(pindex,px,py,pnel,pnods, domainx,domainy,dx.length,area);42 TriMeshModule(pindex,px,py,pnel,pnods,psegments,psegmentmarkers,pnsegs, domainx,domainy,dx.length,area); 40 43 41 44 /*Dynamic copying from heap: {{{*/ … … 44 47 var indexptr = Module.getValue(pindex,'i32'); 45 48 indexlinear = Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3); 46 index = listToMatrix(indexlinear,3);49 index = ListToMatrix(indexlinear,3); 47 50 48 51 nods = Module.getValue(pnods, 'i32'); … … 51 54 x = Module.HEAPF64.slice(xptr /8, xptr/8 + nods); 52 55 y = Module.HEAPF64.slice(yptr /8, yptr/8 + nods); 56 57 nsegs = Module.getValue(pnsegs, 'i32'); 58 var segmentsptr = Module.getValue(psegments,'i32'); 59 segmentslinear = Module.HEAPF64.slice(segmentsptr /8, segmentsptr/8 + nsegs*3); 60 segments = ListToMatrix(segmentslinear,3); 61 62 var segmentmarkersptr = Module.getValue(psegmentmarkers,'i32'); 63 segmentmarkers = Module.HEAPF64.slice(segmentmarkersptr /8, segmentmarkersptr/8 + nsegs); 53 64 /*}}}*/ 54 65 55 /*Assign output: */ 56 md.mesh=new mesh2d(); 57 58 md.mesh.elements=index; 59 md.mesh.numberofelements=nel; 60 md.mesh.numberofvertices=nods; 61 md.mesh.x=x; 62 md.mesh.y=y; 63 md.mesh.segments=[]; 64 md.mesh.segmentmarkers=[]; 66 var return_array=[index,x,y,segments,segmentmarkers]; 65 67 66 68 /*Free ressources: */ … … 73 75 Module._free(pnel); 74 76 Module._free(pnods); 77 Module._free(psegments); 78 Module._free(psegmentmarkers); 79 Module._free(pnsegs); 75 80 81 return return_array; 76 82 } -
issm/trunk-jpl/src/wrappers/javascript/Makefile.am
r19702 r19711 8 8 9 9 bin_SCRIPTS = 10 bin_SCRIPTS += ../TriMesh/TriMesh.js 10 bin_SCRIPTS += ../TriMesh/TriMesh.js \ 11 ../NodeConnectivity/NodeConnectivity.js 11 12 12 13 #javascript io{{{ … … 39 40 #}}} 40 41 #Wrappers {{{ 41 bin_PROGRAMS = TriMeshModule42 bin_PROGRAMS = IssmModule 42 43 #}}} 43 44 … … 71 72 endif 72 73 73 TriMeshModule_SOURCES = ../TriMesh/TriMesh.cpp 74 TriMeshModule_CXXFLAGS= -fPIC --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule']" -s DISABLE_EXCEPTION_CATCHING=0 75 TriMeshModule_LDADD = ${deps} $(MPILIB) $(PETSCLIB) $(TRIANGLELIB) $(GSLLIB) $(PROJ4LIB) 74 IssmModule_SOURCES = ../TriMesh/TriMesh.cpp \ 75 ../NodeConnectivity/NodeConnectivity.cpp 76 IssmModule_CXXFLAGS= -fPIC --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule']" -s DISABLE_EXCEPTION_CATCHING=0 77 IssmModule_LDADD = ${deps} $(TRIANGLELIB) 76 78 #}}} -
issm/trunk-jpl/src/wrappers/javascript/io/FetchJavascriptData.cpp
r19702 r19711 19 19 } 20 20 /*}}}*/ 21 /*FUNCTION FetchData(double* pscalar,double scalar){{{*/ 22 void FetchData(int* pinteger,int integer){ 23 24 *pinteger = integer; 25 } 26 /*}}}*/ 27 /*FUNCTION FetchData(double **pvector, double* vectorin, int nods){{{*/ 28 void FetchData(double** pvector, double* vectorin, int nods){ 21 29 30 double* vector=NULL; 31 32 vector=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(vector,vectorin,nods); 33 34 *pvector=vector; 35 } 36 /*}}}*/ 37 /*FUNCTION FetchData(double **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/ 38 void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){ 39 40 double* matrix=NULL; 41 42 if(pmatrix && matrixin){ 43 44 matrix=xNew<IssmPDouble>(M*N); 45 for(int i=0;i<M*N;i++)matrix[i]=(IssmPDouble)matrixin[i]; 46 if (pM)*pM=M; 47 if (pN)*pN=N; 48 *pmatrix=matrix; 49 } 50 } 51 /*}}}*/ 52 /*FUNCTION FetchData(int **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/ 53 void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){ 54 55 int* matrix=NULL; 56 57 if(pmatrix && matrixin){ 58 59 matrix=xNew<int>(M*N);xMemCpy<int>(matrix,matrixin,M*N); 60 if (pM)*pM=M; 61 if (pN)*pN=N; 62 *pmatrix=matrix; 63 } 64 } 65 /*}}}*/ 22 66 /*ISSM objects*/ 23 67 /*FUNCTION FetchData(Contours** pcontours,double* x, double* y, int nods){{{*/ -
issm/trunk-jpl/src/wrappers/javascript/io/WriteJavascriptData.cpp
r19702 r19711 23 23 *pmatrix=dmatrix; 24 24 *pnel=M; 25 } 26 } 27 /*}}}*/ 28 /*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, int* pN, , int* matrix, int M,int N){{{*/ 29 void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, int* matrix, int M, int N){ 30 31 if(pmatrix && matrix){ 32 33 /*Copy matrix: */ 34 IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 35 for (int i=0;i<M*N;i++)dmatrix[i]=(IssmPDouble)matrix[i]; 36 *pmatrix=dmatrix; 37 *pM=M; 38 *pN=N; 25 39 } 26 40 } -
issm/trunk-jpl/src/wrappers/javascript/io/javascriptio.h
r19702 r19711 19 19 20 20 void WriteData(IssmPDouble** pmatrix,int* pnel, int* matrix, int M,int N); 21 void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, int* matrix, int M, int N); 21 22 void WriteData(IssmPDouble** px, int* pnods, int* vector, int M); 22 23 void WriteData(IssmPDouble** px, int* pnods, double* vector, int M); 23 24 24 25 void FetchData(double* pscalar,double scalar); 26 void FetchData(int* pinteger,int integer); 27 void FetchData(double** pvector, double* vectorin, int nods); 28 void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N); 29 void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N); 25 30 void FetchData(Contours** pcontours,double* x, double* y, int nods); 26 31 -
issm/trunk-jpl/test/NightlyRun/test101.html
r19702 r19711 9 9 <script type="text/javascript" src="../../src/m/classes/model.js"></script> 10 10 <script type="text/javascript" src="../../src/m/mesh/triangle.js"></script> 11 <script type="text/javascript" src="../../src/m/array/ listToMatrix.js"></script>11 <script type="text/javascript" src="../../src/m/array/ArrayOperations.js"></script> 12 12 <script type="text/javascript" src="../../src/m/classes/mesh2d.js"></script> 13 13 <script type="text/javascript" src="../../src/wrappers/TriMesh/TriMesh.js"></script> 14 14 <script type="text/javascript" src="../../build-js/src/wrappers/javascript/TriMeshModule.js"></script> 15 <script type="text/javascript" src="../../src/wrappers/NodeConnectivity/NodeConnectivity.js"></script> 16 <script type="text/javascript" src="../../build-js/src/wrappers/javascript/IssmModule.js"></script> 15 17 <script type="text/javascript" src="../../externalpackages/javascript/src/sprintf.js"></script> 16 18 <!-- Includes }}}--> … … 20 22 <script type="text/javascript" async> 21 23 var md = new model(); 22 triangle(md,square,[],5000); 23 setmask(md,'all',''); 24 triangle(md,square,50000); 25 md.mesh.disp(); 26 24 27 25 28 </script>
Note:
See TracChangeset
for help on using the changeset viewer.