Changeset 3273


Ignore:
Timestamp:
03/12/10 12:18:17 (15 years ago)
Author:
Mathieu Morlighem
Message:

Added Bamg field to model, which holds the geometry and mesh structures output by Bamg (very useful to recall Bamg)

Location:
issm/trunk/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/BamgGeom.cpp

    r3212 r3273  
    2525
    2626}
     27
     28void BamgGeomWrite(mxArray** pbamggeom_mat, BamgGeom* bamggeom){
     29
     30        /*Output*/
     31        mxArray*    bamggeom_mat=NULL;
     32
     33        /*Intermediary*/
     34        int         i,j;
     35        mxArray*    pfield=NULL;
     36        mxArray*    pfield2=NULL;
     37        int         numfields=14;
     38        const char* fnames[numfields];
     39        mwSize      ndim=2;
     40        mwSize      dimensions[2]={1,1};
     41
     42        fnames[0] = "NumVertices";
     43        fnames[1] = "Vertices";
     44        fnames[2] = "NumEdges";
     45        fnames[3] = "Edges";
     46        fnames[4] = "NumTangentAtEdges";
     47        fnames[5] = "TangentAtEdges";
     48        fnames[6] = "NumRequiredVertices";
     49        fnames[7] = "RequiredVertices";
     50        fnames[8] = "NumRequiredEdges";
     51        fnames[9] = "RequiredEdges";
     52        fnames[10]= "NumCrackedEdges";
     53        fnames[11]= "CrackedEdges";
     54        fnames[12]= "NumSubDomains";
     55        fnames[13]= "SubDomains";
     56
     57        bamggeom_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
     58
     59        mxSetField(bamggeom_mat,0,"NumVertices",mxCreateDoubleScalar(bamggeom->NumVertices));
     60
     61        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     62        mxSetM(pfield,3);
     63        mxSetN(pfield,bamggeom->NumVertices);
     64        mxSetPr(pfield,bamggeom->Vertices);
     65        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     66        mxSetField(bamggeom_mat,0,"Vertices",pfield2);
     67
     68        mxSetField(bamggeom_mat,0,"NumEdges",mxCreateDoubleScalar(bamggeom->NumEdges));
     69
     70        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     71        mxSetM(pfield,3);
     72        mxSetN(pfield,bamggeom->NumEdges);
     73        mxSetPr(pfield,bamggeom->Edges);
     74        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     75        mxSetField(bamggeom_mat,0,"Edges",pfield2);
     76
     77        mxSetField(bamggeom_mat,0,"NumTangentAtEdges",mxCreateDoubleScalar(bamggeom->NumTangentAtEdges));
     78
     79        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     80        mxSetM(pfield,4);
     81        mxSetN(pfield,bamggeom->NumTangentAtEdges);
     82        mxSetPr(pfield,bamggeom->TangentAtEdges);
     83        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     84        mxSetField(bamggeom_mat,0,"TangentAtEdges",pfield2);
     85
     86        mxSetField(bamggeom_mat,0,"NumRequiredVertices",mxCreateDoubleScalar(bamggeom->NumRequiredVertices));
     87
     88        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     89        mxSetM(pfield,1);
     90        mxSetN(pfield,bamggeom->NumRequiredVertices);
     91        mxSetPr(pfield,bamggeom->RequiredVertices);
     92        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     93        mxSetField(bamggeom_mat,0,"RequiredVertices",pfield2);
     94
     95        mxSetField(bamggeom_mat,0,"NumRequiredEdges",mxCreateDoubleScalar(bamggeom->NumRequiredEdges));
     96
     97        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     98        mxSetM(pfield,1);
     99        mxSetN(pfield,bamggeom->NumRequiredEdges);
     100        mxSetPr(pfield,bamggeom->RequiredEdges);
     101        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     102        mxSetField(bamggeom_mat,0,"RequiredEdges",pfield2);
     103
     104        mxSetField(bamggeom_mat,0,"NumCrackedEdges",mxCreateDoubleScalar(bamggeom->NumCrackedEdges));
     105
     106        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     107        mxSetM(pfield,2);
     108        mxSetN(pfield,bamggeom->NumCrackedEdges);
     109        mxSetPr(pfield,bamggeom->CrackedEdges);
     110        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     111        mxSetField(bamggeom_mat,0,"CrackedEdges",pfield2);
     112
     113        mxSetField(bamggeom_mat,0,"NumSubDomains",mxCreateDoubleScalar(bamggeom->NumSubDomains));
     114
     115        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     116        mxSetM(pfield,4);
     117        mxSetN(pfield,bamggeom->NumSubDomains);
     118        mxSetPr(pfield,bamggeom->SubDomains);
     119        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     120        mxSetField(bamggeom_mat,0,"SubDomains",pfield2);
     121
     122        /*Assign output pointer*/
     123        *pbamggeom_mat=bamggeom_mat;
     124
     125}
  • issm/trunk/src/c/objects/BamgGeom.h

    r3212 r3273  
    44#ifndef BAMGGEOM_H_
    55#define BAMGGEOM_H_
     6
     7#include <mex.h>
    68
    79struct BamgGeom{
     
    3739
    3840void BamgGeomInit(BamgGeom* bamggeom);
     41void BamgGeomWrite(mxArray** bamggeom_mat,BamgGeom* bamggeom);
    3942
    4043#endif
  • issm/trunk/src/c/objects/BamgMesh.cpp

    r3212 r3273  
    3030
    3131}
     32
     33void BamgMeshWrite(mxArray** pbamgmesh_mat, BamgMesh* bamgmesh){
     34
     35        /*Output*/
     36        mxArray*    bamgmesh_mat=NULL;
     37
     38        /*Intermediary*/
     39        int         i,j;
     40        mxArray*    pfield=NULL;
     41        mxArray*    pfield2=NULL;
     42        int         numfields=23;
     43        const char* fnames[numfields];
     44        mwSize      ndim=2;
     45        mwSize      dimensions[2]={1,1};
     46
     47        fnames[0] = "NumTriangles";
     48        fnames[1] = "Triangles";
     49        fnames[2] = "NumVertices";
     50        fnames[3] = "Vertices";
     51        fnames[4] = "NumEdges";
     52        fnames[5] = "Edges";
     53        fnames[6] = "NumSegments";
     54        fnames[7] = "Segments";
     55        fnames[8] = "SegmentsMarkers";
     56        fnames[9] = "NumCrackedEdges";
     57        fnames[10] = "CrackedEdges";
     58        fnames[11] = "NumQuadrilaterals";
     59        fnames[12] = "Quadrilaterals";
     60        fnames[13] = "NumVerticesOnGeometricVertex";
     61        fnames[14] = "VerticesOnGeometricVertex";
     62        fnames[15] = "NumVerticesOnGeometricEdge";
     63        fnames[16] = "VerticesOnGeometricEdge";
     64        fnames[17] = "NumEdgesOnGeometricEdge";
     65        fnames[18] = "EdgesOnGeometricEdge";
     66        fnames[19] = "NumSubDomains";
     67        fnames[20] = "SubDomains";
     68        fnames[21] = "NumSubDomainsFromGeom";
     69        fnames[22] = "SubDomainsFromGeom";
     70
     71        bamgmesh_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
     72
     73        mxSetField(bamgmesh_mat,0,"NumTriangles",mxCreateDoubleScalar(bamgmesh->NumTriangles));
     74
     75        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     76        mxSetM(pfield,4);
     77        mxSetN(pfield,bamgmesh->NumTriangles);
     78        mxSetPr(pfield,bamgmesh->Triangles);
     79        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     80        mxSetField(bamgmesh_mat,0,"Triangles",pfield2);
     81
     82        mxSetField(bamgmesh_mat,0,"NumVertices",mxCreateDoubleScalar(bamgmesh->NumVertices));
     83
     84        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     85        mxSetM(pfield,3);
     86        mxSetN(pfield,bamgmesh->NumVertices);
     87        mxSetPr(pfield,bamgmesh->Vertices);
     88        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     89        mxSetField(bamgmesh_mat,0,"Vertices",pfield2);
     90
     91        mxSetField(bamgmesh_mat,0,"NumEdges",mxCreateDoubleScalar(bamgmesh->NumEdges));
     92
     93        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     94        mxSetM(pfield,3);
     95        mxSetN(pfield,bamgmesh->NumEdges);
     96        mxSetPr(pfield,bamgmesh->Edges);
     97        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     98        mxSetField(bamgmesh_mat,0,"Edges",pfield2);
     99
     100        mxSetField(bamgmesh_mat,0,"NumSegments",mxCreateDoubleScalar(bamgmesh->NumSegments));
     101
     102        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     103        mxSetM(pfield,3);
     104        mxSetN(pfield,bamgmesh->NumSegments);
     105        mxSetPr(pfield,bamgmesh->Segments);
     106        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     107        mxSetField(bamgmesh_mat,0,"Segments",pfield2);
     108
     109        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     110        mxSetM(pfield,1);
     111        mxSetN(pfield,bamgmesh->NumSegments);
     112        mxSetPr(pfield,bamgmesh->SegmentsMarkers);
     113        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     114        mxSetField(bamgmesh_mat,0,"SegmentsMarkers",pfield2);
     115
     116        mxSetField(bamgmesh_mat,0,"NumCrackedEdges",mxCreateDoubleScalar(bamgmesh->NumCrackedEdges));
     117
     118        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     119        mxSetM(pfield,2);
     120        mxSetN(pfield,bamgmesh->NumCrackedEdges);
     121        mxSetPr(pfield,bamgmesh->CrackedEdges);
     122        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     123        mxSetField(bamgmesh_mat,0,"CrackedEdges",pfield2);
     124
     125        mxSetField(bamgmesh_mat,0,"NumQuadrilaterals",mxCreateDoubleScalar(bamgmesh->NumQuadrilaterals));
     126
     127        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     128        mxSetM(pfield,5);
     129        mxSetN(pfield,bamgmesh->NumQuadrilaterals);
     130        mxSetPr(pfield,bamgmesh->Quadrilaterals);
     131        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     132        mxSetField(bamgmesh_mat,0,"Quadrilaterals",pfield2);
     133
     134        mxSetField(bamgmesh_mat,0,"NumVerticesOnGeometricVertex",mxCreateDoubleScalar(bamgmesh->NumVerticesOnGeometricVertex));
     135
     136        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     137        mxSetM(pfield,2);
     138        mxSetN(pfield,bamgmesh->NumVerticesOnGeometricVertex);
     139        mxSetPr(pfield,bamgmesh->VerticesOnGeometricVertex);
     140        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     141        mxSetField(bamgmesh_mat,0,"VerticesOnGeometricVertex",pfield2);
     142
     143        mxSetField(bamgmesh_mat,0,"NumVerticesOnGeometricEdge",mxCreateDoubleScalar(bamgmesh->NumVerticesOnGeometricEdge));
     144
     145        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     146        mxSetM(pfield,2);
     147        mxSetN(pfield,bamgmesh->NumVerticesOnGeometricEdge);
     148        mxSetPr(pfield,bamgmesh->VerticesOnGeometricEdge);
     149        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     150        mxSetField(bamgmesh_mat,0,"VerticesOnGeometricEdge",pfield2);
     151
     152        mxSetField(bamgmesh_mat,0,"NumEdgesOnGeometricEdge",mxCreateDoubleScalar(bamgmesh->NumEdgesOnGeometricEdge));
     153
     154        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     155        mxSetM(pfield,2);
     156        mxSetN(pfield,bamgmesh->NumEdgesOnGeometricEdge);
     157        mxSetPr(pfield,bamgmesh->EdgesOnGeometricEdge);
     158        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     159        mxSetField(bamgmesh_mat,0,"EdgesOnGeometricEdge",pfield2);
     160
     161        mxSetField(bamgmesh_mat,0,"NumSubDomains",mxCreateDoubleScalar(bamgmesh->NumSubDomains));
     162
     163        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     164        mxSetM(pfield,4);
     165        mxSetN(pfield,bamgmesh->NumSubDomains);
     166        mxSetPr(pfield,bamgmesh->SubDomains);
     167        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     168        mxSetField(bamgmesh_mat,0,"SubDomains",pfield2);
     169
     170        mxSetField(bamgmesh_mat,0,"NumSubDomainsFromGeom",mxCreateDoubleScalar(bamgmesh->NumSubDomainsFromGeom));
     171
     172        pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     173        mxSetM(pfield,4);
     174        mxSetN(pfield,bamgmesh->NumSubDomainsFromGeom);
     175        mxSetPr(pfield,bamgmesh->SubDomainsFromGeom);
     176        mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
     177        mxSetField(bamgmesh_mat,0,"SubDomainsFromGeom",pfield2);
     178
     179        /*Assign output pointer*/
     180        *pbamgmesh_mat=bamgmesh_mat;
     181}
  • issm/trunk/src/c/objects/BamgMesh.h

    r3212 r3273  
    44#ifndef BAMGMESH_H_
    55#define BAMGMESH_H_
     6
     7#include <mex.h>
    68
    79struct BamgMesh{
     
    4547
    4648void BamgMeshInit(BamgMesh* bamgmesh);
     49void BamgMeshWrite(mxArray** bamgmesh_mat,BamgMesh* bamgmesh);
    4750
    4851#endif
  • issm/trunk/src/m/classes/@model/model.m

    r3203 r3273  
    2222       
    2323        %Mesh
     24        md.bamg=NaN;
    2425        md.type='';
    2526        md.numberofelements=0;
  • issm/trunk/src/m/classes/public/bamg.m

    r3272 r3273  
    276276
    277277% plug results onto model
     278md.bamg=struct();
     279md.bamg.mesh=bamgmesh_out;
     280md.bamg.geometry=bamggeom_out;
    278281md.x=bamgmesh_out.Vertices(:,1);
    279282md.y=bamgmesh_out.Vertices(:,2);
  • issm/trunk/src/m/classes/public/display/displaymesh.m

    r1489 r3273  
    3939disp(sprintf('\n      Properties:'));
    4040fielddisplay(md,'type','mesh type');
     41fielddisplay(md,'bamg','Geometry and 2d mesh properties (if generated by Bamg)');
    4142fielddisplay(md,'penalties','penalties list');
    4243fielddisplay(md,'gridonbed','lower nodes flags list');
  • issm/trunk/src/mex/Bamg/Bamg.cpp

    r3272 r3273  
    55
    66void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){
     7
     8        /*Outputs*/
     9        mxArray* bamgmesh_mat=NULL;
     10        mxArray* bamggeom_mat=NULL;
    711
    812        /*diverse: */
     
    8387        Bamgx(&bamgmesh_out,&bamggeom_out,&bamgmesh_in,&bamggeom_in,&bamgopts);
    8488
    85         /*Variables*/
    86         mxArray*    bamgmesh_mat=NULL;
    87         mxArray*    pfield=NULL;
    88         mxArray*    pfield2=NULL;
    89         int         numfields=23;
    90         const char* fnames[numfields];
    91         mwSize      ndim=2;
    92         mwSize      dimensions[2]={1,1};
    93 
    94         fnames[0] = "NumTriangles";
    95         fnames[1] = "Triangles";
    96         fnames[2] = "NumVertices";
    97         fnames[3] = "Vertices";
    98         fnames[4] = "NumEdges";
    99         fnames[5] = "Edges";
    100         fnames[6] = "NumSegments";
    101         fnames[7] = "Segments";
    102         fnames[8] = "SegmentsMarkers";
    103         fnames[9] = "NumCrackedEdges";
    104         fnames[10] = "CrackedEdges";
    105         fnames[11] = "NumQuadrilaterals";
    106         fnames[12] = "Quadrilaterals";
    107         fnames[13] = "NumVerticesOnGeometricVertex";
    108         fnames[14] = "VerticesOnGeometricVertex";
    109         fnames[15] = "NumVerticesOnGeometricEdge";
    110         fnames[16] = "VerticesOnGeometricEdge";
    111         fnames[17] = "NumEdgesOnGeometricEdge";
    112         fnames[18] = "EdgesOnGeometricEdge";
    113         fnames[19] = "NumSubDomains";
    114         fnames[20] = "SubDomains";
    115         fnames[21] = "NumSubDomainsFromGeom";
    116         fnames[22] = "SubDomainsFromGeom";
    117 
    118         bamgmesh_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
    119 
    120         mxSetField(bamgmesh_mat,0,"NumTriangles",mxCreateDoubleScalar(bamgmesh_out.NumTriangles));
    121 
    122         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    123         mxSetM(pfield,4);
    124         mxSetN(pfield,bamgmesh_out.NumTriangles);
    125         mxSetPr(pfield,bamgmesh_out.Triangles);
    126         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    127         mxSetField(bamgmesh_mat,0,"Triangles",pfield2);
    128 
    129         mxSetField(bamgmesh_mat,0,"NumVertices",mxCreateDoubleScalar(bamgmesh_out.NumVertices));
    130 
    131         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    132         mxSetM(pfield,3);
    133         mxSetN(pfield,bamgmesh_out.NumVertices);
    134         mxSetPr(pfield,bamgmesh_out.Vertices);
    135         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    136         mxSetField(bamgmesh_mat,0,"Vertices",pfield2);
    137 
    138         mxSetField(bamgmesh_mat,0,"NumEdges",mxCreateDoubleScalar(bamgmesh_out.NumEdges));
    139 
    140         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    141         mxSetM(pfield,3);
    142         mxSetN(pfield,bamgmesh_out.NumEdges);
    143         mxSetPr(pfield,bamgmesh_out.Edges);
    144         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    145         mxSetField(bamgmesh_mat,0,"Edges",pfield2);
    146 
    147         mxSetField(bamgmesh_mat,0,"NumSegments",mxCreateDoubleScalar(bamgmesh_out.NumSegments));
    148 
    149         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    150         mxSetM(pfield,3);
    151         mxSetN(pfield,bamgmesh_out.NumSegments);
    152         mxSetPr(pfield,bamgmesh_out.Segments);
    153         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    154         mxSetField(bamgmesh_mat,0,"Segments",pfield2);
    155 
    156         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    157         mxSetM(pfield,1);
    158         mxSetN(pfield,bamgmesh_out.NumSegments);
    159         mxSetPr(pfield,bamgmesh_out.SegmentsMarkers);
    160         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    161         mxSetField(bamgmesh_mat,0,"SegmentsMarkers",pfield2);
    162 
    163         mxSetField(bamgmesh_mat,0,"NumCrackedEdges",mxCreateDoubleScalar(bamgmesh_out.NumCrackedEdges));
    164 
    165         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    166         mxSetM(pfield,2);
    167         mxSetN(pfield,bamgmesh_out.NumCrackedEdges);
    168         mxSetPr(pfield,bamgmesh_out.CrackedEdges);
    169         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    170         mxSetField(bamgmesh_mat,0,"CrackedEdges",pfield2);
    171 
    172         mxSetField(bamgmesh_mat,0,"NumQuadrilaterals",mxCreateDoubleScalar(bamgmesh_out.NumQuadrilaterals));
    173 
    174         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    175         mxSetM(pfield,5);
    176         mxSetN(pfield,bamgmesh_out.NumQuadrilaterals);
    177         mxSetPr(pfield,bamgmesh_out.Quadrilaterals);
    178         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    179         mxSetField(bamgmesh_mat,0,"Quadrilaterals",pfield2);
    180 
    181         mxSetField(bamgmesh_mat,0,"NumVerticesOnGeometricVertex",mxCreateDoubleScalar(bamgmesh_out.NumVerticesOnGeometricVertex));
    182 
    183         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    184         mxSetM(pfield,2);
    185         mxSetN(pfield,bamgmesh_out.NumVerticesOnGeometricVertex);
    186         mxSetPr(pfield,bamgmesh_out.VerticesOnGeometricVertex);
    187         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    188         mxSetField(bamgmesh_mat,0,"VerticesOnGeometricVertex",pfield2);
    189 
    190         mxSetField(bamgmesh_mat,0,"NumVerticesOnGeometricEdge",mxCreateDoubleScalar(bamgmesh_out.NumVerticesOnGeometricEdge));
    191 
    192         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    193         mxSetM(pfield,2);
    194         mxSetN(pfield,bamgmesh_out.NumVerticesOnGeometricEdge);
    195         mxSetPr(pfield,bamgmesh_out.VerticesOnGeometricEdge);
    196         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    197         mxSetField(bamgmesh_mat,0,"VerticesOnGeometricEdge",pfield2);
    198 
    199         mxSetField(bamgmesh_mat,0,"NumEdgesOnGeometricEdge",mxCreateDoubleScalar(bamgmesh_out.NumEdgesOnGeometricEdge));
    200 
    201         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    202         mxSetM(pfield,2);
    203         mxSetN(pfield,bamgmesh_out.NumEdgesOnGeometricEdge);
    204         mxSetPr(pfield,bamgmesh_out.EdgesOnGeometricEdge);
    205         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    206         mxSetField(bamgmesh_mat,0,"EdgesOnGeometricEdge",pfield2);
    207 
    208         mxSetField(bamgmesh_mat,0,"NumSubDomains",mxCreateDoubleScalar(bamgmesh_out.NumSubDomains));
    209 
    210         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    211         mxSetM(pfield,4);
    212         mxSetN(pfield,bamgmesh_out.NumSubDomains);
    213         mxSetPr(pfield,bamgmesh_out.SubDomains);
    214         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    215         mxSetField(bamgmesh_mat,0,"SubDomains",pfield2);
    216 
    217         mxSetField(bamgmesh_mat,0,"NumSubDomainsFromGeom",mxCreateDoubleScalar(bamgmesh_out.NumSubDomainsFromGeom));
    218 
    219         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    220         mxSetM(pfield,4);
    221         mxSetN(pfield,bamgmesh_out.NumSubDomainsFromGeom);
    222         mxSetPr(pfield,bamgmesh_out.SubDomainsFromGeom);
    223         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    224         mxSetField(bamgmesh_mat,0,"SubDomainsFromGeom",pfield2);
     89        /*Generate output Matlab Structures*/
     90        BamgMeshWrite(&bamgmesh_mat,&bamgmesh_out);
     91        BamgGeomWrite(&bamggeom_mat,&bamggeom_out);
    22592
    22693        /*assign output datasets: */
    22794        *BAMGMESHOUT=bamgmesh_mat;
    228 
    229         /*Variables*/
    230         mxArray*    bamggeom_mat=NULL;
    231         int         numfields2=14;
    232         const char* fnames2[numfields];
    233 
    234         fnames[0] = "NumVertices";
    235         fnames[1] = "Vertices";
    236         fnames[2] = "NumEdges";
    237         fnames[3] = "Edges";
    238         fnames[4] = "NumTangentAtEdges";
    239         fnames[5] = "TangentAtEdges";
    240         fnames[6] = "NumRequiredVertices";
    241         fnames[7] = "RequiredVertices";
    242         fnames[8] = "NumRequiredEdges";
    243         fnames[9] = "RequiredEdges";
    244         fnames[10]= "NumCrackedEdges";
    245         fnames[11]= "CrackedEdges";
    246         fnames[12]= "NumEdges";
    247         fnames[13]= "SubDomains";
    248 
    249         bamggeom_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
    250 
    251         mxSetField(bamggeom_mat,0,"NumVertices",mxCreateDoubleScalar(bamggeom_out.NumVertices));
    252 
    253         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    254         mxSetM(pfield,3);
    255         mxSetN(pfield,bamggeom_out.NumVertices);
    256         mxSetPr(pfield,bamggeom_out.Vertices);
    257         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    258         mxSetField(bamggeom_mat,0,"Vertices",pfield2);
    259 
    260         mxSetField(bamggeom_mat,0,"NumEdges",mxCreateDoubleScalar(bamggeom_out.NumEdges));
    261 
    262         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    263         mxSetM(pfield,3);
    264         mxSetN(pfield,bamggeom_out.NumEdges);
    265         mxSetPr(pfield,bamggeom_out.Edges);
    266         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    267         mxSetField(bamggeom_mat,0,"Edges",pfield2);
    268 
    269         mxSetField(bamggeom_mat,0,"NumTangentAtEdges",mxCreateDoubleScalar(bamggeom_out.NumTangentAtEdges));
    270 
    271         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    272         mxSetM(pfield,4);
    273         mxSetN(pfield,bamggeom_out.NumTangentAtEdges);
    274         mxSetPr(pfield,bamggeom_out.TangentAtEdges);
    275         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    276         mxSetField(bamggeom_mat,0,"TangentAtEdges",pfield2);
    277 
    278         mxSetField(bamggeom_mat,0,"NumRequiredVertices",mxCreateDoubleScalar(bamggeom_out.NumRequiredVertices));
    279 
    280         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    281         mxSetM(pfield,1);
    282         mxSetN(pfield,bamggeom_out.NumRequiredVertices);
    283         mxSetPr(pfield,bamggeom_out.RequiredVertices);
    284         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    285         mxSetField(bamggeom_mat,0,"RequiredVertices",pfield2);
    286 
    287         mxSetField(bamggeom_mat,0,"NumRequiredEdges",mxCreateDoubleScalar(bamggeom_out.NumRequiredEdges));
    288 
    289         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    290         mxSetM(pfield,1);
    291         mxSetN(pfield,bamggeom_out.NumRequiredEdges);
    292         mxSetPr(pfield,bamggeom_out.RequiredEdges);
    293         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    294         mxSetField(bamggeom_mat,0,"RequiredEdges",pfield2);
    295 
    296         mxSetField(bamggeom_mat,0,"NumCrackedEdges",mxCreateDoubleScalar(bamggeom_out.NumCrackedEdges));
    297 
    298         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    299         mxSetM(pfield,2);
    300         mxSetN(pfield,bamggeom_out.NumCrackedEdges);
    301         mxSetPr(pfield,bamggeom_out.CrackedEdges);
    302         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    303         mxSetField(bamggeom_mat,0,"CrackedEdges",pfield2);
    304 
    305         mxSetField(bamggeom_mat,0,"NumSubDomains",mxCreateDoubleScalar(bamggeom_out.NumSubDomains));
    306 
    307         pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    308         mxSetM(pfield,4);
    309         mxSetN(pfield,bamggeom_out.NumSubDomains);
    310         mxSetPr(pfield,bamggeom_out.SubDomains);
    311         mexCallMATLAB(1,&pfield2,1,&pfield,"'");//transpose
    312         mxSetField(bamggeom_mat,0,"SubDomains",pfield2);
    313 
    314         /*assign output datasets: */
    31595        *BAMGGEOMOUT=bamggeom_mat;
    31696
     
    322102}
    323103
    324 void BamgUsage(void)
    325 {
     104void BamgUsage(void){
    326105        _printf_("\n");
    327         _printf_("   usage: [elements,vertices,segments,segmentmarkers,metric]=%s(bamgmesh,bamggeom,bamgoptions);\n",__FUNCT__);
     106        _printf_("   usage: [bamgmesh,bamggeom]=%s(bamgmesh,bamggeom,bamgoptions);\n",__FUNCT__);
    328107        _printf_("\n");
    329108}
Note: See TracChangeset for help on using the changeset viewer.