SWaP-C Models API¶
Size, Weight, Power, and Cost models.
Overview¶
Classes¶
PowerModel
¶
Power consumption calculator for phased array systems.
Computes DC power, RF power, and prime power based on architecture parameters and efficiency factors.
Power Equations
RF_peak = n_elements * tx_power_per_elem RF_avg = RF_peak * duty_cycle PA_DC = RF_avg / pa_efficiency RX_DC = n_elements * rx_power_w_per_elem ADC = n_digital_channels * FOM * 2^ENOB * fs DSP = beamformer_GOPS / dsp_efficiency DC_power = PA_DC + RX_DC + ADC + DSP Prime_power = DC_power * (1 + overhead_factor)
| ATTRIBUTE | DESCRIPTION |
|---|---|
name |
Model block name for identification
TYPE:
|
overhead_factor |
Additional power overhead (cooling, control, etc.)
|
Initialize power model.
| PARAMETER | DESCRIPTION |
|---|---|
overhead_factor
|
Fraction of DC power for overhead (default 20%)
TYPE:
|
Source code in src/phased_array_systems/models/swapc/power.py
evaluate
¶
evaluate(arch: Architecture, scenario: Scenario, context: dict[str, Any]) -> MetricsDict
Evaluate power metrics.
| PARAMETER | DESCRIPTION |
|---|---|
arch
|
Architecture configuration
TYPE:
|
scenario
|
Scenario (duty_cycle and bandwidth_hz are read if present)
TYPE:
|
context
|
Additional context (unused)
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
MetricsDict
|
Dictionary with power metrics: - rf_power_w: Peak RF output power (W) - rf_avg_power_w: Average RF output power (W) - pa_dc_power_w: PA DC power (W) - rx_dc_power_w: Receive chain DC power (W) - adc_power_w: Total ADC power (W) - dsp_power_w: Digital beamformer power (W) - dc_power_w: Total DC power consumption (W) - prime_power_w: Prime/wall power (W) - duty_cycle: Transmit duty cycle - pa_efficiency: Power amplifier efficiency - n_elements: Number of array elements - heat_dissipation_w: Heat to remove (DC in minus RF out) |
MetricsDict
|
When the scenario carries a frequency, also: - wavelength_m, cell_area_cm2, aperture_area_m2 - heat_flux_w_per_cm2: dissipation per aperture area (average) - radiated_power_density_peak_w_per_cm2 - radiated_power_density_avg_w_per_cm2 |
Source code in src/phased_array_systems/models/swapc/power.py
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | |
CostModel
¶
Parametric cost model for phased array systems.
Computes recurring and non-recurring costs based on array size and cost parameters.
Cost Equations
Recurring_cost = n_elements * cost_per_element Total_cost = Recurring_cost + NRE + Integration
| ATTRIBUTE | DESCRIPTION |
|---|---|
name |
Model block name for identification
TYPE:
|
evaluate
¶
evaluate(arch: Architecture, scenario: Scenario, context: dict[str, Any]) -> MetricsDict
Evaluate cost metrics.
| PARAMETER | DESCRIPTION |
|---|---|
arch
|
Architecture configuration
TYPE:
|
scenario
|
Scenario (unused for basic cost model)
TYPE:
|
context
|
Additional context (unused)
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
MetricsDict
|
Dictionary with cost metrics: - recurring_cost_usd: Element-based recurring cost (USD) - nre_usd: Non-recurring engineering cost (USD) - integration_cost_usd: System integration cost (USD) - total_cost_usd: Total system cost (USD) - cost_per_element_usd: Cost per element (USD) - n_elements: Number of elements |
Source code in src/phased_array_systems/models/swapc/cost.py
Functions¶
compute_thermal_load
¶
compute_thermal_load(dc_power_w: float, rf_power_w: float, additional_dissipation_w: float = 0.0) -> dict[str, float]
Compute thermal dissipation for heat management.
The single energy balance in the package: PowerModel calls it for
heat_dissipation_w, and the junction-temperature feed-forward in
evaluate consumes that metric rather than recomputing it.
| PARAMETER | DESCRIPTION |
|---|---|
dc_power_w
|
Total DC power consumption (W)
TYPE:
|
rf_power_w
|
RF power leaving as radiation (W). Pass the duty-cycle average for a thermal budget; passing peak overstates the radiated fraction and understates the heat.
TYPE:
|
additional_dissipation_w
|
Other heat sources (W)
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
dict[str, float]
|
Dictionary with thermal metrics: - heat_dissipation_w: Total heat to remove (W) - rf_efficiency: Fraction of DC converted to RF |
Source code in src/phased_array_systems/models/swapc/power.py
compute_cost_per_watt
¶
Compute cost per Watt of RF power.
| PARAMETER | DESCRIPTION |
|---|---|
total_cost_usd
|
Total system cost (USD)
TYPE:
|
rf_power_w
|
RF output power (W)
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
float
|
Cost per Watt (USD/W) |
Source code in src/phased_array_systems/models/swapc/cost.py
options:
show_root_heading: true
Output Metrics¶
Power Metrics¶
| Metric | Units | Description |
|---|---|---|
rf_power_w |
W | Total RF power (all elements) |
dc_power_w |
W | DC power (RF / PA efficiency) |
heat_dissipation_w |
Heat to remove (DC in minus average RF out) | |
heat_flux_w_per_cm2 |
Dissipated power per aperture area (average power) | |
radiated_power_density_peak_w_per_cm2 |
Radiated power per aperture area, peak | |
radiated_power_density_avg_w_per_cm2 |
Radiated power per aperture area, average | |
aperture_area_m2, cell_area_cm2 |
Physical aperture and unit-cell area | |
prime_power_w |
W | Total prime power |
Cost Metrics¶
| Metric | Units | Description |
|---|---|---|
recurring_cost_usd |
USD | Element cost × count |
nre_cost_usd |
USD | Non-recurring engineering |
integration_cost_usd |
USD | System integration |
cost_usd |
USD | Total cost |
Usage Examples¶
Power Calculation¶
from phased_array_systems.models.swapc import PowerModel
# Using PowerModel
model = PowerModel()
metrics = model.evaluate(arch, scenario, context={})
print(f"Prime Power: {metrics['prime_power_w']:.0f} W")
print(f"RF Power: {metrics['rf_power_w']:.0f} W")
print(f"DC Power: {metrics['dc_power_w']:.0f} W")
Cost Calculation¶
from phased_array_systems.models.swapc import CostModel
# Using CostModel
model = CostModel()
metrics = model.evaluate(arch, scenario, context={})
print(f"Total Cost: ${metrics['cost_usd']:,.0f}")
print(f"Recurring: ${metrics['recurring_cost_usd']:,.0f}")
print(f"NRE: ${metrics['nre_cost_usd']:,.0f}")
Cost Analysis Utilities¶
from phased_array_systems.models.swapc.cost import compute_cost_per_watt
# Cost efficiency metrics
cost_per_watt = compute_cost_per_watt(total_cost_usd=50000, rf_power_w=100)
print(f"Cost per Watt: ${cost_per_watt:.0f}/W")
Power Equations¶
RF Power¶
DC Power¶
Prime Power¶
Prime power includes additional overhead (typically DC power plus auxiliaries):
Cost Equations¶
Recurring Cost¶
Total Cost¶
Trade-offs¶
Power vs. Array Size¶
# Power scales linearly with element count
# For constant EIRP, larger arrays need less power per element
# 8x8 at 1W each: P = 64W RF
# 16x16 at 0.25W each: P = 64W RF, but 6dB more gain from aperture
Cost vs. Performance¶
# Cost scaling factors:
# - Element count: linear
# - Power per element: typically superlinear
# - Frequency: higher frequency = higher cost per element
See Also¶
- Architecture API - CostConfig definition
- User Guide: Trade Studies