OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
electron_transport_equation.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 //
3 // FCST: Fuel Cell Simulation Toolbox
4 //
5 // Copyright (C) 2006-2015 by Energy Systems Design Laboratory, University of Alberta
6 //
7 // This software is distributed under the MIT license
8 // For more information, see the README file in /doc/LICENSE
9 //
10 // - Class: electron_transport_equation.h
11 // - Description: This class describes steady-state electron transport using Ohm's law
12 // - Developers: Marc Secanell, Madhur Bhaiya, Valentin N. Zingan
13 //
14 // ----------------------------------------------------------------------------
15 
16 #ifndef _FCST_FUELCELLSHOP_EQUATION_ELECTRON_TRANSPORT_EQUATION_H_
17 #define _FCST_FUELCELLSHOP_EQUATION_ELECTRON_TRANSPORT_EQUATION_H_
18 
19 // FCST includes
21 #include <layers/channel.h>
24 #include <layers/catalyst_layer.h>
25 #include <layers/solid_layer.h>
26 
27 // STD
28 #include <sstream>
29 #include <string>
30 
31 namespace FuelCellShop
32 {
33  namespace Equation
34  {
127  template<int dim>
129  {
130  public:
131 
133 
134 
138  ElectronTransportEquation(FuelCell::SystemManagement& system_management,boost::shared_ptr< FuelCell::ApplicationCore::ApplicationData > data =
139  boost::shared_ptr< FuelCell::ApplicationCore::ApplicationData >());
140 
144  virtual ~ElectronTransportEquation();
145 
149  virtual void declare_parameters(ParameterHandler& param) const;
150 
158  virtual void set_parameters(const std::vector<std::string>& name_dvar,
159  const std::vector<double>& value_dvar,
160  ParameterHandler& param);
161 
165  virtual void initialize(ParameterHandler& param);
166 
168 
171 
181 
188 
195 
202 
204 
206 
207 
212  virtual void print_equation_info() const;
213 
218  void class_test();
220 
221  protected:
223 
224 
229  std::map<unsigned int, double> electron_current_flux_map;
230 
231 
233 
234 
240 
250 
260 
267 
274 
276 
278 
279 
284  virtual void make_internal_cell_couplings();
285 
287 
289 
290 
295 
297 
299 
300 
305  Tensor<2,dim> sigmaSeff_cell;
306 
314  std::vector< std::vector< Tensor<1,dim> > > grad_phi_phiS_cell;
315 
317 
319 
320 
328  std::vector< std::vector<double> > phi_phiS_bdry;
329 
331 
336  unsigned int last_iter_cell;
337 
342  unsigned int last_iter_bdry;
343 
344  };
345 
346  } // Equation
347 
348 } // FuelCellShop
349 
350 #endif
boost::shared_ptr< FuelCell::ApplicationCore::ApplicationData > data
Data object for the application data to be passed to the equation classes.
Definition: equation_base.h:890
virtual void make_assemblers_bdry_variable_data(const typename FuelCell::ApplicationCore::DoFApplication< dim >::FaceInfo &bdry_info, FuelCellShop::Layer::BaseLayer< dim > *const layer)
This function computes Local CG FEM based assemblers - variable data (boundary) .
Tensor< 2, dim > sigmaSeff_cell
Effective electronic conductivity, [S/cm], of the cell.
Definition: electron_transport_equation.h:305
ElectronTransportEquation(FuelCell::SystemManagement &system_management, boost::shared_ptr< FuelCell::ApplicationCore::ApplicationData > data=boost::shared_ptr< FuelCell::ApplicationCore::ApplicationData >())
Constructor.
virtual void set_parameters(const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler &param)
Set parameters using the parameter file, in order to run parametric/optimization studies.
virtual void assemble_cell_matrix(FuelCell::ApplicationCore::MatrixVector &cell_matrices, const typename FuelCell::ApplicationCore::DoFApplication< dim >::CellInfo &cell_info, FuelCellShop::Layer::BaseLayer< dim > *const layer)
Assemble local cell matrix.
FuelCell::SystemManagement * system_management
Pointer to the external YourApplication&lt;dim&gt;::system_management object.
Definition: equation_base.h:798
std::vector< std::vector< double > > phi_phiS_bdry
shape functions.
Definition: electron_transport_equation.h:328
virtual void print_equation_info() const
The function printing out the equations info.
virtual void declare_parameters(ParameterHandler &param) const
Declare parameters.
virtual void assemble_bdry_matrix(FuelCell::ApplicationCore::MatrixVector &bdry_matrices, const typename FuelCell::ApplicationCore::DoFApplication< dim >::FaceInfo &bdry_info, FuelCellShop::Layer::BaseLayer< dim > *const layer)
Assemble local boundary matrix.
virtual void make_assemblers_generic_constant_data()
This function computes Local CG FEM based assemblers - constant data (generic).
virtual void make_assemblers_cell_variable_data(const typename FuelCell::ApplicationCore::DoFApplication< dim >::CellInfo &cell_info, FuelCellShop::Layer::BaseLayer< dim > *const layer)
This function computes Local CG FEM based assemblers - variable data (cell) .
This class deals with Electron Transport Equation.
Definition: electron_transport_equation.h:128
void class_test()
This member function creates an object of its own type and runs test to diagnose if there are any pro...
unsigned int last_iter_cell
Variable used to store the index in cell_info-&gt;global_data of the previous Newton solution The soluti...
Definition: electron_transport_equation.h:336
virtual void initialize(ParameterHandler &param)
Initialize parameters.
This class is created for the objects handed to the mesh loops.
Definition: mesh_loop_info_objects.h:544
std::vector< MatrixBlock< FullMatrix< double > > > MatrixVector
The matrix vector used in the mesh loops.
Definition: matrix_block.h:102
std::vector< std::vector< Tensor< 1, dim > > > grad_phi_phiS_cell
shape function gradients.
Definition: electron_transport_equation.h:314
virtual void assemble_cell_residual(FuelCell::ApplicationCore::FEVector &cell_rhs, const typename FuelCell::ApplicationCore::DoFApplication< dim >::CellInfo &cell_info, FuelCellShop::Layer::BaseLayer< dim > *const layer)
Assemble local cell residual.
unsigned int last_iter_bdry
Variable used to store the index in bdry_info-&gt;global_data of the previous Newton solution The soluti...
Definition: electron_transport_equation.h:342
std::map< unsigned int, double > electron_current_flux_map
std::map&lt; unsigned int, double &gt; container for details regarding Galvanostatic boundary conditions...
Definition: electron_transport_equation.h:229
virtual void make_internal_cell_couplings()
This function fills out internal_cell_couplings.
This is the base class used for all Equation classes.
Definition: equation_base.h:160
IMPORTANT: Add all new solution variables and equations here !
Definition: system_management.h:300
virtual void assemble_bdry_residual(FuelCell::ApplicationCore::FEVector &bdry_rhs, const typename FuelCell::ApplicationCore::DoFApplication< dim >::FaceInfo &bdry_info, FuelCellShop::Layer::BaseLayer< dim > *const layer)
Assemble local boundary residual.
This simple structure stores certain information regarding a particular variable for the equation (al...
Definition: equation_auxiliaries.h:51
virtual void make_assemblers_cell_constant_data(const typename FuelCell::ApplicationCore::DoFApplication< dim >::CellInfo &cell_info)
This function computes Local CG FEM based assemblers - constant data (cell) and allocates the memor...
BlockVector< double > FEVector
The vector class used by applications.
Definition: application_data.h:46
VariableInfo phi_s
VariableInfo structure corresponding to &quot;electronic_electrical_potential&quot;.
Definition: electron_transport_equation.h:294
Virtual class used to characterize a generic layer interface.
Definition: base_layer.h:58
virtual void make_assemblers_bdry_constant_data(const typename FuelCell::ApplicationCore::DoFApplication< dim >::FaceInfo &bdry_info)
This function computes Local CG FEM based assemblers - constant data (boundary) and allocates the m...