Feasibility Checks
Each Line exposes three feasibility methods. All return a (bool, str) tuple — True if the constraint is satisfied, plus a descriptive message when it is not.
Ampacity Feasibility
Checks that:
- The conductor has sufficient capacity — ampacity exceeds the target peak current.
- The conductor is not grossly over-designed — ampacity is less than 3× the target peak current.
Both conditions must hold for the check to pass. This dual-bound ensures that candidates that are heavily oversized for the target power requirement are also excluded.
feasible, msg = line.is_ampacity_feasible(current_a=1300)
# (True, '')
feasible, msg = line.is_ampacity_feasible(current_a=1500)
# (False, 'Ampacity 1398 A is not sufficient for peak current 1500 A.')
# From power and voltage
feasible, msg = line.is_ampacity_feasible(power_mw=200, voltage_kv=115)
# (True, '') — 200 MW at 115 kV ≈ 1004 A, within [ampacity/3, ampacity]
Over-designed lines are also flagged
A conductor rated for 1400 A evaluated against a 200 MW / 345 kV target (~335 A) will return False because 1400 > 335 × 3 = 1005. Choose a smaller conductor or a lower voltage for lightly loaded corridors.
Sag Feasibility
Checks that the maximum conductor sag under the given loading does not exceed max_sag_m.
feasible, msg = line.is_sag_feasible(
current_a=1300,
max_sag_m=10,
initial_tension_percentage=0.3,
)
max_sag_m is required
is_sag_feasible requires an explicit max_sag_m argument.
When sag feasibility is evaluated by a project (select_sag_feasible=True), the project uses line_design.max_sag_m. If that field is None, sag feasibility is skipped.
Corona Feasibility
Checks that the operating voltage does not exceed the corona inception voltage.
feasible, msg = line.is_corona_feasible(
structure_config=my_config_ac,
voltage_kv=230,
)
# (True, '')
feasible, msg = line.is_corona_feasible(
structure_config=my_config_ac,
voltage_kv=345,
)
# (False, 'Corona inception voltage 230.2 kV is below the line voltage.')
Feasibility in Projects
Projects automatically apply all three checks before reporting costs. You can control which checks run:
project.select_ampacity_feasible = True # default
project.select_sag_feasible = True # default (requires max_sag_m set on LineDesign)
project.select_corona_feasible = True # default (requires structure_config on project)
Disable a check by setting its flag to False:
Lines that fail any active check are silently excluded from the output. If all candidates fail, the project returns an empty result {}.