Skip to content
Snippets Groups Projects
Commit 5c9325ce authored by Thomas Toulorge's avatar Thomas Toulorge
Browse files

Removed pass on Jacobian in MeshQualityOptimizer unless explicitly required

parent 3619b8d5
Branches
Tags
No related merge requests found
......@@ -106,24 +106,31 @@ void MeshQualityOptimizer(GModel *gm, MeshQualOptParameters &p)
minInvCondNumBarFunc.setTarget(p.minTargetInvCondNum, 1.);
MeshOptPass minJacPass;
MeshOptPass minInvCondNumPass;
if (p.onlyValidity) {
minJacPass.barrierIterMax = p.optPassMax;
minJacPass.optIterMax = p.itMax;
minJacPass.contrib.push_back(&nodeDistFunc);
minJacPass.contrib.push_back(&minIdealJacBarFunc);
par.pass.push_back(minJacPass);
MeshOptPass minInvCondNumPass;
}
else {
minInvCondNumPass.barrierIterMax = p.optPassMax;
minInvCondNumPass.optIterMax = p.itMax;
minInvCondNumPass.contrib.push_back(&nodeDistFunc);
minInvCondNumPass.contrib.push_back(&minInvCondNumBarFunc);
par.pass.push_back(minInvCondNumPass);
}
meshOptimizer(gm, par);
p.CPU = par.CPU;
// p.minIdealJac = minIdealJacBarFunc.getMin();
// p.maxIdealJac = minIdealJacBarFunc.getMax();
if (p.onlyValidity) {
p.minIdealJac = minIdealJacBarFunc.getMin();
p.maxIdealJac = minIdealJacBarFunc.getMax();
}
else {
p.minInvCondNum = minInvCondNumBarFunc.getMin();
p.maxInvCondNum = minInvCondNumBarFunc.getMax();
}
}
......@@ -33,6 +33,7 @@
class GModel;
struct MeshQualOptParameters {
bool onlyValidity;
bool excludeQuad, excludeHex, excludePrism;
double minTargetIdealJac;
double minTargetInvCondNum;
......@@ -43,28 +44,27 @@ struct MeshQualOptParameters {
int itMax; // max number of iterations in the optimization process
int optPassMax; // max number of optimization passes
bool onlyVisible; // apply optimization to visible entities ONLY
double distanceFactor; // filter elements such that no elements further away
// than DistanceFactor times the max distance to
// straight sided version of an element are optimized
bool fixBndNodes; // how jacobians are computed and if points can move on boundaries
double distanceFactor; // Distance criterion for patch creation
bool fixBndNodes; // If points can move on boundaries
int strategy; // 0 = connected blobs, 1 = adaptive one-by-one
int maxAdaptBlob; // Max. nb. of blob adaptation interations
int adaptBlobLayerFact; // Growth factor in number of layers for blob adaptation
double adaptBlobDistFact; // Growth factor in distance factor for blob adaptation
int maxAdaptBlob; // Max. nb. of blob adaptation interations (if adaptive)
int adaptBlobLayerFact; // Growth factor in number of layers for blob adaptation (if adaptive)
double adaptBlobDistFact; // Growth factor in distance factor for blob adaptation (if adaptive)
int SUCCESS ; // 0 --> success , 1 --> Not converged
// double minIdealJac, maxIdealJac; // after optimization, range of jacobians
double minIdealJac, maxIdealJac; // after optimization, range of jacobians
double minInvCondNum, maxInvCondNum; // after optimization, range of jacobians
double CPU; // Time for optimization
MeshQualOptParameters ()
: excludeQuad(false), excludeHex(false), excludePrism(false),
: onlyValidity(false), excludeQuad(false),
excludeHex(false), excludePrism(false),
minTargetIdealJac(0.1), minTargetInvCondNum(0.1), weightFixed(1000.),
weightFree (1.), nbLayers (6) , dim(3) , itMax(300), optPassMax(50),
onlyVisible(true), distanceFactor(12), fixBndNodes(false), strategy(0),
maxAdaptBlob(3), adaptBlobLayerFact(2.), adaptBlobDistFact(2.), CPU(0.),
// minIdealJac(0.), maxIdealJac(0.), SUCCESS(-1)
minInvCondNum(0.), maxInvCondNum(0.), SUCCESS(-1)
minIdealJac(0.), maxIdealJac(0.), minInvCondNum(0.), maxInvCondNum(0.),
SUCCESS(-1)
{
}
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment