I love how stupid this project is

si units and redefining speed metric as thrust/weight ratio
This commit is contained in:
2026-03-04 16:30:09 -06:00
parent 216879bdd5
commit 00cc8dd9ef
19 changed files with 494 additions and 341 deletions

View File

@@ -28,16 +28,16 @@ def seeded_repo(repo):
@pytest.fixture
def walking():
def road_vehicle():
return Entity(
name="Walking",
name="Road Vehicle",
dimension="platform",
description="Bipedal locomotion",
description="Generic wheeled road vehicle",
dependencies=[
Dependency("environment", "ground_surface", "true", None, "requires"),
Dependency("environment", "gravity", "true", None, "requires"),
Dependency("physical", "mass_kg", "150", "kg", "range_max"),
Dependency("force", "power_density_required_w_kg", "1", "W/kg", "range_min"),
Dependency("physical", "mass", "36000", "kg", "range_max"),
Dependency("physical", "mass", "50", "kg", "range_min"),
Dependency("environment", "medium", "ground", None, "requires"),
],
)
@@ -52,8 +52,7 @@ def bicycle():
dependencies=[
Dependency("environment", "ground_surface", "true", None, "requires"),
Dependency("environment", "gravity", "true", None, "requires"),
Dependency("physical", "mass_kg", "30", "kg", "range_max"),
Dependency("force", "power_density_required_w_kg", "1", "W/kg", "range_min"),
Dependency("physical", "mass", "30", "kg", "range_max"),
Dependency("environment", "medium", "ground", None, "requires"),
],
)
@@ -67,8 +66,7 @@ def spaceship():
description="Vehicle designed for space travel",
dependencies=[
Dependency("environment", "atmosphere", "vacuum_or_thin", None, "requires"),
Dependency("physical", "mass_kg", "5000", "kg", "range_min"),
Dependency("force", "power_density_required_w_kg", "500", "W/kg", "range_min"),
Dependency("physical", "mass", "5000", "kg", "range_min"),
Dependency("environment", "medium", "space", None, "requires"),
],
)
@@ -83,7 +81,7 @@ def solar_sail():
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("force", "power_density", "0.01", "W/kg", "provides"),
Dependency("environment", "medium", "space", None, "requires"),
],
)
@@ -97,7 +95,7 @@ def solar_radiation():
description="Photon flux from a nearby star",
dependencies=[
Dependency("energy", "energy_form", "radiation_pressure", None, "provides"),
Dependency("physical", "mass_kg", "0", "kg", "range_min"),
Dependency("physical", "mass", "0", "kg", "range_min"),
],
)
@@ -110,8 +108,8 @@ def human_pedalling():
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"),
Dependency("force", "power_density", "1.5", "W/kg", "provides"),
Dependency("physical", "mass", "0", "kg", "range_min"),
],
)
@@ -124,8 +122,8 @@ def food_calories():
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"),
Dependency("physical", "mass", "0", "kg", "range_min"),
Dependency("physical", "energy_density", "720000", "J/kg", "provides"),
],
)
@@ -138,8 +136,8 @@ def nuclear_thermal_drive():
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", "1500", "kg", "range_min"),
Dependency("force", "power_density", "50", "W/kg", "provides"),
Dependency("physical", "mass", "1500", "kg", "range_min"),
],
)
@@ -152,8 +150,8 @@ def nuclear_fuel():
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"),
Dependency("physical", "mass", "500", "kg", "range_min"),
Dependency("physical", "energy_density", "1800000000", "J/kg", "provides"),
],
)
@@ -166,8 +164,8 @@ def hydrogen_engine():
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", "25", "kg", "range_min"),
Dependency("force", "power_density", "1500", "W/kg", "provides"),
Dependency("physical", "mass", "25", "kg", "range_min"),
],
)
@@ -180,9 +178,9 @@ def ice_engine():
description="Spark-ignition engine",
dependencies=[
Dependency("energy", "energy_form", "chemical_combustible", None, "requires"),
Dependency("force", "power_density_w_kg", "1000", "W/kg", "provides"),
Dependency("force", "power_density", "1000", "W/kg", "provides"),
Dependency("environment", "atmosphere", "standard", None, "requires"),
Dependency("physical", "mass_kg", "40", "kg", "range_min"),
Dependency("physical", "mass", "40", "kg", "range_min"),
],
)
@@ -195,8 +193,8 @@ def gasoline():
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"),
Dependency("physical", "mass", "10", "kg", "range_min"),
Dependency("physical", "energy_density", "5400000", "J/kg", "provides"),
],
)
@@ -209,8 +207,8 @@ def hydrogen():
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"),
Dependency("physical", "mass", "5", "kg", "range_min"),
Dependency("physical", "energy_density", "2160000", "J/kg", "provides"),
],
)
@@ -221,10 +219,10 @@ def urban_domain():
name="urban_commuting",
description="Daily city travel",
metric_bounds=[
MetricBound("speed", weight=0.25, norm_min=5, norm_max=120),
MetricBound("cost_efficiency", weight=0.25, norm_min=0.01, norm_max=2.0, lower_is_better=True),
MetricBound("power_density", weight=0.25, norm_min=1, norm_max=2000),
MetricBound("cost_efficiency", weight=0.25, norm_min=1e-5, norm_max=2e-3, lower_is_better=True),
MetricBound("safety", weight=0.25, norm_min=0.0, norm_max=1.0),
MetricBound("availability", weight=0.15, norm_min=0.0, norm_max=1.0),
MetricBound("range_fuel", weight=0.10, norm_min=5, norm_max=500),
MetricBound("range_fuel", weight=0.10, norm_min=5000, norm_max=500000),
],
)