mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-27 14:20:34 +05:00
Project added Element1D/Element2D
This commit is contained in:
parent
a504372f82
commit
f807be50c2
@ -522,10 +522,8 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m)
|
|||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
(*newel)[i] = py::extract<PointIndex>(vertices[i])();
|
(*newel)[i] = py::extract<PointIndex>(vertices[i])();
|
||||||
newel -> si = index;
|
newel -> si = index;
|
||||||
newel -> edgenr = edgenr;
|
|
||||||
newel -> epgeominfo[0].edgenr = edgenr;
|
newel -> epgeominfo[0].edgenr = edgenr;
|
||||||
newel -> epgeominfo[1].edgenr = edgenr;
|
newel -> epgeominfo[1].edgenr = edgenr;
|
||||||
// needed for codim2 in 3d
|
|
||||||
newel -> edgenr = index;
|
newel -> edgenr = index;
|
||||||
for(auto i : Range(len(trignums)))
|
for(auto i : Range(len(trignums)))
|
||||||
newel->geominfo[i].trignum = py::cast<int>(trignums[i]);
|
newel->geominfo[i].trignum = py::cast<int>(trignums[i]);
|
||||||
@ -1030,10 +1028,22 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m)
|
|||||||
return self.AddSurfaceElement (el);
|
return self.AddSurfaceElement (el);
|
||||||
})
|
})
|
||||||
|
|
||||||
.def ("Add", [](Mesh & self, const Segment & el)
|
.def ("Add", [](Mesh & self, const Segment & el, bool project_geominfo)
|
||||||
{
|
{
|
||||||
|
if (project_geominfo)
|
||||||
|
{
|
||||||
|
auto &p1 = self[el[0]];
|
||||||
|
auto &p2 = self[el[1]];
|
||||||
|
auto geo = self.GetGeometry();
|
||||||
|
geo->ProjectPointEdge
|
||||||
|
(0,0,p1,
|
||||||
|
const_cast<EdgePointGeomInfo*>(&el.epgeominfo[0]));
|
||||||
|
geo->ProjectPointEdge
|
||||||
|
(0,0,p2,
|
||||||
|
const_cast<EdgePointGeomInfo*>(&el.epgeominfo[1]));
|
||||||
|
}
|
||||||
return self.AddSegment (el);
|
return self.AddSegment (el);
|
||||||
})
|
}, py::arg("el"), py::arg("project_geominfo")=false)
|
||||||
|
|
||||||
.def ("Add", [](Mesh & self, const Element0d & el)
|
.def ("Add", [](Mesh & self, const Element0d & el)
|
||||||
{
|
{
|
||||||
@ -1085,7 +1095,8 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m)
|
|||||||
ptr += 3;
|
ptr += 3;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.def ("AddElements", [](Mesh & self, int dim, int index, py::buffer b1, int base)
|
.def ("AddElements", [](Mesh & self, int dim, int index, py::buffer b1, int base,
|
||||||
|
bool project_geometry)
|
||||||
{
|
{
|
||||||
static Timer timer("Mesh::AddElements");
|
static Timer timer("Mesh::AddElements");
|
||||||
static Timer timercast("Mesh::AddElements casting");
|
static Timer timercast("Mesh::AddElements casting");
|
||||||
@ -1137,6 +1148,21 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m)
|
|||||||
for (int j = 0; j < np; j++)
|
for (int j = 0; j < np; j++)
|
||||||
el[j] = ptr[j]+PointIndex::BASE-base;
|
el[j] = ptr[j]+PointIndex::BASE-base;
|
||||||
el.SetIndex(index);
|
el.SetIndex(index);
|
||||||
|
if(project_geometry)
|
||||||
|
{
|
||||||
|
// find some point in the mid of trig/quad for
|
||||||
|
// quick + stable uv-projection of all points
|
||||||
|
auto startp = Center(self[el[0]], self[el[1]], self[el[2]]);
|
||||||
|
PointGeomInfo gi = self.GetGeometry()->ProjectPoint(index,
|
||||||
|
startp);
|
||||||
|
for(auto i : Range(np))
|
||||||
|
{
|
||||||
|
el.GeomInfo()[i] = gi;
|
||||||
|
self.GetGeometry()->ProjectPointGI(index,
|
||||||
|
self[el[i]],
|
||||||
|
el.GeomInfo()[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
self.AddSurfaceElement (el);
|
self.AddSurfaceElement (el);
|
||||||
ptr += info.strides[0]/sizeof(int);
|
ptr += info.strides[0]/sizeof(int);
|
||||||
}
|
}
|
||||||
@ -1168,7 +1194,8 @@ DLL_HEADER void ExportNetgenMeshing(py::module &m)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}, py::arg("dim"), py::arg("index"), py::arg("data"), py::arg("base")=0)
|
}, py::arg("dim"), py::arg("index"), py::arg("data"), py::arg("base")=0,
|
||||||
|
py::arg("project_geometry")=false)
|
||||||
|
|
||||||
.def ("DeleteSurfaceElement",
|
.def ("DeleteSurfaceElement",
|
||||||
[](Mesh & self, SurfaceElementIndex i)
|
[](Mesh & self, SurfaceElementIndex i)
|
||||||
|
Loading…
Reference in New Issue
Block a user