quintel / etengine

Calculation engine for the Energy Transition Model
https://energytransitionmodel.com/
MIT License
14 stars 7 forks source link

Incorrect accounting of the CO2 emission costs in operating expenses ex ccs #1381

Closed KoenvanB closed 7 months ago

KoenvanB commented 7 months ago

The method operating_expenses_excluding_ccsseems to be lower than it should be, because the CO2 emission costs are unduly subtracted.

Operating expenses ex ccs are calculated by computing total operating expenses and then subtracting the ccs operating expenses image

CCS operating expenses consist of the variable O&M costs for CCS plus CO2 emission costs image

However, the method variable_operation_and_maintenance_costs only calculates the variable O&M costs based on the total costs per full load hour: image

image

In other words, variable_operation_and_maintenance_costs does not include CO2 emission costs.

As a result, operating_expenses_ex_ccs now consists of fixed and variable O&M costs ex ccs minus the CO2 emission costs.

mabijkerk commented 7 months ago

@KoenvanB the operating_expenses_excluding_ccs subtracts not the operating_expenses_ccs, but the variable_operation_and_maintenance_costs_for_ccs:

def operating_expenses_excluding_ccs
        fetch(:operating_expenses_excluding_ccs) do
          variable_operation_and_maintenance_costs -
            variable_operation_and_maintenance_costs_for_ccs +
            fixed_operation_and_maintenance_costs_per_year
        end
      end

The variable_operation_and_maintenance_costs_for_ccs do not include CO2 emission costs:

def variable_operation_and_maintenance_costs_for_ccs
        fetch(:variable_operation_and_maintenance_costs_for_ccs) do
          return 0.0 if input_capacity.zero?

          typical_input *
            variable_operation_and_maintenance_costs_for_ccs_per_full_load_hour /
            (input_capacity * 3600.0)
        end
      end

Am I missing something here?

KoenvanB commented 7 months ago

Nope, you are right, Mathijs. My bad, not a bug at all 😅 .