Changeset 3273
- Timestamp:
- 03/12/10 12:18:17 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/BamgGeom.cpp
r3212 r3273 25 25 26 26 } 27 28 void 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 4 4 #ifndef BAMGGEOM_H_ 5 5 #define BAMGGEOM_H_ 6 7 #include <mex.h> 6 8 7 9 struct BamgGeom{ … … 37 39 38 40 void BamgGeomInit(BamgGeom* bamggeom); 41 void BamgGeomWrite(mxArray** bamggeom_mat,BamgGeom* bamggeom); 39 42 40 43 #endif -
issm/trunk/src/c/objects/BamgMesh.cpp
r3212 r3273 30 30 31 31 } 32 33 void 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 4 4 #ifndef BAMGMESH_H_ 5 5 #define BAMGMESH_H_ 6 7 #include <mex.h> 6 8 7 9 struct BamgMesh{ … … 45 47 46 48 void BamgMeshInit(BamgMesh* bamgmesh); 49 void BamgMeshWrite(mxArray** bamgmesh_mat,BamgMesh* bamgmesh); 47 50 48 51 #endif -
issm/trunk/src/m/classes/@model/model.m
r3203 r3273 22 22 23 23 %Mesh 24 md.bamg=NaN; 24 25 md.type=''; 25 26 md.numberofelements=0; -
issm/trunk/src/m/classes/public/bamg.m
r3272 r3273 276 276 277 277 % plug results onto model 278 md.bamg=struct(); 279 md.bamg.mesh=bamgmesh_out; 280 md.bamg.geometry=bamggeom_out; 278 281 md.x=bamgmesh_out.Vertices(:,1); 279 282 md.y=bamgmesh_out.Vertices(:,2); -
issm/trunk/src/m/classes/public/display/displaymesh.m
r1489 r3273 39 39 disp(sprintf('\n Properties:')); 40 40 fielddisplay(md,'type','mesh type'); 41 fielddisplay(md,'bamg','Geometry and 2d mesh properties (if generated by Bamg)'); 41 42 fielddisplay(md,'penalties','penalties list'); 42 43 fielddisplay(md,'gridonbed','lower nodes flags list'); -
issm/trunk/src/mex/Bamg/Bamg.cpp
r3272 r3273 5 5 6 6 void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]){ 7 8 /*Outputs*/ 9 mxArray* bamgmesh_mat=NULL; 10 mxArray* bamggeom_mat=NULL; 7 11 8 12 /*diverse: */ … … 83 87 Bamgx(&bamgmesh_out,&bamggeom_out,&bamgmesh_in,&bamggeom_in,&bamgopts); 84 88 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); 225 92 226 93 /*assign output datasets: */ 227 94 *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,"'");//transpose258 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,"'");//transpose267 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,"'");//transpose276 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,"'");//transpose285 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,"'");//transpose294 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,"'");//transpose303 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,"'");//transpose312 mxSetField(bamggeom_mat,0,"SubDomains",pfield2);313 314 /*assign output datasets: */315 95 *BAMGGEOMOUT=bamggeom_mat; 316 96 … … 322 102 } 323 103 324 void BamgUsage(void) 325 { 104 void BamgUsage(void){ 326 105 _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__); 328 107 _printf_("\n"); 329 108 }
Note:
See TracChangeset
for help on using the changeset viewer.