mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 04:50:34 +05:00
non-global variable mparam
This commit is contained in:
parent
3a43cec5d7
commit
9c4f4221ec
@ -42,7 +42,7 @@ AC_ARG_WITH([occ],
|
||||
|
||||
if test a$occon = atrue ; then
|
||||
|
||||
AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc"])
|
||||
AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
|
||||
AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
|
||||
|
||||
# -lTKDCAF
|
||||
|
@ -11,6 +11,8 @@
|
||||
namespace netgen
|
||||
{
|
||||
|
||||
extern DLL_HEADER MeshingParameters mparam;
|
||||
|
||||
/*
|
||||
|
||||
Special Point Calculation
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
extern DLL_HEADER MeshingParameters mparam;
|
||||
|
||||
extern void Optimize2d (Mesh & mesh, MeshingParameters & mp);
|
||||
|
||||
|
@ -15,8 +15,6 @@
|
||||
|
||||
#include "nginterface.h"
|
||||
|
||||
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Philippose - 30/01/2009
|
||||
// MSVC Express Edition Support
|
||||
@ -104,6 +102,7 @@ namespace netgen
|
||||
{
|
||||
#include "writeuser.hpp"
|
||||
|
||||
MeshingParameters mparam;
|
||||
|
||||
// global variable mesh (should not be used in libraries)
|
||||
AutoPtr<Mesh> mesh;
|
||||
|
@ -562,7 +562,7 @@ namespace netgen
|
||||
|
||||
for(j = 1; j <= vertelems.Size(); j++)
|
||||
{
|
||||
double sfact = 0.9;
|
||||
// double sfact = 0.9;
|
||||
Element volel = mesh.VolumeElement(vertelems.Elem(j));
|
||||
if(((volel.GetType() == TET) || (volel.GetType() == TET10)) && (!volel.IsDeleted()))
|
||||
{
|
||||
|
@ -890,7 +890,7 @@ namespace netgen
|
||||
|
||||
tempmesh.FreeOpenElementsEnvironment (1);
|
||||
|
||||
MeshOptimize3d meshopt;
|
||||
MeshOptimize3d meshopt(mp);
|
||||
// tempmesh.CalcSurfacesOfNode();
|
||||
meshopt.SwapImprove(tempmesh, OPT_CONFORM);
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ namespace netgen
|
||||
{
|
||||
cout << "2D Delaunay meshing (in progress)" << endl;
|
||||
|
||||
int oldnp = mesh.GetNP();
|
||||
// int oldnp = mesh.GetNP();
|
||||
|
||||
cout << "np, old = " << mesh.GetNP() << endl;
|
||||
|
||||
|
@ -23,7 +23,6 @@ namespace netgen
|
||||
int silentflag = 0;
|
||||
int testmode = 0;
|
||||
|
||||
MeshingParameters mparam;
|
||||
volatile multithreadt multithread;
|
||||
|
||||
string ngdir = ".";
|
||||
|
@ -25,7 +25,7 @@ namespace netgen
|
||||
/// calling parameters
|
||||
// extern Flags parameters;
|
||||
|
||||
extern DLL_HEADER MeshingParameters mparam;
|
||||
// extern DLL_HEADER MeshingParameters mparam;
|
||||
|
||||
extern Array<int> tets_in_qualclass;
|
||||
|
||||
|
@ -160,8 +160,9 @@ void MeshOptimize3d :: CombineImprove (Mesh & mesh,
|
||||
for (int k = 0; k < hasonepi.Size(); k++)
|
||||
{
|
||||
const Element & elem = mesh[hasonepi[k]];
|
||||
double err = CalcTetBadness (mesh[elem[0]], mesh[elem[1]],
|
||||
mesh[elem[2]], mesh[elem[3]], 0, mparam);
|
||||
double err = CalcBad (mesh.Points(), elem, 0);
|
||||
// CalcTetBadness (mesh[elem[0]], mesh[elem[1]],
|
||||
// mesh[elem[2]], mesh[elem[3]], 0, mparam);
|
||||
bad2 += err;
|
||||
oneperr[k] = err;
|
||||
}
|
||||
@ -475,7 +476,7 @@ void MeshOptimize3d :: SplitImprove (Mesh & mesh,
|
||||
}
|
||||
}
|
||||
|
||||
PointFunction1 pf (mesh.Points(), locfaces, -1);
|
||||
PointFunction1 pf (mesh.Points(), locfaces, mp, -1);
|
||||
OptiParameters par;
|
||||
par.maxit_linsearch = 50;
|
||||
par.maxit_bfgs = 20;
|
||||
|
@ -2,12 +2,17 @@
|
||||
#define FILE_IMPROVE3
|
||||
|
||||
|
||||
extern double CalcTotalBad (const Mesh::T_POINTS & points,
|
||||
const Mesh::T_VOLELEMENTS & elements,
|
||||
const MeshingParameters & mp);
|
||||
|
||||
|
||||
///
|
||||
class MeshOptimize3d
|
||||
{
|
||||
const MeshingParameters & mp;
|
||||
public:
|
||||
MeshOptimize3d (const MeshingParameters & amp) : mp(amp) { ; }
|
||||
void CombineImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||
void SplitImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||
void SwapImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY,
|
||||
@ -16,13 +21,28 @@ public:
|
||||
const BitArray * working_elements = NULL,
|
||||
const Array< Array<int,PointIndex::BASE>* > * idmaps = NULL);
|
||||
void SwapImprove2 (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||
|
||||
double
|
||||
CalcBad (const Mesh::T_POINTS & points, const Element & elem, double h)
|
||||
{
|
||||
if (elem.GetType() == TET)
|
||||
return CalcTetBadness (points[elem[0]], points[elem[1]],
|
||||
points[elem[2]], points[elem[3]], h, mp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
double CalcTotalBad (const Mesh::T_POINTS & points,
|
||||
const Mesh::T_VOLELEMENTS & elements)
|
||||
{
|
||||
return netgen::CalcTotalBad (points, elements, mp);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
inline double
|
||||
CalcBad (const Mesh::T_POINTS & points, const Element & elem,
|
||||
double h, const MeshingParameters & mp = mparam)
|
||||
CalcBad (const Mesh::T_POINTS & points, const Element & elem, double h, const MeshingParameters & mp)
|
||||
{
|
||||
if (elem.GetType() == TET)
|
||||
return CalcTetBadness (points[elem[0]], points[elem[1]],
|
||||
@ -32,11 +52,6 @@ CalcBad (const Mesh::T_POINTS & points, const Element & elem,
|
||||
|
||||
|
||||
|
||||
|
||||
extern double CalcTotalBad (const Mesh::T_POINTS & points,
|
||||
const Mesh::T_VOLELEMENTS & elements,
|
||||
const MeshingParameters & mp = mparam);
|
||||
|
||||
extern int WrongOrientation (const Mesh::T_POINTS & points, const Element & el);
|
||||
|
||||
|
||||
@ -63,15 +78,16 @@ public:
|
||||
};
|
||||
|
||||
|
||||
|
||||
class PointFunction1 : public MinFunction
|
||||
{
|
||||
Mesh::T_POINTS & points;
|
||||
const Array<INDEX_3> & faces;
|
||||
const MeshingParameters & mp;
|
||||
double h;
|
||||
public:
|
||||
PointFunction1 (Mesh::T_POINTS & apoints,
|
||||
const Array<INDEX_3> & afaces,
|
||||
const MeshingParameters & amp,
|
||||
double ah);
|
||||
|
||||
virtual double Func (const Vector & x) const;
|
||||
@ -80,7 +96,6 @@ public:
|
||||
virtual double GradStopping (const Vector & x) const;
|
||||
};
|
||||
|
||||
|
||||
class JacobianPointFunction : public MinFunction
|
||||
{
|
||||
public:
|
||||
|
@ -5461,15 +5461,21 @@ namespace netgen
|
||||
|
||||
bool Mesh :: PureTrigMesh (int faceindex) const
|
||||
{
|
||||
// if (!faceindex) return !mparam.quad;
|
||||
|
||||
if (!faceindex)
|
||||
return !mparam.quad;
|
||||
{
|
||||
for (int i = 1; i <= GetNSE(); i++)
|
||||
if (SurfaceElement(i).GetNP() != 3)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
int i;
|
||||
for (i = 1; i <= GetNSE(); i++)
|
||||
for (int i = 1; i <= GetNSE(); i++)
|
||||
if (SurfaceElement(i).GetIndex() == faceindex &&
|
||||
SurfaceElement(i).GetNP() != 3)
|
||||
return 0;
|
||||
return 1;
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Mesh :: PureTetMesh () const
|
||||
|
@ -487,12 +487,13 @@ namespace netgen
|
||||
|
||||
|
||||
///
|
||||
void ImproveMesh (OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||
void ImproveMesh (const MeshingParameters & mp, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||
|
||||
///
|
||||
void ImproveMeshJacobian (OPTIMIZEGOAL goal = OPT_QUALITY, const BitArray * usepoint = NULL);
|
||||
void ImproveMeshJacobian (const MeshingParameters & mp, OPTIMIZEGOAL goal = OPT_QUALITY, const BitArray * usepoint = NULL);
|
||||
///
|
||||
void ImproveMeshJacobianOnSurface (const BitArray & usepoint,
|
||||
void ImproveMeshJacobianOnSurface (const MeshingParameters & mp,
|
||||
const BitArray & usepoint,
|
||||
const Array< Vec<3>* > & nv,
|
||||
OPTIMIZEGOAL goal = OPT_QUALITY,
|
||||
const Array< Array<int,PointIndex::BASE>* > * idmaps = NULL);
|
||||
|
@ -258,7 +258,7 @@ namespace netgen
|
||||
// mesh3d.Save ("tmp.vol");
|
||||
|
||||
|
||||
MeshOptimize3d optmesh;
|
||||
MeshOptimize3d optmesh(mp);
|
||||
|
||||
const char * optstr = "mcmstmcmstmcmstmcm";
|
||||
size_t j;
|
||||
@ -274,7 +274,7 @@ namespace netgen
|
||||
case 'd': optmesh.SplitImprove(mesh3d, OPT_REST); break;
|
||||
case 's': optmesh.SwapImprove(mesh3d, OPT_REST); break;
|
||||
case 't': optmesh.SwapImprove2(mesh3d, OPT_REST); break;
|
||||
case 'm': mesh3d.ImproveMesh(OPT_REST); break;
|
||||
case 'm': mesh3d.ImproveMesh(mp, OPT_REST); break;
|
||||
}
|
||||
|
||||
}
|
||||
@ -648,7 +648,7 @@ namespace netgen
|
||||
if (multithread.terminate)
|
||||
break;
|
||||
|
||||
MeshOptimize3d optmesh;
|
||||
MeshOptimize3d optmesh(mp);
|
||||
|
||||
// teterrpow = mp.opterrpow;
|
||||
for (size_t j = 1; j <= strlen(mp.optimize3d); j++)
|
||||
@ -667,10 +667,10 @@ namespace netgen
|
||||
case 'm': mesh3d.ImproveMesh(*geometry); break;
|
||||
case 'M': mesh3d.ImproveMesh(*geometry); break;
|
||||
#else
|
||||
case 'm': mesh3d.ImproveMesh(); break;
|
||||
case 'M': mesh3d.ImproveMesh(); break;
|
||||
case 'm': mesh3d.ImproveMesh(mp); break;
|
||||
case 'M': mesh3d.ImproveMesh(mp); break;
|
||||
#endif
|
||||
case 'j': mesh3d.ImproveMeshJacobian(); break;
|
||||
case 'j': mesh3d.ImproveMeshJacobian(mp); break;
|
||||
}
|
||||
}
|
||||
mesh3d.mglevels = 1;
|
||||
@ -698,7 +698,8 @@ namespace netgen
|
||||
|
||||
nillegal = mesh3d.MarkIllegalElements();
|
||||
|
||||
MeshOptimize3d optmesh;
|
||||
MeshingParameters dummymp;
|
||||
MeshOptimize3d optmesh(dummymp);
|
||||
while (nillegal && (it--) > 0)
|
||||
{
|
||||
if (multithread.terminate)
|
||||
|
@ -751,7 +751,7 @@ namespace netgen
|
||||
{
|
||||
rulenr = ApplyRules (plainpoints, legalpoints, maxlegalpoint,
|
||||
loclines, maxlegalline, locelements,
|
||||
dellines, qualclass);
|
||||
dellines, qualclass, mp);
|
||||
// (*testout) << "Rule Nr = " << rulenr << endl;
|
||||
if (!rulenr)
|
||||
{
|
||||
|
@ -141,7 +141,8 @@ protected:
|
||||
Array<INDEX_2> & llines,
|
||||
int maxlegelline,
|
||||
Array<Element2d> & elements, Array<INDEX> & dellines,
|
||||
int tolerance);
|
||||
int tolerance,
|
||||
const MeshingParameters & mp);
|
||||
|
||||
|
||||
};
|
||||
|
@ -49,13 +49,13 @@ extern int CheckCode ();
|
||||
extern double CalcTetBadness (const Point3d & p1, const Point3d & p2,
|
||||
const Point3d & p3, const Point3d & p4,
|
||||
double h,
|
||||
const MeshingParameters & mp = mparam);
|
||||
const MeshingParameters & mp);
|
||||
///
|
||||
extern double CalcTetBadnessGrad (const Point3d & p1, const Point3d & p2,
|
||||
const Point3d & p3, const Point3d & p4,
|
||||
double h, int pi,
|
||||
Vec<3> & grad,
|
||||
const MeshingParameters & mp = mparam);
|
||||
const MeshingParameters & mp);
|
||||
|
||||
|
||||
/** Calculates volume of an element.
|
||||
|
@ -1535,6 +1535,7 @@ namespace netgen
|
||||
{
|
||||
cout << "GetNodesLocal not impelemented for element " << GetType() << endl;
|
||||
np = 0;
|
||||
pp = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -719,7 +719,8 @@ namespace netgen
|
||||
mesh.CalcSurfacesOfNode();
|
||||
free.Invert();
|
||||
mesh.FixPoints (free);
|
||||
mesh.ImproveMesh (OPT_REST);
|
||||
MeshingParameters dummymp;
|
||||
mesh.ImproveMesh (dummymp, OPT_REST);
|
||||
|
||||
|
||||
wrongels = 0;
|
||||
|
@ -51,7 +51,8 @@ namespace netgen
|
||||
Array<INDEX_2> & llines1,
|
||||
int maxlegalline,
|
||||
Array<Element2d> & elements,
|
||||
Array<INDEX> & dellines, int tolerance)
|
||||
Array<INDEX> & dellines, int tolerance,
|
||||
const MeshingParameters & mp)
|
||||
{
|
||||
static int timer = NgProfiler::CreateTimer ("meshing2::ApplyRules");
|
||||
NgProfiler::RegionTimer reg (timer);
|
||||
@ -627,7 +628,7 @@ namespace netgen
|
||||
for (int i = 1; i <= elements.Size(); i++)
|
||||
{
|
||||
double hf;
|
||||
if (!mparam.quad)
|
||||
if (!mp.quad)
|
||||
hf = CalcElementBadness (lpoints, elements.Get(i));
|
||||
else
|
||||
hf = elements.Get(i).CalcJacobianBadness (lpoints) * 5;
|
||||
|
@ -457,7 +457,8 @@ namespace netgen
|
||||
while (wrongels && cnttrials > 0);
|
||||
|
||||
mesh.CalcSurfacesOfNode();
|
||||
mesh.ImproveMeshJacobian (OPT_WORSTCASE);
|
||||
MeshingParameters dummymp;
|
||||
mesh.ImproveMeshJacobian (dummymp, OPT_WORSTCASE);
|
||||
|
||||
facok = factry;
|
||||
for (int i = 1; i <= np; i++)
|
||||
|
@ -87,11 +87,11 @@ namespace netgen
|
||||
return *functions[i];
|
||||
}
|
||||
|
||||
|
||||
PointFunction1 :: PointFunction1 (Mesh::T_POINTS & apoints,
|
||||
const Array<INDEX_3> & afaces,
|
||||
const MeshingParameters & amp,
|
||||
double ah)
|
||||
: points(apoints), faces(afaces)
|
||||
: points(apoints), faces(afaces), mp(amp)
|
||||
{
|
||||
h = ah;
|
||||
}
|
||||
@ -109,7 +109,7 @@ namespace netgen
|
||||
double bad = CalcTetBadness (points[el.I1()],
|
||||
points[el.I3()],
|
||||
points[el.I2()],
|
||||
pp, 0);
|
||||
pp, 0, mp);
|
||||
badness += bad;
|
||||
}
|
||||
|
||||
@ -170,8 +170,6 @@ namespace netgen
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Cheap Functional depending of inner point inside triangular surface */
|
||||
|
||||
// is it used ????
|
||||
@ -304,12 +302,14 @@ namespace netgen
|
||||
Mesh::T_POINTS & points;
|
||||
const Mesh::T_VOLELEMENTS & elements;
|
||||
TABLE<int,PointIndex::BASE> elementsonpoint;
|
||||
const MeshingParameters & mp;
|
||||
PointIndex actpind;
|
||||
double h;
|
||||
|
||||
public:
|
||||
PointFunction (Mesh::T_POINTS & apoints,
|
||||
const Mesh::T_VOLELEMENTS & aelements);
|
||||
const Mesh::T_VOLELEMENTS & aelements,
|
||||
const MeshingParameters & amp);
|
||||
|
||||
virtual void SetPointIndex (PointIndex aactpind);
|
||||
void SetLocalH (double ah) { h = ah; }
|
||||
@ -323,8 +323,9 @@ namespace netgen
|
||||
|
||||
|
||||
PointFunction :: PointFunction (Mesh::T_POINTS & apoints,
|
||||
const Mesh::T_VOLELEMENTS & aelements)
|
||||
: points(apoints), elements(aelements), elementsonpoint(apoints.Size())
|
||||
const Mesh::T_VOLELEMENTS & aelements,
|
||||
const MeshingParameters & amp)
|
||||
: points(apoints), elements(aelements), elementsonpoint(apoints.Size()), mp(amp)
|
||||
{
|
||||
for (int i = 0; i < elements.Size(); i++)
|
||||
if (elements[i].NP() == 4)
|
||||
@ -351,7 +352,7 @@ namespace netgen
|
||||
{
|
||||
const Element & el = elements[elementsonpoint[actpind][j]];
|
||||
badness += CalcTetBadness (points[el[0]], points[el[1]],
|
||||
points[el[2]], points[el[3]], -1);
|
||||
points[el[2]], points[el[3]], -1, mp);
|
||||
}
|
||||
|
||||
points[actpind] = Point<3> (hp);
|
||||
@ -375,7 +376,7 @@ namespace netgen
|
||||
{
|
||||
f += CalcTetBadnessGrad (points[el[0]], points[el[1]],
|
||||
points[el[2]], points[el[3]],
|
||||
-1, k+1, vgradi);
|
||||
-1, k+1, vgradi, mp);
|
||||
|
||||
vgrad += vgradi;
|
||||
}
|
||||
@ -407,7 +408,7 @@ namespace netgen
|
||||
f += CalcTetBadnessGrad (points[el.PNum(1)],
|
||||
points[el.PNum(2)],
|
||||
points[el.PNum(3)],
|
||||
points[el.PNum(4)], -1, k, vgradi);
|
||||
points[el.PNum(4)], -1, k, vgradi, mp);
|
||||
|
||||
vgrad += vgradi;
|
||||
}
|
||||
@ -476,7 +477,8 @@ namespace netgen
|
||||
DenseMatrix m;
|
||||
public:
|
||||
CheapPointFunction (Mesh::T_POINTS & apoints,
|
||||
const Mesh::T_VOLELEMENTS & aelements);
|
||||
const Mesh::T_VOLELEMENTS & aelements,
|
||||
const MeshingParameters & amp);
|
||||
virtual void SetPointIndex (PointIndex aactpind);
|
||||
virtual double PointFunctionValue (const Point<3> & pp) const;
|
||||
virtual double PointFunctionValueGrad (const Point<3> & pp, Vec<3> & grad) const;
|
||||
@ -484,8 +486,9 @@ namespace netgen
|
||||
|
||||
|
||||
CheapPointFunction :: CheapPointFunction (Mesh::T_POINTS & apoints,
|
||||
const Mesh::T_VOLELEMENTS & aelements)
|
||||
: PointFunction (apoints, aelements)
|
||||
const Mesh::T_VOLELEMENTS & aelements,
|
||||
const MeshingParameters & amp)
|
||||
: PointFunction (apoints, aelements, amp)
|
||||
{
|
||||
;
|
||||
}
|
||||
@ -930,7 +933,7 @@ double CalcTotalBad (const Mesh::T_POINTS & points,
|
||||
|
||||
for (int i = 1; i <= elements.Size(); i++)
|
||||
{
|
||||
elbad = pow (max2(CalcBad (points, elements.Get(i), 0),1e-10),
|
||||
elbad = pow (max2(CalcBad (points, elements.Get(i), 0, mp),1e-10),
|
||||
1/teterrpow);
|
||||
|
||||
int qualclass = int (20 / elbad + 1);
|
||||
@ -1348,7 +1351,7 @@ void Mesh :: ImproveMesh (const CSGeometry & geometry, OPTIMIZEGOAL goal)
|
||||
|
||||
|
||||
|
||||
void Mesh :: ImproveMesh (OPTIMIZEGOAL goal)
|
||||
void Mesh :: ImproveMesh (const MeshingParameters & mp, OPTIMIZEGOAL goal)
|
||||
{
|
||||
int typ = 1;
|
||||
|
||||
@ -1373,7 +1376,7 @@ void Mesh :: ImproveMesh (OPTIMIZEGOAL goal)
|
||||
if (el.GetType() != TET)
|
||||
continue;
|
||||
|
||||
double hbad = CalcBad (points, el, 0);
|
||||
double hbad = CalcBad (points, el, 0, mp);
|
||||
for (int j = 0; j < 4; j++)
|
||||
perrs[el[j]] += hbad;
|
||||
|
||||
@ -1388,7 +1391,7 @@ void Mesh :: ImproveMesh (OPTIMIZEGOAL goal)
|
||||
|
||||
if (goal == OPT_QUALITY)
|
||||
{
|
||||
bad1 = CalcTotalBad (points, volelements);
|
||||
bad1 = CalcTotalBad (points, volelements, mp);
|
||||
(*testout) << "Total badness = " << bad1 << endl;
|
||||
PrintMessage (5, "Total badness = ", bad1);
|
||||
}
|
||||
@ -1403,9 +1406,9 @@ void Mesh :: ImproveMesh (OPTIMIZEGOAL goal)
|
||||
PointFunction * pf;
|
||||
|
||||
if (typ == 1)
|
||||
pf = new PointFunction(points, volelements);
|
||||
pf = new PointFunction(points, volelements, mp);
|
||||
else
|
||||
pf = new CheapPointFunction(points, volelements);
|
||||
pf = new CheapPointFunction(points, volelements, mp);
|
||||
|
||||
// pf->SetLocalH (h);
|
||||
|
||||
@ -1508,7 +1511,7 @@ void Mesh :: ImproveMesh (OPTIMIZEGOAL goal)
|
||||
|
||||
if (goal == OPT_QUALITY)
|
||||
{
|
||||
bad1 = CalcTotalBad (points, volelements);
|
||||
bad1 = CalcTotalBad (points, volelements, mp);
|
||||
(*testout) << "Total badness = " << bad1 << endl;
|
||||
PrintMessage (5, "Total badness = ", bad1);
|
||||
}
|
||||
@ -1518,7 +1521,8 @@ void Mesh :: ImproveMesh (OPTIMIZEGOAL goal)
|
||||
|
||||
|
||||
// Improve Condition number of Jacobian, any elements
|
||||
void Mesh :: ImproveMeshJacobian (OPTIMIZEGOAL goal, const BitArray * usepoint)
|
||||
void Mesh :: ImproveMeshJacobian (const MeshingParameters & mp,
|
||||
OPTIMIZEGOAL goal, const BitArray * usepoint)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -1638,7 +1642,8 @@ void Mesh :: ImproveMeshJacobian (OPTIMIZEGOAL goal, const BitArray * usepoint)
|
||||
|
||||
|
||||
// Improve Condition number of Jacobian, any elements
|
||||
void Mesh :: ImproveMeshJacobianOnSurface (const BitArray & usepoint,
|
||||
void Mesh :: ImproveMeshJacobianOnSurface (const MeshingParameters & mp,
|
||||
const BitArray & usepoint,
|
||||
const Array< Vec<3>* > & nv,
|
||||
OPTIMIZEGOAL goal,
|
||||
const Array< Array<int,PointIndex::BASE>* > * idmaps)
|
||||
|
@ -156,7 +156,7 @@ void CutOffAndCombine (Mesh & mesh, const Mesh & othermesh)
|
||||
mesh.AddLockedPoint (pmat.Elem(i));
|
||||
|
||||
mesh.CalcSurfacesOfNode();
|
||||
mesh.CalcLocalH(mparam.grading);
|
||||
mesh.CalcLocalH(0.3);
|
||||
}
|
||||
|
||||
|
||||
|
@ -376,7 +376,8 @@ namespace netgen
|
||||
// smooth faces
|
||||
mesh.CalcSurfacesOfNode();
|
||||
|
||||
mesh.ImproveMeshJacobianOnSurface(isworkingboundary,nv,OPT_QUALITY,&idmaps);
|
||||
MeshingParameters dummymp;
|
||||
mesh.ImproveMeshJacobianOnSurface(dummymp,isworkingboundary,nv,OPT_QUALITY, &idmaps);
|
||||
|
||||
for (int i = 1; i <= np; i++)
|
||||
*can.Elem(i) = mesh.Point(i);
|
||||
@ -447,7 +448,8 @@ namespace netgen
|
||||
|
||||
mesh.CalcSurfacesOfNode();
|
||||
|
||||
mesh.ImproveMeshJacobian (OPT_QUALITY,&working_points);
|
||||
MeshingParameters dummymp;
|
||||
mesh.ImproveMeshJacobian (dummymp, OPT_QUALITY,&working_points);
|
||||
//mesh.ImproveMeshJacobian (OPT_WORSTCASE,&working_points);
|
||||
|
||||
|
||||
@ -460,7 +462,8 @@ namespace netgen
|
||||
cnttrials < maxtrials &&
|
||||
multithread.terminate != 1)
|
||||
{
|
||||
MeshOptimize3d optmesh;
|
||||
MeshingParameters dummymp;
|
||||
MeshOptimize3d optmesh(dummymp);
|
||||
for(int i=0; i<numtopimprove; i++)
|
||||
{
|
||||
optmesh.SwapImproveSurface(mesh,OPT_QUALITY,&working_elements,&idmaps);
|
||||
@ -507,7 +510,8 @@ namespace netgen
|
||||
|
||||
}
|
||||
|
||||
MeshOptimize3d optmesh;
|
||||
MeshingParameters dummymp;
|
||||
MeshOptimize3d optmesh(dummymp);
|
||||
for(int i=0; i<numtopimprove && multithread.terminate != 1; i++)
|
||||
{
|
||||
optmesh.SwapImproveSurface(mesh,OPT_QUALITY,NULL,&idmaps);
|
||||
|
@ -114,6 +114,8 @@ namespace netgen
|
||||
{
|
||||
#include "occmeshsurf.hpp"
|
||||
|
||||
extern DLL_HEADER MeshingParameters mparam;
|
||||
|
||||
#define PROJECTION_TOLERANCE 1e-10
|
||||
|
||||
#define ENTITYISVISIBLE 1
|
||||
@ -301,7 +303,7 @@ namespace netgen
|
||||
{
|
||||
if((facenr> 0) && (facenr <= fmap.Extent()))
|
||||
{
|
||||
face_maxh[facenr-1] = min(mparam.maxh,faceh);
|
||||
face_maxh[facenr-1] = min(mparam.maxh,faceh);
|
||||
|
||||
// Philippose - 14/01/2010
|
||||
// If the face maxh is greater than or equal to the
|
||||
|
@ -28,6 +28,9 @@ namespace netgen
|
||||
{
|
||||
extern int IsInArray(int n, const Array<int>& ia);
|
||||
extern int AddIfNotExists(Array<int>& list, int x);
|
||||
|
||||
extern DLL_HEADER MeshingParameters mparam;
|
||||
|
||||
|
||||
|
||||
#include "stltopology.hpp"
|
||||
|
Loading…
Reference in New Issue
Block a user