MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / remesh

Method remesh

SRC/element/PFEMElement/TriangleMeshGenerator.cpp:176–275  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174}
175
176int
177TriangleMeshGenerator::remesh(double alpha)
178{
179 // reset
180 this->reset();
181
182 // get size
183 in.numberofpoints = pointlist.size()/2;
184
185 // quick return
186 if(in.numberofpoints < 3) return 0;
187
188 // set pointers
189 in.pointlist = &pointlist[0];
190
191 // meshing
192 char s[] = "Qnzv";
193 triangulate(s, &in, &out, &vout);
194
195 // reset pointers
196 in.pointlist = NULL;
197
198 // clear input data
199 pointmarkerlist.clear();
200 segmentlist.clear();
201 segmentmarkerlist.clear();
202 trianglelist.clear();
203 neighborlist.clear();
204
205 neighborlist.assign(out.neighborlist,
206 out.neighborlist+out.numberoftriangles*3);
207
208 // radius and average size of triangles
209 numberofcorners = out.numberofcorners;
210 int numtri = out.numberoftriangles;
211 std::vector<double> radius(numtri);
212 std::vector<double> beta(numtri);
213 double avesize = 0.0;
214 for(int i=0; i<numtri; i++) {
215
216 // triangle circumcenter
217 double xc = vout.pointlist[2*i];
218 double yc = vout.pointlist[2*i+1];
219
220 // triangle points
221 int pt[3];
222 for(int j=0; j<3; j++) {
223 pt[j] = out.trianglelist[numberofcorners*i+j];
224 }
225
226 // nodal coordinates
227 double x[3], y[3];
228 for(int j=0; j<3; j++) {
229 x[j] = out.pointlist[2*pt[j]];
230 y[j] = out.pointlist[2*pt[j]+1];
231 }
232
233 // size of triangle

Callers

nothing calls this directly

Calls 4

resetMethod · 0.95
push_backMethod · 0.80
sizeMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected