Source code for calliope.backend.pyomo.constraints.network

"""
Copyright (C) 2013-2019 Calliope contributors listed in AUTHORS.
Licensed under the Apache 2.0 License (see LICENSE file).

network.py
~~~~~~~~~~

Transmission/distribution network constraints.

"""

import pyomo.core as po  # pylint: disable=import-error

ORDER = 10  # order in which to invoke constraints relative to other constraint files


def load_constraints(backend_model):
    sets = backend_model.__calliope_model_data['sets']
    run_config = backend_model.__calliope_run_config

    if 'loc_techs_symmetric_transmission_constraint' in sets and run_config['mode'] != 'operate':
        backend_model.symmetric_transmission_constraint = po.Constraint(
            backend_model.loc_techs_symmetric_transmission_constraint,
            rule=symmetric_transmission_constraint_rule
        )


[docs]def symmetric_transmission_constraint_rule(backend_model, loc_tech): """ Constrain e_cap symmetrically for transmission nodes. Transmission techs only. .. container:: scrolling-wrapper .. math:: energy_{cap}(loc1::tech:loc2) = energy_{cap}(loc2::tech:loc1) """ lookup = backend_model.__calliope_model_data['data']['lookup_remotes'] loc_tech_remote = lookup[loc_tech] return backend_model.energy_cap[loc_tech] == backend_model.energy_cap[loc_tech_remote]