17 #ifndef _FUELCELL__APP_PEMFC_TWOPHASE_SATURATION__H
18 #define _FUELCELL__APP_PEMFC_TWOPHASE_SATURATION__H
48 namespace InitialSolution
77 Vector<double> &v)
const;
84 boost::shared_ptr< FuelCellShop::Geometry::GridBase<dim> >
grid;
130 boost::shared_ptr<FuelCell::ApplicationCore::ApplicationData> ());
151 const std::vector<double>& value_dvar,
152 ParameterHandler& param) {};
163 virtual void initialize(ParameterHandler& param);
169 std::shared_ptr<Function<dim> > initial_function = std::shared_ptr<Function<dim> >());
259 std::vector<std::vector<double> >& ) {};
280 virtual void data_out(
const std::string& filename,
318 boost::shared_ptr< FuelCellShop::Layer::GasDiffusionLayer<dim> >
AGDL;
319 boost::shared_ptr< FuelCellShop::Layer::GasDiffusionLayer<dim> >
CGDL;
320 boost::shared_ptr< FuelCellShop::Layer::MicroPorousLayer<dim> >
AMPL;
321 boost::shared_ptr< FuelCellShop::Layer::MicroPorousLayer<dim> >
CMPL;
322 boost::shared_ptr< FuelCellShop::Layer::CatalystLayer<dim> >
ACL;
323 boost::shared_ptr< FuelCellShop::Layer::CatalystLayer<dim> >
CCL;
324 boost::shared_ptr< FuelCellShop::Layer::MembraneLayer<dim> >
ML;
412 #endif //_FUELCELL__AppPemfcNIThermal_H
virtual void initialize(ParameterHandler ¶m)
Call the other initialize routines from the inherited classes.
FuelCellShop::Material::Hydrogen hydrogen
The anode contains hydrogen, so we need to create an object hydrogen in order to compute viscosity...
Definition: app_pemfc_twophase_saturation.h:313
boost::shared_ptr< FuelCellShop::Geometry::GridBase< dim > > grid
Geometry class object.
Definition: app_pemfc_twophase_saturation.h:84
boost::shared_ptr< FuelCellShop::Layer::MicroPorousLayer< dim > > AMPL
Anode MPL Layer.
Definition: app_pemfc_twophase_saturation.h:320
void _initialize(ParameterHandler ¶m)
Set up how many equations are needed and read in parameters for the parameter handler in order to ini...
boost::shared_ptr< FuelCellShop::Layer::CatalystLayer< dim > > ACL
Anode Catalyst Layer.
Definition: app_pemfc_twophase_saturation.h:322
Class used to store, read from file and define the operating conditions for a fuel cell...
Definition: operating_conditions.h:118
FuelCellShop::Equation::ProtonTransportEquation< dim > proton_transport
ProtonTransportEquation object.
Definition: app_pemfc_twophase_saturation.h:342
FuelCellShop::Equation::FicksTransportEquation< dim > ficks_water_hydrogen
Definition: app_pemfc_twophase_saturation.h:368
AppPemfcTPSaturation(boost::shared_ptr< FuelCell::ApplicationCore::ApplicationData > data=boost::shared_ptr< FuelCell::ApplicationCore::ApplicationData >())
Constructor.
This class is used to solve the physical pheonoma on a complete membrane electrode assembly...
Definition: app_pemfc_twophase_saturation.h:114
This class assembles source terms corresponding to sorption/desorption of water inside the catalyst l...
Definition: sorption_source_terms.h:101
FuelCell::OperatingConditions OC
Operating conditions.
Definition: app_pemfc_twophase_saturation.h:289
boost::shared_ptr< FuelCellShop::Layer::MembraneLayer< dim > > ML
Membrane Layer.
Definition: app_pemfc_twophase_saturation.h:324
virtual void global_dresponses_du(std::vector< FuelCell::ApplicationCore::FEVector > &df_du, const FuelCell::ApplicationCore::FEVector &src)
This class is used to evaluate the sensitivities of all responses that do not require looping over ce...
virtual void cell_residual(FuelCell::ApplicationCore::FEVector &cell_vector, const typename DoFApplication< dim >::CellInfo &cell)
Integration of the rhs of the equations.
This class is used when solving the problem using Newton's method to provide an initial solution...
Definition: app_pemfc_twophase_saturation.h:56
AppPemfcTPSaturationIC(FuelCell::OperatingConditions *OC, boost::shared_ptr< FuelCellShop::Geometry::GridBase< dim > > grid, FuelCell::SystemManagement *system_mgmt)
Constructor.
This class deals with Proton Transport Equation.
Definition: proton_transport_equation.h:132
FuelCellShop::Equation::SorptionSourceTerms< dim > sorption_source_terms
SorptionSourceTerms object.
Definition: app_pemfc_twophase_saturation.h:362
Class used to calculate the current density at the anode catalyst layer.
Definition: response_current_density.h:180
FuelCellShop::Material::WaterVapor water
The cathode/anode contains water vapour, so we need to create an object water in order to compute vis...
Definition: app_pemfc_twophase_saturation.h:298
virtual void bdry_matrix(FuelCell::ApplicationCore::MatrixVector &bdry_matrices, const typename DoFApplication< dim >::FaceInfo &bdry_info)
Assemble local boundary matrix.
Class used to calculate the heat generated due to HOR inside the anode catalyst layer.
Definition: response_reaction_heat.h:284
std::vector< std::string > design_var
Stores the design variable names so that the name can be appended to the .vtk file name...
Definition: app_pemfc_twophase_saturation.h:393
FuelCellShop::Equation::ThermalTransportEquation< dim > thermal_transport
ThermalTransportEquation object.
Definition: app_pemfc_twophase_saturation.h:332
virtual void check_responses()
This class is called by responses to make sure that all responses requested are implemented in either...
Class used to calculate the protonic ohmic heat generated in the proton conducting layers...
Definition: response_ohmic_heat.h:258
FuelCellShop::PostProcessing::ORRReactionHeatResponse< dim > catReactionHeat
Definition: app_pemfc_twophase_saturation.h:385
boost::shared_ptr< FuelCellShop::Layer::MicroPorousLayer< dim > > CMPL
Cathode MPL Layer.
Definition: app_pemfc_twophase_saturation.h:321
This class deals with Electron Transport Equation.
Definition: electron_transport_equation.h:128
This class deals with Thermal Transport Equation.
Definition: thermal_transport_equation.h:187
This class deals with Membrane Water Content Transport Equation.
Definition: lambda_transport_equation.h:128
FuelCellShop::Material::Nitrogen nitrogen
The cathode contains nitrogen as solvent, so we need to create an object nitrogen in order to compute...
Definition: app_pemfc_twophase_saturation.h:308
virtual void declare_parameters(ParameterHandler ¶m)
Declare all parameters that are needed for:
virtual void cell_matrix(FuelCell::ApplicationCore::MatrixVector &cell_matrices, const typename DoFApplication< dim >::CellInfo &cell)
Integration of local bilinear form.
Class used to calculate the amount of water sorbed inside the catalyst layer.
Definition: response_water_sorption.h:106
virtual double evaluate(const FuelCell::ApplicationCore::FEVectors &src)
Post-processing.
This class is created for the objects handed to the mesh loops.
Definition: mesh_loop_info_objects.h:544
This class describes properties of pure oxygen.
Definition: PureGas.h:974
virtual void dirichlet_bc(std::map< unsigned int, double > &boundary_values) const
Member function used to set dirichlet boundary conditions.
FuelCell::OperatingConditions * OC
Operating conditions class object.
Definition: app_pemfc_twophase_saturation.h:81
~AppPemfcTPSaturation()
Destructor.
FuelCellShop::PostProcessing::ElectronOhmicHeatResponse< dim > electronOhmicHeat
Definition: app_pemfc_twophase_saturation.h:381
FuelCellShop::Material::Oxygen oxygen
The cathode contains oxygen, so we need to create an object oxygen in order to compute viscosity...
Definition: app_pemfc_twophase_saturation.h:303
std::vector< MatrixBlock< FullMatrix< double > > > MatrixVector
The matrix vector used in the mesh loops.
Definition: matrix_block.h:102
virtual void data_out(const std::string &filename, const FuelCell::ApplicationCore::FEVectors &src)
Reimplementation of the routine in the base class BaseApplication in namespace AppFrame so that the r...
FuelCellShop::PostProcessing::HORCurrentDensityResponse< dim > HORCurrent
Definition: app_pemfc_twophase_saturation.h:377
This class describes properties of pure nitrogen.
Definition: PureGas.h:1027
Class used to calculate the heat generated due to ORR inside the cathode catalyst layer...
Definition: response_reaction_heat.h:103
std::map< unsigned int, double > boundary_values
Variable to store boundary values, so they only need to be computed once per mesh refinement...
Definition: block_matrix_application.h:321
double time_k
Time constant for sorption isotherm [1/s].
Definition: app_pemfc_twophase_saturation.h:407
This class deals with Liquid Water Saturation Transport Equation.
Definition: saturation_transport_equation.h:120
virtual void global_responses(std::vector< double > &resp, const FuelCell::ApplicationCore::FEVector &sol)
This class is used to evaluate all responses that do not require looping over cells.
FuelCellShop::PostProcessing::HORReactionHeatResponse< dim > anReactionHeat
Definition: app_pemfc_twophase_saturation.h:387
~AppPemfcTPSaturationIC()
Destructor.
std::vector< double > design_var_value
Stores the values of the design variables so that the number can be appended to the ...
Definition: app_pemfc_twophase_saturation.h:396
This class assembles the reaction source terms for all other transport equations, if there's any...
Definition: reaction_source_terms.h:37
virtual void cell_dresponses_dl(std::vector< std::vector< double > > &, const typename DoFApplication< dim >::CellInfo &, const FuelCell::ApplicationCore::FEVector &)
This class is used to evaluate the derivative of all the functionals that require looping over cells ...
Definition: app_pemfc_twophase_saturation.h:241
double l_land
Width of the landing.
Definition: app_pemfc_twophase_saturation.h:402
virtual void global_dresponses_dl(std::vector< std::vector< double > > &df_dl, const FuelCell::ApplicationCore::FEVector &sol)
This class is used to evaluate the sensitivities of all responses that do not require looping over ce...
FuelCellShop::PostProcessing::WaterSorptionResponse< dim > waterSorption
Definition: app_pemfc_twophase_saturation.h:389
IMPORTANT: Add all new solution variables and equations here !
Definition: system_management.h:300
FuelCellShop::Equation::ElectronTransportEquation< dim > electron_transport
ElectronTransportEquation object.
Definition: app_pemfc_twophase_saturation.h:352
FuelCellShop::Equation::ReactionSourceTerms< dim > reaction_source_terms
ReactionSourceTerms object.
Definition: app_pemfc_twophase_saturation.h:357
FuelCellShop::PostProcessing::ORRCurrentDensityResponse< dim > ORRCurrent
Definition: app_pemfc_twophase_saturation.h:375
FuelCellShop::Equation::LambdaTransportEquation< dim > lambda_transport
LambdaTransportEquation object.
Definition: app_pemfc_twophase_saturation.h:347
FuelCell Geometry information class.
Definition: geometry.h:92
Class used to calculate the electronic ohmic heat generated in the electron conducting layers...
Definition: response_ohmic_heat.h:102
FuelCellShop::PostProcessing::SorptionHeatResponse< dim > sorptionHeat
Definition: app_pemfc_twophase_saturation.h:383
void vector_value(const Point< dim > &p, Vector< double > &v) const
This is the member function that computes the value of the initial solution for a given point...
boost::shared_ptr< FuelCellShop::Layer::CatalystLayer< dim > > CCL
Cathode Catalyst Layer.
Definition: app_pemfc_twophase_saturation.h:323
Class used to calculate the heat generated due to sorption of water inside the catalyst layer...
Definition: response_sorption_heat.h:102
FuelCell::SystemManagement * system
Definition: app_pemfc_twophase_saturation.h:86
FuelCellShop::Equation::FicksTransportEquation< dim > ficks_water_nitrogen
Definition: app_pemfc_twophase_saturation.h:366
FuelCellShop::Equation::FicksTransportEquation< dim > ficks_oxygen_nitrogen
Definition: app_pemfc_twophase_saturation.h:364
BlockVector< double > FEVector
The vector class used by applications.
Definition: application_data.h:46
virtual void bdry_residual(FuelCell::ApplicationCore::FEVector &bdry_vector, const typename DoFApplication< dim >::FaceInfo &bdry_info)
Assemble local boundary residual.
boost::shared_ptr< FuelCellShop::Layer::GasDiffusionLayer< dim > > CGDL
Cathhode GDL Layer.
Definition: app_pemfc_twophase_saturation.h:319
The data type used in function calls of Application.
Definition: fe_vectors.h:59
virtual void cell_dresponses_du(std::vector< FuelCell::ApplicationCore::FEVector > &, const typename DoFApplication< dim >::CellInfo &, std::vector< std::vector< double > > &)
This class is used to evaluate the derivative of all the functionals that require looping over cells ...
Definition: app_pemfc_twophase_saturation.h:257
Application handling matrices and assembling the linear system to solve the sensitivity equations...
Definition: optimization_block_matrix_application.h:49
This class deals with Fick's Transport Equation.
Definition: ficks_transport_equation.h:132
This class describes properties of pure hydrogen.
Definition: PureGas.h:1081
FuelCellShop::PostProcessing::ProtonOhmicHeatResponse< dim > protonOhmicHeat
Definition: app_pemfc_twophase_saturation.h:379
double l_channel
Width of the channel.
Definition: app_pemfc_twophase_saturation.h:400
boost::shared_ptr< ApplicationData > data
Object for auxiliary data.
Definition: application_base.h:348
virtual void cell_responses(std::vector< double > &resp, const typename DoFApplication< dim >::CellInfo &info, const FuelCell::ApplicationCore::FEVector &sol)
Compute the value of all objective function and constraints.
virtual void set_parameters(const std::vector< std::string > &name_dvar, const std::vector< double > &value_dvar, ParameterHandler ¶m)
Function called by optimization loop in order to set the values in the ParameterHandler to the new de...
Definition: app_pemfc_twophase_saturation.h:150
FuelCellShop::Equation::SaturationTransportEquation< dim > saturation_transport
SaturationTransportEquation object.
Definition: app_pemfc_twophase_saturation.h:337
virtual void initialize_solution(FEVector &initial_guess, std::shared_ptr< Function< dim > > initial_function=std::shared_ptr< Function< dim > >())
Initialize nonlinear solution.
Class used to calculate the ORR current density and coverages (if provided in the kinetic model) by t...
Definition: response_current_density.h:59
boost::shared_ptr< FuelCellShop::Layer::GasDiffusionLayer< dim > > AGDL
Anode GDL Layer.
Definition: app_pemfc_twophase_saturation.h:318
This class describes properties of pure WaterVapor.
Definition: PureGas.h:1134