mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-12 22:20:35 +05:00
setting bboundary names
This commit is contained in:
parent
a4fe0c1c41
commit
6134717796
@ -485,7 +485,18 @@ namespace netgen
|
|||||||
layer,
|
layer,
|
||||||
mesh);
|
mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(*testout) << "refedges size: " << refedges.Size() << endl;
|
||||||
|
for(int i=0; i<refedges.Size(); i++)
|
||||||
|
{
|
||||||
|
(*testout) << "edgenr: " << refedges[i].edgenr << endl;
|
||||||
|
auto splinesurface = dynamic_cast<const SplineSurface*>(geometry.GetSurface(refedges[i].surfnr1));
|
||||||
|
if(splinesurface)
|
||||||
|
{
|
||||||
|
auto name = splinesurface->GetBCNameOf(specpoints[startpoints.Get(refedges[i].edgenr)].p,specpoints[endpoints.Get(refedges[i].edgenr)].p);
|
||||||
|
mesh.SetCD2Name(refedges[i].edgenr-1,*name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// not available ...
|
// not available ...
|
||||||
|
@ -339,21 +339,6 @@ namespace netgen
|
|||||||
fd.SetBCName ( mesh.GetBCNamePtr ( fd.BCProperty() - 1 ) );
|
fd.SetBCName ( mesh.GetBCNamePtr ( fd.BCProperty() - 1 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
int bbccnt = 0;
|
|
||||||
for (int k = 0; k < geom.GetNSurf(); k++){
|
|
||||||
auto splinesurf = dynamic_cast<const SplineSurface*> (geom.GetSurface(k));
|
|
||||||
if (splinesurf)
|
|
||||||
{
|
|
||||||
for( int i=0; i< splinesurf->GetNSplines(); i++)
|
|
||||||
{
|
|
||||||
string bcname = *splinesurf->GetBCName(i);
|
|
||||||
if(bcname != "default"){
|
|
||||||
mesh.SetCD2Name(bbccnt,bcname); bbccnt++; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//!!
|
//!!
|
||||||
|
|
||||||
for (int k = 1; k <= mesh.GetNFD(); k++)
|
for (int k = 1; k <= mesh.GetNFD(); k++)
|
||||||
|
@ -19,6 +19,21 @@ void SplineSurface :: AppendPoint(const Point<3> & p, const double reffac, const
|
|||||||
splines.Append(spline);
|
splines.Append(spline);
|
||||||
bcnames.Append(bcname);
|
bcnames.Append(bcname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string* SplineSurface :: GetBCNameOf (Point<3> p1, Point<3> p2) const
|
||||||
|
{
|
||||||
|
(*testout) << "segment: " << p1 << ", " << p2 << endl;
|
||||||
|
for(int i=0; i<splines.Size(); i++)
|
||||||
|
{
|
||||||
|
(*testout) << "spline: " << splines[i]->GetPoint(0) << ", " << splines[i]->GetPoint(1) << endl;
|
||||||
|
if (((splines[i]->GetPoint(0)-p1).Length()<1e-12 && (splines[i]->GetPoint(1)-p2).Length() < 1e-12) || ((splines[i]->GetPoint(0)-p2).Length() < 1e-12 && (splines[i]->GetPoint(1)-p1).Length() < 1e-12))
|
||||||
|
{
|
||||||
|
(*testout) << "return bcname: " << *bcnames[i] << endl;
|
||||||
|
return bcnames[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new string("default");
|
||||||
|
}
|
||||||
|
|
||||||
double SplineSurface :: CalcFunctionValue (const Point<3> & point) const
|
double SplineSurface :: CalcFunctionValue (const Point<3> & point) const
|
||||||
{
|
{
|
||||||
|
@ -23,6 +23,7 @@ namespace netgen
|
|||||||
int GetNP() const { return geompoints.Size(); }
|
int GetNP() const { return geompoints.Size(); }
|
||||||
const GeomPoint<3> & GetPoint(int i) const { return geompoints[i]; }
|
const GeomPoint<3> & GetPoint(int i) const { return geompoints[i]; }
|
||||||
string* GetBCName(int i) const { return bcnames[i]; }
|
string* GetBCName(int i) const { return bcnames[i]; }
|
||||||
|
string* GetBCNameOf(Point<3> p1, Point<3> p2) const;
|
||||||
|
|
||||||
DLL_HEADER void AppendPoint(const Point<3> & p, const double reffac = 1., const bool hpref=false);
|
DLL_HEADER void AppendPoint(const Point<3> & p, const double reffac = 1., const bool hpref=false);
|
||||||
void AppendSegment(SplineSeg<3>* spline, string* bcname);
|
void AppendSegment(SplineSeg<3>* spline, string* bcname);
|
||||||
|
@ -13,7 +13,10 @@ NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetElementIndex<0> (int nr) const
|
|||||||
template <>
|
template <>
|
||||||
NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetElementIndex<1> (int nr) const
|
NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetElementIndex<1> (int nr) const
|
||||||
{
|
{
|
||||||
return (*mesh)[SegmentIndex(nr)].si;
|
if(mesh->GetDimension()==3)
|
||||||
|
return (*mesh)[SegmentIndex(nr)].cd2i;
|
||||||
|
else
|
||||||
|
return (*mesh)[SegmentIndex(nr)].si;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
@ -63,7 +66,10 @@ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<1> (int nr) const
|
|||||||
|
|
||||||
Ng_Element ret;
|
Ng_Element ret;
|
||||||
ret.type = NG_ELEMENT_TYPE(el.GetType());
|
ret.type = NG_ELEMENT_TYPE(el.GetType());
|
||||||
ret.index = el.si;
|
if(mesh->GetDimension()==2)
|
||||||
|
ret.index = el.si;
|
||||||
|
else
|
||||||
|
ret.index = el.edgenr;
|
||||||
ret.points.num = el.GetNP();
|
ret.points.num = el.GetNP();
|
||||||
ret.points.ptr = (int*)&(el[0]);
|
ret.points.ptr = (int*)&(el[0]);
|
||||||
|
|
||||||
|
@ -5773,6 +5773,7 @@ namespace netgen
|
|||||||
|
|
||||||
void Mesh :: SetCD2Name ( int cd2nr, const string & abcname )
|
void Mesh :: SetCD2Name ( int cd2nr, const string & abcname )
|
||||||
{
|
{
|
||||||
|
(*testout) << "setCD2Name on edge " << cd2nr << " to " << abcname << endl;
|
||||||
if (cd2nr >= cd2names.Size())
|
if (cd2nr >= cd2names.Size())
|
||||||
{
|
{
|
||||||
int oldsize = cd2names.Size();
|
int oldsize = cd2names.Size();
|
||||||
@ -5780,7 +5781,7 @@ namespace netgen
|
|||||||
for(int i= oldsize; i<= cd2nr; i++)
|
for(int i= oldsize; i<= cd2nr; i++)
|
||||||
cd2names[i] = nullptr;
|
cd2names[i] = nullptr;
|
||||||
}
|
}
|
||||||
if (cd2names[cd2nr]) delete cd2names[cd2nr];
|
//if (cd2names[cd2nr]) delete cd2names[cd2nr];
|
||||||
if (abcname != "default")
|
if (abcname != "default")
|
||||||
cd2names[cd2nr] = new string(abcname);
|
cd2names[cd2nr] = new string(abcname);
|
||||||
else
|
else
|
||||||
@ -5794,7 +5795,7 @@ namespace netgen
|
|||||||
return defaultstring;
|
return defaultstring;
|
||||||
|
|
||||||
if (cd2nr < 0 || cd2nr >= cd2names.Size())
|
if (cd2nr < 0 || cd2nr >= cd2names.Size())
|
||||||
throw NgException ("illegal bc-number");
|
return defaultstring;
|
||||||
|
|
||||||
if (cd2names[cd2nr])
|
if (cd2names[cd2nr])
|
||||||
return *cd2names[cd2nr];
|
return *cd2names[cd2nr];
|
||||||
|
@ -2418,6 +2418,14 @@ namespace netgen
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string EdgeDescriptor :: default_bcname = "default";
|
||||||
|
void EdgeDescriptor :: SetBCName (string * bcn)
|
||||||
|
{
|
||||||
|
if(bcn)
|
||||||
|
bcname = bcn;
|
||||||
|
else
|
||||||
|
bcn = &default_bcname;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1005,6 +1005,9 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
int tlosurf;
|
int tlosurf;
|
||||||
int surfnr[2];
|
int surfnr[2];
|
||||||
|
int bcprop;
|
||||||
|
static string default_bcname;
|
||||||
|
string* bcname = &default_bcname;
|
||||||
public:
|
public:
|
||||||
EdgeDescriptor ()
|
EdgeDescriptor ()
|
||||||
: tlosurf(-1)
|
: tlosurf(-1)
|
||||||
@ -1015,6 +1018,9 @@ namespace netgen
|
|||||||
|
|
||||||
int TLOSurface() const { return tlosurf; }
|
int TLOSurface() const { return tlosurf; }
|
||||||
void SetTLOSurface (int nr) { tlosurf = nr; }
|
void SetTLOSurface (int nr) { tlosurf = nr; }
|
||||||
|
int BCProperty() const { return bcprop; }
|
||||||
|
void SetBCProperty (int bc) { bcprop = bc; }
|
||||||
|
void SetBCName (string* bcn);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user