Skip to content

OM Structure: Limitations/Bugs/Considerations for Future Dev #91

Description

@elenya-grant

OM Structure: Limitations/Bugs/Considerations for Future Dev

As I'm working on adding in an OpenMDAO version of the electrolyzer models and functionalities, I've had to make decisions that would limit the flexibility of the software in the future. I'm listing them here now so that they can be eventually broken into separate issues and PRs as that work progresses.

Scale-up/Scale-down components

I initially had these components set-up to scale up/down power, and hydrogen (and eventually voltage) from the cluster to stack to cell level. Right now, these basically do the following in setup():

self.add_input(f"P_in", val=0.0, shape_by_conn=True, units="W")
self.add_output(f"P_out", val=0.0, copy_shape="P_in", units="W")
self.add_input(f"H2_in", val=0.0, copy_shape="P_in", units="kg/s")
self.add_output(f"H2_out", val=0.0, copy_shape="P_in", units="kg/s")

This works if we're connecting P_in from the controller and need to scale it down to the cell level, but this does not work if we wanted to use hydrogen from the controller to scale it down to the cell level (because it can't resolve the shape since P_in isn't connected.

One possible solution is to have a scale-up and scale-down component that takes in the variable name and units as an option, so it'd only scale up or down one variable. This component would be used for connecting the controller commands to the simulation blocks. We could then have a scale-up component that scales up multiple variables, this would be used after the simulation block to scale up all the outputs from the cell at the simulate level.

Random thoughts

  • minimize computation time by splitting up the power to current conversion component into separate pieces. Rather than have the spicy.optimize.curve_fit be run for each cluster, we could have the curve coefficients be calculated in one higher-level component, those curve coefficients are passed to the cluster-level components that convert power to current. Should ensure that we have some flexibility though so that eventually clusters could be defined with different designs (ex: one cluster has 5 stacks, another has 1, OR one cluster is alkaline, another cluster is PEM).
  • Dream/Future: Think about grouping so that we could optimize cell parameters per cluster. Like optimize A_cell for each of the five clusters, maybe one cluster gets an optimal A_cell value of 5.0 and another gets an optimal A_cell value of 10.0, etc.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions