Name | Description |
---|---|
Examples | Examples |
Cell | Single-cell PEMFC |
SimpleCell | Simplified model of a single-cell PEMFC |
This is a model of a single-cell proton exchange membrane fuel cell (PEMFC). An overview of a PEMFC is given in the top-level documentation of FCSys.
Extends from FCSys.Icons.Cell (Icon for a cell).
Type | Name | Default | Description |
---|---|---|---|
Geometry | |||
Length | L_y[:] | {8}*U.cm | Lengths of segments in the y direction [L] |
Length | L_z[:] | {6.25}*U.cm | Lengths of segments in the z direction [L] |
Layers | |||
AnFP | anFP | redeclare Regions.AnFPs.AnFP… | Anode flow plate |
AnGDL | anGDL | redeclare Regions.AnGDLs.AnG… | Anode gas diffusion layer |
AnCL | anCL | redeclare Regions.AnCLs.AnCL… | Anode catalyst layer |
PEM | PEM | redeclare Regions.PEMs.PEM P… | Proton exchange membrane |
CaCL | caCL | redeclare Regions.CaCLs.CaCL… | Cathode catalyst layer |
CaGDL | caGDL | redeclare Regions.CaGDLs.CaG… | Cathode gas diffusion layer |
CaFP | caFP | redeclare Regions.CaFPs.CaFP… | Cathode flow plate |
Assumptions | |||
Boolean | inclLiq | true | Include liquid H2O |
Boolean | inclN2 | true | Include N2 |
Type | Name | Description |
---|---|---|
BoundaryBus | an[n_y, n_z] | Interface with the anode end plate |
BoundaryBus | ca[n_y, n_z] | Interface with the cathode end plate |
BoundaryBus | anNegative[anFP.n_x, n_z] | Negative anode fluid port |
BoundaryBus | caNegative[caFP.n_x, n_z] | Negative cathode fluid port |
BoundaryBus | anPositive[anFP.n_x, n_z] | Positive anode fluid port |
BoundaryBus | caPositive[caFP.n_x, n_z] | Positive cathode fluid port |
model Cell "Single-cell PEMFC" extends FCSys.Icons.Cell; // Geometric parameters parameter Q.Length L_y[:]={8}*U.cm "Lengths of segments in the y direction"; parameter Q.Length L_z[:]={6.25}*U.cm "Lengths of segments in the z direction"; final parameter Integer n_y=size(L_y, 1) "Number of subregions in the y direction"; final parameter Integer n_z=size(L_z, 1) "Number of subregions in the z direction"; // Assumptions parameter Boolean inclLiq=true "Include liquid H2O"; parameter Boolean inclN2=true "Include N2"; Connectors.BoundaryBus an[n_y, n_z] "Interface with the anode end plate"; Connectors.BoundaryBus ca[n_y, n_z] "Interface with the cathode end plate"; Connectors.BoundaryBus anNegative[anFP.n_x, n_z] "Negative anode fluid port"; Connectors.BoundaryBus caNegative[caFP.n_x, n_z] "Negative cathode fluid port"; Connectors.BoundaryBus anPositive[anFP.n_x, n_z] "Positive anode fluid port"; Connectors.BoundaryBus caPositive[caFP.n_x, n_z] "Positive cathode fluid port"; replaceable Regions.AnFPs.AnFP anFP( final L_y=L_y, final L_z=L_z, subregions(liquid(each inclH2O=inclLiq))) "Anode flow plate"; replaceable Regions.AnGDLs.AnGDL anGDL( final L_y=L_y, final L_z=L_z, subregions(liquid(each inclH2O=inclLiq))) "Anode gas diffusion layer"; replaceable Regions.AnCLs.AnCL anCL( final L_y=L_y, final L_z=L_z, subregions(liquid(each inclH2O=inclLiq))) "Anode catalyst layer"; replaceable Regions.PEMs.PEM PEM(final L_y=L_y, final L_z=L_z) "Proton exchange membrane"; replaceable Regions.CaCLs.CaCL caCL( final L_y=L_y, final L_z=L_z, subregions(gas(each inclN2=inclN2), liquid(each inclH2O=inclLiq))) "Cathode catalyst layer"; replaceable Regions.CaGDLs.CaGDL caGDL( final L_y=L_y, final L_z=L_z, subregions(gas(each inclN2=inclN2), liquid(each inclH2O=inclLiq))) "Cathode gas diffusion layer"; replaceable Regions.CaFPs.CaFP caFP( final L_y=L_y, final L_z=L_z, subregions(gas(each inclN2=inclN2), liquid(each inclH2O=inclLiq))) "Cathode flow plate"; equation // Internal connections (between layers) connect(anFP.xPositive, anGDL.xNegative); connect(anGDL.xPositive, anCL.xNegative); connect(anCL.xPositive, PEM.xNegative); connect(PEM.xPositive, caCL.xNegative); connect(caCL.xPositive, caGDL.xNegative); connect(caGDL.xPositive, caFP.xNegative); // External connections connect(an, anFP.xNegative); connect(anFP.yNegative, anNegative); connect(anFP.yPositive, anPositive); connect(caFP.xPositive, ca); connect(caFP.yNegative, caNegative); connect(caFP.yPositive, caPositive); // Note: This model must be marked as structurally incomplete to pass the // check in Dymola 2014. end Cell;
This is a model of a single-cell proton exchange membrane fuel cell (PEMFC). The catalyst layers and gas diffusion layers are integrated on each side to reduce the complexity of the model. All the phases are assumed to have the same temperature in each layer. An overview of a PEMFC is given in the top-level documentation of FCSys.
Extends from FCSys.Icons.Cell (Icon for a cell).
Type | Name | Default | Description |
---|---|---|---|
Geometry | |||
Length | L_y[:] | {8}*U.cm | Lengths of segments in the y direction [L] |
Length | L_z[:] | {6.25}*U.cm | Lengths of segments in the z direction [L] |
Layers | |||
AnFP | anFP | redeclare Regions.AnFPs.AnFP… | Anode flow plate |
AnCGDL | anCGDL | Anode catalyst and gas diffusion layer | |
PEM | PEM | redeclare Regions.PEMs.PEM P… | Proton exchange membrane |
CaCGDL | caCGDL | Cathode catalyst and gas diffusion layer | |
CaFP | caFP | redeclare Regions.CaFPs.CaFP… | Cathode flow plate |
Assumptions | |||
Boolean | inclLiq | false | Include liquid H2O |
Boolean | inclN2 | true | Include N2 |
Type | Name | Description |
---|---|---|
BoundaryBus | an[n_y, n_z] | Interface with the anode end plate |
BoundaryBus | ca[n_y, n_z] | Interface with the cathode end plate |
BoundaryBus | anNegative[anFP.n_x, n_z] | Negative anode fluid port |
BoundaryBus | caNegative[caFP.n_x, n_z] | Negative cathode fluid port |
BoundaryBus | anPositive[anFP.n_x, n_z] | Positive anode fluid port |
BoundaryBus | caPositive[caFP.n_x, n_z] | Positive cathode fluid port |
model SimpleCell "Simplified model of a single-cell PEMFC" import Modelica.Constants.inf; extends FCSys.Icons.Cell; // Geometric parameters parameter Q.Length L_y[:]={8}*U.cm "Lengths of segments in the y direction"; parameter Q.Length L_z[:]={6.25}*U.cm "Lengths of segments in the z direction"; final parameter Integer n_y=size(L_y, 1) "Number of subregions in the y direction"; final parameter Integer n_z=size(L_z, 1) "Number of subregions in the z direction"; // Assumptions parameter Boolean inclLiq=false "Include liquid H2O"; parameter Boolean inclN2=true "Include N2"; Connectors.BoundaryBus an[n_y, n_z] "Interface with the anode end plate"; Connectors.BoundaryBus ca[n_y, n_z] "Interface with the cathode end plate"; Connectors.BoundaryBus anNegative[anFP.n_x, n_z] "Negative anode fluid port"; Connectors.BoundaryBus caNegative[caFP.n_x, n_z] "Negative cathode fluid port"; Connectors.BoundaryBus anPositive[anFP.n_x, n_z] "Positive anode fluid port"; Connectors.BoundaryBus caPositive[caFP.n_x, n_z] "Positive cathode fluid port"; replaceable Regions.AnFPs.AnFP anFP( final L_y=L_y, final L_z=L_z, subregions( common(each k_Q=0), gas(common(each k_Q=inf), H2(each initEnergy=Init.none, T(each stateSelect=StateSelect.default))), liquid(each inclH2O=inclLiq,H2O(each initEnergy=Init.none,T(each stateSelect=StateSelect.default))))) "Anode flow plate"; FCSys.Regions.AnCLs.AnCGDL anCGDL( final L_y=L_y, final L_z=L_z, subregions(liquid(each inclH2O=inclLiq,H2O(each initEnergy=Init.none, T( each stateSelect=StateSelect.default))))) "Anode catalyst and gas diffusion layer"; replaceable Regions.PEMs.PEM PEM(final L_y=L_y, final L_z=L_z) "Proton exchange membrane"; FCSys.Regions.CaCLs.CaCGDL caCGDL( final L_y=L_y, final L_z=L_z, subregions(liquid(each inclH2O=inclLiq,H2O(each initEnergy=Init.none, T( each stateSelect=StateSelect.default))))) "Cathode catalyst and gas diffusion layer"; replaceable Regions.CaFPs.CaFP caFP( final L_y=L_y, final L_z=L_z, subregions( common(each k_Q=0), gas( common(each k_Q=inf), each inclN2=inclN2, H2O(each initEnergy=Init.none,T(each stateSelect=StateSelect.default))), liquid(each inclH2O=inclLiq,H2O(each initEnergy=Init.none, T(each stateSelect=StateSelect.default))))) "Cathode flow plate"; protected outer Conditions.Environment environment "Environmental conditions"; equation // Internal connections (between layers) connect(anFP.xPositive, anCGDL.xNegative); connect(anCGDL.xPositive, PEM.xNegative); connect(PEM.xPositive, caCGDL.xNegative); connect(caCGDL.xPositive, caFP.xNegative); // External connections connect(an, anFP.xNegative); connect(anFP.yNegative, anNegative); connect(anFP.yPositive, anPositive); connect(caFP.xPositive, ca); connect(caFP.yNegative, caNegative); connect(caFP.yPositive, caPositive); // Note: This model must be marked as structurally incomplete to pass the // check in Dymola 2014. end SimpleCell;