Code Duplication    Length = 20-24 lines in 2 locations

src/oemof/solph/flows/_investment_flow_block.py 1 location

@@ 1151-1170 (lines=20) @@
1148
1149
        return self.minimum_rule
1150
1151
    def _maximum_investment_constraint(self):
1152
        """Constraint factory for a maximum investment"""
1153
        m = self.parent_block()
1154
1155
        def _max_invest_rule(_):
1156
            """Rule definition for applying a minimum investment"""
1157
            for i, o in self.NON_CONVEX_INVESTFLOWS:
1158
                for p in m.PERIODS:
1159
                    expr = self.invest[i, o, p] <= (
1160
                        m.flows[i, o].investment.maximum[p]
1161
                        * self.invest_status[i, o, p]
1162
                    )
1163
                    self.maximum_rule.add((i, o, p), expr)
1164
1165
        self.maximum_rule = Constraint(
1166
            self.NON_CONVEX_INVESTFLOWS, m.PERIODS, noruleinit=True
1167
        )
1168
        self.maximum_rule_build = BuildAction(rule=_max_invest_rule)
1169
1170
        return self.maximum_rule
1171

src/oemof/solph/flows/_invest_non_convex_flow_block.py 1 location

@@ 363-386 (lines=24) @@
360
361
        return self.minimum_investment
362
363
    def _maximum_invest_constraint(self):
364
        r"""
365
        .. math::
366
            P_{invest} \le P_{invest, max} \cdot Y_{invest, status}
367
        """
368
        m = self.parent_block()
369
370
        def _max_invest_rule(_):
371
            """Rule definition for applying a minimum investment"""
372
            for i, o in self.OFFSET_INVEST_NON_CONVEX_FLOWS:
373
                for p in m.PERIODS:
374
                    expr = (
375
                        self.invest[i, o, p]
376
                        <= m.flows[i, o].investment.maximum[p]
377
                        * self.invest_status[i, o, p]
378
                    )
379
                    self.maximum_investment.add((i, o, p), expr)
380
381
        self.maximum_investment = Constraint(
382
            self.INVEST_NON_CONVEX_FLOWS, m.PERIODS, noruleinit=True
383
        )
384
        self.maximum_rule_build = BuildAction(rule=_max_invest_rule)
385
386
        return self.maximum_investment
387