OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
AppFrame::Newton3pp Class Reference

Application class performing Newton's iteration. More...

#include <newton_w_3pp.h>

Inheritance diagram for AppFrame::Newton3pp:
Inheritance graph
[legend]
Collaboration diagram for AppFrame::Newton3pp:
Collaboration graph
[legend]

Public Member Functions

 Newton3pp (ApplicationBase &app)
 
virtual void solve (AppFrame::FEVector &u, const AppFrame::FEVectors &in_vectors)
 The actual Newton solver.
 
- Public Member Functions inherited from AppFrame::newtonBase
 newtonBase (ApplicationBase &app)
 Constructor, receiving the application computing the residual and solving the linear problem.
 
virtual void assemble ()
 Instead of assembling, this function only sets a flag, such that the inner application will be required to assemble a new derivative matrix next time solve() is called.
 
virtual double residual (AppFrame::FEVector &dst, const AppFrame::FEVectors &rhs)
 
virtual void declare_parameters (ParameterHandler &param)
 Declare the input parameters.
 
void _initialize (ParameterHandler &param)
 Read the parameters local to newtonBase.
 
virtual void initialize (ParameterHandler &param)
 Read the parameters.
 
double threshold (double new_value)
 Set the maximal residual reduction allowed without triggering assembling in the next step.
 
void initialize_initial_guess (BlockVector< double > &dst)
 Control object for the Newton iteration.
 
- Public Member Functions inherited from AppFrame::ApplicationCopy
 ApplicationCopy (ApplicationBase &ex_app)
 Constructor for a derived application.
 
 ~ApplicationCopy ()
 
virtual void remesh ()
 Generates the next mesh depending on the mesh generation parameters.
 
virtual void init_vector (FEVector &dst) const
 Initialize vector to problem size.
 
virtual void start_vector (FEVector &dst, std::string caller) const
 Initialize vector to problem size.
 
virtual void Tsolve (FEVector &start, const FEVectors &rhs)
 Solve the dual system assembled with right hand side rhs and return the result in start.
 
virtual double estimate (const FEVectors &src)
 Error estimation.
 
virtual double evaluate (const FEVectors &src)
 Evaluate whatever the simulation was made for.
 
virtual void grid_out (const std::string &filename) const
 Write the mesh in the format specified by the ParameterHandler.
 
virtual void data_out (const std::string &filename, const FEVectors &src)
 Write data in the format specified by the ParameterHandler.
 
virtual std::string id () const
 Return a unique identification string for this application.
 
virtual void notify (const Event &reason)
 Add a reason for assembling.
 
- Public Member Functions inherited from AppFrame::ApplicationBase
 ApplicationBase (boost::shared_ptr< ApplicationData > ex_data=boost::shared_ptr< ApplicationData >())
 Constructor for an application.
 
 ApplicationBase (const ApplicationBase &other)
 Copy constructor.
 
virtual ~ApplicationBase ()
 Virtual destructor.
 
void print_parameters_to_file (ParameterHandler &param, const std::string &file_name, const ParameterHandler::OutputStyle &style)
 Print default parameters for the application to a file.
 
virtual double residual (FEVector &dst, const FEVectors &src, bool apply_boundaries=true)
 Compute residual of src and store it into dst.
 
virtual void data_out (const std::string &filename, const FEVectors &src, const std::vector< std::string >)
 
boost::shared_ptr
< ApplicationData
get_data ()
 Get access to the protected variable data.
 
const boost::shared_ptr
< ApplicationData
get_data () const
 Get read-only access to the protected variable data.
 
virtual void clear ()
 Reset the application class such that a call to initialize() is possible again and will produce the same result as if the object was fresh.
 
void clear_events ()
 Clear all notifications.
 

Static Public Attributes

static const AppFrame::Event bad_derivative
 
- Static Public Attributes inherited from AppFrame::newtonBase
static const AppFrame::Event bad_derivative
 The Event set by Jason if convergence is becoming bad and a new matrix should be assembled.
 

Private Member Functions

double sum_of_squares (double residual_norm)
 
double three_point_step (int line_search_iterations, double lambda_current, double lambda_previous, double mf_original, double mf_current, double mf_previous)
 Merit Function.
 
bool armijo (double step_length, double residual_norm, double new_residual_norm)
 determines step size by three point parabolic function
 

Private Attributes

double max_reduction_factor
 Convergance criterion.
 
double min_reduction_factor
 
double alpha
 
int step
 

Additional Inherited Members

- Public Attributes inherited from AppFrame::newtonBase
ReductionControl control
 Control object for the Newton iteration.
 
double numIter
 
- Protected Member Functions inherited from AppFrame::ApplicationBase
void print_caller_name (const std::string &caller_name) const
 Print caller name.
 
- Protected Attributes inherited from AppFrame::newtonBase
ApplicationResidual default_residual
 Default residual object if the function ApplicationBase::residual() shoud be used.
 
SmartPointer< const Residualcompute_residual
 The Residual object.
 
bool assemble_now
 This flag is set by the function assemble(), indicating that the matrix must be assembled anew upon start.
 
double assemble_threshold
 Threshold for re-assembling matrix.
 
bool debug_solution
 Print updated solution after each step into file Newton_uNNN?
 
bool debug_update
 Print Newton update after each step into file Newton_dNNN?
 
bool debug_residual
 Print Newton residual after each step into file Newton_rNNN?
 
unsigned int debug
 Write debug output to #deallog; the higher the number, the more output.
 

Detailed Description

Application class performing Newton's iteration.

At each iteration a line search is performed using XX algorithm to enhance robustness of the algorithm and to improve convergence to a global solution. This class is based on the class Newton on AppFrame developed by Guido Kanschat

Author
Jason Boisvert, 2009

Constructor & Destructor Documentation

AppFrame::Newton3pp::Newton3pp ( ApplicationBase app)

Member Function Documentation

bool AppFrame::Newton3pp::armijo ( double  step_length,
double  residual_norm,
double  new_residual_norm 
)
private

determines step size by three point parabolic function

virtual void AppFrame::Newton3pp::solve ( AppFrame::FEVector u,
const AppFrame::FEVectors in_vectors 
)
virtual

The actual Newton solver.

Reimplemented from AppFrame::newtonBase.

double AppFrame::Newton3pp::sum_of_squares ( double  residual_norm)
private
double AppFrame::Newton3pp::three_point_step ( int  line_search_iterations,
double  lambda_current,
double  lambda_previous,
double  mf_original,
double  mf_current,
double  mf_previous 
)
private

Merit Function.

Member Data Documentation

double AppFrame::Newton3pp::alpha
private
const AppFrame::Event AppFrame::Newton3pp::bad_derivative
static
double AppFrame::Newton3pp::max_reduction_factor
private

Convergance criterion.

double AppFrame::Newton3pp::min_reduction_factor
private
int AppFrame::Newton3pp::step
private

The documentation for this class was generated from the following file: