| 
    OpenFCST: The open-source Fuel Cell Simulation Toolbox
    
   | 
 
Application class performing a Picard iteration as described in the PicardBase. More...
#include <picard.h>


Public Member Functions | |
| Picard (ApplicationBase &app) | |
| Constructor, receiving the application computing the residual and solving the linear problem.  More... | |
| virtual void | declare_parameters (ParameterHandler ¶m) | 
| Declare the input parameters.  More... | |
| virtual void | initialize (ParameterHandler ¶m) | 
| Read the parameters.  More... | |
| virtual void | solve (FuelCell::ApplicationCore::FEVector &u, const FuelCell::ApplicationCore::FEVectors &in_vectors) | 
| The actual Picard solver.  More... | |
  Public Member Functions inherited from FuelCell::ApplicationCore::PicardBase | |
| PicardBase (ApplicationBase &app) | |
| Constructor, receiving the application computing the residual and solving the linear problem.  More... | |
| void | initialize_initial_guess (BlockVector< double > &dst) | 
| Control object for the Picard iteration.  More... | |
| 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.  More... | |
| virtual double | residual (FuelCell::ApplicationCore::FEVector &dst, const FuelCell::ApplicationCore::FEVectors &rhs) | 
| Returns the L2-norm of the residual and the residual vector in "dst" using the residual function in the ApplicationBase used to initialize the application.  More... | |
  Public Member Functions inherited from FuelCell::ApplicationCore::ApplicationWrapper | |
| ApplicationWrapper (ApplicationBase &app) | |
| Constructor for a derived application.  More... | |
| ~ApplicationWrapper () | |
| Destructor.  More... | |
| virtual void | remesh () | 
| Generate the next mesh depending on the mesh generation parameters.  More... | |
| virtual void | init_vector (FEVector &dst) const | 
| Initialize vector to problem size.  More... | |
| virtual double | residual (FEVector &dst, const FEVectors &src, bool apply_boundaries=true) | 
Compute residual of src and store it into dst.  More... | |
| virtual void | Tsolve (FEVector &dst, const FEVectors &src) | 
Solve the dual system assembled with right hand side rhs and return the result in start.  More... | |
| virtual double | estimate (const FEVectors &src) | 
| Estimate cell-wise errors.  More... | |
| virtual double | evaluate (const FEVectors &src) | 
| Evaluate a functional.  More... | |
| virtual void | grid_out (const std::string &filename) const | 
| virtual void | data_out (const std::string &filename, const FEVectors &src) | 
| Write data in the format specified by the ParameterHandler.  More... | |
| virtual std::string | id () const | 
| Return a unique identification string for this application.  More... | |
| virtual void | notify (const Event &reason) | 
| Add a reason for assembling.  More... | |
  Public Member Functions inherited from FuelCell::ApplicationCore::ApplicationBase | |
| ApplicationBase (boost::shared_ptr< ApplicationData > data=boost::shared_ptr< ApplicationData >()) | |
| Constructor for an application.  More... | |
| ApplicationBase (const ApplicationBase &other) | |
| Copy constructor.  More... | |
| virtual | ~ApplicationBase () | 
| Virtual destructor.  More... | |
| void | print_parameters_to_file (ParameterHandler ¶m, const std::string &file_name, const ParameterHandler::OutputStyle &style) | 
| Print default parameters for the application to a file.  More... | |
| virtual void | start_vector (FEVector &dst, std::string) const | 
| Initialize vector to problem size.  More... | |
| virtual void | grid_out (const std::string &) | 
| Write the mesh in the format specified by the ParameterHandler.  More... | |
| boost::shared_ptr < ApplicationData >  | get_data () | 
| Get access to the protected variable data.  More... | |
| const boost::shared_ptr < ApplicationData >  | get_data () const | 
| Get read-only access to the protected variable data.  More... | |
| virtual void | clear () | 
All true in notifications.  More... | |
| virtual void | clear_events () | 
All false in notifications.  More... | |
| virtual unsigned int | get_solution_index () | 
| Returns solution index.  More... | |
Private Member Functions | |
| void | compute_errors (FEVector &u, FEVector &u_n, FEVector &error, double &abs_error, double &rel_error, double &delta) | 
Private Attributes | |
| bool | underrelaxation | 
| Flag for using adaptive under-relaxation.  More... | |
| double | alpha | 
| Alpha value to be used in the under-relaxation scheme proposed in Durbin and Delemos(2007)  More... | |
| double | gamma_min | 
| Gamma_min value to be used in the under-relaxation scheme proposed in Durbin and Delemos(2007)  More... | |
Additional Inherited Members | |
  Protected Member Functions inherited from FuelCell::ApplicationCore::PicardBase | |
