Linear Generator#
The LinearGenerator class models a Mainspring linear generator — a free-piston linear engine that burns fuel to produce electricity directly, without a rotating shaft. It is a subclass of ThermalComponentBase and inherits all state machine behavior, ramp constraints, and operational logic from the base class.
Set component_type: LinearGenerator in the component’s YAML section. The section key is a user-chosen component_name (e.g. linear_generator); see Component Names, Types, and Categories for details.
For details on the state machine, startup/shutdown behavior, and base parameters, see Thermal Component Base.
Default Linear Generator-Specific Parameter Values#
The LinearGenerator class provides default values for all base class parameters. Only rated_capacity and initial_conditions are required in the YAML configuration. All defaults are defined in the class-level DEFAULTS dict.
Parameter |
Default Value |
Source |
Notes |
|---|---|---|---|
|
0.0 (0%) |
— |
Minimum stable load fraction of the generator |
|
1.2 (120%/min) |
[2] |
Ramp rate fraction of the generator |
|
Same as |
— |
Run-up rate fraction of the generator |
|
90 s (1.5 minutes) |
— |
Time required for a hot start |
|
450 s (7.5 minutes) |
— |
Time required for a warm start |
|
900 s (15 minutes) |
— |
Time required for a cold start |
|
300 s (5 minutes) |
— |
Note below |
|
300 s (5 minutes) |
— |
Minimum down time of the generator |
|
2700 s (45 minutes) |
— |
Assumptions documented below |
|
10800 s (3 hours) |
— |
Assumptions documented below |
|
39050000 J/m³ (39.05 MJ/m³) |
[3] |
Higher heating value of the fuel |
|
0.768 kg/m³ |
[3] |
Density of the fuel |
|
41.44% HHV peak, with roll-off at extremes (see below) |
[1] |
Efficiency of the generator, converted from LHV |
Notes:
min_up_timeis often determined by thermal and mechanical stress management considerations, as the generator may need to remain on for a minimum duration to avoid excessive wear from frequent cycling.hot_to_warm_timeandhot_to_cold_timeare estimated based on catalyst cooling characteristics; see the section below for details on how these values were derived.
Estimating hot_to_warm_time and hot_to_cold_time#
These two parameters can be interpreted as catalyst cooling thresholds, similar to the \tau_{hot} and \tau_{warm} transition times used in conventional unit commitment startup models:
hot_to_warm_time: time offline after which a hot start can no longer be assumedhot_to_cold_time: time offline after which a cold start must be assumed
For the linear generator, a reasonable first estimate is based on how long the catalyst takes to cool below its light-off temperature, typically about 200-300 °C. A simple lumped thermal model treats the catalyst assembly as cooling approximately exponentially after shutdown:
where T_amb is ambient temperature, T_op is the catalyst operating temperature, and \tau is the thermal time constant of the catalyst assembly, approximately equal to thermal mass divided by heat loss conductance.
Using rough screening values:
catalyst operating temperature: 400-600 °C
ambient temperature: about 20 °C
catalyst light-off temperature: about 250 °C
catalyst thermal time constant: about 30-60 minutes for a relatively small, modestly insulated substrate
For example, if the catalyst is at 500 °C when the unit shuts down and the hot-to-warm threshold is taken as 250 °C, then:
which gives:
If \tau = 45 minutes, this yields a hot-to-warm transition time of about 33 minutes after shutdown. The warm-to-cold transition, defined more conservatively as the catalyst approaching near-ambient conditions such as within 50 °C of ambient, would usually occur after several time constants, on the order of 2-4 hours.
This supports a reasonable first-guess range of:
Transition |
Estimated threshold |
|---|---|
Hot -> Warm |
30-60 minutes offline |
Warm -> Cold |
2-4 hours offline |
These thresholds are much shorter than those of many conventional thermal generators because the catalyst assembly has much lower thermal mass. More accurate values would require vendor-specific information about catalyst substrate mass, heat capacity, insulation, and enclosure heat loss.
Linear Generator Fuel Parameters#
The LinearGenerator class currently uses default values for natural gas properties from [3]:
Parameter |
Units |
Default |
Description |
|---|---|---|---|
|
J/m³ |
39050000 |
Higher heating value of natural gas (39.05 MJ/m³) [3] |
|
kg/m³ |
0.768 |
Fuel density for mass calculations [3] |
Linear generators are also capable of mixed-fuel operation. To model a different fuel, simply override the hhv and fuel_density parameters in the YAML configuration; in this case the efficiency_table should also be updated to reflect the new fuel’s combustion characteristics.
The efficiency_table parameter is optional. If not provided, the default HHV net plant efficiency from the Mainspring Energy Linear Generator datasheet [1] is used. All efficiency values are HHV (Higher Heating Value) net plant efficiencies. See Thermal Component Base for details on the efficiency table format.
Default Efficiency Table#
The default HHV net plant efficiency table is sourced from the Mainspring Energy Linear Generator datasheet [1]:
Power Fraction |
HHV Net Efficiency |
|---|---|
1.00 |
0.40 (40%) |
0.90 |
0.4144 (41.44%) |
0.30 |
0.4144 (41.44%) |
0.20 |
0.35 (35%) |
Mainspring reports a single peak efficiency value of 41.44% HHV, which is representative of most of the operating range. The table adds a modest drop-off at the extremes: a small reduction at high load (above ~90% of rated) reflecting thermal losses, and a larger reduction at low load (below ~30% of rated) reflecting fixed auxiliary and parasitic losses. The boundary values at 0.90 and 0.30 are chosen conservatively to preserve the reported peak efficiency across the broad mid-load range; the actual roll-off shape is uncertain without part-load test data, so users with site-specific measurements should override the efficiency_table accordingly.
Linear Generator Outputs#
The linear generator model provides the following outputs (inherited from base class):
Output |
Units |
Description |
|---|---|---|
|
kW |
Actual power output |
|
integer |
Operating state number (0-7), corresponding to the |
|
fraction (0-1) |
Current HHV net plant efficiency |
|
m³/s |
Fuel volume flow rate |
|
kg/s |
Fuel mass flow rate (computed using |
YAML Configuration#
Minimal Configuration#
Required parameters only (uses all defaults):
linear_generator:
component_type: LinearGenerator
rated_capacity: 250 # kW
initial_conditions:
power: 0 # 0 kW means OFF; power > 0 means ON
Full Configuration#
All parameters explicitly specified:
linear_generator:
component_type: LinearGenerator
rated_capacity: 250 # kW
min_stable_load_fraction: 0.0
ramp_rate_fraction: 1.2 # 120%/min
run_up_rate_fraction: 1.2 # 120%/min
hot_startup_time: 90.0 # 1.5 minutes
warm_startup_time: 450.0 # 7.5 minutes
cold_startup_time: 900.0 # 15 minutes
min_up_time: 300 # 5 minutes
min_down_time: 300 # 5 minutes
hot_to_warm_time: 2700.0 # 45 minutes
hot_to_cold_time: 10800.0 # 3 hours
hhv: 39050000 # J/m³ for natural gas (39.05 MJ/m³) [3]
fuel_density: 0.768 # kg/m³ for natural gas [3]
efficiency_table:
power_fraction:
- 1.00
- 0.90
- 0.30
- 0.20
efficiency: # HHV net plant efficiency from [1]; peak ±roll-off at extremes
- 0.40
- 0.4144
- 0.4144
- 0.35
log_channels:
- power
- fuel_volume_rate
- fuel_mass_rate
- state
- efficiency
- power_setpoint
initial_conditions:
power: 250 # kW; power > 0 means ON
Multi-Unit Configuration (via ThermalPlant)#
Multiple linear generators can be combined using the ThermalPlant component:
thermal_power_plant:
component_type: ThermalPlant
units: ["linear_generator_ms", "linear_generator_ms", "linear_generator_ms", "linear_generator_ms"]
unit_names: ["lg_1", "lg_2", "lg_3", "lg_4"]
linear_generator_ms:
component_type: LinearGenerator
rated_capacity: 250 # kW
initial_conditions:
power: 250 # Start ON at rated capacity
Logging Configuration#
The log_channels parameter controls which outputs are written to the HDF5 output file.
Available Channels:
power: Actual power output in kW (always logged)state: Operating state number (0-7), corresponding to theSTATESenumfuel_volume_rate: Fuel volume flow rate in m³/sfuel_mass_rate: Fuel mass flow rate in kg/s (computed usingfuel_density[3])efficiency: Current HHV net plant efficiency (0-1)power_setpoint: Requested power setpoint in kW
References#
Mainspring Energy, “Linear Generator Datasheet,” Rev. R30313.3, March 16, 2026. https://linear-power.files.svdcdn.com/production/Mainspring-Linear-Generator-Datasheet-R30313.3_2026-03-16-205457_psod.pdf
https://www.energy.ca.gov/sites/default/files/2024-05/CEC-500-2024-037.pdf
I. Staffell, “The Energy and Fuel Data Sheet,” University of Birmingham, March 2011. https://claverton-energy.com/cms4/wp-content/uploads/2012/08/the_energy_and_fuel_data_sheet.pdf