I'll produce a feature for electrical engineering applications. This calculates prospective fault current and earth fault loop impedance for electrical installations. Fault Loop Calculator import math from dataclasses import dataclass from typing import Optional, Tuple @dataclass class CableData: """Cable parameters for fault loop calculation""" length: float # meters cross_section_phase: float # mm² cross_section_earth: float # mm² material: str # 'copper' or 'aluminum'
# Quick lookup table print("\n📋 QUICK REFERENCE - MAX CABLE LENGTHS (Copper, 230V, 20A MCB Type C)") print("-" * 70) print(f"{'Cable Size (mm²)':<20} {'Max Length (m)':<15} {'Zs (Ω)':<10}") print("-" * 70) fault loop calculator
# Calculate fault loop parameters print("\n📊 FAULT LOOP CALCULATION") print("-" * 40) 20} {'Max Length (m)':<
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}%") 15} {'Zs (Ω)':<
# Compare cold and hot cable conditions cable = CableData(length=50, cross_section_phase=4, cross_section_earth=4, material='copper')
def source_impedance(self, fault_current_available: float = 10000) -> Tuple[float, float]: """ Calculate source impedance from available fault current Args: fault_current_available: Available fault current at supply point (A) Returns: Tuple of (source resistance, source reactance) """ # Typical X/R ratio for LV systems xr_ratio = 0.15 # Low voltage typical value # Source impedance magnitude z_source = self.supply_voltage / fault_current_available # Calculate R and X from X/R ratio r_source = z_source / math.sqrt(1 + xr_ratio**2) x_source = xr_ratio * r_source return r_source, x_source