| void | debug_output (const FEVector &sol, const FEVector &update, const FEVector &residual) const | 
| Function used to output any necessary information at each Picard iteration for debugging purposes.  More... | |
  Protected Member Functions inherited from FuelCell::ApplicationCore::ApplicationWrapper | |
| SmartPointer< ApplicationBase > | get_wrapped_application () | 
| Gain access to the inner application.  More... | |
  Protected Member Functions inherited from FuelCell::ApplicationCore::ApplicationBase | |
| void | print_caller_name (const std::string &caller_name) const | 
| Print caller name.  More... | |
  Protected Attributes inherited from FuelCell::ApplicationCore::PicardBase | |
| bool | assemble_now | 
| This flag is set by the function assemble(), indicating that the matrix must be assembled anew upon start.  More... | |
| double | abs_tolerance | 
| Absolute tolerance for the Picard convergence loop.  More... | |
| double | rel_tolerance | 
| Relative tolerance for the Picard convergence loop.  More... | |
| int | maxsteps | 
| Maximu no.  More... | |
| bool | debug_solution | 
| Print updated solution after each step into file.  More... | |
| bool | debug_residual | 
Print Picard residual after each step into file Picard_rNNN?  More... | |
| unsigned int | debug | 
| Write debug output to FcstUtilities::log; the higher the number, the more output.  More... | |
| unsigned int | step | 
| The number of a basic Picard iteration.  More... | |
| double | numIter | 
| Number of Iterations;.  More... | |
| std::vector< unsigned int > | blocks | 
| This vector specifies the blocks of the global solution which are supposed to be treated specially.  More... | |
| unsigned int | n_blocks | 
The total number of blocks.  More... | |
  Protected Attributes inherited from FuelCell::ApplicationCore::ApplicationWrapper | |
| SmartPointer< ApplicationBase > | app | 
| Pointer to the application this one depends upon.  More... | |
  Protected Attributes inherited from FuelCell::ApplicationCore::ApplicationBase | |
| boost::shared_ptr < ApplicationData >  | data | 
| Object for auxiliary data.  More... | |
| Event | notifications | 
| Accumulate reasons for assembling here.  More... | |
Application class performing a Picard iteration as described in the PicardBase.
This class inverts the entire stiffness matrix based on Algorithm 1 described in J.N. Reddy. The iterations for next guess are calculated as follows:
An adaptive underrelaxation method is available with the Picard solver as proposed by Durbin and Delemos[1]. The scheme involves modifying the underrelaxation factor γ with the error. As the iterations proceed the value of γ approaches unity. The expression used to evaluate γ is,
and
where δ is the L_infinity norm of the change in the solution,
In addition if the solution starts to diverge then the parameter γmin is scaled down to minimize divergence.
[1] Durbin, Timothy, and David Delemos. "Adaptive underrelaxation of Picard iterations in ground water models." Groundwater 45.5 (2007): 648-651.
| FuelCell::ApplicationCore::Picard::Picard | ( | ApplicationBase & | app | ) | 
Constructor, receiving the application computing the residual and solving the linear problem.
      
  | 
  private | 
      
  | 
  virtual | 
Declare the input parameters.
Reimplemented from FuelCell::ApplicationCore::PicardBase.
      
  | 
  virtual | 
Read the parameters.
Reimplemented from FuelCell::ApplicationCore::PicardBase.
      
  | 
  virtual | 
The actual Picard solver.
Implements FuelCell::ApplicationCore::PicardBase.
      
  | 
  private | 
Alpha value to be used in the under-relaxation scheme proposed in Durbin and Delemos(2007)
      
  | 
  private | 
Gamma_min value to be used in the under-relaxation scheme proposed in Durbin and Delemos(2007)
      
  | 
  private | 
Flag for using adaptive under-relaxation.
 1.8.5