#include <SteepestDescent.hpp>
Public Member Functions | |
SteepestDescent (ObjectiveFunction *of) | |
virtual | ~SteepestDescent () |
void | set_maximum_iteration (int iter) |
void | set_lower_gradient_bound (double gradc) |
SteepestDescent (ObjectiveFunction *of) | |
virtual | ~SteepestDescent () |
void | set_maximum_iteration (int iter) |
void | set_lower_gradient_bound (double gradc) |
Public Member Functions inherited from VertexMover | |
virtual | ~VertexMover () |
virtual double | loop_over_mesh (MeshSet &ms, MsqError &err) |
Improves the quality of the MeshSet, calling some methods specified in a class derived from VertexMover. More... | |
virtual | ~VertexMover () |
virtual double | loop_over_mesh (MeshSet &ms, MsqError &err) |
This is the "run" function of PatchDataUser. It can do anything really. More... | |
Public Member Functions inherited from QualityImprover | |
virtual | ~QualityImprover () |
void | set_name (msq_std::string name) |
provides a name to the QualityImprover (use it in constructor). More... | |
virtual msq_std::string | get_name () |
retrieves the QualityImprover name. A default name should be set in the constructor. More... | |
virtual AlgorithmType | get_algorithm_type () |
Return the algorithm type (to avoid RTTI use). More... | |
void | set_inner_termination_criterion (TerminationCriterion *crit) |
Sets in the termination criterion for the concrete solver's optimization. More... | |
void | set_outer_termination_criterion (TerminationCriterion *crit) |
Sets in the termination criterion for the outer loop over patches. More... | |
virtual | ~QualityImprover () |
void | set_name (msq_std::string name) |
provides a name to the QualityImprover (use it in constructor). More... | |
virtual msq_std::string | get_name () |
retrieves the QualityImprover name. A default name should be set in the constructor. More... | |
virtual AlgorithmType | get_algorithm_type () |
Return the algorithm type (to avoid RTTI use). More... | |
void | set_inner_termination_criterion (TerminationCriterion *crit) |
Sets in the termination criterion for the concrete solver's optimization. More... | |
void | set_outer_termination_criterion (TerminationCriterion *crit) |
Sets in the termination criterion for the outer loop over patches. More... | |
Public Member Functions inherited from PatchDataUser | |
virtual | ~PatchDataUser () |
virtual void | set_patch_type (PatchData::PatchType patch_type, MsqError &err, int param1=0, int param2=0) |
Sets the Patch Type. More... | |
PatchData::PatchType | get_patch_type () |
Returns the Patch Type. More... | |
int | get_nb_layers (MsqError &err) |
Returns number of layers (if relevant for partition algorythm). More... | |
void | add_culling_method (enum PatchData::culling_method cm) |
Sets on the culling method passed as argument. More... | |
void | no_culling_method () |
Sets off all culling methods. More... | |
void | remove_culling_method (enum PatchData::culling_method cm) |
Sets off the culling method passed as argument. More... | |
long unsigned int | get_culling_method_bits () |
Returns the bitset containing culling methods flags. More... | |
void | set_all_parameters (PatchDataParameters ¶ms) |
PatchDataParameters & | get_all_parameters () |
Returns the PatchDataParameters object. More... | |
void | set_global_patch (PatchData *pd, MsqError &err) |
Sets the Global Patch, so that it can be use by contiguoug PatchDataUser. More... | |
PatchData * | get_global_patch () |
Returns the Global Patch. More... | |
void | no_global_patch () |
Sets the Global Patch pointer to NULL. More... | |
virtual | ~PatchDataUser () |
virtual void | set_patch_type (PatchData::PatchType patch_type, MsqError &err, int param1=0, int param2=0) |
Sets the Patch Type. More... | |
PatchData::PatchType | get_patch_type () |
Returns the Patch Type. More... | |
int | get_nb_layers (MsqError &err) |
Returns number of layers (if relevant for partition algorythm). More... | |
void | add_culling_method (enum PatchData::culling_method cm) |
Sets on the culling method passed as argument. More... | |
void | no_culling_method () |
Sets off all culling methods. More... | |
void | remove_culling_method (enum PatchData::culling_method cm) |
Sets off the culling method passed as argument. More... | |
long unsigned int | get_culling_method_bits () |
Returns the bitset containing culling methods flags. More... | |
void | set_all_parameters (PatchDataParameters ¶ms) |
PatchDataParameters & | get_all_parameters () |
Returns the PatchDataParameters object. More... | |
void | set_global_patch (PatchData *pd, MsqError &err) |
Sets the Global Patch, so that it can be use by contiguoug PatchDataUser. More... | |
PatchData * | get_global_patch () |
Returns the Global Patch. More... | |
void | no_global_patch () |
Sets the Global Patch pointer to NULL. More... | |
Protected Member Functions | |
virtual void | initialize (PatchData &pd, MsqError &err) |
virtual void | optimize_vertex_positions (PatchData &pd, MsqError &err) |
virtual void | initialize_mesh_iteration (PatchData &pd, MsqError &err) |
virtual void | terminate_mesh_iteration (PatchData &pd, MsqError &err) |
virtual void | cleanup () |
virtual void | initialize (PatchData &pd, MsqError &err) |
virtual void | optimize_vertex_positions (PatchData &pd, MsqError &err) |
virtual void | initialize_mesh_iteration (PatchData &pd, MsqError &err) |
virtual void | terminate_mesh_iteration (PatchData &pd, MsqError &err) |
virtual void | cleanup () |
Protected Member Functions inherited from VertexMover | |
VertexMover () | |
size_t | check_feasible (PatchData &pd, MsqError &err) |
CHECK FEASIBLE IS NOT YET IMPLEMENTED. More... | |
VertexMover () | |
size_t | check_feasible (PatchData &pd, MsqError &err) |
CHECK FEASIBLE IS NOT YET IMPLEMENTED. More... | |
Protected Member Functions inherited from QualityImprover | |
QualityImprover () | |
const MeshSet * | get_mesh_set () const |
MeshSet * | get_mesh_set () |
void | set_mesh_set (MeshSet *ms) |
TerminationCriterion * | get_outer_termination_criterion () |
return the outer termination criterion pointer More... | |
TerminationCriterion * | get_inner_termination_criterion () |
return the inner termination criterion pointer More... | |
QualityImprover () | |
const MeshSet * | get_mesh_set () const |
MeshSet * | get_mesh_set () |
void | set_mesh_set (MeshSet *ms) |
TerminationCriterion * | get_outer_termination_criterion () |
return the outer termination criterion pointer More... | |
TerminationCriterion * | get_inner_termination_criterion () |
return the inner termination criterion pointer More... | |
Protected Member Functions inherited from PatchDataUser | |
PatchDataUser () | |
PatchDataUser () | |
Private Attributes | |
double | gradientLessThan |
int | maxIteration |
Additional Inherited Members | |
Public Types inherited from PatchDataUser | |
enum | AlgorithmType { QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR, QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR } |
enum | AlgorithmType { QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR, QUALITY_IMPROVER, QUALITY_ASSESSOR, MESH_TRANSFORM, TARGET_CALCULATOR } |
Protected Attributes inherited from VertexMover | |
ObjectiveFunction * | objFunc |
This is a very basic implementation of the steepest descent optimization algorythm. It works on patches of any size but the step size is hard-wired. Obvisouly, this is for testing purposed only.
Definition at line 55 of file includeLinks/SteepestDescent.hpp.
SteepestDescent | ( | ObjectiveFunction * | of | ) |
Definition at line 44 of file QualityImprover/VertexMover/SteepestDescent/SteepestDescent.cpp.
References PatchData::GLOBAL_PATCH, SteepestDescent::gradientLessThan, SteepestDescent::maxIteration, VertexMover::objFunc, QualityImprover::set_name(), and PatchDataUser::set_patch_type().
|
inlinevirtual |
Definition at line 60 of file includeLinks/SteepestDescent.hpp.
SteepestDescent | ( | ObjectiveFunction * | of | ) |
|
inlinevirtual |
Definition at line 60 of file src/QualityImprover/VertexMover/SteepestDescent/SteepestDescent.hpp.
|
protectedvirtual |
Implements VertexMover.
Definition at line 192 of file QualityImprover/VertexMover/SteepestDescent/SteepestDescent.cpp.
|
protectedvirtual |
Implements VertexMover.
Implements VertexMover.
Implements VertexMover.
Definition at line 56 of file QualityImprover/VertexMover/SteepestDescent/SteepestDescent.cpp.
Implements VertexMover.
Definition at line 60 of file QualityImprover/VertexMover/SteepestDescent/SteepestDescent.cpp.
Implements VertexMover.
Implements VertexMover.
Implements VertexMover.
Definition at line 64 of file QualityImprover/VertexMover/SteepestDescent/SteepestDescent.cpp.
References TerminationCriterion::accumulate_inner(), ObjectiveFunction::compute_gradient(), PatchData::create_vertices_memento(), ObjectiveFunction::evaluate(), QualityImprover::get_inner_termination_criterion(), PatchData::get_vertex_array(), SteepestDescent::gradientLessThan, i, MsqError::INVALID_ARG, MsqError::INVALID_MESH, j, SteepestDescent::maxIteration, PatchData::move_free_vertices_constrained(), MSQ_CHKERR, MSQ_DBG, MSQ_DBGOUT, MSQ_ERRRTN, MSQ_FUNCTION_TIMER, MSQ_SETERR, n, MsqFreeVertexIndexIterator::next(), nvc::norm(), PatchData::num_free_vertices(), PatchData::num_vertices(), VertexMover::objFunc, MsqFreeVertexIndexIterator::reset(), PatchData::set_to_vertices_memento(), sqrt(), TerminationCriterion::terminate(), and MsqFreeVertexIndexIterator::value().
|
inline |
Sets a minimum value for the gradient. If the gradient is below that value, we stop iterating.
Definition at line 70 of file src/QualityImprover/VertexMover/SteepestDescent/SteepestDescent.hpp.
References SteepestDescent::gradientLessThan.
|
inline |
Sets a minimum value for the gradient. If the gradient is below that value, we stop iterating.
Definition at line 70 of file includeLinks/SteepestDescent.hpp.
References SteepestDescent::gradientLessThan.
|
inline |
sets the maximum number of iteration of the steepest descent algorythm, i.e. the number of times we compute the gradient and try to move the nodes in the opposite direction. This is different from the number of passes over the mesh.
Definition at line 65 of file includeLinks/SteepestDescent.hpp.
References SteepestDescent::maxIteration.
|
inline |
sets the maximum number of iteration of the steepest descent algorythm, i.e. the number of times we compute the gradient and try to move the nodes in the opposite direction. This is different from the number of passes over the mesh.
Definition at line 65 of file src/QualityImprover/VertexMover/SteepestDescent/SteepestDescent.hpp.
References SteepestDescent::maxIteration.
Implements VertexMover.
Definition at line 187 of file QualityImprover/VertexMover/SteepestDescent/SteepestDescent.cpp.
Implements VertexMover.
|
private |
Definition at line 83 of file includeLinks/SteepestDescent.hpp.
Referenced by SteepestDescent::optimize_vertex_positions(), SteepestDescent::set_lower_gradient_bound(), and SteepestDescent::SteepestDescent().
|
private |
Definition at line 84 of file includeLinks/SteepestDescent.hpp.
Referenced by SteepestDescent::optimize_vertex_positions(), SteepestDescent::set_maximum_iteration(), and SteepestDescent::SteepestDescent().