Ignore:
Timestamp:
06/26/18 19:33:59 (7 years ago)
Author:
dlcheng
Message:

ADD (JS): BAMG integration for JS, including bamggeom, bamgmesh, and bamg functions, as well as BamgMesher.js wrapper. CHG: BamgMesh.h JS wrapper declaration. FetchData overrides for BamgMesh/BamgGeom/BamgOpts. Additional array operations to emulate Matlab matrix operations.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/wrappers/javascript/io/FetchJavascriptData.cpp

    r19768 r22877  
    122122       
    123123        *pcontours=contours;
     124}
     125/*}}}*/
     126/*FUNCTION FetchData(BamgGeom** pbamggeom, double* vertices, int nods){{{*/
     127void FetchData(BamgGeom** pbamggeom, double* Vertices, int* VerticesSize, double* Edges, int* EdgesSize, double* Corners, int* CornersSize, double* RequiredVertices, int* RequiredVerticesSize, double* RequiredCrackedEdges, int* RequiredCrackedEdgesSize, double* CrackedEdges, int* CrackedEdgesSize, double* SubDomains, int* SubDomainsSize){
     128
     129        /*Initialize output*/
     130        BamgGeom* bamggeom = new BamgGeom();
     131
     132        /*Fetch all fields*/
     133        FetchData(&bamggeom->Vertices, &bamggeom->VerticesSize[0], &bamggeom->VerticesSize[1], Vertices, VerticesSize[0], VerticesSize[1]);
     134        FetchData(&bamggeom->Edges, &bamggeom->EdgesSize[0], &bamggeom->EdgesSize[1], Edges, EdgesSize[0], EdgesSize[1]);
     135        FetchData(&bamggeom->Corners, &bamggeom->CornersSize[0], &bamggeom->CornersSize[1], Corners, CornersSize[0], CornersSize[1]);
     136        FetchData(&bamggeom->RequiredVertices, &bamggeom->RequiredVerticesSize[0], &bamggeom->RequiredVerticesSize[1], RequiredVertices, RequiredVerticesSize[0], RequiredVerticesSize[1]);
     137        FetchData(&bamggeom->RequiredEdges, &bamggeom->RequiredEdgesSize[0], &bamggeom->RequiredEdgesSize[1], RequiredEdges, RequiredEdgesSize[0], RequiredEdgesSize[1]);
     138        FetchData(&bamggeom->CrackedEdges, &bamggeom->CrackedEdgesSize[0], &bamggeom->CrackedEdgesSize[1], CrackedEdges, CrackedEdgesSize[0], CrackedEdgesSize[1]);
     139        FetchData(&bamggeom->SubDomains, &bamggeom->SubDomainsSize[0], &bamggeom->SubDomainsSize[1], SubDomains, SubDomainsSize[0], SubDomainsSize[1]);
     140
     141        /*Assign output pointers:*/
     142        *pbamggeom = bamggeom;
     143}
     144/*}}}*/
     145/*FUNCTION FetchData(BamgMesh** pbamgmesh, double* vertices, int nods){{{*/
     146void FetchData(BamgMesh** pbamgmesh, double* Vertices, int* VerticesSize, double* Edges, int* EdgesSize, double* Triangles, int* TrianglesSize, double* CrackedEdges, int* CrackedEdgesSize, double* VerticesOnGeomEdge, int* VerticesOnGeomEdgeSize, double* VerticesOnGeomVertex, int* VerticesOnGeomVertexSize, double* EdgesOnGeomEdge, int* EdgesOnGeomEdgeSize, double* IssmSegments, int* IssmSegmentsSize){
     147
     148        /*Initialize output*/
     149        BamgMesh* bamgmesh = new BamgMesh();
     150
     151        /*Fetch all fields*/
     152        FetchData(&bamggeom->Vertices, &bamggeom->VerticesSize[0], &bamggeom->VerticesSize[1], Vertices, VerticesSize[0], VerticesSize[1]);
     153        FetchData(&bamggeom->Edges, &bamggeom->EdgesSize[0], &bamggeom->EdgesSize[1], Edges, EdgesSize[0], EdgesSize[1]);
     154        FetchData(&bamggeom->Triangles, &bamggeom->TrianglesSize[0], &bamggeom->TrianglesSize[1], Triangles, TrianglesSize[0], TrianglesSize[1]);
     155        FetchData(&bamggeom->CrackedEdges, &bamggeom->CrackedEdgesSize[0], &bamggeom->CrackedEdgesSize[1], CrackedEdges, CrackedEdgesSize[0], CrackedEdgesSize[1]);
     156        FetchData(&bamggeom->VerticesOnGeomEdge, &bamggeom->VerticesOnGeomEdgeSize[0], &bamggeom->VerticesOnGeomEdgeSize[1], VerticesOnGeomEdge, VerticesOnGeomEdgeSize[0], VerticesOnGeomEdgeSize[1]);
     157        FetchData(&bamggeom->VerticesOnGeomVertex, &bamggeom->VerticesOnGeomVertexSize[0], &bamggeom->VerticesOnGeomVertexSize[1], VerticesOnGeomVertex, VerticesOnGeomVertexSize[0], VerticesOnGeomVertexSize[1]);
     158        FetchData(&bamggeom->EdgesOnGeomEdge, &bamggeom->EdgesOnGeomEdgeSize[0], &bamggeom->EdgesOnGeomEdgeSize[1], EdgesOnGeomEdge, EdgesOnGeomEdgeSize[0], EdgesOnGeomEdgeSize[1]);
     159        FetchData(&bamggeom->IssmSegments, &bamggeom->IssmSegmentsSize[0], &bamggeom->IssmSegmentsSize[1], IssmSegments, IssmSegmentsSize[0], IssmSegmentsSize[1]);
     160
     161        /*Assign output pointers:*/
     162        *pbamgmesh = bamgmesh;
     163}
     164/*}}}*/
     165/*FUNCTION FetchData(BamgMesh** pbamgopts, double* vertices, int nods){{{*/
     166void FetchData(BamgOpts** pbamgopts, double anisomax, double cutoff, double coeff, double errg, double gradation, int Hessiantype, int maxnbv, double maxsubdiv, int Metrictype, int nbjacobi, int nbsmooth, double omega, double power, int verbose, int Crack, int KeepVertices, int splitcorners, double hmin, double hmax, double* hminVertices, double* hmaxVertices, double* hVertices, double* metric, double* field, double err){
     167
     168        BamgOpts *bamgopts      = new BamgOpts();
     169
     170    /*Parameters*/
     171    bamgopts->anisomax      = anisomax;
     172    bamgopts->coeff             = coeff;
     173    bamgopts->cutoff            = cutoff;
     174    bamgopts->errg              = errg;
     175    bamgopts->gradation     = gradation;
     176    bamgopts->Hessiantype       = Hessiantype;
     177    bamgopts->maxnbv        = maxnbv;
     178    bamgopts->maxsubdiv     = maxsubdiv;
     179    bamgopts->Metrictype        = Metrictype;
     180    bamgopts->nbjacobi      = nbjacobi;
     181    bamgopts->nbsmooth      = nbsmooth;
     182    bamgopts->omega             = omega;
     183    bamgopts->power             = power;
     184    bamgopts->verbose       = verbose;
     185
     186    /*Flags*/
     187    bamgopts->Crack             = Crack;
     188    bamgopts->KeepVertices      = KeepVertices;
     189    bamgopts->splitcorners      = splitcorners;
     190       
     191    /*Metric related*/
     192    bamgopts->hmin              = hmin;
     193    bamgopts->hmax              = hmax;
     194    bamgopts->hminVertices      = xNew<IssmPDouble>(hminVerticesNods);  xMemCpy<IssmPDouble>(bamgopts->hminVertices, hminVertices, hminVerticesNods);
     195    bamgopts->hmaxVertices  = xNew<IssmPDouble>(hmaxVerticesNods);  xMemCpy<IssmPDouble>(bamgopts->hmaxVertices, hmaxVertices, hmaxVerticesNods);
     196    bamgopts->hVertices     = xNew<IssmPDouble>(hVerticesNods);     xMemCpy<IssmPDouble>(bamgopts->hVertices, hVertices, hVerticesNods);
     197    bamgopts->field             = xNew<IssmPDouble>(fieldNods);         xMemCpy<IssmPDouble>(bamgopts->field, field, fieldNods);
     198    bamgopts->metric        = xNew<IssmPDouble>(metricNods);        xMemCpy<IssmPDouble>(bamgopts->metric, metric, metricNods);
     199    bamgopts->err               = err;
     200
     201        *pbamgopts              = bamgopts;
    124202}
    125203/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.