mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-13 06:30:34 +05:00
store is_curved in 2D elements
This commit is contained in:
parent
631b519676
commit
82435b59c4
@ -81,6 +81,7 @@ namespace netgen
|
|||||||
Ng_Vertices vertices;
|
Ng_Vertices vertices;
|
||||||
Ng_Edges edges;
|
Ng_Edges edges;
|
||||||
Ng_Faces faces;
|
Ng_Faces faces;
|
||||||
|
bool is_curved;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,6 +49,8 @@ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<1> (int nr) const
|
|||||||
ret.faces.num = 0;
|
ret.faces.num = 0;
|
||||||
ret.faces.ptr = NULL;
|
ret.faces.ptr = NULL;
|
||||||
|
|
||||||
|
ret.is_curved = mesh->GetCurvedElements().IsSegmentCurved(nr);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,6 +74,9 @@ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<2> (int nr) const
|
|||||||
ret.faces.num = MeshTopology::GetNFaces (el.GetType());
|
ret.faces.num = MeshTopology::GetNFaces (el.GetType());
|
||||||
ret.faces.ptr = (T_FACE2*)mesh->GetTopology().GetSurfaceElementFacesPtr (nr);
|
ret.faces.ptr = (T_FACE2*)mesh->GetTopology().GetSurfaceElementFacesPtr (nr);
|
||||||
|
|
||||||
|
// ret.is_curved = mesh->GetCurvedElements().IsSurfaceElementCurved(nr);
|
||||||
|
ret.is_curved = el.IsCurved();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,5 +100,7 @@ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<3> (int nr) const
|
|||||||
ret.faces.num = MeshTopology::GetNFaces (el.GetType());
|
ret.faces.num = MeshTopology::GetNFaces (el.GetType());
|
||||||
ret.faces.ptr = (T_FACE2*)mesh->GetTopology().GetElementFacesPtr (nr);
|
ret.faces.ptr = (T_FACE2*)mesh->GetTopology().GetElementFacesPtr (nr);
|
||||||
|
|
||||||
|
ret.is_curved = mesh->GetCurvedElements().IsElementCurved(nr);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1150,10 +1150,14 @@ void Ng_HPRefinement (int levels, double parameter, bool setorders,
|
|||||||
void Ng_HighOrder (int order, bool rational)
|
void Ng_HighOrder (int order, bool rational)
|
||||||
{
|
{
|
||||||
NgLock meshlock (mesh->MajorMutex(), true);
|
NgLock meshlock (mesh->MajorMutex(), true);
|
||||||
|
/*
|
||||||
mesh -> GetCurvedElements().BuildCurvedElements
|
mesh -> GetCurvedElements().BuildCurvedElements
|
||||||
(&const_cast<Refinement&> (ng_geometry -> GetRefinement()),
|
(&const_cast<Refinement&> (ng_geometry -> GetRefinement()),
|
||||||
order, rational);
|
order, rational);
|
||||||
|
*/
|
||||||
|
mesh->BuildCurvedElements
|
||||||
|
(&const_cast<Refinement&> (ng_geometry -> GetRefinement()),
|
||||||
|
order, rational);
|
||||||
|
|
||||||
mesh -> SetNextMajorTimeStamp();
|
mesh -> SetNextMajorTimeStamp();
|
||||||
}
|
}
|
||||||
|
@ -524,7 +524,7 @@ namespace netgen
|
|||||||
if (Det(mat) == 0) continue;
|
if (Det(mat) == 0) continue;
|
||||||
CalcInverse (mat, inv);
|
CalcInverse (mat, inv);
|
||||||
sol = inv * rhs;
|
sol = inv * rhs;
|
||||||
if (sol(0) >= 0 && sol(0) <= 1 & sol(1) >= 0 && sol(1) <= 1)
|
if ( (sol(0) >= 0) && (sol(0) <= 1) && (sol(1) >= 0) && (sol(1) <= 1))
|
||||||
{ cnt++; }
|
{ cnt++; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -554,7 +554,7 @@ namespace netgen
|
|||||||
if (Det(mat) == 0) continue;
|
if (Det(mat) == 0) continue;
|
||||||
CalcInverse (mat, inv);
|
CalcInverse (mat, inv);
|
||||||
sol = inv * rhs;
|
sol = inv * rhs;
|
||||||
if (sol(0) >= 0 && sol(0) <= 1 & sol(1) >= 0 && sol(1) <= 1)
|
if ((sol(0) >= 0) && (sol(0) <= 1) && (sol(1) >= 0) && (sol(1) <= 1))
|
||||||
{ cnt++; }
|
{ cnt++; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5518,6 +5518,17 @@ namespace netgen
|
|||||||
clusters->Update();
|
clusters->Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Mesh :: BuildCurvedElements (const Refinement * ref, int aorder, bool arational)
|
||||||
|
{
|
||||||
|
GetCurvedElements().BuildCurvedElements (ref, aorder, arational);
|
||||||
|
|
||||||
|
for (SurfaceElementIndex sei = 0; sei < GetNSE(); sei++)
|
||||||
|
{
|
||||||
|
(*this)[sei].SetCurved (GetCurvedElements().IsSurfaceElementCurved (sei));
|
||||||
|
}
|
||||||
|
|
||||||
|
SetNextMajorTimeStamp();
|
||||||
|
}
|
||||||
|
|
||||||
void Mesh :: SetMaterial (int domnr, const char * mat)
|
void Mesh :: SetMaterial (int domnr, const char * mat)
|
||||||
{
|
{
|
||||||
|
@ -663,6 +663,8 @@ namespace netgen
|
|||||||
class CurvedElements & GetCurvedElements () const
|
class CurvedElements & GetCurvedElements () const
|
||||||
{ return *curvedelems; }
|
{ return *curvedelems; }
|
||||||
|
|
||||||
|
void BuildCurvedElements (const class Refinement * ref, int aorder, bool arational = false);
|
||||||
|
|
||||||
const class AnisotropicClusters & GetClusters () const
|
const class AnisotropicClusters & GetClusters () const
|
||||||
{ return *clusters; }
|
{ return *clusters; }
|
||||||
|
|
||||||
|
@ -172,6 +172,7 @@ namespace netgen
|
|||||||
orderx = ordery = 1;
|
orderx = ordery = 1;
|
||||||
refflag = 1;
|
refflag = 1;
|
||||||
strongrefflag = false;
|
strongrefflag = false;
|
||||||
|
is_curved = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -197,6 +198,7 @@ namespace netgen
|
|||||||
orderx = ordery = 1;
|
orderx = ordery = 1;
|
||||||
refflag = 1;
|
refflag = 1;
|
||||||
strongrefflag = false;
|
strongrefflag = false;
|
||||||
|
is_curved = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element2d :: Element2d (ELEMENT_TYPE atyp)
|
Element2d :: Element2d (ELEMENT_TYPE atyp)
|
||||||
@ -216,6 +218,7 @@ namespace netgen
|
|||||||
orderx = ordery = 1;
|
orderx = ordery = 1;
|
||||||
refflag = 1;
|
refflag = 1;
|
||||||
strongrefflag = false;
|
strongrefflag = false;
|
||||||
|
is_curved = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -240,6 +243,7 @@ namespace netgen
|
|||||||
deleted = 0;
|
deleted = 0;
|
||||||
visible = 1;
|
visible = 1;
|
||||||
orderx = ordery = 1;
|
orderx = ordery = 1;
|
||||||
|
is_curved = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element2d :: Element2d (int pi1, int pi2, int pi3, int pi4)
|
Element2d :: Element2d (int pi1, int pi2, int pi3, int pi4)
|
||||||
|
@ -304,7 +304,7 @@ namespace netgen
|
|||||||
// Set a new property for each element, to
|
// Set a new property for each element, to
|
||||||
// control whether it is visible or not
|
// control whether it is visible or not
|
||||||
bool visible:1; // element visible
|
bool visible:1; // element visible
|
||||||
|
bool is_curved:1; // element is (high order) curved
|
||||||
/// order for hp-FEM
|
/// order for hp-FEM
|
||||||
unsigned int orderx:6;
|
unsigned int orderx:6;
|
||||||
unsigned int ordery:6;
|
unsigned int ordery:6;
|
||||||
@ -494,6 +494,9 @@ namespace netgen
|
|||||||
{ return strongrefflag; }
|
{ return strongrefflag; }
|
||||||
|
|
||||||
|
|
||||||
|
bool IsCurved () const { return is_curved; }
|
||||||
|
void SetCurved (bool acurved) { is_curved = acurved; }
|
||||||
|
|
||||||
SurfaceElementIndex NextElement() { return next; }
|
SurfaceElementIndex NextElement() { return next; }
|
||||||
|
|
||||||
bool operator==(const Element2d & el2) const;
|
bool operator==(const Element2d & el2) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user