namespace ewalena  0.2.15
ewalena is not an acronym
include/ewalena/lac/solver_control.h
Go to the documentation of this file.
00001 // -------------------------------------------------------------------
00002 // @author Toby D. Young
00003 // @version $Id: solver_control.h 987 2012-11-26 15:16:27Z oneliefleft $
00004 //
00005 // Copyright 2012 namespace ewalena authors. All rights reserved.
00006 //
00007 // Redistribution and use in source and binary forms, with or without
00008 // modification, are permitted provided that the following conditions
00009 // are met:
00010 //
00011 // 1. Redistributions of source code must retain the above copyright
00012 //    notice, this list of conditions and the following disclaimer.
00013 //
00014 // 2. Redistributions in binary form must reproduce the above
00015 //    copyright notice, this list of conditions and the following
00016 //    disclaimer in the documentation and/or other materials provided
00017 //    with the distribution.
00018 //
00019 // THIS SOFTWARE IS PROVIDED BY THE NAMEPSACE EWALENA AUTHORS ``AS
00020 // IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00021 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00022 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00023 // NAMESPACE EWALENA AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
00024 // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00025 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00026 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00027 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
00028 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00029 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
00030 // OF THE POSSIBILITY OF SUCH DAMAGE.
00031 //
00032 // The views and conclusions contained in the software and
00033 // documentation are those of the authors and should not be
00034 // interpreted as representing official policies, either expressed or
00035 // implied, of the namespace ewalena authors.
00036 // -------------------------------------------------------------------
00037 
00038 #ifndef __ewalena_solver_control_h
00039 #define __ewalena_solver_control_h
00040 
00041 #ifdef EWALENA_HAVE_CONFIG_H
00042 #include <ewalena/base/config.h>
00043 #endif
00044 
00045 #include <cassert>
00046 
00047 namespace ewalena 
00048 {
00049 
00065   template <typename ValueType = double>
00066     class SolverControl
00067     {
00068 
00069     public:
00070 
00074     SolverControl (const unsigned int max_n_iterations,
00075                    const double       max_tolerance);
00076     
00080     ~SolverControl ();
00081     
00085     enum State 
00086     {
00087       /* Nothing happening / no change. */
00088       null = 0,
00089 
00090       /* Solver has converged. */
00091       pass,
00092 
00093       /* Solver has not converged. */
00094       fail
00095     };
00096 
00100     State solver_state ();
00101     
00107     State check (const unsigned int n_iterations,
00108                  const ValueType    tolerance);
00109     
00114     unsigned int max_n_iterations () const;
00115 
00119     ValueType max_tolerance () const;
00120     
00125     unsigned int n_iterations () const;
00126     
00131     ValueType tolerance () const;
00132 
00133     protected:
00134 
00140     unsigned int max_n_iterations_;
00141     
00148     unsigned int n_iterations_;
00149     
00154     ValueType max_tolerance_;
00155     
00160     ValueType tolerance_;
00161     
00165     State solver_state_;
00166 
00167     }; /* SolverControl */
00168 
00169 } /* namespace ewalena */
00170 
00171 #endif /* __ewalena_eigensolver_h */
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines