Changeset 19711


Ignore:
Timestamp:
11/12/15 15:21:59 (9 years ago)
Author:
Eric.Larour
Message:

CHG: implemented NodeConnectivity module in javascript.

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){
     1function triangle(md){
    22//TRIANGLE - create model mesh using the triangle package
    33//
     
    1515//      triangle(md,domain, rifts, 1500);
    1616
     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).
    1735        var area=Math.pow(resolution,2);
    1836
    1937        //Call mesher:
    20         var array = TriMesh(md, domain, rifts, area);
     38        var return_array=TriMesh(md, domain, rifts, area);
    2139
     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       
    2247        //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;
    2453
    2554        //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); 
    2857
    2958}
  • issm/trunk-jpl/src/m/mesh/triangle.m

    r17558 r19711  
    1 function md=triangle(md,domainname,varargin)
     1function md=triangle(md)
    22%TRIANGLE - create model mesh using the triangle package
    33%
  • issm/trunk-jpl/src/wrappers/NodeConnectivity/NodeConnectivity.cpp

    r15106 r19711  
    1010        _printf0_("\n");
    1111}/*}}}*/
    12 WRAPPER(NodeConnectivity){
     12WRAPPER(NodeConnectivity, double** pconnectivity, int* pnods, int *pwidth, int* elementsin, int nelsin, int nodsin){
    1313
    1414        /*inputs: */
  • issm/trunk-jpl/src/wrappers/NodeConnectivity/NodeConnectivity.h

    r14996 r19711  
    2222/*Header files: */
    2323#include "../bindings.h"
     24#ifndef _HAVE_JAVASCRIPT_MODULES_
    2425#include "../../c/main/globals.h"
     26#endif
    2527#include "../../c/toolkits/toolkits.h"
    2628#include "../../c/modules/modules.h"
     
    4547#endif
    4648
     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
    4757/* serial arg counts: */
    4858#undef NLHS
  • issm/trunk-jpl/src/wrappers/TriMesh/TriMesh.cpp

    r19702 r19711  
    1414        _printf_("\n");
    1515}/*}}}*/
    16 WRAPPER(TriMesh,double** pindex, double** px, double** py, int* pnel, int* pnods, double* domainx, double* domainy, int domainnods, double areain){
     16WRAPPER(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){
    1717       
    1818
  • issm/trunk-jpl/src/wrappers/TriMesh/TriMesh.h

    r19702 r19711  
    6464#define X                 px,pnods
    6565#define Y                 py,pnods
    66 #define SEGMENTS          NULL,NULL
    67 #define SEGMENTMARKERLIST NULL,NULL
     66#define SEGMENTS          psegments,pnsegs
     67#define SEGMENTMARKERLIST psegmentmarkers,pnsegs
    6868#endif
    6969
  • issm/trunk-jpl/src/wrappers/TriMesh/TriMesh.js

    r19702 r19711  
    3131        var px= Module._malloc(4);
    3232        var py= Module._malloc(4);
     33        var psegments= Module._malloc(4);
     34        var psegmentmarkers= Module._malloc(4);
     35        var pnsegs= Module._malloc(4);
    3336        //}}}
    3437
    3538        //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']);
    3740       
    3841        //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);
    4043       
    4144        /*Dynamic copying from heap: {{{*/
     
    4447        var indexptr = Module.getValue(pindex,'i32');
    4548        indexlinear = Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3);
    46         index = listToMatrix(indexlinear,3);
     49        index = ListToMatrix(indexlinear,3);
    4750
    4851        nods = Module.getValue(pnods, 'i32');
     
    5154        x = Module.HEAPF64.slice(xptr /8, xptr/8 + nods);
    5255        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);
    5364        /*}}}*/
    5465
    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];
    6567
    6668        /*Free ressources: */
     
    7375        Module._free(pnel);
    7476        Module._free(pnods);
     77        Module._free(psegments);
     78        Module._free(psegmentmarkers);
     79        Module._free(pnsegs);
    7580
     81        return return_array;
    7682}
  • issm/trunk-jpl/src/wrappers/javascript/Makefile.am

    r19702 r19711  
    88
    99bin_SCRIPTS =
    10 bin_SCRIPTS += ../TriMesh/TriMesh.js
     10bin_SCRIPTS += ../TriMesh/TriMesh.js  \
     11                           ../NodeConnectivity/NodeConnectivity.js
    1112       
    1213#javascript io{{{
     
    3940#}}}
    4041#Wrappers {{{
    41 bin_PROGRAMS =           TriMeshModule
     42bin_PROGRAMS =           IssmModule
    4243#}}}
    4344
     
    7172endif
    7273
    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)
     74IssmModule_SOURCES = ../TriMesh/TriMesh.cpp \
     75                                         ../NodeConnectivity/NodeConnectivity.cpp
     76IssmModule_CXXFLAGS= -fPIC --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule']"  -s DISABLE_EXCEPTION_CATCHING=0
     77IssmModule_LDADD = ${deps} $(TRIANGLELIB)
    7678#}}}
  • issm/trunk-jpl/src/wrappers/javascript/io/FetchJavascriptData.cpp

    r19702 r19711  
    1919}
    2020/*}}}*/
     21/*FUNCTION FetchData(double* pscalar,double scalar){{{*/
     22void FetchData(int* pinteger,int integer){
     23       
     24        *pinteger = integer;
     25}
     26/*}}}*/
     27/*FUNCTION FetchData(double **pvector, double* vectorin, int nods){{{*/
     28void FetchData(double** pvector, double* vectorin, int nods){
    2129
     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){{{*/
     38void 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){{{*/
     53void 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/*}}}*/
    2266/*ISSM objects*/
    2367/*FUNCTION FetchData(Contours** pcontours,double* x, double* y, int nods){{{*/
  • issm/trunk-jpl/src/wrappers/javascript/io/WriteJavascriptData.cpp

    r19702 r19711  
    2323                *pmatrix=dmatrix;
    2424                *pnel=M;
     25        }
     26}
     27/*}}}*/
     28/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, int* pN, , int* matrix, int M,int N){{{*/
     29void 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;
    2539        }
    2640}
  • issm/trunk-jpl/src/wrappers/javascript/io/javascriptio.h

    r19702 r19711  
    1919
    2020void WriteData(IssmPDouble** pmatrix,int* pnel, int* matrix, int M,int N);
     21void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, int* matrix, int M, int N);
    2122void WriteData(IssmPDouble** px, int* pnods, int* vector, int M);
    2223void WriteData(IssmPDouble** px, int* pnods, double* vector, int M);
    2324
    2425void FetchData(double* pscalar,double scalar);
     26void FetchData(int* pinteger,int integer);
     27void FetchData(double** pvector, double* vectorin, int nods);
     28void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
     29void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
    2530void FetchData(Contours** pcontours,double* x, double* y, int nods);
    2631
  • issm/trunk-jpl/test/NightlyRun/test101.html

    r19702 r19711  
    99<script type="text/javascript" src="../../src/m/classes/model.js"></script>
    1010<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>
    1212<script type="text/javascript" src="../../src/m/classes/mesh2d.js"></script>
    1313<script type="text/javascript" src="../../src/wrappers/TriMesh/TriMesh.js"></script>
    1414<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>
    1517<script type="text/javascript" src="../../externalpackages/javascript/src/sprintf.js"></script>
    1618<!-- Includes }}}-->
     
    2022        <script type="text/javascript" async>
    2123        var md = new model();
    22         triangle(md,square,[],5000);
    23         setmask(md,'all','');
     24        triangle(md,square,50000);
     25        md.mesh.disp();
     26
    2427
    2528        </script>
Note: See TracChangeset for help on using the changeset viewer.