mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +05:00
remove (outdated and untested) sequential optimization code
This commit is contained in:
parent
63133b5058
commit
39cc7ae0a3
File diff suppressed because it is too large
Load Diff
@ -21,10 +21,8 @@ public:
|
|||||||
FlatArray<bool, PointIndex> is_point_removed, bool check_only=false);
|
FlatArray<bool, PointIndex> is_point_removed, bool check_only=false);
|
||||||
|
|
||||||
void CombineImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
void CombineImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||||
void CombineImproveSequential (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
|
||||||
|
|
||||||
void SplitImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
void SplitImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||||
void SplitImproveSequential (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
|
||||||
double SplitImproveEdge (Mesh & mesh, OPTIMIZEGOAL goal, Table<ElementIndex,PointIndex> & elementsonnode, Array<double> &elerrs, NgArray<INDEX_3> &locfaces, double badmax, PointIndex pi1, PointIndex pi2, PointIndex ptmp, bool check_only=false);
|
double SplitImproveEdge (Mesh & mesh, OPTIMIZEGOAL goal, Table<ElementIndex,PointIndex> & elementsonnode, Array<double> &elerrs, NgArray<INDEX_3> &locfaces, double badmax, PointIndex pi1, PointIndex pi2, PointIndex ptmp, bool check_only=false);
|
||||||
|
|
||||||
void SplitImprove2 (Mesh & mesh);
|
void SplitImprove2 (Mesh & mesh);
|
||||||
@ -34,12 +32,9 @@ public:
|
|||||||
double SwapImproveEdge (Mesh & mesh, OPTIMIZEGOAL goal, const NgBitArray * working_elements, Table<ElementIndex,PointIndex> & elementsonnode, INDEX_3_HASHTABLE<int> & faces, PointIndex pi1, PointIndex pi2, bool check_only=false);
|
double SwapImproveEdge (Mesh & mesh, OPTIMIZEGOAL goal, const NgBitArray * working_elements, Table<ElementIndex,PointIndex> & elementsonnode, INDEX_3_HASHTABLE<int> & faces, PointIndex pi1, PointIndex pi2, bool check_only=false);
|
||||||
void SwapImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY,
|
void SwapImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY,
|
||||||
const NgBitArray * working_elements = NULL);
|
const NgBitArray * working_elements = NULL);
|
||||||
void SwapImproveSequential (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY,
|
|
||||||
const NgBitArray * working_elements = NULL);
|
|
||||||
void SwapImproveSurface (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY,
|
void SwapImproveSurface (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY,
|
||||||
const NgBitArray * working_elements = NULL,
|
const NgBitArray * working_elements = NULL,
|
||||||
const NgArray< NgArray<int,PointIndex::BASE>* > * idmaps = NULL);
|
const NgArray< NgArray<int,PointIndex::BASE>* > * idmaps = NULL);
|
||||||
void SwapImprove2Sequential (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
|
||||||
void SwapImprove2 (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
void SwapImprove2 (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||||
double SwapImprove2 ( Mesh & mesh, OPTIMIZEGOAL goal, ElementIndex eli1, int face, Table<ElementIndex, PointIndex> & elementsonnode, TABLE<SurfaceElementIndex, PointIndex::BASE> & belementsonnode, bool check_only=false );
|
double SwapImprove2 ( Mesh & mesh, OPTIMIZEGOAL goal, ElementIndex eli1, int face, Table<ElementIndex, PointIndex> & elementsonnode, TABLE<SurfaceElementIndex, PointIndex::BASE> & belementsonnode, bool check_only=false );
|
||||||
|
|
||||||
|
@ -566,7 +566,6 @@ namespace netgen
|
|||||||
DLL_HEADER void DoArchive (Archive & archive);
|
DLL_HEADER void DoArchive (Archive & archive);
|
||||||
///
|
///
|
||||||
DLL_HEADER void ImproveMesh (const MeshingParameters & mp, OPTIMIZEGOAL goal = OPT_QUALITY);
|
DLL_HEADER void ImproveMesh (const MeshingParameters & mp, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||||
DLL_HEADER void ImproveMeshSequential (const MeshingParameters & mp, OPTIMIZEGOAL goal = OPT_QUALITY);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
void ImproveMeshJacobian (const MeshingParameters & mp, OPTIMIZEGOAL goal = OPT_QUALITY, const NgBitArray * usepoint = NULL);
|
void ImproveMeshJacobian (const MeshingParameters & mp, OPTIMIZEGOAL goal = OPT_QUALITY, const NgBitArray * usepoint = NULL);
|
||||||
|
@ -1331,127 +1331,6 @@ void Mesh :: ImproveMesh (const CSG eometry & geometry, OPTIMIZEGOAL goal)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void Mesh :: ImproveMeshSequential (const MeshingParameters & mp, OPTIMIZEGOAL goal)
|
|
||||||
{
|
|
||||||
static Timer t("Mesh::ImproveMesh"); RegionTimer reg(t);
|
|
||||||
|
|
||||||
(*testout) << "Improve Mesh" << "\n";
|
|
||||||
PrintMessage (3, "ImproveMesh");
|
|
||||||
|
|
||||||
int np = GetNP();
|
|
||||||
int ne = GetNE();
|
|
||||||
|
|
||||||
|
|
||||||
if (goal == OPT_QUALITY)
|
|
||||||
{
|
|
||||||
double bad1 = CalcTotalBad (mp);
|
|
||||||
(*testout) << "Total badness = " << bad1 << endl;
|
|
||||||
PrintMessage (5, "Total badness = ", bad1);
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector x(3);
|
|
||||||
|
|
||||||
(*testout) << setprecision(8);
|
|
||||||
|
|
||||||
//int uselocalh = mparam.uselocalh;
|
|
||||||
|
|
||||||
|
|
||||||
PointFunction pf(points, volelements, mp);
|
|
||||||
|
|
||||||
Opti3FreeMinFunction freeminf(pf);
|
|
||||||
|
|
||||||
OptiParameters par;
|
|
||||||
par.maxit_linsearch = 20;
|
|
||||||
par.maxit_bfgs = 20;
|
|
||||||
|
|
||||||
NgArray<double, PointIndex::BASE> pointh (points.Size());
|
|
||||||
|
|
||||||
if(HasLocalHFunction())
|
|
||||||
{
|
|
||||||
for (PointIndex pi : points.Range())
|
|
||||||
pointh[pi] = GetH(pi);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pointh = 0;
|
|
||||||
for (Element & el : VolumeElements())
|
|
||||||
{
|
|
||||||
double h = pow(el.Volume(points),1./3.);
|
|
||||||
for (PointIndex pi : el.PNums())
|
|
||||||
if (h > pointh[pi])
|
|
||||||
pointh[pi] = h;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int printmod = 1;
|
|
||||||
char printdot = '.';
|
|
||||||
if (points.Size() > 1000)
|
|
||||||
{
|
|
||||||
printmod = 10;
|
|
||||||
printdot = '+';
|
|
||||||
}
|
|
||||||
if (points.Size() > 10000)
|
|
||||||
{
|
|
||||||
printmod = 100;
|
|
||||||
printdot = '*';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const char * savetask = multithread.task;
|
|
||||||
multithread.task = "Optimize Volume: Smooth Mesh";
|
|
||||||
|
|
||||||
for (PointIndex pi : points.Range())
|
|
||||||
if ( (*this)[pi].Type() == INNERPOINT )
|
|
||||||
{
|
|
||||||
if (multithread.terminate)
|
|
||||||
throw NgException ("Meshing stopped");
|
|
||||||
|
|
||||||
multithread.percent = 100.0 * (pi+1-PointIndex::BASE) / points.Size();
|
|
||||||
|
|
||||||
if ( (pi+1-PointIndex::BASE) % printmod == 0) PrintDot (printdot);
|
|
||||||
|
|
||||||
double lh = pointh[pi];
|
|
||||||
pf.SetLocalH (lh);
|
|
||||||
par.typx = lh;
|
|
||||||
|
|
||||||
freeminf.SetPoint (points[pi]);
|
|
||||||
pf.SetPointIndex (pi);
|
|
||||||
|
|
||||||
x = 0;
|
|
||||||
int pok;
|
|
||||||
pok = freeminf.Func (x) < 1e10;
|
|
||||||
|
|
||||||
if (!pok)
|
|
||||||
{
|
|
||||||
pok = pf.MovePointToInner ();
|
|
||||||
|
|
||||||
freeminf.SetPoint (points[pi]);
|
|
||||||
pf.SetPointIndex (pi);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pok)
|
|
||||||
{
|
|
||||||
//*testout << "start BFGS, pok" << endl;
|
|
||||||
BFGS (x, freeminf, par);
|
|
||||||
//*testout << "BFGS complete, pok" << endl;
|
|
||||||
points[pi](0) += x(0);
|
|
||||||
points[pi](1) += x(1);
|
|
||||||
points[pi](2) += x(2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
PrintDot ('\n');
|
|
||||||
|
|
||||||
multithread.task = savetask;
|
|
||||||
|
|
||||||
if (goal == OPT_QUALITY)
|
|
||||||
{
|
|
||||||
double bad1 = CalcTotalBad (mp);
|
|
||||||
(*testout) << "Total badness = " << bad1 << endl;
|
|
||||||
PrintMessage (5, "Total badness = ", bad1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Mesh :: ImproveMesh (const MeshingParameters & mp, OPTIMIZEGOAL goal)
|
void Mesh :: ImproveMesh (const MeshingParameters & mp, OPTIMIZEGOAL goal)
|
||||||
{
|
{
|
||||||
static Timer t("Mesh::ImproveMesh"); RegionTimer reg(t);
|
static Timer t("Mesh::ImproveMesh"); RegionTimer reg(t);
|
||||||
@ -1461,7 +1340,6 @@ void Mesh :: ImproveMesh (const MeshingParameters & mp, OPTIMIZEGOAL goal)
|
|||||||
static Timer trange("range");
|
static Timer trange("range");
|
||||||
static Timer tloch("loch");
|
static Timer tloch("loch");
|
||||||
|
|
||||||
// return ImproveMeshSequential(mp, goal);
|
|
||||||
BuildBoundaryEdges(false);
|
BuildBoundaryEdges(false);
|
||||||
|
|
||||||
(*testout) << "Improve Mesh" << "\n";
|
(*testout) << "Improve Mesh" << "\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user