# noworries23/nasa-moon-base architecture

> Architecture diagram of the GitHub repository noworries23/nasa-moon-base, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/noworries23/nasa-moon-base
- Repository: https://github.com/noworries23/nasa-moon-base

## Overview

This repository is a research-model suite assessing a lunar South Pole communications mesh, not a deployed network service. Its main analytical workflow moves from terrain and radio assumptions to coverage/placement, network simulation, and viability estimates; a separate tether-mechanics model supports an optional extension. The README documents these model stages and their outputs. Source excerpts and the index support selected implementation links; several capabilities are documented but unsampled, so their internal relationships are left unasserted.

Main entry points: [`models/netsim/run_netsim.py`](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/run_netsim.py) (Simulation runs), [`models/coverage/terrain.py`](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/terrain.py) (Terrain grids), [`models/netsim/world.py`](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/world.py) (Scenario builder), [`models/budget/nodes.py`](https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/nodes.py) (Node design)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_terrain_rf["Terrain and radio"]
  node_dem_prep["Terrain preparation<br/>[prepare_window.py]"]
  node_illum_prep["Illumination preparation"]
  node_terrain["Terrain grids<br/>[terrain.py]"]
  node_radio["Link budget<br/>[linkbudget.py]"]
  node_link_ranges["Coverage link ranges<br/>[links.py]"]
end

subgraph group_coverage["Coverage planning"]
  node_coverage_geometry["Viewshed<br/>[viewshed.py]"]
  node_placement["Asset placement<br/>[placement.py]"]
  node_coverage_runner["Coverage study<br/>[run_coverage.py]"]
  node_coverage_resolution["Resolution study<br/>[resolution.py]"]
  node_diffraction["Diffraction studies"]
end

subgraph group_network["Network simulation"]
  node_configs["Network configurations<br/>[configs.py]"]
  node_world["Scenario builder<br/>[world.py]"]
  node_mobility["Crew mobility<br/>[mobility.py]"]
  node_linkmodel["Simulation link model<br/>[linkmodel.py]"]
  node_engine["Network engine<br/>[engine.py]"]
  node_sim_runner["Simulation runs<br/>[run_netsim.py]"]
  node_redundancy["Redundant uplink<br/>[run_redundancy.py]"]
  node_network_reports["Simulation reports<br/>[report.py]"]
end

subgraph group_viability["Viability analysis"]
  node_budget_inputs["Budget assumptions<br/>[assumptions.py]"]
  node_illum_model["Illumination model<br/>[illumination.py]"]
  node_node_design["Node design<br/>[nodes.py]"]
  node_fleet_design["Fleet design<br/>[fleet.py]"]
  node_joint_placement["Joint placement<br/>[joint_placement.py]"]
  node_budget_report["Viability report<br/>[report_budget.py]"]
end

subgraph group_tether["Tether mechanics"]
  node_tether_model["Tether mechanics<br/>[tether.py]"]
  node_tether_extensions["Tether extensions<br/>[tether_springs.py]"]
end

node_analyst(("Researcher"))

node_analyst -->|"prepares terrain"| node_dem_prep
node_analyst -->|"prepares illumination"| node_illum_prep
node_dem_prep -.->|"prepares grids"| node_terrain
node_illum_prep -->|"prepares data"| node_illum_model
node_analyst -->|"runs coverage"| node_coverage_runner
node_terrain -->|"supplies elevations"| node_coverage_geometry
node_terrain -->|"supplies terrain"| node_placement
node_coverage_geometry -->|"tests visibility"| node_placement
node_link_ranges -->|"caps links"| node_placement
node_radio -->|"computes link limits"| node_link_ranges
node_coverage_runner -.->|"runs placement"| node_placement
node_terrain -->|"provides terrain"| node_coverage_resolution
node_link_ranges -->|"provides link limits"| node_coverage_resolution
node_analyst -->|"runs resolution"| node_coverage_resolution
node_analyst -->|"compares diffraction"| node_diffraction
node_analyst -->|"runs scenarios"| node_sim_runner
node_configs -->|"configures runs"| node_sim_runner
node_sim_runner -->|"builds scenarios"| node_world
node_world -->|"supplies run inputs"| node_engine
node_world -->|"uses mobility"| node_mobility
node_world -->|"uses link model"| node_linkmodel
node_sim_runner -->|"executes runs"| node_engine
node_analyst -->|"runs redundancy"| node_redundancy
node_analyst -->|"generates reports"| node_network_reports
node_budget_inputs -->|"supplies assumptions"| node_node_design
node_illum_model -->|"informs power design"| node_node_design
node_budget_inputs -->|"supplies assumptions"| node_fleet_design
node_node_design -->|"designs node tiers"| node_fleet_design
node_analyst -->|"generates budget"| node_budget_report
node_analyst -->|"runs joint selection"| node_joint_placement
node_joint_placement -->|"provides joint layout"| node_sim_runner
node_node_design -->|"calculates tether hardware"| node_tether_model
node_analyst -->|"explores tether"| node_tether_model
node_tether_extensions -->|"extends mechanics"| node_tether_model

