-
Notifications
You must be signed in to change notification settings - Fork 6
/
Triangle.cpp
63 lines (52 loc) · 1.68 KB
/
Triangle.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
* Triangle: mesh a domain using an .exp file
*/
#include "./Triangle.h"
void TriangleUsage(void){/*{{{*/
_printf_("\n");
_printf_(" usage: [index,x,y,segments,segmentmarkers]=Triangle(domainoutlinefilename,rifts,area) \n");
_printf_(" where: index,x,y defines a triangulation, segments is an array made \n");
_printf_(" of exterior segments to the mesh domain outline, segmentmarkers is an array flagging each segment, \n");
_printf_(" outlinefilename an Argus domain outline file, \n");
_printf_(" area is the maximum area desired for any element of the resulting mesh, \n");
_printf_("\n");
}/*}}}*/
WRAPPER(Triangle_python){
/*intermediary: */
double area;
Contours *domain = NULL;
Contours *rifts = NULL;
/* output: */
int *index = NULL;
double *x = NULL;
double *y = NULL;
int *segments = NULL;
int *segmentmarkerlist = NULL;
int nel,nods,nsegs;
/*Boot module: */
MODULEBOOT();
/*checks on arguments: */
CHECKARGUMENTS(NLHS,NRHS,&TriangleUsage);
/*Fetch data needed for meshing: */
FetchData(&domain,DOMAINOUTLINE);
FetchData(&rifts,RIFTSOUTLINE);
FetchData(&area,AREA);
/*call x core: */
Trianglex(&index,&x,&y,&segments,&segmentmarkerlist,&nel,&nods,&nsegs,domain,rifts,area);
/*write outputs: */
WriteData(INDEX,index,nel,3);
WriteData(X,x,nods);
WriteData(Y,y,nods);
WriteData(SEGMENTS,segments,nsegs,3);
WriteData(SEGMENTMARKERLIST,segmentmarkerlist,nsegs);
/*free resources: */
delete domain;
delete rifts;
xDelete<int>(index);
xDelete<double>(x);
xDelete<double>(y);
xDelete<int>(segments);
xDelete<int>(segmentmarkerlist);
/*end module: */
MODULEEND();
}