46 const std::deque<Eigen::Matrix<double,2,1>>& internalPts,
47 const double& meshSize,
48 const std::string& flags)
52 std::cout<<
"Creating triangular mesh"<<std::endl;
55 if(boundaryPts.size()>=3)
58 Eigen::Matrix<double,2,1> barycenter(Eigen::Matrix<double,2,1>::Zero());
59 for(
const auto& bndPoint : boundaryPts)
63 barycenter/=boundaryPts.size();
69 in.numberofpoints = boundaryPts.size()+internalPts.size();
70 in.pointlist = (REAL *) malloc(
in.numberofpoints * 2 *
sizeof(REAL));
71 for(
size_t i=0;
i<boundaryPts.size();++
i)
74 in.pointlist[2*
i ] = boundaryPts[
i](0);
75 in.pointlist[2*
i+1] = boundaryPts[
i](1);
77 for(
size_t i=0;
i<internalPts.size();++
i)
79 const int i1(
i+boundaryPts.size());
81 in.pointlist[2*i1 ] = internalPts[
i](0);
82 in.pointlist[2*i1+1] = internalPts[
i](1);
96 in.numberofpointattributes = 1;
97 in.pointattributelist = (REAL *) malloc(
in.numberofpoints *
98 in.numberofpointattributes *
100 for(
int i=0;
i<
in.numberofpoints;++
i)
102 for(
int j=0;
j<
in.numberofpointattributes;++
j)
104 in.pointattributelist[
i*
in.numberofpointattributes+
j] = 1.0;
111 in.pointmarkerlist = (
int *) malloc(
in.numberofpoints *
sizeof(
int));
112 for(
int i=0;
i<
in.numberofpoints;++
i)
114 in.pointmarkerlist[
i] =
i;
127 in.numberofsegments = boundaryPts.size();
128 in.segmentlist = (
int *) malloc(
in.numberofsegments * 2 *
sizeof(
int));
130 in.segmentmarkerlist = (
int *) NULL;
132 for(
int p=0;
p<
in.numberofsegments;++
p)
135 in.segmentlist[2*
p ] =
p;
136 in.segmentlist[2*
p+1] = (
p<
in.numberofsegments-1?
p+1 : 0);
140 in.numberofholes = 0;
143 in.numberofregions = 1;
144 in.regionlist = (REAL *) malloc(
in.numberofregions * 4 *
sizeof(REAL));
146 in.regionlist[0] = barycenter(0);
147 in.regionlist[1] = barycenter(1);
148 in.regionlist[2] = 100.0;
149 in.regionlist[3] = meshSize;
221 free(
in.pointattributelist);
222 free(
in.pointmarkerlist);
254 const std::vector<Eigen::Matrix<int,2,1>>& segments,
255 const double& meshSize,
256 const std::string& flags)
260 std::cout<<
"Creating triangular mesh"<<std::endl;
266 Eigen::Matrix<double,2,1> barycenter(Eigen::Matrix<double,2,1>::Zero());
267 for(
const auto& bndPoint : points)
269 barycenter+=bndPoint;
271 barycenter/=points.size();
277 in.numberofpoints = points.size();
278 in.pointlist = (REAL *) malloc(
in.numberofpoints * 2 *
sizeof(REAL));
279 for(
size_t i=0;
i<points.size();++
i)
282 in.pointlist[2*
i ] = points[
i](0);
283 in.pointlist[2*
i+1] = points[
i](1);
286 in.numberofpointattributes = 1;
287 in.pointattributelist = (REAL *) malloc(
in.numberofpoints *
288 in.numberofpointattributes *
290 for(
int i=0;
i<
in.numberofpoints;++
i)
292 for(
int j=0;
j<
in.numberofpointattributes;++
j)
294 in.pointattributelist[
i*
in.numberofpointattributes+
j] = 1.0;
298 in.pointmarkerlist = (
int *) malloc(
in.numberofpoints *
sizeof(
int));
299 for(
int i=0;
i<
in.numberofpoints;++
i)
301 in.pointmarkerlist[
i] =
i;
304 in.numberofsegments = segments.size();
305 in.segmentlist = (
int *) malloc(
in.numberofsegments * 2 *
sizeof(
int));
307 in.segmentmarkerlist = (
int *) NULL;
309 for(
int p=0;
p<
in.numberofsegments;++
p)
312 in.segmentlist[2*
p ] = segments[
p](0);
313 in.segmentlist[2*
p+1] = segments[
p](1);
317 in.numberofholes = 0;
320 in.numberofregions = 1;
321 in.regionlist = (REAL *) malloc(
in.numberofregions * 4 *
sizeof(REAL));
323 in.regionlist[0] = barycenter(0);
324 in.regionlist[1] = barycenter(1);
325 in.regionlist[2] = 100.0;
326 in.regionlist[3] = meshSize;
396 free(
in.pointattributelist);
397 free(
in.pointmarkerlist);
void reMesh(const std::deque< Eigen::Matrix< double, 2, 1 > > &boundaryPts, const std::deque< Eigen::Matrix< double, 2, 1 > > &internalPts, const double &meshSize, const std::string &flags)