click node_dem_prep "https://github.com/noworries23/nasa-moon-base/blob/main/data/prep/prepare_window.py"
click node_illum_prep "https://github.com/noworries23/nasa-moon-base/blob/main/data/prep/prepare_illumination.py"
click node_terrain "https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/terrain.py"
click node_radio "https://github.com/noworries23/nasa-moon-base/blob/main/models/linkbudget/linkbudget.py"
click node_link_ranges "https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/links.py"
click node_coverage_geometry "https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/viewshed.py"
click node_placement "https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/placement.py"
click node_coverage_runner "https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/run_coverage.py"
click node_coverage_resolution "https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/resolution.py"
click node_diffraction "https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/diffraction_compare.py"
click node_configs "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/configs.py"
click node_world "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/world.py"
click node_mobility "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/mobility.py"
click node_linkmodel "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/linkmodel.py"
click node_engine "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/engine.py"
click node_sim_runner "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/run_netsim.py"
click node_redundancy "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/run_redundancy.py"
click node_network_reports "https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/report.py"
click node_budget_inputs "https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/assumptions.py"
click node_illum_model "https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/illumination.py"
click node_node_design "https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/nodes.py"
click node_fleet_design "https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/fleet.py"
click node_joint_placement "https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/joint_placement.py"
click node_budget_report "https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/report_budget.py"
click node_tether_model "https://github.com/noworries23/nasa-moon-base/blob/main/models/tether/tether.py"
click node_tether_extensions "https://github.com/noworries23/nasa-moon-base/blob/main/models/tether/tether_springs.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dem_prep,node_illum_prep,node_terrain,node_radio,node_link_ranges toneBlue
class node_coverage_geometry,node_placement,node_coverage_runner,node_coverage_resolution,node_diffraction toneAmber
class node_configs,node_world,node_mobility,node_linkmodel,node_engine,node_sim_runner,node_redundancy,node_network_reports toneMint
class node_budget_inputs,node_illum_model,node_node_design,node_fleet_design,node_joint_placement,node_budget_report toneRose
class node_tether_model,node_tether_extensions,node_analyst toneIndigo
```

## Components

### Terrain and radio

- [Terrain preparation](https://github.com/noworries23/nasa-moon-base/blob/main/data/prep/prepare_window.py): `data/prep/prepare_window.py`
- [Illumination preparation](https://github.com/noworries23/nasa-moon-base/blob/main/data/prep/prepare_illumination.py): `data/prep/prepare_illumination.py`
- [Terrain grids](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/terrain.py): `models/coverage/terrain.py`
- [Link budget](https://github.com/noworries23/nasa-moon-base/blob/main/models/linkbudget/linkbudget.py): `models/linkbudget/linkbudget.py`
- [Coverage link ranges](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/links.py): `models/coverage/links.py`

### Coverage planning

- [Viewshed](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/viewshed.py): `models/coverage/viewshed.py`
- [Asset placement](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/placement.py): `models/coverage/placement.py`
- [Coverage study](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/run_coverage.py): `models/coverage/run_coverage.py`
- [Resolution study](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/resolution.py): `models/coverage/resolution.py`
- [Diffraction studies](https://github.com/noworries23/nasa-moon-base/blob/main/models/coverage/diffraction_compare.py): `models/coverage/diffraction_compare.py`

### Network simulation

- [Network configurations](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/configs.py): `models/netsim/configs.py`
- [Scenario builder](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/world.py): `models/netsim/world.py`
- [Crew mobility](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/mobility.py): `models/netsim/mobility.py`
- [Simulation link model](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/linkmodel.py): `models/netsim/linkmodel.py`
- [Network engine](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/engine.py): `models/netsim/engine.py`
- [Simulation runs](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/run_netsim.py): `models/netsim/run_netsim.py`
- [Redundant uplink](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/run_redundancy.py): `models/netsim/run_redundancy.py`
- [Simulation reports](https://github.com/noworries23/nasa-moon-base/blob/main/models/netsim/report.py): `models/netsim/report.py`

### Viability analysis

- [Budget assumptions](https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/assumptions.py): `models/budget/assumptions.py`
- [Illumination model](https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/illumination.py): `models/budget/illumination.py`
- [Node design](https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/nodes.py): `models/budget/nodes.py`
- [Fleet design](https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/fleet.py): `models/budget/fleet.py`
- [Joint placement](https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/joint_placement.py): `models/budget/joint_placement.py`
- [Viability report](https://github.com/noworries23/nasa-moon-base/blob/main/models/budget/report_budget.py): `models/budget/report_budget.py`

### Tether mechanics

- [Tether mechanics](https://github.com/noworries23/nasa-moon-base/blob/main/models/tether/tether.py): `models/tether/tether.py`
- [Tether extensions](https://github.com/noworries23/nasa-moon-base/blob/main/models/tether/tether_springs.py): `models/tether/tether_springs.py`

### Other components

- **Researcher**

## Connections

- Researcher → Terrain preparation: prepares terrain (evidence: `README.md`)
- Researcher → Illumination preparation: prepares illumination (evidence: `README.md`)
- Terrain preparation → Terrain grids: prepares grids
- Illumination preparation → Illumination model: prepares data (evidence: `README.md`)
- Researcher → Coverage study: runs coverage (evidence: `README.md`)
- Terrain grids → Viewshed: supplies elevations (evidence: `models/coverage/viewshed.py`)
- Terrain grids → Asset placement: supplies terrain (evidence: `models/coverage/placement.py`)
- Viewshed → Asset placement: tests visibility (evidence: `models/coverage/placement.py`)
- Coverage link ranges → Asset placement: caps links (evidence: `models/coverage/placement.py`)
- Link budget → Coverage link ranges: computes link limits (evidence: `models/coverage/links.py`)
- Coverage study → Asset placement: runs placement (evidence: `models/coverage/run_coverage.py`)
- Terrain grids → Resolution study: provides terrain (evidence: `models/coverage/resolution.py`)
- Coverage link ranges → Resolution study: provides link limits (evidence: `models/coverage/resolution.py`)
- Researcher → Resolution study: runs resolution (evidence: `README.md`)
- Researcher → Diffraction studies: compares diffraction (evidence: `README.md`)
- Researcher → Simulation runs: runs scenarios (evidence: `README.md`)
- Network configurations → Simulation runs: configures runs (evidence: `models/netsim/run_netsim.py`)
- Simulation runs → Scenario builder: builds scenarios (evidence: `models/netsim/run_netsim.py`)
- Scenario builder → Network engine: supplies run inputs (evidence: `models/netsim/world.py`)
- Scenario builder → Crew mobility: uses mobility (evidence: `models/netsim/world.py`)
- Scenario builder → Simulation link model: uses link model (evidence: `models/netsim/world.py`)
- Simulation runs → Network engine: executes runs (evidence: `models/netsim/run_netsim.py`)
- Researcher → Redundant uplink: runs redundancy (evidence: `README.md`)
- Researcher → Simulation reports: generates reports (evidence: `README.md`)
- Budget assumptions → Node design: supplies assumptions (evidence: `models/budget/nodes.py`)
- Illumination model → Node design: informs power design (evidence: `models/budget/nodes.py`)
- Budget assumptions → Fleet design: supplies assumptions (evidence: `models/budget/fleet.py`)
- Node design → Fleet design: designs node tiers (evidence: `models/budget/fleet.py`)
- Researcher → Viability report: generates budget (evidence: `README.md`)
- Researcher → Joint placement: runs joint selection (evidence: `README.md`)
- Joint placement → Simulation runs: provides joint layout (evidence: `README.md`)
- Node design → Tether mechanics: calculates tether hardware (evidence: `models/budget/nodes.py`)
- Researcher → Tether mechanics: explores tether (evidence: `README.md`)
- Tether extensions → Tether mechanics: extends mechanics (evidence: `models/tether/tether_springs.py`)
