#!/usr/bin/python import sys cabletype = sys.argv[1] voltage_limit = 11.5 cable_size = { "13": 1.5, "16": 2.5, "32": 6.0, "63": 16, } single_phase = { 1.5: 31, 2.5: 19, 6.0: 7.9, 16: 2.9, } three_phase = { 1.5: 27, 2.5: 16, 6.0: 6.8, 16: 2.5, } drop = 0 if "/3" in cabletype: drop = three_phase[cable_size[cabletype[:-2]]] else: drop = single_phase[cable_size[cabletype]] print("Voltage Drop (per ampere per metre): {}mV/A/m".format(drop)) assumed_load = int(sys.argv[2]) length = int(sys.argv[3]) total_drop = drop * assumed_load * length / 1000 print("Total drop at {}A over {}m is: {}V".format(assumed_load, length, total_drop)) if total_drop > voltage_limit: print("FAILED: VOLTAGE DROP TOO HIGH") max_length = (voltage_limit * 1000) / (drop * assumed_load) print("Maximum length of cable at this load: {}m".format(int(max_length))) r = total_drop / assumed_load pfc = 230 / r print("Estimated PFC is {:.1f}A".format(pfc))