split actuators from energy storage

This commit is contained in:
2026-03-04 14:18:52 -06:00
parent e99a14d087
commit 216879bdd5
13 changed files with 601 additions and 681 deletions

View File

@@ -78,9 +78,10 @@ def spaceship():
def solar_sail():
return Entity(
name="Solar Sail",
dimension="power_source",
dimension="actuator",
description="Propulsion via radiation pressure",
dependencies=[
Dependency("energy", "energy_form", "radiation_pressure", None, "requires"),
Dependency("environment", "atmosphere", "vacuum_or_thin", None, "requires"),
Dependency("force", "power_density_w_kg", "0.01", "W/kg", "provides"),
Dependency("environment", "medium", "space", None, "requires"),
@@ -88,13 +89,27 @@ def solar_sail():
)
@pytest.fixture
def solar_radiation():
return Entity(
name="Solar Radiation",
dimension="energy_storage",
description="Photon flux from a nearby star",
dependencies=[
Dependency("energy", "energy_form", "radiation_pressure", None, "provides"),
Dependency("physical", "mass_kg", "0", "kg", "range_min"),
],
)
@pytest.fixture
def human_pedalling():
return Entity(
name="Human Pedalling",
dimension="power_source",
dimension="actuator",
description="Human-powered via pedalling",
dependencies=[
Dependency("energy", "energy_form", "biological", None, "requires"),
Dependency("force", "power_density_w_kg", "1.5", "W/kg", "provides"),
Dependency("physical", "mass_kg", "0", "kg", "range_min"),
],
@@ -102,14 +117,43 @@ def human_pedalling():
@pytest.fixture
def nuclear_reactor():
def food_calories():
return Entity(
name="Modular Nuclear Reactor",
dimension="power_source",
description="Small modular nuclear fission reactor",
name="Food/Calories",
dimension="energy_storage",
description="Metabolic energy from food",
dependencies=[
Dependency("energy", "energy_form", "biological", None, "provides"),
Dependency("physical", "mass_kg", "0", "kg", "range_min"),
Dependency("physical", "energy_density_wh_kg", "200", "Wh/kg", "provides"),
],
)
@pytest.fixture
def nuclear_thermal_drive():
return Entity(
name="Nuclear Thermal Drive",
dimension="actuator",
description="Nuclear fission reactor for thrust",
dependencies=[
Dependency("energy", "energy_form", "nuclear_thermal", None, "requires"),
Dependency("force", "power_density_w_kg", "50", "W/kg", "provides"),
Dependency("physical", "mass_kg", "2000", "kg", "range_min"),
Dependency("physical", "mass_kg", "1500", "kg", "range_min"),
],
)
@pytest.fixture
def nuclear_fuel():
return Entity(
name="Nuclear Fuel",
dimension="energy_storage",
description="Enriched uranium fuel rods",
dependencies=[
Dependency("energy", "energy_form", "nuclear_thermal", None, "provides"),
Dependency("physical", "mass_kg", "500", "kg", "range_min"),
Dependency("physical", "energy_density_wh_kg", "500000", "Wh/kg", "provides"),
],
)
@@ -118,11 +162,12 @@ def nuclear_reactor():
def hydrogen_engine():
return Entity(
name="Hydrogen Combustion Engine",
dimension="power_source",
description="Hydrogen fuel cell",
dimension="actuator",
description="Hydrogen combustion engine",
dependencies=[
Dependency("energy", "energy_form", "chemical_combustible", None, "requires"),
Dependency("force", "power_density_w_kg", "1500", "W/kg", "provides"),
Dependency("physical", "mass_kg", "30", "kg", "range_min"),
Dependency("physical", "mass_kg", "25", "kg", "range_min"),
],
)
@@ -131,12 +176,41 @@ def hydrogen_engine():
def ice_engine():
return Entity(
name="Internal Combustion Engine",
dimension="power_source",
description="Gas-powered engine",
dimension="actuator",
description="Spark-ignition engine",
dependencies=[
Dependency("energy", "energy_form", "chemical_combustible", None, "requires"),
Dependency("force", "power_density_w_kg", "1000", "W/kg", "provides"),
Dependency("environment", "atmosphere", "standard", None, "requires"),
Dependency("physical", "mass_kg", "50", "kg", "range_min"),
Dependency("physical", "mass_kg", "40", "kg", "range_min"),
],
)
@pytest.fixture
def gasoline():
return Entity(
name="Gasoline",
dimension="energy_storage",
description="Liquid hydrocarbon fuel",
dependencies=[
Dependency("energy", "energy_form", "chemical_combustible", None, "provides"),
Dependency("physical", "mass_kg", "10", "kg", "range_min"),
Dependency("physical", "energy_density_wh_kg", "1500", "Wh/kg", "provides"),
],
)
@pytest.fixture
def hydrogen():
return Entity(
name="Hydrogen",
dimension="energy_storage",
description="Compressed hydrogen gas",
dependencies=[
Dependency("energy", "energy_form", "chemical_combustible", None, "provides"),
Dependency("physical", "mass_kg", "5", "kg", "range_min"),
Dependency("physical", "energy_density_wh_kg", "600", "Wh/kg", "provides"),
],
)