Changeset 5172


Ignore:
Timestamp:
08/11/10 17:56:18 (15 years ago)
Author:
Mathieu Morlighem
Message:

Better input/ouput from Matlab structures to Bamg objects

Location:
issm/trunk/src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/io/WriteData.cpp

    r5091 r5172  
    145145}
    146146/*}}}*/
    147 /*FUNCTION WriteData(mxArray** pbamgmesh_mat,BamgMesh* bm){{{1*/
    148 void WriteData(mxArray** pbamgmesh_mat,BamgMesh* bm){
    149 
    150         /*Output*/
    151         mxArray*    bamgmesh_mat=NULL;
    152 
    153         /*Intermediary*/
    154         int         i,j;
    155         mxArray*    pfield=NULL;
    156         mxArray*    pfield2=NULL;
    157         int         numfields=16;
    158         const char* fnames[numfields];
    159         int         fsize[numfields][2];
    160         double**    fpointer[numfields];
    161         mwSize      ndim=2;
    162         mwSize      dimensions[2]={1,1};
    163 
    164         /*Build fnames and fsize names and sizes of each field*/
    165         i=-1;
    166         fnames[++i] = "Triangles";                fsize[i][0]=bm->TrianglesSize[0];                 fsize[i][1]=bm->TrianglesSize[1];                fpointer[i]=&bm->Triangles;
    167         fnames[++i] = "Vertices";                 fsize[i][0]=bm->VerticesSize[0];                  fsize[i][1]=bm->VerticesSize[1];                 fpointer[i]=&bm->Vertices;
    168         fnames[++i] = "Edges";                    fsize[i][0]=bm->EdgesSize[0];                     fsize[i][1]=bm->EdgesSize[1];                    fpointer[i]=&bm->Edges;
    169         fnames[++i] = "IssmSegments";             fsize[i][0]=bm->IssmSegmentsSize[0];              fsize[i][1]=bm->IssmSegmentsSize[1];             fpointer[i]=&bm->IssmSegments;
    170         fnames[++i] = "IssmEdges";                fsize[i][0]=bm->IssmEdgesSize[0];                 fsize[i][1]=bm->IssmEdgesSize[1];                fpointer[i]=&bm->IssmEdges;
    171         fnames[++i] = "Quadrilaterals";           fsize[i][0]=bm->QuadrilateralsSize[0];            fsize[i][1]=bm->QuadrilateralsSize[1];           fpointer[i]=&bm->Quadrilaterals;
    172         fnames[++i] = "VerticesOnGeometricVertex";fsize[i][0]=bm->VerticesOnGeometricVertexSize[0]; fsize[i][1]=bm->VerticesOnGeometricVertexSize[1];fpointer[i]=&bm->VerticesOnGeometricVertex;
    173         fnames[++i] = "VerticesOnGeometricEdge";  fsize[i][0]=bm->VerticesOnGeometricEdgeSize[0];   fsize[i][1]=bm->VerticesOnGeometricEdgeSize[1];  fpointer[i]=&bm->VerticesOnGeometricEdge;
    174         fnames[++i] = "EdgesOnGeometricEdge";     fsize[i][0]=bm->EdgesOnGeometricEdgeSize[0];      fsize[i][1]=bm->EdgesOnGeometricEdgeSize[1];     fpointer[i]=&bm->EdgesOnGeometricEdge;
    175         fnames[++i] = "SubDomains";               fsize[i][0]=bm->SubDomainsSize[0];                fsize[i][1]=bm->SubDomainsSize[1];               fpointer[i]=&bm->SubDomains;
    176         fnames[++i] = "SubDomainsFromGeom";       fsize[i][0]=bm->SubDomainsFromGeomSize[0];        fsize[i][1]=bm->SubDomainsFromGeomSize[1];       fpointer[i]=&bm->SubDomainsFromGeom;
    177         fnames[++i] = "ElementConnectivity";      fsize[i][0]=bm->ElementConnectivitySize[0];       fsize[i][1]=bm->ElementConnectivitySize[1];      fpointer[i]=&bm->ElementConnectivity;
    178         fnames[++i] = "NodalConnectivity";        fsize[i][0]=bm->NodalConnectivitySize[0];         fsize[i][1]=bm->NodalConnectivitySize[1];        fpointer[i]=&bm->NodalConnectivity;
    179         fnames[++i] = "NodalElementConnectivity"; fsize[i][0]=bm->NodalElementConnectivitySize[0];  fsize[i][1]=bm->NodalElementConnectivitySize[1]; fpointer[i]=&bm->NodalElementConnectivity;
    180         fnames[++i] = "CrackedVertices";          fsize[i][0]=bm->CrackedVerticesSize[0];           fsize[i][1]=bm->CrackedVerticesSize[1];          fpointer[i]=&bm->CrackedVertices;
    181         fnames[++i] = "CrackedEdges";             fsize[i][0]=bm->CrackedEdgesSize[0];              fsize[i][1]=bm->CrackedEdgesSize[1];             fpointer[i]=&bm->CrackedEdges;
    182         ISSMASSERT(i==numfields-1);
    183 
    184         /*Initialize Matlab structure*/
    185         bamgmesh_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
    186 
    187         /*Add every field to structure*/
    188         for(i=0;i<numfields;i++){
    189                 pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    190                 mxSetM(pfield,fsize[i][1]);
    191                 mxSetN(pfield,fsize[i][0]);
    192                 mxSetPr(pfield,*(fpointer[i]));
    193                 mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
    194                 mxSetField(bamgmesh_mat,0,fnames[i],pfield2);
    195         }
    196 
    197         /*Assign output pointer*/
    198         *pbamgmesh_mat=bamgmesh_mat;
    199 }
    200 /*}}}*/
    201 /*FUNCTION WriteData(mxArray** pbamggeom_mat, BamgGeom* bg){{{1*/
    202 void WriteData(mxArray** pbamggeom_mat, BamgGeom* bg){
    203 
    204         /*Output*/
    205         mxArray*    bamggeom_mat=NULL;
    206 
    207         /*Intermediary*/
    208         int         i,j;
    209         mxArray*    pfield=NULL;
    210         mxArray*    pfield2=NULL;
    211         int         numfields=7;
    212         const char* fnames[numfields];
    213         int         fsize[numfields][2];
    214         double**    fpointer[numfields];
    215         mwSize      ndim=2;
    216         mwSize      dimensions[2]={1,1};
    217 
    218         /*Build fnames and fsize names and sizes of each field*/
    219         i=-1;
    220         fnames[++i] = "Vertices";        fsize[i][0]=bg->VerticesSize[0];        fsize[i][1]=bg->VerticesSize[1];        fpointer[i]=&bg->Vertices;
    221         fnames[++i] = "Edges";           fsize[i][0]=bg->EdgesSize[0];           fsize[i][1]=bg->EdgesSize[1];           fpointer[i]=&bg->Edges;
    222         fnames[++i] = "TangentAtEdges";  fsize[i][0]=bg->TangentAtEdgesSize[0];  fsize[i][1]=bg->TangentAtEdgesSize[1];  fpointer[i]=&bg->TangentAtEdges;
    223         fnames[++i] = "RequiredVertices";fsize[i][0]=bg->RequiredVerticesSize[0];fsize[i][1]=bg->RequiredVerticesSize[1];fpointer[i]=&bg->RequiredVertices;
    224         fnames[++i] = "RequiredEdges";   fsize[i][0]=bg->RequiredEdgesSize[0];   fsize[i][1]=bg->RequiredEdgesSize[1];   fpointer[i]=&bg->RequiredEdges;
    225         fnames[++i] = "CrackedEdges";    fsize[i][0]=bg->CrackedEdgesSize[0];    fsize[i][1]=bg->CrackedEdgesSize[1];    fpointer[i]=&bg->CrackedEdges;
    226         fnames[++i] = "SubDomains";      fsize[i][0]=bg->SubDomainsSize[0];      fsize[i][1]=bg->SubDomainsSize[1];      fpointer[i]=&bg->SubDomains;
    227         ISSMASSERT(i==numfields-1);
    228 
    229         /*Initialize Matlab structure*/
    230         bamggeom_mat=mxCreateStructArray(ndim,dimensions,numfields,fnames);
    231 
    232         /*Add every field tu structure*/
    233         for(i=0;i<numfields;i++){
    234                 pfield=mxCreateDoubleMatrix(0,0,mxREAL);
    235                 mxSetM(pfield,fsize[i][1]);
    236                 mxSetN(pfield,fsize[i][0]);
    237                 mxSetPr(pfield,*(fpointer[i]));
    238                 mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
    239                 mxSetField(bamggeom_mat,0,fnames[i],pfield2);
    240         }
    241 
    242         /*Assign output pointer*/
    243         *pbamggeom_mat=bamggeom_mat;
    244 }
    245 /*}}}*/
    246147
    247148#else
  • issm/trunk/src/c/io/io.h

    r4779 r5172  
    2626void WriteData(mxArray** pdataref,double scalar);
    2727void WriteData(mxArray** pdataref,char* string);
    28 void WriteData(mxArray** pdataref,BamgMesh* bm);
    29 void WriteData(mxArray** pdataref,BamgGeom* bg);
    3028
    3129void WriteNodeSets(DataHandle* pdataref,NodeSets* nodesets);
  • issm/trunk/src/c/objects/Bamg/BamgGeom.cpp

    r5170 r5172  
    11#include "stdio.h"
    22#include "../objects.h"
     3#include "../../io/io.h"
    34
    45/*Constructors/Destructors*/
     
    3536}
    3637/*}}}*/
     38
     39/*Methods*/
     40/*FUNCTION BamgGeom::GetMatlabStructureFields{{{1*/
     41#ifdef _SERIAL_
     42void BamgGeom::GetMatlabStructureFields(mxArray* matlab_struct){
     43
     44        int lines,cols;
     45
     46        FetchData(&this->Vertices,        &this->VerticesSize[0],        &this->VerticesSize[1],        mxGetField(matlab_struct,0,"Vertices"));
     47        FetchData(&this->Edges,           &this->EdgesSize[0],           &this->EdgesSize[1],           mxGetField(matlab_struct,0,"Edges"));
     48        FetchData(&this->Corners,         &this->CornersSize[0],         &this->CornersSize[1],         mxGetField(matlab_struct,0,"Corners"));
     49        FetchData(&this->RequiredVertices,&this->RequiredVerticesSize[0],&this->RequiredVerticesSize[1],mxGetField(matlab_struct,0,"RequiredVertices"));
     50        FetchData(&this->RequiredEdges,   &this->RequiredEdgesSize[0],   &this->RequiredEdgesSize[1],   mxGetField(matlab_struct,0,"RequiredEdges"));
     51        FetchData(&this->CrackedEdges,    &this->CrackedEdgesSize[0],    &this->CrackedEdgesSize[1],    mxGetField(matlab_struct,0,"CrackedEdges"));
     52        FetchData(&this->SubDomains,      &this->SubDomainsSize[0],      &this->SubDomainsSize[1],      mxGetField(matlab_struct,0,"SubDomains"));
     53        FetchData(&this->hVertices,&lines,&cols,mxGetField(matlab_struct,0,"hVertices"));
     54        if (this->hVertices && (cols!=1 || lines!=this->VerticesSize[0])){ISSMERROR("the size of 'hVertices' should be [%i %i]",this->VerticesSize[0],1);}
     55
     56}
     57#endif
     58/*}}}*/
     59/*FUNCTION BamgGeom::SetMatlabStructureFields{{{1*/
     60#ifdef _SERIAL_
     61void BamgGeom::SetMatlabStructureFields(mxArray** matlab_struct){
     62
     63        /*Intermediary*/
     64        int         i,i1,i2;
     65        mxArray*    pfield=NULL;
     66        mxArray*    pfield2=NULL;
     67        mxArray*    output=NULL;
     68        int         numfields=7;
     69        const char* fnames[numfields];
     70        int         fsize[numfields][2];
     71        double**    fpointer[numfields];
     72        mwSize      ndim=2;
     73        mwSize      dimensions[2]={1,1};
     74
     75        /*Build fnames and fsize names and sizes of each field*/
     76        i=-1;
     77        fnames[++i] = "Vertices";        fsize[i][0]=this->VerticesSize[0];        fsize[i][1]=this->VerticesSize[1];        fpointer[i]=&this->Vertices;
     78        fnames[++i] = "Edges";           fsize[i][0]=this->EdgesSize[0];           fsize[i][1]=this->EdgesSize[1];           fpointer[i]=&this->Edges;
     79        fnames[++i] = "TangentAtEdges";  fsize[i][0]=this->TangentAtEdgesSize[0];  fsize[i][1]=this->TangentAtEdgesSize[1];  fpointer[i]=&this->TangentAtEdges;
     80        fnames[++i] = "RequiredVertices";fsize[i][0]=this->RequiredVerticesSize[0];fsize[i][1]=this->RequiredVerticesSize[1];fpointer[i]=&this->RequiredVertices;
     81        fnames[++i] = "RequiredEdges";   fsize[i][0]=this->RequiredEdgesSize[0];   fsize[i][1]=this->RequiredEdgesSize[1];   fpointer[i]=&this->RequiredEdges;
     82        fnames[++i] = "CrackedEdges";    fsize[i][0]=this->CrackedEdgesSize[0];    fsize[i][1]=this->CrackedEdgesSize[1];    fpointer[i]=&this->CrackedEdges;
     83        fnames[++i] = "SubDomains";      fsize[i][0]=this->SubDomainsSize[0];      fsize[i][1]=this->SubDomainsSize[1];      fpointer[i]=&this->SubDomains;
     84        ISSMASSERT(i==numfields-1);
     85
     86        /*Initialize Matlab structure*/
     87        output=mxCreateStructArray(ndim,dimensions,numfields,fnames);
     88
     89        /*Add every field tu structure*/
     90        for(i=0;i<numfields;i++){
     91
     92                /*Copy field*/
     93                double*  fieldcopy=NULL;
     94                if (fsize[i][0]*fsize[i][1]){
     95                        fieldcopy=(double*)xmalloc(fsize[i][0]*fsize[i][1]*sizeof(double));
     96                        for(i1=0;i1<fsize[i][0];i1++){
     97                                for(i2=0;i2<fsize[i][1];i2++){
     98                                        fieldcopy[fsize[i][1]*i1+i2]=*(*fpointer[i] + fsize[i][1]*i1+i2);
     99                                }
     100                        }
     101                }
     102
     103                /*Set matlab field*/
     104                pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     105                mxSetM(pfield,fsize[i][1]);
     106                mxSetN(pfield,fsize[i][0]);
     107                mxSetPr(pfield,fieldcopy);
     108                mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
     109                mxSetField(output,0,fnames[i],pfield2);
     110        }
     111
     112        /*Assign output*/
     113        *matlab_struct=output;
     114
     115}
     116#endif
     117/*}}}*/
  • issm/trunk/src/c/objects/Bamg/BamgGeom.h

    r5154 r5172  
    44#ifndef _BAMGGEOM_H_
    55#define _BAMGGEOM_H_
     6
     7#ifdef _SERIAL_
     8#include <mex.h>
     9#endif
    610
    711class BamgGeom{
     
    2933                BamgGeom();
    3034                ~BamgGeom();
     35
     36                #ifdef _SERIAL_
     37                void GetMatlabStructureFields(mxArray* matlab_struct);
     38                void SetMatlabStructureFields(mxArray** matlab_struct);
     39                #endif
    3140};
    3241
  • issm/trunk/src/c/objects/Bamg/BamgMesh.cpp

    r5170 r5172  
    11#include "stdio.h"
    22#include "../objects.h"
     3#include "../../io/io.h"
    34
    45/*Constructors/Destructors*/
     
    4950}
    5051/*}}}*/
     52
     53/*Methods*/
     54/*FUNCTION BamgMesh::GetMatlabStructureFields{{{1*/
     55#ifdef _SERIAL_
     56void BamgMesh::GetMatlabStructureFields(mxArray* matlab_struct){
     57
     58        int lines,cols;
     59
     60        FetchData(&this->Triangles,                &this->TrianglesSize[0],                &this->TrianglesSize[1],                mxGetField(matlab_struct,0,"Triangles"));
     61        FetchData(&this->Vertices,                 &this->VerticesSize[0],                 &this->VerticesSize[1],                 mxGetField(matlab_struct,0,"Vertices"));
     62        FetchData(&this->Edges,                    &this->EdgesSize[0],                    &this->EdgesSize[1],                    mxGetField(matlab_struct,0,"Edges"));
     63        FetchData(&this->IssmSegments,             &this->IssmSegmentsSize[0],             &this->IssmSegmentsSize[1],             mxGetField(matlab_struct,0,"IssmSegments"));
     64        FetchData(&this->CrackedEdges,            &this->CrackedEdgesSize[0],              &this->CrackedEdgesSize[1],             mxGetField(matlab_struct,0,"CrackedEdges"));
     65        FetchData(&this->EdgesOnGeometricEdge,     &this->EdgesOnGeometricEdgeSize[0],     &this->EdgesOnGeometricEdgeSize[1],     mxGetField(matlab_struct,0,"EdgesOnGeometricEdge"));
     66        FetchData(&this->VerticesOnGeometricEdge,  &this->VerticesOnGeometricEdgeSize[0],  &this->VerticesOnGeometricEdgeSize[1],  mxGetField(matlab_struct,0,"VerticesOnGeometricEdge"));
     67        FetchData(&this->VerticesOnGeometricVertex,&this->VerticesOnGeometricVertexSize[0],&this->VerticesOnGeometricVertexSize[1],mxGetField(matlab_struct,0,"VerticesOnGeometricVertex"));
     68        FetchData(&this->hVertices,                &lines,                                 &cols,                                  mxGetField(matlab_struct,0,"hVertices"));
     69        if (this->hVertices && (cols!=1 || lines!=this->VerticesSize[0])){ISSMERROR("the size of 'hVertices' should be [%i %i]",this->VerticesSize[0],1);}
     70
     71}
     72#endif
     73/*}}}*/
     74/*FUNCTION BamgMesh::SetMatlabStructureFields{{{1*/
     75#ifdef _SERIAL_
     76void BamgMesh::SetMatlabStructureFields(mxArray** matlab_struct){
     77
     78        /*Intermediary*/
     79        int         i,i1,i2;
     80        mxArray*    pfield=NULL;
     81        mxArray*    pfield2=NULL;
     82        mxArray*    output=NULL;
     83        int         numfields=16;
     84        const char* fnames[numfields];
     85        int         fsize[numfields][2];
     86        double**    fpointer[numfields];
     87        mwSize      ndim=2;
     88        mwSize      dimensions[2]={1,1};
     89
     90        /*Build fnames and fsize names and sizes of each field*/
     91        i=-1;
     92        fnames[++i] = "Triangles";                fsize[i][0]=this->TrianglesSize[0];                 fsize[i][1]=this->TrianglesSize[1];                fpointer[i]=&this->Triangles;
     93        fnames[++i] = "Vertices";                 fsize[i][0]=this->VerticesSize[0];                  fsize[i][1]=this->VerticesSize[1];                 fpointer[i]=&this->Vertices;
     94        fnames[++i] = "Edges";                    fsize[i][0]=this->EdgesSize[0];                     fsize[i][1]=this->EdgesSize[1];                    fpointer[i]=&this->Edges;
     95        fnames[++i] = "IssmSegments";             fsize[i][0]=this->IssmSegmentsSize[0];              fsize[i][1]=this->IssmSegmentsSize[1];             fpointer[i]=&this->IssmSegments;
     96        fnames[++i] = "IssmEdges";                fsize[i][0]=this->IssmEdgesSize[0];                 fsize[i][1]=this->IssmEdgesSize[1];                fpointer[i]=&this->IssmEdges;
     97        fnames[++i] = "Quadrilaterals";           fsize[i][0]=this->QuadrilateralsSize[0];            fsize[i][1]=this->QuadrilateralsSize[1];           fpointer[i]=&this->Quadrilaterals;
     98        fnames[++i] = "VerticesOnGeometricVertex";fsize[i][0]=this->VerticesOnGeometricVertexSize[0]; fsize[i][1]=this->VerticesOnGeometricVertexSize[1];fpointer[i]=&this->VerticesOnGeometricVertex;
     99        fnames[++i] = "VerticesOnGeometricEdge";  fsize[i][0]=this->VerticesOnGeometricEdgeSize[0];   fsize[i][1]=this->VerticesOnGeometricEdgeSize[1];  fpointer[i]=&this->VerticesOnGeometricEdge;
     100        fnames[++i] = "EdgesOnGeometricEdge";     fsize[i][0]=this->EdgesOnGeometricEdgeSize[0];      fsize[i][1]=this->EdgesOnGeometricEdgeSize[1];     fpointer[i]=&this->EdgesOnGeometricEdge;
     101        fnames[++i] = "SubDomains";               fsize[i][0]=this->SubDomainsSize[0];                fsize[i][1]=this->SubDomainsSize[1];               fpointer[i]=&this->SubDomains;
     102        fnames[++i] = "SubDomainsFromGeom";       fsize[i][0]=this->SubDomainsFromGeomSize[0];        fsize[i][1]=this->SubDomainsFromGeomSize[1];       fpointer[i]=&this->SubDomainsFromGeom;
     103        fnames[++i] = "ElementConnectivity";      fsize[i][0]=this->ElementConnectivitySize[0];       fsize[i][1]=this->ElementConnectivitySize[1];      fpointer[i]=&this->ElementConnectivity;
     104        fnames[++i] = "NodalConnectivity";        fsize[i][0]=this->NodalConnectivitySize[0];         fsize[i][1]=this->NodalConnectivitySize[1];        fpointer[i]=&this->NodalConnectivity;
     105        fnames[++i] = "NodalElementConnectivity"; fsize[i][0]=this->NodalElementConnectivitySize[0];  fsize[i][1]=this->NodalElementConnectivitySize[1]; fpointer[i]=&this->NodalElementConnectivity;
     106        fnames[++i] = "CrackedVertices";          fsize[i][0]=this->CrackedVerticesSize[0];           fsize[i][1]=this->CrackedVerticesSize[1];          fpointer[i]=&this->CrackedVertices;
     107        fnames[++i] = "CrackedEdges";             fsize[i][0]=this->CrackedEdgesSize[0];              fsize[i][1]=this->CrackedEdgesSize[1];             fpointer[i]=&this->CrackedEdges;
     108        ISSMASSERT(i==numfields-1);
     109
     110        /*Initialize Matlab structure*/
     111        output=mxCreateStructArray(ndim,dimensions,numfields,fnames);
     112
     113        /*Add every field tu structure*/
     114        for(i=0;i<numfields;i++){
     115
     116                /*Copy field*/
     117                double*  fieldcopy=NULL;
     118                if (fsize[i][0]*fsize[i][1]){
     119                        fieldcopy=(double*)xmalloc(fsize[i][0]*fsize[i][1]*sizeof(double));
     120                        for(i1=0;i1<fsize[i][0];i1++){
     121                                for(i2=0;i2<fsize[i][1];i2++){
     122                                        fieldcopy[fsize[i][1]*i1+i2]=*(*fpointer[i] + fsize[i][1]*i1+i2);
     123                                }
     124                        }
     125                }
     126
     127                /*Set matlab field*/
     128                pfield=mxCreateDoubleMatrix(0,0,mxREAL);
     129                mxSetM(pfield,fsize[i][1]);
     130                mxSetN(pfield,fsize[i][0]);
     131                mxSetPr(pfield,fieldcopy);
     132                mexCallMATLAB(1,&pfield2,1,&pfield,"transpose");//transpose
     133                mxSetField(output,0,fnames[i],pfield2);
     134        }
     135
     136        /*Assign output*/
     137        *matlab_struct=output;
     138
     139}
     140#endif
     141/*}}}*/
  • issm/trunk/src/c/objects/Bamg/BamgMesh.h

    r5154 r5172  
    44#ifndef _BAMGMESH_H_
    55#define _BAMGMESH_H_
     6
     7#ifdef _SERIAL_
     8#include <mex.h>
     9#endif
    610
    711class BamgMesh{
     
    4852                ~BamgMesh();
    4953
     54                #ifdef _SERIAL_
     55                void GetMatlabStructureFields(mxArray* matlab_struct);
     56                void SetMatlabStructureFields(mxArray** matlab_struct);
     57                #endif
     58
    5059};
    5160
  • issm/trunk/src/c/objects/Bamg/Mesh.cpp

    r5170 r5172  
    232232                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/
    233233
    234                 if (vertices)             delete [] vertices;
     234                //if (vertices)             delete [] vertices;
    235235                if (edges)                delete [] edges;
    236236                if (triangles)            delete [] triangles;
    237237                if (quadtree)             delete    quadtree;
    238                 if (ordre)                delete [] ordre;
     238                //if (ordre)                delete [] ordre;
    239239                if (subdomains)           delete []  subdomains;
    240240                if (VerticesOnGeomEdge)   delete [] VerticesOnGeomEdge;
  • issm/trunk/src/c/objects/ExternalResults/IntExternalResult.h

    r4248 r5172  
    2020#endif
    2121
    22 
    2322#include "./ExternalResult.h"
    2423#include "../../include/include.h"
    2524#include "../../shared/shared.h"
    26 #include "../../include/include.h"
    27 #include "../../include/include.h"
    2825/*}}}*/
    2926
  • issm/trunk/src/mex/Bamg/Bamg.cpp

    r5154 r5172  
    3232        bamgmesh_out=new BamgMesh;
    3333
    34         /*create bamg geometry input*/
    35         FetchData(&bamggeom_in->Vertices,        &bamggeom_in->VerticesSize[0],        &bamggeom_in->VerticesSize[1],        mxGetField(BAMGGEOMETRY,0,"Vertices"));
    36         FetchData(&bamggeom_in->Edges,           &bamggeom_in->EdgesSize[0],           &bamggeom_in->EdgesSize[1],           mxGetField(BAMGGEOMETRY,0,"Edges"));
    37         FetchData(&bamggeom_in->Corners,         &bamggeom_in->CornersSize[0],         &bamggeom_in->CornersSize[1],         mxGetField(BAMGGEOMETRY,0,"Corners"));
    38         FetchData(&bamggeom_in->RequiredVertices,&bamggeom_in->RequiredVerticesSize[0],&bamggeom_in->RequiredVerticesSize[1],mxGetField(BAMGGEOMETRY,0,"RequiredVertices"));
    39         FetchData(&bamggeom_in->RequiredEdges,   &bamggeom_in->RequiredEdgesSize[0],   &bamggeom_in->RequiredEdgesSize[1],   mxGetField(BAMGGEOMETRY,0,"RequiredEdges"));
    40         FetchData(&bamggeom_in->CrackedEdges,    &bamggeom_in->CrackedEdgesSize[0],    &bamggeom_in->CrackedEdgesSize[1],    mxGetField(BAMGGEOMETRY,0,"CrackedEdges"));
    41         FetchData(&bamggeom_in->SubDomains,      &bamggeom_in->SubDomainsSize[0],      &bamggeom_in->SubDomainsSize[1],      mxGetField(BAMGGEOMETRY,0,"SubDomains"));
    42         FetchData(&bamggeom_in->hVertices,&lines,&cols,mxGetField(BAMGGEOMETRY,0,"hVertices"));
    43         if (bamggeom_in->hVertices && (cols!=1 || lines!=bamggeom_in->VerticesSize[0])){ISSMERROR("the size of 'hVertices' should be [%i %i]",bamggeom_in->VerticesSize[0],1);}
    44 
    45         /*create bamg mesh input*/
    46         FetchData(&bamgmesh_in->Triangles,&bamgmesh_in->TrianglesSize[0],&bamgmesh_in->TrianglesSize[1],mxGetField(BAMGMESH,0,"Triangles"));
    47         FetchData(&bamgmesh_in->Vertices, &bamgmesh_in->VerticesSize[0], &bamgmesh_in->VerticesSize[1], mxGetField(BAMGMESH,0,"Vertices"));
    48         FetchData(&bamgmesh_in->Edges,    &bamgmesh_in->EdgesSize[0],    &bamgmesh_in->EdgesSize[1],    mxGetField(BAMGMESH,0,"Edges"));
    49         FetchData(&bamgmesh_in->IssmSegments, &bamgmesh_in->IssmSegmentsSize[0], &bamgmesh_in->IssmSegmentsSize[1], mxGetField(BAMGMESH,0,"IssmSegments"));
    50         FetchData(&bamgmesh_in->CrackedEdges,&bamgmesh_in->CrackedEdgesSize[0],&bamgmesh_in->CrackedEdgesSize[1],mxGetField(BAMGMESH,0,"CrackedEdges"));
    51         FetchData(&bamgmesh_in->EdgesOnGeometricEdge,&bamgmesh_in->EdgesOnGeometricEdgeSize[0],&bamgmesh_in->EdgesOnGeometricEdgeSize[1],mxGetField(BAMGMESH,0,"EdgesOnGeometricEdge"));
    52         FetchData(&bamgmesh_in->VerticesOnGeometricEdge,&bamgmesh_in->VerticesOnGeometricEdgeSize[0],&bamgmesh_in->VerticesOnGeometricEdgeSize[1],mxGetField(BAMGMESH,0,"VerticesOnGeometricEdge"));
    53         FetchData(&bamgmesh_in->VerticesOnGeometricVertex,&bamgmesh_in->VerticesOnGeometricVertexSize[0],&bamgmesh_in->VerticesOnGeometricVertexSize[1],mxGetField(BAMGMESH,0,"VerticesOnGeometricVertex"));
    54         FetchData(&bamgmesh_in->hVertices,&lines,&cols,mxGetField(BAMGMESH,0,"hVertices"));
    55         if (bamgmesh_in->hVertices && (cols!=1 || lines!=bamgmesh_in->VerticesSize[0])){ISSMERROR("the size of 'hVertices' should be [%i %i]",bamgmesh_in->VerticesSize[0],1);}
     34        /*Build objects from matlab structures*/
     35        bamggeom_in->GetMatlabStructureFields(BAMGGEOMETRY);
     36        bamgmesh_in->GetMatlabStructureFields(BAMGMESH);
    5637
    5738        /*create bamg options input*/
     
    9374
    9475        /*Generate output Matlab Structures*/
    95         WriteData(&bamgmesh_mat,bamgmesh_out);
    96         WriteData(&bamggeom_mat,bamggeom_out);
    97 
    98         /*assign output datasets: */
    99         *BAMGMESHOUT=bamgmesh_mat;
    100         *BAMGGEOMOUT=bamggeom_mat;
     76        bamggeom_out->SetMatlabStructureFields(BAMGGEOMOUT);
     77        bamgmesh_out->SetMatlabStructureFields(BAMGMESHOUT);
    10178
    10279        /*Free ressources: */
    103         //do not free any fields of bamgmesh or bamggeom as it has been freed in bamgx
     80        delete bamgopts;
     81        delete bamggeom_in;
     82        delete bamggeom_out;
     83        delete bamgmesh_in;
     84        delete bamgmesh_out;
    10485
    10586        /*end module: */
  • issm/trunk/src/mex/BamgConvertMesh/BamgConvertMesh.cpp

    r5154 r5172  
    3232        CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&BamgConvertMeshUsage);
    3333
    34         /*Initialize variables*/
    35         bamggeom=new BamgGeom;
    36         bamgmesh=new BamgMesh;
     34        /*Initialize Bamg outputs*/
     35        bamggeom=new BamgGeom();
     36        bamgmesh=new BamgMesh();
    3737
    3838        /*Input datasets: */
     
    6464
    6565        /*Generate output Matlab Structures*/
    66         WriteData(&bamgmesh_mat,bamgmesh);
    67         WriteData(&bamggeom_mat,bamggeom);
    68 
    69         /*assign output datasets: */
    70         *BAMGMESHOUT=bamgmesh_mat;
    71         *BAMGGEOMOUT=bamggeom_mat;
     66        bamggeom->SetMatlabStructureFields(BAMGGEOMOUT);
     67        bamgmesh->SetMatlabStructureFields(BAMGMESHOUT);
    7268
    7369        /*end module: */
Note: See TracChangeset for help on using the changeset viewer.