Fault Loop Calculator |verified| May 2026

# Compare cold and hot cable conditions cable = CableData(length=50, cross_section_phase=4, cross_section_earth=4, material='copper')

print(f"Cold resistance: {r_cold:.4f} Ω") print(f"Hot resistance (fault condition): {r_hot:.4f} Ω") print(f"Resistance increase: {(r_hot/r_cold - 1) * 100:.1f}%") fault loop calculator

def calculate_fault_loop_impedance(self, cables: list[CableData], available_fault_current: float = 10000) -> dict: """ Calculate total earth fault loop impedance (Zs) Args: cables: List of cable segments in the fault loop available_fault_current: Available fault current at origin (A) Returns: Dictionary with fault loop impedance details """ # Source impedance r_source, x_source = self.source_impedance(available_fault_current) total_r = r_source total_x = x_source # Add cable impedances for cable in cables: r_cable, x_cable = self.cable_impedance(cable) total_r += r_cable total_x += x_cable # Total impedance total_z = math.sqrt(total_r**2 + total_x**2) # Prospective fault current fault_current = self.supply_voltage / total_z return { 'total_resistance': round(total_r, 4), 'total_reactance': round(total_x, 4), 'total_impedance': round(total_z, 4), 'prospective_fault_current': round(fault_current, 2), 'source_impedance': round(math.sqrt(r_source**2 + x_source**2), 4), 'source_resistance': round(r_source, 4), 'source_reactance': round(x_source, 4) } # Compare cold and hot cable conditions cable

# Calculate fault loop parameters print("\n📊 FAULT LOOP CALCULATION") print("-" * 40) available_fault_current: float = 10000) -&gt

# Temperature effects print("\n🌡️ TEMPERATURE EFFECTS") print("-" * 40)

multi_cables = [ CableData(length=30, cross_section_phase=16, cross_section_earth=16, material='copper'), CableData(length=20, cross_section_phase=6, cross_section_earth=6, material='copper'), CableData(length=15, cross_section_phase=2.5, cross_section_earth=2.5, material='copper') ]

# Compare cold and hot cable conditions cable = CableData(length=50, cross_section_phase=4, cross_section_earth=4, material='copper')

print(f"Cold resistance: {r_cold:.4f} Ω") print(f"Hot resistance (fault condition): {r_hot:.4f} Ω") print(f"Resistance increase: {(r_hot/r_cold - 1) * 100:.1f}%")

def calculate_fault_loop_impedance(self, cables: list[CableData], available_fault_current: float = 10000) -> dict: """ Calculate total earth fault loop impedance (Zs) Args: cables: List of cable segments in the fault loop available_fault_current: Available fault current at origin (A) Returns: Dictionary with fault loop impedance details """ # Source impedance r_source, x_source = self.source_impedance(available_fault_current) total_r = r_source total_x = x_source # Add cable impedances for cable in cables: r_cable, x_cable = self.cable_impedance(cable) total_r += r_cable total_x += x_cable # Total impedance total_z = math.sqrt(total_r**2 + total_x**2) # Prospective fault current fault_current = self.supply_voltage / total_z return { 'total_resistance': round(total_r, 4), 'total_reactance': round(total_x, 4), 'total_impedance': round(total_z, 4), 'prospective_fault_current': round(fault_current, 2), 'source_impedance': round(math.sqrt(r_source**2 + x_source**2), 4), 'source_resistance': round(r_source, 4), 'source_reactance': round(x_source, 4) }

# Calculate fault loop parameters print("\n📊 FAULT LOOP CALCULATION") print("-" * 40)

# Temperature effects print("\n🌡️ TEMPERATURE EFFECTS") print("-" * 40)

multi_cables = [ CableData(length=30, cross_section_phase=16, cross_section_earth=16, material='copper'), CableData(length=20, cross_section_phase=6, cross_section_earth=6, material='copper'), CableData(length=15, cross_section_phase=2.5, cross_section_earth=2.5, material='copper') ]