====== StopCriterion ====== ===== Introduction ===== The stop criterion allows to stop a computation when a given criterion becomes greater than a given value. It is useful to avoid consuming CPU time when a computation has no meaning anymore, or to chain operations (remeshing, chained operation based on a criterion, ...) While stopping cleanly the computation, a fac is written at the stop time, the ValuesManager is properly closed and the ascii export is done. ===== General Commands ===== For a given criterion (''crit'') (see below), * ''setStopValue(double)'' : define the value to exceed (default : 0.0) * ''setWriteTSC(bool)'' : force (remove) the writing of TSC (not required, if remeshing) (default : True) * ''setRunObjFuncSet(bool)'' : force (remove) the computation/writing of ObjectiveFunctions (not required, if remeshing) (default : True) * ''setStopAtNextFac(bool)'' : compute the criterion at each timeStep, but stop the computation only after the next fac writing (default : False) * ''setCheckAtFac(bool)'' : compute the criterion at fac writing time (default : False) The criterion is finally added in the Metafor object : crit.setStopValue(value) # (default : 0.0) crit.setWriteTSC(True) # (default : True) crit.setRunObjFuncSet(True) # (default : True) crit.setStopAtNextFac(True) # (default : False) crit.setCheckAtFac(True) # (default : False) metafor.setStopCriterion(crit) ===== TimeStopCriterion ===== If you want to stop a model at given times : * TimeStopCriterion() ===== ValueExtractorStopCriterion ===== If you want do define a given ValueExtractor (possibly with a Vector2ScalarOperator) to stop the computation * ValueExtractorStopCriterion(ValueExtractor &_valueExt, VectorToScalarOperator *_v2sOp=NULL) ===== ValueManagerStopCriterion ===== If you want to use a value, which is already extracted in the ValuesManager : * ValueManagerStopCriterion(ValuesStruct *_valueStruct, int _comp=0)