1 | /*
|
---|
2 | * TriMesh: mesh a domain using an .exp file
|
---|
3 | */
|
---|
4 |
|
---|
5 | #include "./TriMesh.h"
|
---|
6 |
|
---|
7 | void mexFunction( int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[] ){
|
---|
8 |
|
---|
9 | /* input: */
|
---|
10 | char* domainname=NULL;
|
---|
11 | double area;
|
---|
12 | bool order;
|
---|
13 |
|
---|
14 | /*intermediary: */
|
---|
15 | DataSet* domain=NULL;
|
---|
16 |
|
---|
17 | /* output: */
|
---|
18 | Matrix* index=NULL;
|
---|
19 | Vector* x=NULL;
|
---|
20 | Vector* y=NULL;
|
---|
21 | Matrix* segments=NULL;
|
---|
22 | Vector* segmentmarkerlist=NULL;
|
---|
23 |
|
---|
24 | /*Boot module: */
|
---|
25 | MODULEBOOT();
|
---|
26 | printf("ok1\n");
|
---|
27 |
|
---|
28 | /*checks on arguments on the matlab side: */
|
---|
29 | CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&TriMeshUsage);
|
---|
30 | printf("ok2\n");
|
---|
31 |
|
---|
32 | /*Fetch data needed for meshing: */
|
---|
33 |
|
---|
34 | FetchMatlabData(&domainname,DOMAINOUTLINE);
|
---|
35 | FetchMatlabData(&area,AREA);
|
---|
36 | FetchMatlabData(&order,ORDER);
|
---|
37 | printf("ok3 %g %s\n",area,domainname);
|
---|
38 |
|
---|
39 | /*Read domain outline: */
|
---|
40 | domain=DomainOutlineRead(domainname,false);
|
---|
41 | printf("ok4\n");
|
---|
42 |
|
---|
43 | /*call x core: */
|
---|
44 | TriMeshx(&index,&x,&y,&segments,&segmentmarkerlist,domain,area,order);
|
---|
45 | printf("ok5\n");
|
---|
46 |
|
---|
47 | /*write outputs: */
|
---|
48 | /*WriteMatlabData(INDEX,index);
|
---|
49 | WriteMatlabData(X,x);
|
---|
50 | WriteMatlabData(Y,y);
|
---|
51 | WriteMatlabData(SEGMENTS,segments);
|
---|
52 | WriteMatlabData(SEGMENTMARKERLIST,segmentmarkerlist);*/
|
---|
53 |
|
---|
54 | /*free ressources: */
|
---|
55 | delete domain;
|
---|
56 | /*
|
---|
57 | xdelete(&index);
|
---|
58 | xdelete(&x);
|
---|
59 | xdelete(&y);
|
---|
60 | xdelete(&segments);
|
---|
61 | xdelete(&segmentmarkerlist);*/
|
---|
62 |
|
---|
63 | /*end module: */
|
---|
64 | MODULEEND();
|
---|
65 | }
|
---|
66 |
|
---|
67 | void TriMeshUsage(void)
|
---|
68 | {
|
---|
69 | printf("\n");
|
---|
70 | printf(" usage: [index,x,y,segments,segmentmarkers]=TriMesh(domainoutlinefilename,area,ordered) \n");
|
---|
71 | printf(" where: index,x,y defines a triangulation, segments is an array made \n");
|
---|
72 | printf(" of exterior segments to the mesh domain outline, segmentmarkers is an array flagging each segment, \n");
|
---|
73 | printf(" outlinefilename an Argus domain outline file, \n");
|
---|
74 | printf(" area is the maximum area desired for any element of the resulting mesh, \n");
|
---|
75 | printf(" and ordered is a bool that determines whether segments are output in the \n");
|
---|
76 | printf(" order they are made by Triangle (ie none), or ordered counter clockwise around the domain outline.\n");
|
---|
77 | printf("\n");
|
---|
78 | }
|
---|