webber-energy-group / HOwDI

https://howdi.readthedocs.io/en/develop/
GNU General Public License v3.0
0 stars 0 forks source link

Rework CCS implementation #7

Closed bradenpecora closed 2 years ago

bradenpecora commented 2 years ago

Issue

The current CCS implementation is a bit odd - each CCS technology is 'hard coded'. Thus, implementing a new CCS technology would currently require adding code.

I think it would be useful to rework CCS such that the inputs are in dictionary ( or list / object) form.

Viability/Strategy

I expect this to take in the vicinity of 10-20 hours (just a guess), but I think learning how the variables and constraints work would be useful.

From quickly looking over the optimization code, it seems most constraints involving CCS are linear combinations of CCS parameters. Sums over list (dict) comprehensions seem easy enough to implement.

Currently, each ccs (pyomo) parameter is written as an attribute of m (i.e., m.ccs2_capacity_co2[node], m.can_ccs2[node]). Resolving this issue requires looking into an alternate way of handling that. I will need to look over the Pyomo documentation for the various options.

Because of the way things are currently handled, it would be rather easy to implement one or two more CCS technologies with some boiler-plate style code additions. If that is the case, I would say resolving this issue is not worth the effort. If more than two or three different CCS technologies are to be used by the model, than I think this issue should be considered.

When reworking the CCS, several sets of inputs/outputs from the prior version should be used to cross-validate the new version.

Expected Issues

bradenpecora commented 2 years ago

This CCS strategy is not being used for new production, so fixing this issue may not be a good use of time. I don't think it will take as long as I once thought though.