Help

NEC Cable Sizing

Jump to section

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)

\[ I_{load} = \frac{P \times 1000}{\sqrt{3} \times V_{LL} \times \cos\phi} \]

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)

\[ I_{load} = \frac{S \times 1000}{\sqrt{3} \times V_{LL}} \]

Where \(S\) is apparent power in kVA. Used when load_type = apparent_power.

Continuous Load Demand (125% Rule)

\[ I_{req} = f_{cont} \times I_{load} \]

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)

\[ I_{eff} = \min\!\big(I_{base,\,T_{cond}},\; I_{base,\,T_{term}}\big) \]

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

\[ f_{amb} = \text{NEC Table 310.15(B)(2)(a) factor for } T_{amb} \text{ and } T_{cond} \]

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

\[ f_{bundle} = \text{NEC Table 310.15(B)(3)(a) factor for } N_{ccc} \]

Where \(N_{ccc}\) is the number of current-carrying conductors in the raceway or cable.

Conductors Factor
1 – 31.00 (100%)
4 – 60.80 (80%)
7 – 90.70 (70%)
10 – 200.50 (50%)
21 – 300.45 (45%)
31 – 400.40 (40%)
41+0.35 (35%)

Adjusted Ampacity

\[ I_{adj} = I_{eff} \times f_{amb} \times f_{bundle} \]

The final derated ampacity of the conductor after applying all correction and adjustment factors.

Ampacity Compliance Check

\[ I_{adj} \geq I_{req} \implies \text{PASS} \]

One-Way Conductor Resistance

\[ R_{oneway} = R_{1000} \times \frac{L}{1000} \]

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)

\[ V_d = \sqrt{3} \times I_{load} \times R_{oneway} \]

The actual load current \(I_{load}\) is used (not the 125%-adjusted value), as voltage drop is a running-condition calculation.

Voltage Drop Percentage

\[ V_{d\%} = \frac{V_d}{V_{LL}} \times 100 \]

Voltage Drop Compliance Check

\[ V_{d\%} \leq V_{d,max\%} \implies \text{PASS} \]

Key Lookup Tables

Copper Ampacities — NEC Table 310.15(B)(16) (excerpt)

Size (AWG/kcmil) 60°C (A) 75°C (A) 90°C (A)
14152025
12202530
10303540
8405055
6556575
4708595
295115130
1/0125150170
2/0145175195
3/0165200225
4/0195230260
250215255290
350260310350
500320380430

Aluminium Ampacities — NEC Table 310.15(B)(16) (excerpt)

Size (AWG/kcmil) 60°C (A) 75°C (A) 90°C (A)
12152025
10253035
8304045
6405055
4556575
27590100
1/0100120135
2/0115135150
3/0130155175
4/0150180205
250170205230
350210250280
500260310350

Copper Conductor Resistance — NEC Chapter 9, Table 8 (excerpt)

Size (AWG/kcmil) R (Ω/1000 ft at 75°C)
143.07
121.93
101.21
80.764
60.491
40.308
20.194
1/00.122
2/00.0967
3/00.0766
4/00.0608
2500.0515
3500.0367
5000.0258

Ambient Temperature Correction Factors — NEC Table 310.15(B)(2)(a)

Ambient (°C) 60°C 75°C 90°C
211.081.041.04
251.081.041.04
301.001.001.00
350.910.940.96
400.820.880.91
450.710.820.87
500.580.750.82
550.410.670.76
600.000.580.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).

#CaseConductorIreq (A)Iadj (A)Vd (%)GoverningResult
1100 kW continuous feeder at 480 V, auto-sized to 2/0 AWG2/0 Cu (75/75 °C)167.1175.00.47current-carrying capacityPASS
2Check 2/0 AWG copper for 100 kW at 480 V over 100 ft2/0 Cu (75/75 °C)167.1175.00.47current-carrying capacityPASS
365 A motor at 460 V, 42 °C ambient, six conductors in the raceway1 Cu (75/75 °C)81.285.30.74current-carrying capacityPASS

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 currentIload = 100 × 1000 / (√3 × 480 × 0.9) = 133.65 A
Required ampacityIreq = 1.25 × 133.65 = 167.06 A (continuous load, 210.19/215.2)
Sizes triedTable 310.16 sizes checked in order; first to pass both checks: 2/0; one size smaller (1/0) fails current-carrying capacity
Base ampacityTable 310.16, 2/0 AWG/kcmil Cu, 75°C column: 175 A
Correctionsfamb = 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 dropL = 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
Result2/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.
ReferenceHand 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 currentIload = 100 × 1000 / (√3 × 480 × 0.9) = 133.65 A
Required ampacityIreq = 1.25 × 133.65 = 167.06 A (continuous load, 210.19/215.2)
Base ampacityTable 310.16, 2/0 AWG/kcmil Cu, 75°C column: 175 A
Correctionsfamb = 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 dropL = 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
Result2/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.
Referencecalcs/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 currentIload = 65.00 A (Table 430.250 full-load current, given)
Required ampacityIreq = 1.25 × 65.00 = 81.25 A (430.22 motor conductors)
Sizes triedTable 310.16 sizes checked in order; first to pass both checks: 1; one size smaller (2) fails current-carrying capacity
Base ampacityTable 310.16, 1 AWG/kcmil Cu, 75°C column: 130 A
Correctionsfamb = 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 dropL = 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
Result2/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.
ReferenceHand 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 generator
  • components/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 using multi_replace from calcs.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:

  1. Add new conductor sizes by extending the COPPER_AMPACITY, ALUMINUM_AMPACITY, COPPER_RESISTANCE, and ALUMINUM_RESISTANCE dicts in calculations.py, and the CONDUCTOR_SIZES list in component.py.
  2. Add new ambient temperature rows by extending the corrections dict inside get_ambient_correction_factor().
  3. 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\)).
  4. 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.
  5. Write tests covering new lookup values, edge cases (maximum conductor size, extreme ambient temperatures), and boundary conditions (ampacity exactly equal to required).