rl-institut / multi-vector-simulator

Multi-vector Simulation Tool assessing and optimizing Local Energy Systems (LES) for the E-LAND project
GNU General Public License v2.0
21 stars 10 forks source link

Electrolyzer model needs improvement #50

Open smartie2076 opened 4 years ago

smartie2076 commented 4 years ago

The electrolyzer is currently only modelled through a transformer with a fix efficiency. However, it in reality has a minimal operation level (~5% CAP), and below this standby consumption.

How to model the standy mode specifically (while being able to optimize the capacity) is being discussen in the openmod forum: LINK

marc-juanpera commented 4 years ago

We have now two possibilities on the table, both discussed in the openmod forum (linked above).

  1. Use a transformer with fixed efficiency. This option does not take into account the 5% consumption in standby mode (when the electrolyser is not operating).
  2. Use a transformer with fixed efficiency and a sink, together with a constraint that forces a minimum 5% consumption either by the electrolyser and the sink. The constraint can look something like this: image This option gets some nice results if the electrolyser is operating, when operating, almost a 100% of capacity (which in the first tests it does) image

Other options might consider a transformer and a sink that always consumes 5% of the power capacity (without constraint, and therefore overestimating the consumption) or an off-set transformer, which cannot be optimized.

smartie2076 commented 4 years ago

We should discuss this further in the openmod forum, as there are new answers.

smartie2076 commented 4 years ago

I have closed the PR #118 now, as I want the electrolyzer to be implemented differently: Not based on checking the asset´s name only, but rather by defining a new parameter in ´energyConversion.csv´ or by adding a csv that gathers all additional constraints. Also, I am not sure of the introduced constraint:

    def standby_rule(model, t):
        minimum = 0.05 * model.InvestmentFlow.invest[electrolyser, bus_H2] / efficiency
        expr = -minimum
        expr += model.flow[bus_electricity, standby_sink, t]
        expr += model.flow[bus_electricity, electrolyser, t] / 10
        return expr >= 0

    model.stanby_consumption_constraint = po.Constraint(
        model.TIMESTEPS, rule=standby_rule
    )
    return model

As /10 is an experimental and somewhat volatile number that had "the best resulting dispatch". Let us remember this solution, but we need further discussion on this. Especially in the discussion in the openmod forum, where two people are already ready to help us with the issue.

SabineHaas commented 4 years ago

Is @marc-juanpera still in charge of this or should assign somebody else?

smartie2076 commented 4 years ago

No, he is not in charge anymore. We will for now go with a simple transformer, to which two inputs have to be added (water, electricity). Due to issue #186 this has to be simplified currently to only electricity intake.

smartie2076 commented 2 years ago

The electrolzer model is very simplified right now, and the question stays how we can improve this. One way, for now, would be to optimize with the simplified model, but allow a more complex electrolyzer (and, for that matter, any transformer) representation with a designated capacity. Process:

1) Optimize capacity and preliminary dispatch with simplified model (efficiency, potentially multiple in/outputs, marginal costs) 2) Optimize dispatch with capacity from (1). This may not result in the real optimal solution, but a realistic dispatch scenario for the capacity identified in (1).

The idea would be to integrate:

This does not solve the issue on how to integrate standby consumption nor of an efficiency curve.

I see following todos for implementing this in the MVS:

Overall, I would expect that to do this properly, one should plan with 53 hrs of work. This can go faster with more MVS experience (30 hrs), but also take 70 hrs if that knowledge is not really there or if another person has to discuss repeatedly with them.