|
virtual SolutionMap | compute_current () |
| Main function of the class used to compute the current over the whole agglomerate at the local operating conditions. More...
|
|
virtual std::string | get_name () |
| Return name of class instance, i.e. More...
|
|
virtual double | aux_volume_fraction () |
| MicroScale object may have extra contribution to volume of layer, e.g. More...
|
|
virtual | ~AgglomerateBase () |
|
virtual void | print_properties () |
| Print out key agglomerate information (name, radius, film thickness, porosity). More...
|
|
virtual std::vector< double > | compute_derivative_current () |
| Function to compute the derivative of the current density at the local operating conditions. More...
|
|
virtual bool | has_derivatives () |
| Returns true if the class instance can calculate current density derivatives. More...
|
|
virtual void | set_solution (const std::map< VariableNames, SolutionVariable > &, const VariableNames &, const int &) |
| Function for setting the solution map(reactant concentration, phi_s, phi_m, etc.). More...
|
|
virtual | ~MicroScaleBase () |
| Destructor. More...
|
|
| DAEWrapper () |
| Constructor. More...
|
|
| ~DAEWrapper () |
| Destructor. More...
|
|
double | integrate (double lb, double ub, std::vector< double > &W, std::vector< double > &F) |
| Member function that integrates a solution between a lower and upper bound. More...
|
|
void | get_quadrature_points (double lb, double ub, std::vector< double > &X, std::vector< double > &W, FuelCell::ApplicationCore::DAESolver *prob) |
| Function that obtains the gaussian quadrature points and weights. More...
|
|
void | verbosity (int i) |
| Set the verbosity variable (controls output to screen) More...
|
|
void | DAE_Error (int flag) |
| Indicates error in the solve function. More...
|
|
void | clear_memory () |
|
|
int | cont_tolerance (double start_tol, double end_tol) |
| Function which implements a continuation based on the tolerance. More...
|
|
int | cont_cd () |
| Function which implements a continuation based on lambda - modifying the source terms to scale back the equations. More...
|
|
void | setup_DAE_solver () |
| Setup the variables in the problem required by the DAE Solver. More...
|
|
virtual double | get_film_thickness () |
|
virtual double | get_radius () |
|
void | set_structure () |
| Set the composition and structure of the agglomerate. More...
|
|
| WaterAgglomerate (int verbose=1) |
| Constructors. More...
|
|
| WaterAgglomerate (std::string concrete_name) |
|
virtual void | declare_parameters (ParameterHandler ¶m) const |
|
virtual void | initialize (ParameterHandler ¶m) |
|
double | compute_thickness_agg () |
| Member function to compute the thickness of the agglomerate thin film based on the radius and structure. More...
|
|
virtual double | compute_epsilon_agg () |
| Compute the volume fraction of nafion inside the agglomerate given the catalyst layer ionomer volume fraction , ; size of the agglomerate, ; and, porosity inside the agglomerate, , the necessary ionomer thin film thickness is computed such that the correct volume fractions are obtained. More...
|
|
void | fsub (double &, double[], double[], double[]) |
| Define the DAE function. More...
|
|
void | dfsub (double &, double[], double[], double[]) |
| The Jacobian of fsub. More...
|
|
void | gsub (int &, double[], double &) |
| Define the boundary conditions. More...
|
|
void | dgsub (int &, double[], double[]) |
| The derivatives of the boundary conditions. More...
|
|
void | guess (double &, double[], double[], double[]) |
| The initial guess. More...
|
|
void | setAV (double newAV) |
|
| NumericalAgglomerateBase () |
| Constructor. More...
|
|
| ~NumericalAgglomerateBase () |
| Destructor. More...
|
|
void | update_initial_solution () |
|
void | save_initial_solution () |
|
double | getAV (double location) |
|
bool | use_initial_data (double z[], const double &x) |
|
virtual void | make_thread_safe (ParameterHandler ¶m, unsigned int thread_index) |
|
void | _initialize_film_porosity () |
|
| AgglomerateBase () |
|
void | set_layer (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *_layer) |
|
| MicroScaleBase () |
|
| SphericalAgglomerateGeometry () |
|
virtual double | compute_thickness_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) |
| Member function to compute the thickness of the agglomerate thin film based on the radius and structure. More...
|
|
virtual double | compute_epsilon_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) |
| Compute the volume fraction of nafion inside the agglomerate given the catalyst layer ionomer volume fraction , ; size of the agglomerate, ; and, porosity inside the agglomerate, , the necessary ionomer thin film thickness is computed such that the correct volume fractions are obtained. More...
|
|
virtual double | compute_epsilon_N (const double delta_agg, const double thickness_agg) const |
| Function used to compute the amount of electrolyte in the catalyst layer. More...
|
|
virtual double | compute_depsilonN_dthickness (const double thickness_agg) const |
| Function to compute
This function should only be used to calculate the thin film thickness using Newton's method. More...
|
|
virtual double | compute_depsilonN_depsilon_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) const |
| Function to compute
This function should only be used to calculate the thin film thickness using Newton's method. More...
|
|
virtual double | compute_n (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) const |
| Member function to compute the number of agglomerates. More...
|
|
virtual double | compute_dn_depsilon_agg (FuelCellShop::Layer::MultiScaleCL< deal_II_dimension > *layer) const |
| Compute the derivative of n with respect to the porosity of the agglomerate. More...
|
|
Class that solves a water-filled agglomerate problem in 1D.
This class uses the DAE solver interface to solve the problem using COLDAE (included in the contrib folder) to solve a boundary value problem.
Input parameters
LIST OF INPUT PARAMETERS FOR THE CLASS.
* ...
* subsection MicroScale
* subsection WaterAgglomerateNumerical
* set Relative core charge factor = 0.0 #Factor of ionic charge concentration, fraction of film sulphonic concentration.
* end
* subsection Materials
* subsection Water
* set Oxygen diffusion coefficient [cm^2/s]= 9.19e-5
* set Proton diffusion coefficient [cm^2/s]= 9.2e-5
* set Relative permittivity=60
* end
* end
* end
*
virtual double FuelCellShop::MicroScale::WaterAgglomerate::compute_epsilon_agg |
( |
| ) |
|
|
protectedvirtual |
Compute the volume fraction of nafion inside the agglomerate given the catalyst layer ionomer volume fraction ,
; size of the agglomerate,
; and, porosity inside the agglomerate,
, the necessary ionomer thin film thickness is computed such that the correct volume fractions are obtained.
A Newton loop is used in order to obtain the correct value for the agglomerate porosity,
.
- Note
- compute_thickness_agg and compute_epsilon_agg are mutually exclusive and the selection between using one method or the other depends on the inpu parameter:
* set Constant agglomerate parameter [Thickness | Porosity] = Thickness
* set Agglomerate porosity = 0.25 #specify if Porosity is selected in variable above
* set Thickness of the agglomerate film [nm] = 80 #specify if Thickness is selected in property above
*
Reimplemented in FuelCellShop::MicroScale::HybridAgglomerate.
double FuelCellShop::MicroScale::WaterAgglomerate::compute_thickness_agg |
( |
| ) |
|
|
protected |
Member function to compute the thickness of the agglomerate thin film based on the radius and structure.
For a given ionomer volume fraction,
; size of the agglomerate,
; and, porosity inside the agglomerate,
, the necessary ionomer thin film thickness is computed such that the correct volume fractions are obtained.
A Newton loop is used in order to obtain the correct value for the thickness of the agglomerate film, 
- Note
- compute_thickness_agg and compute_epsilon_agg are mutually exclusive and the selection between using one method or the other depends on the inpu parameter:
* set Constant agglomerate parameter [Thickness | Porosity] = Thickness
* set Agglomerate porosity = 0.25 #specify if Porosity is selected in variable above
* set Thickness of the agglomerate film [nm] = 80 #specify if Thickness is selected in property above
*