mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-12 22:20:35 +05:00
getvertexelements inline
This commit is contained in:
parent
7525e2c09b
commit
21199b565a
@ -116,6 +116,7 @@ namespace netgen
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
Ng_Elements elements;
|
Ng_Elements elements;
|
||||||
|
Ng_Elements bnd_elements;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,3 +135,82 @@ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<3> (int nr) const
|
|||||||
ret.is_curved = el.IsCurved();
|
ret.is_curved = el.IsCurved();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template <> NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetNNodes<1> ()
|
||||||
|
{
|
||||||
|
return mesh->GetTopology().GetNEdges();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetNNodes<2> ()
|
||||||
|
{
|
||||||
|
return mesh->GetTopology().GetNFaces();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> NGX_INLINE DLL_HEADER const Ng_Node<0> Ngx_Mesh :: GetNode<0> (int vnr) const
|
||||||
|
{
|
||||||
|
Ng_Node<0> node;
|
||||||
|
vnr++;
|
||||||
|
switch (mesh->GetDimension())
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
FlatArray<ElementIndex> ia = mesh->GetTopology().GetVertexElements(vnr);
|
||||||
|
node.elements.ne = ia.Size();
|
||||||
|
node.elements.ptr = (int*)&ia[0];
|
||||||
|
|
||||||
|
FlatArray<SurfaceElementIndex> bia = mesh->GetTopology().GetVertexSurfaceElements(vnr);
|
||||||
|
node.bnd_elements.ne = bia.Size();
|
||||||
|
node.bnd_elements.ptr = (int*)&bia[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
FlatArray<SurfaceElementIndex> ia = mesh->GetTopology().GetVertexSurfaceElements(vnr);
|
||||||
|
node.elements.ne = ia.Size();
|
||||||
|
node.elements.ptr = (int*)&ia[0];
|
||||||
|
|
||||||
|
FlatArray<SegmentIndex> bia = mesh->GetTopology().GetVertexSegments(vnr);
|
||||||
|
node.bnd_elements.ne = bia.Size();
|
||||||
|
node.bnd_elements.ptr = (int*)&bia[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
FlatArray<SegmentIndex> ia = mesh->GetTopology().GetVertexSegments(vnr);
|
||||||
|
node.elements.ne = ia.Size();
|
||||||
|
node.elements.ptr = (int*)&ia[0];
|
||||||
|
|
||||||
|
node.bnd_elements.ne = 1; // nothing useful ...
|
||||||
|
node.bnd_elements.ptr = nullptr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
;
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> NGX_INLINE DLL_HEADER const Ng_Node<1> Ngx_Mesh :: GetNode<1> (int nr) const
|
||||||
|
{
|
||||||
|
Ng_Node<1> node;
|
||||||
|
node.vertices.ptr = mesh->GetTopology().GetEdgeVerticesPtr(nr);
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <> NGX_INLINE DLL_HEADER const Ng_Node<2> Ngx_Mesh :: GetNode<2> (int nr) const
|
||||||
|
{
|
||||||
|
Ng_Node<2> node;
|
||||||
|
node.vertices.ptr = mesh->GetTopology().GetFaceVerticesPtr(nr);
|
||||||
|
node.vertices.nv = (node.vertices.ptr[3] == 0) ? 3 : 4;
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -601,67 +601,6 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template <> DLL_HEADER int Ngx_Mesh :: GetNNodes<1> ()
|
|
||||||
{
|
|
||||||
return mesh->GetTopology().GetNEdges();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> DLL_HEADER int Ngx_Mesh :: GetNNodes<2> ()
|
|
||||||
{
|
|
||||||
return mesh->GetTopology().GetNFaces();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> DLL_HEADER const Ng_Node<0> Ngx_Mesh :: GetNode<0> (int vnr) const
|
|
||||||
{
|
|
||||||
Ng_Node<0> node;
|
|
||||||
vnr++;
|
|
||||||
switch (mesh->GetDimension())
|
|
||||||
{
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
FlatArray<ElementIndex> ia = mesh->GetTopology().GetVertexElements(vnr);
|
|
||||||
node.elements.ne = ia.Size();
|
|
||||||
node.elements.ptr = (int*)&ia[0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
FlatArray<SurfaceElementIndex> ia = mesh->GetTopology().GetVertexSurfaceElements(vnr);
|
|
||||||
node.elements.ne = ia.Size();
|
|
||||||
node.elements.ptr = (int*)&ia[0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
FlatArray<SegmentIndex> ia = mesh->GetTopology().GetVertexSegments(vnr);
|
|
||||||
node.elements.ne = ia.Size();
|
|
||||||
node.elements.ptr = (int*)&ia[0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
}
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <> DLL_HEADER const Ng_Node<1> Ngx_Mesh :: GetNode<1> (int nr) const
|
|
||||||
{
|
|
||||||
Ng_Node<1> node;
|
|
||||||
node.vertices.ptr = mesh->GetTopology().GetEdgeVerticesPtr(nr);
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <> DLL_HEADER const Ng_Node<2> Ngx_Mesh :: GetNode<2> (int nr) const
|
|
||||||
{
|
|
||||||
Ng_Node<2> node;
|
|
||||||
node.vertices.ptr = mesh->GetTopology().GetFaceVerticesPtr(nr);
|
|
||||||
node.vertices.nv = (node.vertices.ptr[3] == 0) ? 3 : 4;
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
DLL_HEADER int Ngx_Mesh :: FindElementOfPoint <1>
|
DLL_HEADER int Ngx_Mesh :: FindElementOfPoint <1>
|
||||||
(double * hp, double * lami,
|
(double * hp, double * lami,
|
||||||
|
@ -1664,7 +1664,7 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
FlatArray<ElementIndex> MeshTopology :: GetVertexElements (int vnr) const
|
FlatArray<ElementIndex> MeshTopology :: GetVertexElements (int vnr) const
|
||||||
{
|
{
|
||||||
if (vert2element)
|
if (vert2element)
|
||||||
@ -1685,7 +1685,7 @@ namespace netgen
|
|||||||
return (*vert2segment)[vnr];
|
return (*vert2segment)[vnr];
|
||||||
return FlatArray<SegmentIndex> (0,0);
|
return FlatArray<SegmentIndex> (0,0);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
void MeshTopology :: GetVertexSurfaceElements( int vnr,
|
void MeshTopology :: GetVertexSurfaceElements( int vnr,
|
||||||
Array<SurfaceElementIndex> & elements ) const
|
Array<SurfaceElementIndex> & elements ) const
|
||||||
|
@ -133,13 +133,15 @@ public:
|
|||||||
int GetFace2SurfaceElement (int fnr) const { return face2surfel[fnr-1]; }
|
int GetFace2SurfaceElement (int fnr) const { return face2surfel[fnr-1]; }
|
||||||
|
|
||||||
void GetVertexElements (int vnr, Array<ElementIndex> & elements) const;
|
void GetVertexElements (int vnr, Array<ElementIndex> & elements) const;
|
||||||
FlatArray<ElementIndex> GetVertexElements (int vnr) const;
|
FlatArray<ElementIndex> GetVertexElements (int vnr) const
|
||||||
|
{ return (*vert2element)[vnr]; }
|
||||||
|
|
||||||
void GetVertexSurfaceElements( int vnr, Array<SurfaceElementIndex>& elements ) const;
|
void GetVertexSurfaceElements( int vnr, Array<SurfaceElementIndex>& elements ) const;
|
||||||
FlatArray<SurfaceElementIndex> GetVertexSurfaceElements (int vnr) const;
|
FlatArray<SurfaceElementIndex> GetVertexSurfaceElements (int vnr) const
|
||||||
|
{ return (*vert2surfelement)[vnr]; }
|
||||||
FlatArray<SegmentIndex> GetVertexSegments (int vnr) const;
|
|
||||||
|
|
||||||
|
FlatArray<SegmentIndex> GetVertexSegments (int vnr) const
|
||||||
|
{ return (*vert2segment)[vnr]; }
|
||||||
|
|
||||||
int GetVerticesEdge ( int v1, int v2) const;
|
int GetVerticesEdge ( int v1, int v2) const;
|
||||||
void GetSegmentVolumeElements ( int segnr, Array<ElementIndex> & els ) const;
|
void GetSegmentVolumeElements ( int segnr, Array<ElementIndex> & els ) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user