Overview
Performs comprehensive cable sizing for three-phase circuits per NEC 2020 (NFPA 70). The calculator verifies a user-selected conductor against two independent checks: ampacity adequacy (with all NEC correction and adjustment factors applied) and voltage drop compliance.
The calculation covers:
- Load current from real power (kW with power factor) or apparent power (kVA)
- Continuous load demand — 125% rule per NEC 210.19 / 215.2
- Base ampacity from NEC Table 310.15(B)(16) for copper and aluminium conductors at 60°C, 75°C, and 90°C
- Ambient temperature correction per NEC Table 310.15(B)(2)(a)
- Conductor bundling/grouping adjustment per NEC Table 310.15(B)(3)(a)
- Termination temperature limits per NEC 110.14
- Three-phase voltage drop using NEC Chapter 9, Table 8 resistance values
Input Parameters
Load Parameters
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
load_type |
Enum: real_power / apparent_power | real_power | — | Real power (kW with power factor) or Apparent power (kVA) |
power |
Number | 100 | 0.1 – 100,000 | Load power in kW or kVA (depending on load type) |
voltage |
Enum | 480 V | 100 – 15,000 V | Three-phase line-to-line voltage (208, 240, 277, 380, 400, 415, 440, 460, 480, 575, 600, 690, 2400, 4160, 12470, 13800) |
power_factor |
Number | 0.90 | 0.5 – 1.0 | Power factor cos φ (hidden when load type is apparent_power) |
is_continuous |
Boolean | True | — | Whether the load runs for 3+ hours (triggers 125% sizing per NEC 210.19 / 215.2) |
Conductor Parameters
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
conductor_size |
Enum | 2/0 | 14 AWG – 2000 kcmil | Phase conductor size (AWG or kcmil) from NEC ampacity tables |
conductor_material |
Enum: Cu / Al | Cu | — | Conductor material — copper or aluminium |
conductor_temp |
Enum: 60 / 75 / 90 °C | 75 | — | Insulation temperature rating (determines NEC table column) |
termination_temp |
Enum: 60 / 75 / 90 °C | 75 | — | Equipment lug/termination temperature rating (NEC 110.14 limit) |
Installation Parameters
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
ambient_temp |
Enum | 30 °C | 21 – 80 °C | Ambient or ground temperature for derating (reference: 30°C) |
num_current_carrying_conductors |
Integer | 3 | 1 – 50 | Number of current-carrying conductors in raceway/cable (for bundling adjustment) |
cable_length |
Number | 100 ft | 1 – 10,000 ft | One-way cable run length in feet |
Design Criteria
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
max_voltage_drop |
Number | 3.0% | 1.0 – 10.0% | Design limit for voltage drop (NEC recommends 3% for branch circuits, 5% total for feeder + branch) |
Output Results
| Output | Unit | Description |
|---|---|---|
load_current |
A | Calculated full-load current from power and voltage |
continuous_factor |
— | Continuous load multiplier (1.25 if continuous, 1.0 if not) |
required_ampacity |
A | Required conductor ampacity after continuous adjustment \(I_{req} = I_{load} \times f_{cont}\) |
base_ampacity |
A | Ampacity from NEC Table 310.15(B)(16) for the selected conductor temperature column |
effective_ampacity |
A | Base ampacity capped by termination temperature limit (NEC 110.14) |
ambient_factor |
— | Ambient temperature correction factor from NEC Table 310.15(B)(2)(a) |
bundling_factor |
— | Conductor count adjustment factor from NEC Table 310.15(B)(3)(a) |
adjusted_ampacity |
A | Final ampacity after all corrections \(I_{adj} = I_{eff} \times f_{amb} \times f_{bundle}\) |
ampacity_check_pass |
Boolean | Whether \(I_{adj} \geq I_{req}\) |
ampacity_margin |
A | Spare ampacity \(I_{adj} - I_{req}\) (positive = adequate) |
resistance_per_1000ft |
Ω/1000 ft | Conductor DC resistance at 75°C from NEC Chapter 9, Table 8 |
resistance_oneway |
Ω | One-way conductor resistance for the given cable length |
voltage_drop |
V | Three-phase voltage drop in volts |
voltage_drop_percent |
% | Voltage drop as percentage of supply voltage |
voltage_drop_check_pass |
Boolean | Whether \(V_{d\%} \leq V_{d,max\%}\) |
all_checks_pass |
Boolean | True only if both ampacity and voltage drop checks pass |
status |
text | “PASS”, “FAIL - Insufficient ampacity”, or “FAIL - Excessive voltage drop” |
Formulas
Load Current (Real Power)
Where \(P\) is load power in kW, \(V_{LL}\) is line-to-line voltage,
and \(\cos\phi\) is the power factor. Used when
load_type = real_power.
Load Current (Apparent Power)
Where \(S\) is apparent power in kVA. Used when
load_type = apparent_power.
Continuous Load Demand (125% Rule)
Where \(f_{cont} = 1.25\) for continuous loads (≥3 hours) per NEC 210.19 and 215.2, or \(f_{cont} = 1.0\) for non-continuous loads.
Termination Temperature Limit (NEC 110.14)
The effective ampacity is taken from the NEC Table 310.15(B)(16) column corresponding to the lower of the conductor insulation rating and the equipment termination rating. For circuits ≤100 A or 14–1 AWG, NEC 110.14(C)(1)(a) requires using the 60°C column unless equipment is listed for higher temperatures.
Ambient Temperature Correction
Reference ambient temperature is 30°C. The correction factor is 1.00 at 30°C and decreases as the ambient temperature rises. For example, at 40°C with 75°C-rated conductors, \(f_{amb} = 0.91\).
Conductor Bundling Adjustment
Where \(N_{ccc}\) is the number of current-carrying conductors in the raceway or cable.
| Conductors | Factor |
|---|---|
| 1 – 3 | 1.00 (100%) |
| 4 – 6 | 0.80 (80%) |
| 7 – 9 | 0.70 (70%) |
| 10 – 20 | 0.50 (50%) |
| 21 – 30 | 0.45 (45%) |
| 31 – 40 | 0.40 (40%) |
| 41+ | 0.35 (35%) |
Adjusted Ampacity
The final derated ampacity of the conductor after applying all correction and adjustment factors.
Ampacity Compliance Check
One-Way Conductor Resistance
Where \(R_{1000}\) is the DC resistance in Ω/1000 ft at 75°C from NEC Chapter 9, Table 8, and \(L\) is the one-way cable length in feet.
Voltage Drop (Three-Phase)
The actual load current \(I_{load}\) is used (not the 125%-adjusted value), as voltage drop is a running-condition calculation.
Voltage Drop Percentage
Voltage Drop Compliance Check
Key Lookup Tables
Copper Ampacities — NEC Table 310.15(B)(16) (excerpt)
| Size (AWG/kcmil) | 60°C (A) | 75°C (A) | 90°C (A) |
|---|---|---|---|
| 14 | 15 | 20 | 25 |
| 12 | 20 | 25 | 30 |
| 10 | 30 | 35 | 40 |
| 8 | 40 | 50 | 55 |
| 6 | 55 | 65 | 75 |
| 4 | 70 | 85 | 95 |
| 2 | 95 | 115 | 130 |
| 1/0 | 125 | 150 | 170 |
| 2/0 | 145 | 175 | 195 |
| 3/0 | 165 | 200 | 225 |
| 4/0 | 195 | 230 | 260 |
| 250 | 215 | 255 | 290 |
| 350 | 260 | 310 | 350 |
| 500 | 320 | 380 | 430 |
Aluminium Ampacities — NEC Table 310.15(B)(16) (excerpt)
| Size (AWG/kcmil) | 60°C (A) | 75°C (A) | 90°C (A) |
|---|---|---|---|
| 12 | 15 | 20 | 25 |
| 10 | 25 | 30 | 35 |
| 8 | 30 | 40 | 45 |
| 6 | 40 | 50 | 55 |
| 4 | 55 | 65 | 75 |
| 2 | 75 | 90 | 100 |
| 1/0 | 100 | 120 | 135 |
| 2/0 | 115 | 135 | 150 |
| 3/0 | 130 | 155 | 175 |
| 4/0 | 150 | 180 | 205 |
| 250 | 170 | 205 | 230 |
| 350 | 210 | 250 | 280 |
| 500 | 260 | 310 | 350 |
Copper Conductor Resistance — NEC Chapter 9, Table 8 (excerpt)
| Size (AWG/kcmil) | R (Ω/1000 ft at 75°C) |
|---|---|
| 14 | 3.07 |
| 12 | 1.93 |
| 10 | 1.21 |
| 8 | 0.764 |
| 6 | 0.491 |
| 4 | 0.308 |
| 2 | 0.194 |
| 1/0 | 0.122 |
| 2/0 | 0.0967 |
| 3/0 | 0.0766 |
| 4/0 | 0.0608 |
| 250 | 0.0515 |
| 350 | 0.0367 |
| 500 | 0.0258 |
Ambient Temperature Correction Factors — NEC Table 310.15(B)(2)(a)
| Ambient (°C) | 60°C | 75°C | 90°C |
|---|---|---|---|
| 21 | 1.08 | 1.04 | 1.04 |
| 25 | 1.08 | 1.04 | 1.04 |
| 30 | 1.00 | 1.00 | 1.00 |
| 35 | 0.91 | 0.94 | 0.96 |
| 40 | 0.82 | 0.88 | 0.91 |
| 45 | 0.71 | 0.82 | 0.87 |
| 50 | 0.58 | 0.75 | 0.82 |
| 55 | 0.41 | 0.67 | 0.76 |
| 60 | 0.00 | 0.58 | 0.71 |
Worked Examples
The 3 examples below are the validation cases for this calculation. Each one was produced by the calculation engine from the inputs shown, every figure was checked against the independent reference quoted at the end of the example, and the same cases are run against every engine build (see validation scorecard, tool fe_calc_cable_size; worked examples for every calculation).
| # | Case | Conductor | Ireq (A) | Iadj (A) | Vd (%) | Governing | Result |
|---|---|---|---|---|---|---|---|
| 1 | 100 kW continuous feeder at 480 V, auto-sized to 2/0 AWG | 2/0 Cu (75/75 °C) | 167.1 | 175.0 | 0.47 | current-carrying capacity | PASS |
| 2 | Check 2/0 AWG copper for 100 kW at 480 V over 100 ft | 2/0 Cu (75/75 °C) | 167.1 | 175.0 | 0.47 | current-carrying capacity | PASS |
| 3 | 65 A motor at 460 V, 42 °C ambient, six conductors in the raceway | 1 Cu (75/75 °C) | 81.2 | 85.3 | 0.74 | current-carrying capacity | PASS |
Example 1 — 100 kW continuous feeder at 480 V, auto-sized to 2/0 AWG
The 125 % continuous-load rule needs 167 A: 1/0 AWG (150 A in the 75 °C column) fails and 2/0 AWG (175 A) is the first Table 310.16 size that passes.
Given: 100 kW at 480 V three-phase, PF 0.9 (default), continuous; copper conductors with 75 °C insulation and 75 °C terminations, 3 current-carrying conductors, ambient 30 °C; route 30.48 m; voltage-drop limit 3 % (default); auto sizing. NEC 2020.
| Load current | Iload = 100 × 1000 / (√3 × 480 × 0.9) = 133.65 A |
|---|---|
| Required ampacity | Ireq = 1.25 × 133.65 = 167.06 A (continuous load, 210.19/215.2) |
| Sizes tried | Table 310.16 sizes checked in order; first to pass both checks: 2/0; one size smaller (1/0) fails current-carrying capacity |
| Base ampacity | Table 310.16, 2/0 AWG/kcmil Cu, 75°C column: 175 A |
| Corrections | famb = 1 (Table 310.15(B)(1), 30 °C → 30 °C row, 75 °C column); fbundle = 1 (Table 310.15(C)(1), 3 current-carrying conductors); Iadj = 175 × 1 × 1 = 175.00 A vs Ireq 167.06 A PASS |
| Voltage drop | L = 30.48 m = 100.00 ft; R = 0.0967 Ω/kft × 100.00 / 1000 = 0.009670 Ω (Chapter 9 Table 8, 75 °C); Vd = √3 × 133.65 × 0.009670 = 2.24 V = 0.466 % of 480 V, limit 3 % PASS |
| Result | 2/2 checks pass → PASS; 2/0 AWG/kcmil Cu; governing: current carrying capacity. NEC voltage drop uses conductor DC resistance only (no reactance or power factor); it understates the drop for large conductors at low power factor. Overcurrent protection (240.4, including 240.4(D) small-conductor limits) is not checked. |
| Reference | Hand calculation: required ampacity 1.25 × 133.65 = 167.06 A; NEC Table 310.16 75 °C Cu column gives 1/0 = 150 A (fails) and 2/0 = 175 A (first to pass, 95.5 % utilised); voltage drop 0.47 % does not govern. (validation case c0027-auto-100kw-480v) |
Example 2 — Check 2/0 AWG copper for 100 kW at 480 V over 100 ft
Check mode of the same feeder: 2/0 AWG carries 167 A against 175 A and drops 0.47 % with the Chapter 9 Table 8 resistance.
Given: 100 kW at 480 V three-phase, PF 0.9 (default), continuous; copper conductors with 75 °C insulation and 75 °C terminations, 3 current-carrying conductors, ambient 30 °C; route 30.48 m; voltage-drop limit 3 % (default); check of 2/0 AWG/kcmil. NEC 2020.
| Load current | Iload = 100 × 1000 / (√3 × 480 × 0.9) = 133.65 A |
|---|---|
| Required ampacity | Ireq = 1.25 × 133.65 = 167.06 A (continuous load, 210.19/215.2) |
| Base ampacity | Table 310.16, 2/0 AWG/kcmil Cu, 75°C column: 175 A |
| Corrections | famb = 1 (Table 310.15(B)(1), 30 °C → 30 °C row, 75 °C column); fbundle = 1 (Table 310.15(C)(1), 3 current-carrying conductors); Iadj = 175 × 1 × 1 = 175.00 A vs Ireq 167.06 A PASS |
| Voltage drop | L = 30.48 m = 100.00 ft; R = 0.0967 Ω/kft × 100.00 / 1000 = 0.009670 Ω (Chapter 9 Table 8, 75 °C); Vd = √3 × 133.65 × 0.009670 = 2.24 V = 0.466 % of 480 V, limit 3 % PASS |
| Result | 2/2 checks pass → PASS; 2/0 AWG/kcmil Cu; governing: current carrying capacity. NEC voltage drop uses conductor DC resistance only (no reactance or power factor); it understates the drop for large conductors at low power factor. Overcurrent protection (240.4, including 240.4(D) small-conductor limits) is not checked. |
| Reference | calcs/test_c0027 test_voltage_drop_2_0_cu_100ft (hand-verified): I = 100 kW / (√3 × 480 × 0.9) = 133.65 A; 125 % continuous = 167.06 A ≤ 175 A (2/0 Cu, 75 °C column); Vd = √3 × 133.65 × 0.0967 Ω/kft × 0.1 kft = 2.24 V = 0.466 %. (validation case c0027-check-2-0-cu-100ft) |
Example 3 — 65 A motor at 460 V, 42 °C ambient, six conductors in the raceway
NEC 430.22 125 % of FLC with both corrections (0.82 ambient × 0.80 adjustment) moves the conductor from 2 AWG to 1 AWG.
Given: 65 A motor FLC at 460 V three-phase, continuous; copper conductors with 75 °C insulation and 75 °C terminations, 6 current-carrying conductors, ambient 42 °C; route 60 m; voltage-drop limit 3 % (default); auto sizing. NEC 2020.
| Load current | Iload = 65.00 A (Table 430.250 full-load current, given) |
|---|---|
| Required ampacity | Ireq = 1.25 × 65.00 = 81.25 A (430.22 motor conductors) |
| Sizes tried | Table 310.16 sizes checked in order; first to pass both checks: 1; one size smaller (2) fails current-carrying capacity |
| Base ampacity | Table 310.16, 1 AWG/kcmil Cu, 75°C column: 130 A |
| Corrections | famb = 0.82 (Table 310.15(B)(1), 42 °C → 45 °C row, 75 °C column); fbundle = 0.8 (Table 310.15(C)(1), 6 current-carrying conductors); Iadj = 130 × 0.82 × 0.8 = 85.28 A vs Ireq 81.25 A PASS |
| Voltage drop | L = 60 m = 196.85 ft; R = 0.154 Ω/kft × 196.85 / 1000 = 0.03032 Ω (Chapter 9 Table 8, 75 °C); Vd = √3 × 65.00 × 0.03032 = 3.41 V = 0.742 % of 460 V, limit 3 % PASS |
| Result | 2/2 checks pass → PASS; 1 AWG/kcmil Cu; governing: current carrying capacity. NEC voltage drop uses conductor DC resistance only (no reactance or power factor); it understates the drop for large conductors at low power factor. Overcurrent protection (240.4, including 240.4(D) small-conductor limits) is not checked. |
| Reference | Hand calculation: NEC 430.22 125 % × 65 A = 81.25 A; 42 °C → 41–45 °C correction row 0.82 (75 °C column), 6 conductors → 80 %; 2 AWG 115 A × 0.656 = 75.4 A < 81.25 A, 1 AWG 130 A × 0.656 = 85.28 A; Vd = √3 × 65 × 0.154 Ω/kft × 0.19685 kft = 3.41 V = 0.742 %. (validation case c0027-motor-65a-460v-42c-6ccc) |
Standards & References
- NFPA 70 (NEC 2020) — National Electrical Code
- NEC Article 210.19 / 215.2 — Continuous load conductor sizing (125% rule)
- NEC Article 110.14(C) — Termination temperature limitations for conductors
- NEC Table 310.15(B)(16) — Allowable ampacities of insulated conductors rated up to and including 2000 V, 60°C through 90°C, not more than three current-carrying conductors in raceway, cable, or earth
- NEC Table 310.15(B)(2)(a) — Ambient temperature correction factors based on 30°C ambient
- NEC Table 310.15(B)(3)(a) — Adjustment factors for more than three current-carrying conductors in a raceway or cable
- NEC Chapter 9, Table 8 — Conductor properties (DC resistance at 75°C)
- NEC Article 240 — Overcurrent protection
- NEC Informational Note (210.19 / 215.2) — Recommended 3% maximum voltage drop for branch circuits, 5% total for feeder plus branch circuit
Tips & Limitations
Tips
- NEC recommends 3% maximum voltage drop for branch circuits and 5% for the total of feeder plus branch circuit combined. These are recommendations, not hard code requirements — but most AHJs enforce them.
- When termination temperature is lower than conductor insulation rating, NEC 110.14(C) requires using the ampacity from the lower temperature column. This is the most commonly missed NEC requirement in practice.
- The 125% continuous load rule applies to conductor sizing and OCPD rating. This calculator handles conductor sizing; verify OCPD sizing separately.
- Aluminium conductors have approximately 1.6× the resistance of copper at the same size — expect higher voltage drop for the same run length.
- For bundled conductors (4+), the derating is significant: 4–6 conductors reduce ampacity to 80%. Consider using separate conduits where possible.
- Motor circuits have additional NEC requirements (Article 430) beyond general conductor sizing — use the dedicated motor cable sizing calculator for motors.
Limitations
- Three-phase only — this calculator assumes balanced three-phase loading. For single-phase circuits, use the appropriate single-phase cable sizing calculator.
- DC resistance only — the voltage drop calculation uses DC resistance from NEC Chapter 9, Table 8. Reactance is not included; for large conductors (≥250 kcmil) or long runs at high frequency, AC impedance should be considered.
- Steady-state only — motor starting inrush current (5–8× FLC) is not considered for voltage drop. This calculator is for running-load conditions.
- Termination temperature is applied as a simple column cap. The detailed NEC 110.14(C) rules for circuits over 100 A are not fully modelled — verify with the AHJ for edge cases.
- Parallel conductors are not supported. For parallel runs, the load current per set must be calculated separately.
- Ambient temperature uses tabulated correction factors — intermediate temperatures are snapped to the nearest table value rather than interpolated.
Developer Guide
Architecture
File layout:
components/c0027_nec_cable_sizing/component.py— Component registration, parameter schema (PARAMETER_SCHEMA), calculator class (NECCableSizingCalculator), equation builder, summary cards builder, QR code SVG generatorcomponents/c0027_nec_cable_sizing/calculations.py— Pure math functions, NEC ampacity tables, resistance tables, correction factor lookups (no Django dependencies)components/c0027_nec_cable_sizing/equations.py— LaTeX equation builder for PDF/HTML report generation usingmulti_replacefromcalcs.core.mathjax_utils
The calculator class NECCableSizingCalculator extends
ElectricalCalculator (from
calcs.core.base_calculator). It delegates all
computation to the pure function
calculate_nec_cable_sizing(data) in
calculations.py.
Lookup tables are defined as Python dicts in
calculations.py:
COPPER_AMPACITY— NEC Table 310.15(B)(16) Cu ampacities [60°C, 75°C, 90°C]ALUMINUM_AMPACITY— NEC Table 310.15(B)(16) Al ampacities [60°C, 75°C, 90°C]COPPER_RESISTANCE— NEC Ch.9 Table 8 Cu DC resistance (Ω/1000 ft at 75°C)ALUMINUM_RESISTANCE— NEC Ch.9 Table 8 Al DC resistance (Ω/1000 ft at 75°C)
Correction factor functions:
get_ambient_correction_factor(ambient_temp, conductor_temp)— returns correction factor from internal lookup keyed by (ambient temperature, conductor temperature rating)get_bundling_adjustment_factor(num_conductors)— returns adjustment factor based on conductor count ranges
Code Paths
Key functions in calculations.py:
| Function | Purpose |
|---|---|
calculate_nec_cable_sizing(data) |
Main entry point — runs all 8 steps and returns full results dict |
get_ambient_correction_factor(ambient_temp, conductor_temp) |
Ambient temperature correction from NEC Table 310.15(B)(2)(a); snaps to nearest tabulated temperature |
get_bundling_adjustment_factor(num_conductors) |
Conductor count adjustment from NEC Table 310.15(B)(3)(a); uses range-based lookup |
Key functions in component.py:
| Function / Class | Purpose |
|---|---|
NECCableSizingCalculator |
Calculator class with validate_parameters()
and calculate() methods |
equation_builder(calculation_results) |
Converts raw equation articles from
equations.py into unified article format for
PDF generation |
summary_cards_builder(calculation_results) |
Builds dashboard summary cards (Load Current, Conductor Size, Overall Result, Voltage Drop) |
register_component(registry) |
Registers calc type nec_cable_sizing with
the component registry |
Key functions in equations.py:
| Function | Purpose |
|---|---|
build_table_data(result) |
Constructs input/output table data list with
input_table and results_table
flags |
build_equations(result) |
Builds list of raw article dicts (info, title, equation, table, signatures) for report generation |
Testing
Running tests:
pytest calcs/components/c0027_nec_cable_sizing/ -v
Worked examples: the examples above are generated from the MCP validation corpus (mcp_public/validation/cases/fe_calc_cable_size/) by
python manage.py generate_help_examples --tool fe_calc_cable_size, which writes
help/_nec_cable_sizing_examples.html; calcs/test_help_examples.py fails if the committed fragment is stale.
How to extend:
- Add new conductor sizes by extending the
COPPER_AMPACITY,ALUMINUM_AMPACITY,COPPER_RESISTANCE, andALUMINUM_RESISTANCEdicts incalculations.py, and theCONDUCTOR_SIZESlist incomponent.py. - Add new ambient temperature rows by extending the
correctionsdict insideget_ambient_correction_factor(). - To support single-phase calculations, add a separate current formula branch (dividing by \(V\) instead of \(\sqrt{3} \times V\)) and a single-phase voltage drop formula (\(V_d = 2 \times I \times R\)).
- To add AC impedance (reactance), introduce reactance lookup tables and modify the voltage drop formula to use \(Z = \sqrt{R^2 + X^2}\) instead of \(R\) alone.
- Write tests covering new lookup values, edge cases (maximum conductor size, extreme ambient temperatures), and boundary conditions (ampacity exactly equal to required).