mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-26 05:50:32 +05:00
add closeedge meshsize to base geometry (not used)
closedgefac moved to meshingparameters for this
This commit is contained in:
parent
1b1c4700ad
commit
073e215bb6
@ -85,6 +85,23 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Line
|
||||||
|
{
|
||||||
|
Point<3> p0, p1;
|
||||||
|
inline double Length() const { return (p1-p0).Length(); }
|
||||||
|
inline double Dist(const Line& other) const
|
||||||
|
{
|
||||||
|
Vec<3> n = p1-p0;
|
||||||
|
Vec<3> q = other.p1-other.p0;
|
||||||
|
double nq = n*q;
|
||||||
|
Point<3> p = p0 + 0.5*n;
|
||||||
|
double lambda = (p-other.p0)*n / (nq + 1e-10);
|
||||||
|
if (lambda >= 0 && lambda <= 1)
|
||||||
|
return (p-other.p0-lambda*q).Length();
|
||||||
|
return 1e99;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void NetgenGeometry :: Analyse(Mesh& mesh,
|
void NetgenGeometry :: Analyse(Mesh& mesh,
|
||||||
const MeshingParameters& mparam) const
|
const MeshingParameters& mparam) const
|
||||||
{
|
{
|
||||||
@ -100,7 +117,7 @@ namespace netgen
|
|||||||
|
|
||||||
if(mparam.uselocalh)
|
if(mparam.uselocalh)
|
||||||
{
|
{
|
||||||
double eps = 1e-12 * bounding_box.Diam();
|
double eps = 1e-10 * bounding_box.Diam();
|
||||||
const char* savetask = multithread.task;
|
const char* savetask = multithread.task;
|
||||||
multithread.task = "Analyse Edges";
|
multithread.task = "Analyse Edges";
|
||||||
|
|
||||||
@ -142,8 +159,84 @@ namespace netgen
|
|||||||
const auto& face = faces[i];
|
const auto& face = faces[i];
|
||||||
face->RestrictH(mesh, mparam);
|
face->RestrictH(mesh, mparam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(mparam.closeedgefac.has_value())
|
||||||
|
{
|
||||||
|
multithread.task = "Analyse close edges";
|
||||||
|
constexpr int sections = 100;
|
||||||
|
Array<Line> lines;
|
||||||
|
lines.SetAllocSize(sections*edges.Size());
|
||||||
|
BoxTree<3> searchtree(bounding_box.PMin(),
|
||||||
|
bounding_box.PMax());
|
||||||
|
for(const auto& edge : edges)
|
||||||
|
{
|
||||||
|
if(edge->GetLength() < eps)
|
||||||
|
continue;
|
||||||
|
double t = 0.;
|
||||||
|
auto p_old = edge->GetPoint(t);
|
||||||
|
auto t_old = edge->GetTangent(t);
|
||||||
|
t_old.Normalize();
|
||||||
|
for(auto i : IntRange(1, sections+1))
|
||||||
|
{
|
||||||
|
t = double(i)/sections;
|
||||||
|
auto p_new = edge->GetPoint(t);
|
||||||
|
auto t_new = edge->GetTangent(t);
|
||||||
|
t_new.Normalize();
|
||||||
|
auto cosalpha = fabs(t_old * t_new);
|
||||||
|
if((i == sections) || (cosalpha < cos(10./180 * M_PI)))
|
||||||
|
{
|
||||||
|
auto index = lines.Append({p_old, p_new});
|
||||||
|
searchtree.Insert(p_old, p_new, index);
|
||||||
|
p_old = p_new;
|
||||||
|
t_old = t_new;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Array<int> linenums;
|
||||||
|
for(auto i : Range(lines))
|
||||||
|
{
|
||||||
|
const auto& line = lines[i];
|
||||||
|
if(line.Length() < eps) continue;
|
||||||
|
multithread.percent = 100.*i/lines.Size();
|
||||||
|
Box<3> box;
|
||||||
|
box.Set(line.p0);
|
||||||
|
box.Add(line.p1);
|
||||||
|
// box.Increase(max2(mesh.GetH(line.p0), mesh.GetH(line.p1)));
|
||||||
|
box.Increase(line.Length());
|
||||||
|
double mindist = 1e99;
|
||||||
|
linenums.SetSize0();
|
||||||
|
searchtree.GetIntersecting(box.PMin(), box.PMax(),
|
||||||
|
linenums);
|
||||||
|
for(auto num : linenums)
|
||||||
|
{
|
||||||
|
if(i == num) continue;
|
||||||
|
const auto & other = lines[num];
|
||||||
|
if((line.p0 - other.p0).Length2() < eps ||
|
||||||
|
(line.p0 - other.p1).Length2() < eps ||
|
||||||
|
(line.p1 - other.p0).Length2() < eps ||
|
||||||
|
(line.p1 - other.p1).Length2() < eps)
|
||||||
|
continue;
|
||||||
|
mindist = min2(mindist, line.Dist(other));
|
||||||
|
}
|
||||||
|
if(mindist == 1e99) continue;
|
||||||
|
mindist /= mparam.closeedgefac.value() + 1e-10;
|
||||||
|
if(mindist < 1e-3 * bounding_box.Diam())
|
||||||
|
{
|
||||||
|
(*testout) << "extremely small local h: " << mindist
|
||||||
|
<< " --> setting to " << 1e-3 * bounding_box.Diam() << endl;
|
||||||
|
(*testout) << "somewhere near " << line.p0 << " - " << line.p1 << endl
|
||||||
|
;
|
||||||
|
mindist = 1e-3 * bounding_box.Diam();
|
||||||
|
}
|
||||||
|
mesh.RestrictLocalHLine(line.p0, line.p1, mindist);
|
||||||
|
}
|
||||||
|
}
|
||||||
multithread.task = savetask;
|
multithread.task = savetask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(const auto& mspnt : mparam.meshsize_points)
|
||||||
|
mesh.RestrictLocalH(mspnt.pnt, mspnt.h);
|
||||||
|
|
||||||
mesh.LoadLocalMeshSize(mparam.meshsizefilename);
|
mesh.LoadLocalMeshSize(mparam.meshsizefilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ namespace netgen
|
|||||||
const EdgePointGeomInfo& gi2,
|
const EdgePointGeomInfo& gi2,
|
||||||
Point<3>& newp,
|
Point<3>& newp,
|
||||||
EdgePointGeomInfo& newgi) const = 0;
|
EdgePointGeomInfo& newgi) const = 0;
|
||||||
virtual Vec<3> GetTangent(const Point<3>& p) const = 0;
|
virtual Vec<3> GetTangent(double t) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GeometryFace
|
class GeometryFace
|
||||||
@ -177,7 +177,7 @@ namespace netgen
|
|||||||
int surfi2,
|
int surfi2,
|
||||||
const EdgePointGeomInfo & egi) const
|
const EdgePointGeomInfo & egi) const
|
||||||
{
|
{
|
||||||
return edges[egi.edgenr]->GetTangent(p);
|
throw Exception("Base geometry get tangent called");
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual size_t GetEdgeIndex(const GeometryEdge& edge) const
|
virtual size_t GetEdgeIndex(const GeometryEdge& edge) const
|
||||||
|
@ -2801,7 +2801,9 @@ namespace netgen
|
|||||||
<< " elementorder = " << elementorder << endl
|
<< " elementorder = " << elementorder << endl
|
||||||
<< " quad = " << quad << endl
|
<< " quad = " << quad << endl
|
||||||
<< " inverttets = " << inverttets << endl
|
<< " inverttets = " << inverttets << endl
|
||||||
<< " inverttrigs = " << inverttrigs << endl;
|
<< " inverttrigs = " << inverttrigs << endl
|
||||||
|
<< "closeedge enabled = " << closeedgefac.has_value() << endl
|
||||||
|
<< "closeedgefac = " << (closeedgefac.has_value() ? closeedgefac.value() : 0.) << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1259,6 +1259,8 @@ namespace netgen
|
|||||||
double minh = 0.0;
|
double minh = 0.0;
|
||||||
/// file for meshsize
|
/// file for meshsize
|
||||||
string meshsizefilename = "";
|
string meshsizefilename = "";
|
||||||
|
/// restrict h based on close edges
|
||||||
|
optional<double> closeedgefac = {};
|
||||||
/// start surfacemeshing from everywhere in surface
|
/// start surfacemeshing from everywhere in surface
|
||||||
bool startinsurface = false;
|
bool startinsurface = false;
|
||||||
/// check overlapping surfaces (debug)
|
/// check overlapping surfaces (debug)
|
||||||
|
@ -176,6 +176,8 @@ inline void CreateMPfromKwargs(MeshingParameters& mp, py::kwargs kwargs, bool th
|
|||||||
mp.parallel_meshing = py::cast<bool>(kwargs.attr("pop")("parallel_meshing"));
|
mp.parallel_meshing = py::cast<bool>(kwargs.attr("pop")("parallel_meshing"));
|
||||||
if(kwargs.contains("nthreads"))
|
if(kwargs.contains("nthreads"))
|
||||||
mp.nthreads = py::cast<int>(kwargs.attr("pop")("nthreads"));
|
mp.nthreads = py::cast<int>(kwargs.attr("pop")("nthreads"));
|
||||||
|
if(kwargs.contains("closeedgefac"))
|
||||||
|
mp.closeedgefac = py::cast<optional<double>>(kwargs.attr("pop")("closeedgefac"));
|
||||||
if(kwargs.size())
|
if(kwargs.size())
|
||||||
{
|
{
|
||||||
if(throw_if_not_all_parsed)
|
if(throw_if_not_all_parsed)
|
||||||
|
@ -1174,7 +1174,7 @@ namespace netgen
|
|||||||
|
|
||||||
// setting close edges
|
// setting close edges
|
||||||
|
|
||||||
if (occparam.resthcloseedgeenable)
|
if (mparam.closeedgefac.has_value())
|
||||||
{
|
{
|
||||||
multithread.task = "Setting local mesh size (close edges)";
|
multithread.task = "Setting local mesh size (close edges)";
|
||||||
|
|
||||||
@ -1259,7 +1259,7 @@ namespace netgen
|
|||||||
mindist = min (mindist, line.Dist(lines[num]));
|
mindist = min (mindist, line.Dist(lines[num]));
|
||||||
}
|
}
|
||||||
|
|
||||||
mindist /= (occparam.resthcloseedgefac + VSMALL);
|
mindist /= (mparam.closeedgefac.value() + VSMALL);
|
||||||
|
|
||||||
if (mindist < 1e-3 * bb.Diam())
|
if (mindist < 1e-3 * bb.Diam())
|
||||||
{
|
{
|
||||||
|
@ -1897,8 +1897,6 @@ void STEP_GetEntityName(const TopoDS_Shape & theShape, STEPCAFControl_Reader * a
|
|||||||
void OCCParameters :: Print(ostream & ost) const
|
void OCCParameters :: Print(ostream & ost) const
|
||||||
{
|
{
|
||||||
ost << "OCC Parameters:" << endl
|
ost << "OCC Parameters:" << endl
|
||||||
<< "close edges: " << resthcloseedgeenable
|
|
||||||
<< ", fac = " << resthcloseedgefac << endl
|
|
||||||
<< "minimum edge length: " << resthminedgelenenable
|
<< "minimum edge length: " << resthminedgelenenable
|
||||||
<< ", min len = " << resthminedgelen << endl;
|
<< ", min len = " << resthminedgelen << endl;
|
||||||
}
|
}
|
||||||
|
@ -187,11 +187,11 @@ namespace netgen
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/// Factor for meshing close edges
|
/// Factor for meshing close edges, moved to meshingparameters
|
||||||
double resthcloseedgefac = 2.;
|
// double resthcloseedgefac = 2.;
|
||||||
|
|
||||||
/// Enable / Disable detection of close edges
|
/// Enable / Disable detection of close edges
|
||||||
int resthcloseedgeenable = true;
|
// int resthcloseedgeenable = true;
|
||||||
|
|
||||||
/// Minimum edge length to be used for dividing edges to mesh points
|
/// Minimum edge length to be used for dividing edges to mesh points
|
||||||
double resthminedgelen = 0.001;
|
double resthminedgelen = 0.001;
|
||||||
|
@ -45,10 +45,6 @@ namespace netgen
|
|||||||
|
|
||||||
virtual void SetParameters (Tcl_Interp * interp)
|
virtual void SetParameters (Tcl_Interp * interp)
|
||||||
{
|
{
|
||||||
occparam.resthcloseedgefac =
|
|
||||||
atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
|
|
||||||
occparam.resthcloseedgeenable =
|
|
||||||
atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
|
|
||||||
occparam.resthminedgelen =
|
occparam.resthminedgelen =
|
||||||
atof (Tcl_GetVar (interp, "::stloptions.resthminedgelen", 0));
|
atof (Tcl_GetVar (interp, "::stloptions.resthminedgelen", 0));
|
||||||
occparam.resthminedgelenenable =
|
occparam.resthminedgelenenable =
|
||||||
|
@ -31,17 +31,6 @@ minedgelen: Optional[float] = 0.001
|
|||||||
|
|
||||||
void CreateOCCParametersFromKwargs(OCCParameters& occparam, py::dict kwargs)
|
void CreateOCCParametersFromKwargs(OCCParameters& occparam, py::dict kwargs)
|
||||||
{
|
{
|
||||||
if(kwargs.contains("closeedgefac"))
|
|
||||||
{
|
|
||||||
auto val = kwargs.attr("pop")("closeedgefac");
|
|
||||||
if(val.is_none())
|
|
||||||
occparam.resthcloseedgeenable = false;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
occparam.resthcloseedgefac = py::cast<double>(val);
|
|
||||||
occparam.resthcloseedgeenable = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(kwargs.contains("minedgelen"))
|
if(kwargs.contains("minedgelen"))
|
||||||
{
|
{
|
||||||
auto val = kwargs.attr("pop")("minedgelen");
|
auto val = kwargs.attr("pop")("minedgelen");
|
||||||
|
@ -22,7 +22,7 @@ static void STLFindEdges (STLGeometry & geom, Mesh & mesh,
|
|||||||
// mark edge points:
|
// mark edge points:
|
||||||
//int ngp = geom.GetNP();
|
//int ngp = geom.GetNP();
|
||||||
|
|
||||||
geom.RestrictLocalH(mesh, h, stlparam);
|
geom.RestrictLocalH(mesh, h, stlparam, mparam);
|
||||||
|
|
||||||
PushStatusF("Mesh Lines");
|
PushStatusF("Mesh Lines");
|
||||||
|
|
||||||
|
@ -87,17 +87,6 @@ void CreateSTLParametersFromKwargs(STLParameters& stlparam, py::dict kwargs)
|
|||||||
stlparam.resthchartdistfac = py::cast<double>(val);
|
stlparam.resthchartdistfac = py::cast<double>(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(kwargs.contains("closeedgefac"))
|
|
||||||
{
|
|
||||||
auto val = kwargs.attr("pop")("closeedgefac");
|
|
||||||
if(val.is_none())
|
|
||||||
stlparam.resthcloseedgeenable = false;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stlparam.resthcloseedgeenable = true;
|
|
||||||
stlparam.resthcloseedgefac = py::cast<double>(val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(kwargs.contains("edgeanglefac"))
|
if(kwargs.contains("edgeanglefac"))
|
||||||
{
|
{
|
||||||
auto val = kwargs.attr("pop")("edgeanglefac");
|
auto val = kwargs.attr("pop")("edgeanglefac");
|
||||||
|
@ -465,7 +465,7 @@ namespace netgen
|
|||||||
int LineEndPointsSet() const {return lineendpoints.Size() == GetNP();}
|
int LineEndPointsSet() const {return lineendpoints.Size() == GetNP();}
|
||||||
void ClearLineEndPoints();
|
void ClearLineEndPoints();
|
||||||
|
|
||||||
DLL_HEADER void RestrictLocalH(class Mesh & mesh, double gh, const STLParameters& stlparam);
|
DLL_HEADER void RestrictLocalH(class Mesh & mesh, double gh, const STLParameters& stlparam, const MeshingParameters& mparam);
|
||||||
void RestrictLocalHCurv(class Mesh & mesh, double gh, const STLParameters& stlparam);
|
void RestrictLocalHCurv(class Mesh & mesh, double gh, const STLParameters& stlparam);
|
||||||
void RestrictHChartDistOneChart(ChartId chartnum, NgArray<int>& acttrigs, class Mesh & mesh,
|
void RestrictHChartDistOneChart(ChartId chartnum, NgArray<int>& acttrigs, class Mesh & mesh,
|
||||||
double gh, double fact, double minh, const STLParameters& stlparam);
|
double gh, double fact, double minh, const STLParameters& stlparam);
|
||||||
|
@ -814,7 +814,7 @@ void STLGeometry :: RestrictLocalHCurv(class Mesh & mesh, double gh, const STLPa
|
|||||||
|
|
||||||
}
|
}
|
||||||
//restrict local h due to near edges and due to outer chart distance
|
//restrict local h due to near edges and due to outer chart distance
|
||||||
void STLGeometry :: RestrictLocalH(class Mesh & mesh, double gh, const STLParameters& stlparam)
|
void STLGeometry :: RestrictLocalH(class Mesh & mesh, double gh, const STLParameters& stlparam, const MeshingParameters& mparam)
|
||||||
{
|
{
|
||||||
|
|
||||||
//bei jedem Dreieck alle Nachbardreiecke vergleichen, und, fallskein Kante dazwischen,
|
//bei jedem Dreieck alle Nachbardreiecke vergleichen, und, fallskein Kante dazwischen,
|
||||||
@ -921,12 +921,12 @@ void STLGeometry :: RestrictLocalH(class Mesh & mesh, double gh, const STLParame
|
|||||||
PopStatus();
|
PopStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stlparam.resthcloseedgeenable)
|
if (mparam.closeedgefac.has_value())
|
||||||
{
|
{
|
||||||
PushStatusF("Restrict H due to close edges");
|
PushStatusF("Restrict H due to close edges");
|
||||||
//geht nicht für spiralen!!!!!!!!!!!!!!!!!!
|
//geht nicht für spiralen!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
double disttohfact = sqr(10.0 / stlparam.resthcloseedgefac);
|
double disttohfact = sqr(10.0 / mparam.closeedgefac.value());
|
||||||
int k,l;
|
int k,l;
|
||||||
double h1, h2, dist;
|
double h1, h2, dist;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -78,11 +78,6 @@ namespace netgen
|
|||||||
stlparam.resthlinelengthenable =
|
stlparam.resthlinelengthenable =
|
||||||
atoi (Tcl_GetVar (interp, "::stloptions.resthlinelengthenable", 0));
|
atoi (Tcl_GetVar (interp, "::stloptions.resthlinelengthenable", 0));
|
||||||
|
|
||||||
stlparam.resthcloseedgefac =
|
|
||||||
atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
|
|
||||||
stlparam.resthcloseedgeenable =
|
|
||||||
atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
|
|
||||||
|
|
||||||
stlparam.resthedgeanglefac =
|
stlparam.resthedgeanglefac =
|
||||||
atof (Tcl_GetVar (interp, "::stloptions.resthedgeanglefac", 0));
|
atof (Tcl_GetVar (interp, "::stloptions.resthedgeanglefac", 0));
|
||||||
stlparam.resthedgeangleenable =
|
stlparam.resthedgeangleenable =
|
||||||
@ -538,7 +533,7 @@ namespace netgen
|
|||||||
mesh -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
|
mesh -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
|
||||||
stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
|
stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
|
||||||
mparam.grading);
|
mparam.grading);
|
||||||
stlgeometry -> RestrictLocalH(*mesh, mparam.maxh, stlparam);
|
stlgeometry -> RestrictLocalH(*mesh, mparam.maxh, stlparam, mparam);
|
||||||
|
|
||||||
if (stlparam.resthsurfmeshcurvenable)
|
if (stlparam.resthsurfmeshcurvenable)
|
||||||
mesh -> CalcLocalHFromSurfaceCurvature (mparam.grading,
|
mesh -> CalcLocalHFromSurfaceCurvature (mparam.grading,
|
||||||
|
@ -1462,8 +1462,8 @@ STLParameters :: STLParameters()
|
|||||||
resthchartdistenable = 1;
|
resthchartdistenable = 1;
|
||||||
resthlinelengthfac = 0.5;
|
resthlinelengthfac = 0.5;
|
||||||
resthlinelengthenable = 1;
|
resthlinelengthenable = 1;
|
||||||
resthcloseedgefac = 1;
|
// resthcloseedgefac = 1;
|
||||||
resthcloseedgeenable = 1;
|
// resthcloseedgeenable = 1;
|
||||||
resthedgeanglefac = 1;
|
resthedgeanglefac = 1;
|
||||||
resthedgeangleenable = 0;
|
resthedgeangleenable = 0;
|
||||||
resthsurfmeshcurvfac = 1;
|
resthsurfmeshcurvfac = 1;
|
||||||
@ -1488,8 +1488,8 @@ void STLParameters :: Print (ostream & ost) const
|
|||||||
<< ", fac = " << resthchartdistfac << endl
|
<< ", fac = " << resthchartdistfac << endl
|
||||||
<< "line length: " << resthlinelengthenable
|
<< "line length: " << resthlinelengthenable
|
||||||
<< ", fac = " << resthlinelengthfac << endl
|
<< ", fac = " << resthlinelengthfac << endl
|
||||||
<< "close edges: " << resthcloseedgeenable
|
// << "close edges: " << resthcloseedgeenable
|
||||||
<< ", fac = " << resthcloseedgefac << endl
|
// << ", fac = " << resthcloseedgefac << endl
|
||||||
<< "edge angle: " << resthedgeangleenable
|
<< "edge angle: " << resthedgeangleenable
|
||||||
<< ", fac = " << resthedgeanglefac << endl;
|
<< ", fac = " << resthedgeanglefac << endl;
|
||||||
}
|
}
|
||||||
|
@ -282,8 +282,8 @@ public:
|
|||||||
double resthchartdistfac = 1.2;
|
double resthchartdistfac = 1.2;
|
||||||
bool resthchartdistenable = true;
|
bool resthchartdistenable = true;
|
||||||
|
|
||||||
double resthcloseedgefac = 1.;
|
// double resthcloseedgefac = 1.;
|
||||||
bool resthcloseedgeenable = true;
|
// bool resthcloseedgeenable = true;
|
||||||
|
|
||||||
double resthedgeanglefac = 1.;
|
double resthedgeanglefac = 1.;
|
||||||
bool resthedgeangleenable = false;
|
bool resthedgeangleenable = false;
|
||||||
|
@ -1283,6 +1283,10 @@ namespace netgen
|
|||||||
|
|
||||||
mparam.parallel_meshing = atoi (Tcl_GetVar (interp, "::options.parallel_meshing", 0));
|
mparam.parallel_meshing = atoi (Tcl_GetVar (interp, "::options.parallel_meshing", 0));
|
||||||
mparam.nthreads = atoi (Tcl_GetVar (interp, "::options.nthreads", 0));
|
mparam.nthreads = atoi (Tcl_GetVar (interp, "::options.nthreads", 0));
|
||||||
|
if(atoi(Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0)))
|
||||||
|
mparam.closeedgefac = atof(Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
|
||||||
|
else
|
||||||
|
mparam.closeedgefac = {};
|
||||||
|
|
||||||
//BaseMoveableMem::totalsize = 0;
|
//BaseMoveableMem::totalsize = 0;
|
||||||
// 1048576 * atoi (Tcl_GetVar (interp, "::options.memory", 0));
|
// 1048576 * atoi (Tcl_GetVar (interp, "::options.memory", 0));
|
||||||
|
@ -856,8 +856,8 @@ namespace nglib
|
|||||||
|
|
||||||
mp->Transfer_Parameters();
|
mp->Transfer_Parameters();
|
||||||
|
|
||||||
occparam.resthcloseedgeenable = mp->closeedgeenable;
|
if(mp->closeedgeenable)
|
||||||
occparam.resthcloseedgefac = mp->closeedgefact;
|
mparam.closeedgefac = mp->closeedgefact;
|
||||||
|
|
||||||
// Delete the mesh structures in order to start with a clean
|
// Delete the mesh structures in order to start with a clean
|
||||||
// slate
|
// slate
|
||||||
|
Loading…
Reference in New Issue
Block a user