Changeset 5172
- Timestamp:
- 08/11/10 17:56:18 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/io/WriteData.cpp
r5091 r5172 145 145 } 146 146 /*}}}*/ 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");//transpose194 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");//transpose239 mxSetField(bamggeom_mat,0,fnames[i],pfield2);240 }241 242 /*Assign output pointer*/243 *pbamggeom_mat=bamggeom_mat;244 }245 /*}}}*/246 147 247 148 #else -
issm/trunk/src/c/io/io.h
r4779 r5172 26 26 void WriteData(mxArray** pdataref,double scalar); 27 27 void WriteData(mxArray** pdataref,char* string); 28 void WriteData(mxArray** pdataref,BamgMesh* bm);29 void WriteData(mxArray** pdataref,BamgGeom* bg);30 28 31 29 void WriteNodeSets(DataHandle* pdataref,NodeSets* nodesets); -
issm/trunk/src/c/objects/Bamg/BamgGeom.cpp
r5170 r5172 1 1 #include "stdio.h" 2 2 #include "../objects.h" 3 #include "../../io/io.h" 3 4 4 5 /*Constructors/Destructors*/ … … 35 36 } 36 37 /*}}}*/ 38 39 /*Methods*/ 40 /*FUNCTION BamgGeom::GetMatlabStructureFields{{{1*/ 41 #ifdef _SERIAL_ 42 void 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_ 61 void 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 4 4 #ifndef _BAMGGEOM_H_ 5 5 #define _BAMGGEOM_H_ 6 7 #ifdef _SERIAL_ 8 #include <mex.h> 9 #endif 6 10 7 11 class BamgGeom{ … … 29 33 BamgGeom(); 30 34 ~BamgGeom(); 35 36 #ifdef _SERIAL_ 37 void GetMatlabStructureFields(mxArray* matlab_struct); 38 void SetMatlabStructureFields(mxArray** matlab_struct); 39 #endif 31 40 }; 32 41 -
issm/trunk/src/c/objects/Bamg/BamgMesh.cpp
r5170 r5172 1 1 #include "stdio.h" 2 2 #include "../objects.h" 3 #include "../../io/io.h" 3 4 4 5 /*Constructors/Destructors*/ … … 49 50 } 50 51 /*}}}*/ 52 53 /*Methods*/ 54 /*FUNCTION BamgMesh::GetMatlabStructureFields{{{1*/ 55 #ifdef _SERIAL_ 56 void 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_ 76 void 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 4 4 #ifndef _BAMGMESH_H_ 5 5 #define _BAMGMESH_H_ 6 7 #ifdef _SERIAL_ 8 #include <mex.h> 9 #endif 6 10 7 11 class BamgMesh{ … … 48 52 ~BamgMesh(); 49 53 54 #ifdef _SERIAL_ 55 void GetMatlabStructureFields(mxArray* matlab_struct); 56 void SetMatlabStructureFields(mxArray** matlab_struct); 57 #endif 58 50 59 }; 51 60 -
issm/trunk/src/c/objects/Bamg/Mesh.cpp
r5170 r5172 232 232 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/ 233 233 234 if (vertices) delete [] vertices;234 //if (vertices) delete [] vertices; 235 235 if (edges) delete [] edges; 236 236 if (triangles) delete [] triangles; 237 237 if (quadtree) delete quadtree; 238 if (ordre) delete [] ordre;238 //if (ordre) delete [] ordre; 239 239 if (subdomains) delete [] subdomains; 240 240 if (VerticesOnGeomEdge) delete [] VerticesOnGeomEdge; -
issm/trunk/src/c/objects/ExternalResults/IntExternalResult.h
r4248 r5172 20 20 #endif 21 21 22 23 22 #include "./ExternalResult.h" 24 23 #include "../../include/include.h" 25 24 #include "../../shared/shared.h" 26 #include "../../include/include.h"27 #include "../../include/include.h"28 25 /*}}}*/ 29 26 -
issm/trunk/src/mex/Bamg/Bamg.cpp
r5154 r5172 32 32 bamgmesh_out=new BamgMesh; 33 33 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); 56 37 57 38 /*create bamg options input*/ … … 93 74 94 75 /*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); 101 78 102 79 /*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; 104 85 105 86 /*end module: */ -
issm/trunk/src/mex/BamgConvertMesh/BamgConvertMesh.cpp
r5154 r5172 32 32 CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&BamgConvertMeshUsage); 33 33 34 /*Initialize variables*/35 bamggeom=new BamgGeom ;36 bamgmesh=new BamgMesh ;34 /*Initialize Bamg outputs*/ 35 bamggeom=new BamgGeom(); 36 bamgmesh=new BamgMesh(); 37 37 38 38 /*Input datasets: */ … … 64 64 65 65 /*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); 72 68 73 69 /*end module: */
Note:
See TracChangeset
for help on using the changeset viewer.