An InstructionQueue object gathers Mesquite Instructions and ensures that the instruction queue is coherent for mesh improvement and/or mesh quality assessment purposes. More...
#include <InstructionQueue.hpp>
Private Member Functions | |
msq_std::list< PatchDataUser * > ::iterator | clear_master (MsqError &err) |
msq_std::list< PatchDataUser * > ::iterator | clear_master (MsqError &err) |
Private Attributes | |
msq_std::list< PatchDataUser * > | instructions |
bool | autoQualAssess |
bool | autoAdjMidNodes |
size_t | nbPreConditionners |
bool | isMasterSet |
size_t | masterInstrIndex |
0-based. More... | |
PatchData * | globalPatch |
Used to prevent reallocating a global patch for successive global algorithms. More... | |
bool | trapFPE |
An InstructionQueue object gathers Mesquite Instructions and ensures that the instruction queue is coherent for mesh improvement and/or mesh quality assessment purposes.
The user can instantiate several InstructionQueue objects to be used with various MeshSet objects.
The most commonly used functions are:
Definition at line 73 of file includeLinks/InstructionQueue.hpp.
InstructionQueue | ( | ) |
Definition at line 66 of file Control/InstructionQueue.cpp.
|
inlinevirtual |
Definition at line 79 of file includeLinks/InstructionQueue.hpp.
InstructionQueue | ( | ) |
|
inlinevirtual |
Definition at line 79 of file src/Control/InstructionQueue.hpp.
void add_preconditioner | ( | QualityImprover * | instr, |
MsqError & | err | ||
) |
adds a QualityImprover at the end of the instruction list
This function cannot be used once the set_master_quality_improver() function has been used.
See also insert_preconditioner().
Definition at line 91 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions, MsqError::INVALID_STATE, InstructionQueue::isMasterSet, MSQ_SETERR, and InstructionQueue::nbPreConditionners.
void add_preconditioner | ( | QualityImprover * | instr, |
MsqError & | err | ||
) |
void add_quality_assessor | ( | QualityAssessor * | instr, |
MsqError & | err | ||
) |
adds a QualityAssessor to the instruction queue.
QualityAssessor pointers can be added at any time to the instruction queue.
Definition at line 177 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions.
Referenced by LaplacianIQ::LaplacianIQ().
void add_quality_assessor | ( | QualityAssessor * | instr, |
MsqError & | err | ||
) |
void add_target_calculator | ( | TargetCalculator * | tc, |
MsqError & | err | ||
) |
void add_target_calculator | ( | TargetCalculator * | tc, |
MsqError & | err | ||
) |
Definition at line 78 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions.
void clear | ( | ) |
Definition at line 327 of file Control/InstructionQueue.cpp.
References InstructionQueue::autoAdjMidNodes, InstructionQueue::autoQualAssess, InstructionQueue::instructions, InstructionQueue::isMasterSet, and InstructionQueue::masterInstrIndex.
void clear | ( | ) |
|
private |
|
private |
Definition at line 337 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions, MsqError::INVALID_STATE, InstructionQueue::isMasterSet, InstructionQueue::masterInstrIndex, and MSQ_SETERR.
Referenced by InstructionQueue::set_master_quality_improver().
|
inline |
Definition at line 98 of file includeLinks/InstructionQueue.hpp.
References InstructionQueue::autoAdjMidNodes.
|
inline |
Definition at line 98 of file src/Control/InstructionQueue.hpp.
References InstructionQueue::autoAdjMidNodes.
|
inline |
Definition at line 93 of file includeLinks/InstructionQueue.hpp.
References InstructionQueue::autoQualAssess.
|
inline |
Definition at line 93 of file src/Control/InstructionQueue.hpp.
References InstructionQueue::autoQualAssess.
|
inline |
Definition at line 100 of file includeLinks/InstructionQueue.hpp.
References InstructionQueue::autoAdjMidNodes.
|
inline |
Definition at line 100 of file src/Control/InstructionQueue.hpp.
References InstructionQueue::autoAdjMidNodes.
|
inline |
Definition at line 95 of file includeLinks/InstructionQueue.hpp.
References InstructionQueue::autoQualAssess.
|
inline |
Definition at line 95 of file src/Control/InstructionQueue.hpp.
References InstructionQueue::autoQualAssess.
void insert_preconditioner | ( | QualityImprover * | instr, |
size_t | index, | ||
MsqError & | err | ||
) |
inserts a QualityImprover* into the instruction queue.
Pre-conditionners can only be inserted before the master QualityImprover.
index | is 0-based. An error is set if the index does not correspond to a valid position in the queue. |
Definition at line 148 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions, MsqError::INVALID_ARG, MsqError::INVALID_STATE, InstructionQueue::isMasterSet, InstructionQueue::masterInstrIndex, MSQ_SETERR, and InstructionQueue::nbPreConditionners.
void insert_preconditioner | ( | QualityImprover * | instr, |
size_t | index, | ||
MsqError & | err | ||
) |
void insert_quality_assessor | ( | QualityAssessor * | instr, |
size_t | index, | ||
MsqError & | err | ||
) |
inserts a QualityAssessor* into the instruction queue.
QualityAssessors can be inserted at any position in the instruction queue.
index | is 0-based. An error is set if the index is past the end of the queue. |
Definition at line 222 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions, MsqError::INVALID_ARG, and MSQ_SETERR.
void insert_quality_assessor | ( | QualityAssessor * | instr, |
size_t | index, | ||
MsqError & | err | ||
) |
void remove_preconditioner | ( | size_t | index, |
MsqError & | err | ||
) |
void remove_preconditioner | ( | size_t | index, |
MsqError & | err | ||
) |
removes a QualityImprover* from the instruction queue
index | is 0-based. An error is set if the index does not correspond to a valid element in the queue. |
Definition at line 111 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions, MsqError::INVALID_ARG, InstructionQueue::isMasterSet, InstructionQueue::masterInstrIndex, MSQ_SETERR, InstructionQueue::nbPreConditionners, and PatchDataUser::QUALITY_IMPROVER.
void remove_quality_assessor | ( | size_t | index, |
MsqError & | err | ||
) |
void remove_quality_assessor | ( | size_t | index, |
MsqError & | err | ||
) |
removes a QualityAssessor* from the instruction queue
index | is 0-based. An error is set if the index does not correspond to a valid element in the queue. |
Definition at line 190 of file Control/InstructionQueue.cpp.
References InstructionQueue::instructions, MsqError::INVALID_ARG, MSQ_SETERR, and PatchDataUser::QUALITY_ASSESSOR.
This function is virtual so that it may be redefined in the wraper classes.
Reimplemented in ShapeImprovementWrapper, and ShapeImprovementWrapper.
This function is virtual so that it may be redefined in the wraper classes.
Reimplemented in ShapeImprovementWrapper, and ShapeImprovementWrapper.
Definition at line 260 of file Control/InstructionQueue.cpp.
References InstructionQueue::autoAdjMidNodes, MeshSet::get_next_patch(), PatchData::GLOBAL_PATCH, InstructionQueue::globalPatch, InstructionQueue::instructions, MsqError::INVALID_STATE, InstructionQueue::isMasterSet, MSQ_DBGOUT, MSQ_ERRRTN, MSQ_SETERR, InstructionQueue::nbPreConditionners, InstructionQueue::trapFPE, and Mesquite::version_string().
void set_master_quality_improver | ( | QualityImprover * | instr, |
MsqError & | err | ||
) |
Definition at line 241 of file Control/InstructionQueue.cpp.
References InstructionQueue::clear_master(), InstructionQueue::instructions, InstructionQueue::isMasterSet, InstructionQueue::masterInstrIndex, MSQ_DBGOUT, and MSQ_ERRRTN.
Referenced by LaplacianIQ::LaplacianIQ().
void set_master_quality_improver | ( | QualityImprover * | instr, |
MsqError & | err | ||
) |
|
inline |
Generate SIGFPE whenever a floating point exception occurs.
Generate a FPE signal when overflow, divbyzero, etc. occur during floating-point arithmatic. This is intended for debugging purposes only, as enabling this will typically result in a crash when such arithmatic errors occur.
If this option is enabled, Mesquite will attempt to set platform-specific flags such that a SIGFPE is generated for floating point errors while the instruction queue is running. If this option ins disabled, Mesquite will not change the flags. There is no option to explicitly disable such flags because that is the default behavior on most platforms, and presumably if the application has enabled such flags it makes little sense to disable them while Mesquite is running.
This functionality may not be supported on all platforms. If it is not supported, this option has no effect.
Definition at line 127 of file includeLinks/InstructionQueue.hpp.
References InstructionQueue::trapFPE.
|
inline |
Generate SIGFPE whenever a floating point exception occurs.
Generate a FPE signal when overflow, divbyzero, etc. occur during floating-point arithmatic. This is intended for debugging purposes only, as enabling this will typically result in a crash when such arithmatic errors occur.
If this option is enabled, Mesquite will attempt to set platform-specific flags such that a SIGFPE is generated for floating point errors while the instruction queue is running. If this option ins disabled, Mesquite will not change the flags. There is no option to explicitly disable such flags because that is the default behavior on most platforms, and presumably if the application has enabled such flags it makes little sense to disable them while Mesquite is running.
This functionality may not be supported on all platforms. If it is not supported, this option has no effect.
Definition at line 127 of file src/Control/InstructionQueue.hpp.
References InstructionQueue::trapFPE.
|
inline |
Definition at line 129 of file src/Control/InstructionQueue.hpp.
References InstructionQueue::trapFPE.
|
inline |
Definition at line 129 of file includeLinks/InstructionQueue.hpp.
References InstructionQueue::trapFPE.
|
private |
Definition at line 141 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::clear(), InstructionQueue::disable_automatic_midnode_adjustment(), InstructionQueue::enable_automatic_midnode_adjustment(), and InstructionQueue::run_instructions().
|
private |
Definition at line 140 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::clear(), InstructionQueue::disable_automatic_quality_assessment(), and InstructionQueue::enable_automatic_quality_assessment().
|
private |
Used to prevent reallocating a global patch for successive global algorithms.
Definition at line 148 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::run_instructions().
|
private |
Definition at line 138 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::add_preconditioner(), InstructionQueue::add_quality_assessor(), InstructionQueue::add_target_calculator(), InstructionQueue::clear(), InstructionQueue::clear_master(), InstructionQueue::insert_preconditioner(), InstructionQueue::insert_quality_assessor(), InstructionQueue::remove_preconditioner(), InstructionQueue::remove_quality_assessor(), InstructionQueue::run_instructions(), and InstructionQueue::set_master_quality_improver().
|
private |
Definition at line 144 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::add_preconditioner(), InstructionQueue::clear(), InstructionQueue::clear_master(), InstructionQueue::insert_preconditioner(), InstructionQueue::remove_preconditioner(), InstructionQueue::run_instructions(), and InstructionQueue::set_master_quality_improver().
|
private |
0-based.
Keeping an index instead of an iterator in case list is reallocated
Definition at line 145 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::clear(), InstructionQueue::clear_master(), InstructionQueue::insert_preconditioner(), InstructionQueue::remove_preconditioner(), and InstructionQueue::set_master_quality_improver().
|
private |
Definition at line 143 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::add_preconditioner(), InstructionQueue::insert_preconditioner(), InstructionQueue::remove_preconditioner(), and InstructionQueue::run_instructions().
|
private |
Definition at line 151 of file includeLinks/InstructionQueue.hpp.
Referenced by InstructionQueue::run_instructions(), and InstructionQueue::trap_floating_point_exception().