# davefoss/dave_core architecture

> Architecture diagram of the GitHub repository davefoss/dave_core, 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/davefoss/dave_core
- Repository: https://github.com/davefoss/dave_core

## Overview

DAVE_core generates region-specific electricity and gas grid models by combining open datasets with geographic and network-topology processing, then validating, exporting, or converting the resulting model. The documented product scope supports this workflow, while the source index shows `create.py` coordinating major stages. Edges below are limited to relationships visible in excerpts or source-index references; less certain orchestration details and unsampled integrations are not asserted.

Main entry points: [`src/dave_core/create.py`](https://github.com/davefoss/dave_core/blob/main/src/dave_core/create.py) (Generation workflow), [`src/dave_core/components`](https://github.com/davefoss/dave_core/tree/main/src/dave_core/components) (Grid components), [`src/dave_core/datapool/osm_request.py`](https://github.com/davefoss/dave_core/blob/main/src/dave_core/datapool/osm_request.py) (OSM requests), [`src/dave_core/components/substations.py`](https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/substations.py) (Substations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Model generation"]
  node_create["Generation workflow<br/>[create.py]"]
  node_area["Target area<br/>[target_area.py]"]
  node_osm_geo["OSM geography<br/>[osm_data.py]"]
  node_settings["Runtime settings<br/>[settings.py]"]
end

subgraph group_sources["Open data"]
  node_oep["OEP requests<br/>[oep_request.py]"]
  node_osm_req["OSM requests<br/>[osm_request.py]"]
  node_reference_data["Reference data<br/>[read_data.py]"]
  node_openenergy(("OpenEnergyPlatform"))
  node_overpass(("Overpass services"))
end

subgraph group_networks["Grid construction"]
  node_components["Grid components"]
  node_plants["Power plants<br/>[power_plants.py]"]
  node_substations["Substations<br/>[substations.py]"]
  node_transformers["Transformers<br/>[transformers.py]"]
  node_gas_components["Gas components<br/>[gas_components.py]"]
  node_loads["Loads<br/>[loads.py]"]
  node_topology["Voltage topology"]
  node_lv_topology["Low-voltage topology<br/>[low_voltage.py]"]
  node_gas_topology["Gas topology<br/>[high_pressure.py]"]
end

subgraph group_model_io["Model and exchange"]
  node_dataset["Grid dataset<br/>[dave_structure.py]"]
  node_pandapower["Pandapower export"]
  node_pandapipes["Pandapipes export"]
  node_format_io["File and format IO<br/>[file_io.py]"]
  node_archive["Archive IO<br/>[archiv_io.py]"]
end

subgraph group_analysis["Validation and views"]
  node_cleanup["Model cleanup<br/>[clean_up.py]"]
  node_checks["Structural checks"]
  node_plot["Network plotting<br/>[plot.py]"]
end

node_user(("Model user"))

node_user -->|"requests model"| node_create
node_create -->|"selects region"| node_area
node_create -->|"initializes model"| node_dataset
node_create -->|"builds components"| node_components
node_create -->|"cleans model"| node_cleanup
node_create -->|"converts model"| node_pandapower
node_create -->|"converts model"| node_pandapipes
node_create -->|"uses file IO"| node_format_io
node_create -->|"uses archive IO"| node_archive
node_create -->|"uses settings"| node_settings
node_area -->|"reads boundaries"| node_reference_data
node_area -->|"loads map features"| node_osm_geo
node_osm_geo -->|"requests map data"| node_osm_req
node_osm_req -->|"uses data readers"| node_reference_data
node_osm_req -->|"queries"| node_overpass
node_oep -->|"queries"| node_openenergy
node_components -.->|"includes"| node_plants
node_components -.->|"includes"| node_substations
node_components -.->|"includes"| node_transformers
node_components -.->|"includes"| node_gas_components
node_components -.->|"includes"| node_loads
node_plants -->|"requests source data"| node_oep
node_substations -->|"requests source data"| node_oep
node_transformers -->|"uses substation data"| node_substations
node_loads -->|"requests map data"| node_osm_req
node_loads -->|"reads reference data"| node_reference_data
node_gas_components -->|"reads reference data"| node_reference_data
node_topology -.->|"includes"| node_lv_topology
node_topology -.->|"includes"| node_gas_topology
node_lv_topology -->|"uses substations"| node_substations
node_cleanup -->|"checks structure"| node_checks
node_pandapower -->|"runs diagnostics"| node_checks
node_format_io -->|"reads and writes"| node_dataset
node_archive -->|"uses file IO"| node_format_io

click node_create "https://github.com/davefoss/dave_core/blob/main/src/dave_core/create.py"
click node_area "https://github.com/davefoss/dave_core/blob/main/src/dave_core/geography/target_area.py"
click node_osm_geo "https://github.com/davefoss/dave_core/blob/main/src/dave_core/geography/osm_data.py"
click node_dataset "https://github.com/davefoss/dave_core/blob/main/src/dave_core/dave_structure.py"
click node_oep "https://github.com/davefoss/dave_core/blob/main/src/dave_core/datapool/oep_request.py"
click node_osm_req "https://github.com/davefoss/dave_core/blob/main/src/dave_core/datapool/osm_request.py"
click node_reference_data "https://github.com/davefoss/dave_core/blob/main/src/dave_core/datapool/read_data.py"
click node_components "https://github.com/davefoss/dave_core/tree/main/src/dave_core/components"
click node_plants "https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/power_plants.py"
click node_substations "https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/substations.py"
click node_transformers "https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/transformers.py"
click node_gas_components "https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/gas_components.py"
click node_loads "https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/loads.py"
click node_topology "https://github.com/davefoss/dave_core/tree/main/src/dave_core/topology"
click node_lv_topology "https://github.com/davefoss/dave_core/blob/main/src/dave_core/topology/low_voltage.py"
click node_gas_topology "https://github.com/davefoss/dave_core/blob/main/src/dave_core/topology/high_pressure.py"
click node_cleanup "https://github.com/davefoss/dave_core/blob/main/src/dave_core/processing/clean_up.py"
click node_checks "https://github.com/davefoss/dave_core/blob/main/src/dave_core/plausibility/structural_check.py"
click node_pandapower "https://github.com/davefoss/dave_core/blob/main/src/dave_core/converter/create_pandapower.py"
click node_pandapipes "https://github.com/davefoss/dave_core/blob/main/src/dave_core/converter/create_pandapipes.py"
click node_format_io "https://github.com/davefoss/dave_core/blob/main/src/dave_core/io/file_io.py"
click node_archive "https://github.com/davefoss/dave_core/blob/main/src/dave_core/archiv_io.py"
click node_plot "https://github.com/davefoss/dave_core/blob/main/src/dave_core/plotting/plot.py"
click node_settings "https://github.com/davefoss/dave_core/blob/main/src/dave_core/settings.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_create,node_area,node_osm_geo,node_settings,node_user toneBlue
class node_oep,node_osm_req,node_reference_data,node_openenergy,node_overpass toneAmber
class node_components,node_plants,node_substations,node_transformers,node_gas_components,node_loads,node_topology,node_lv_topology,node_gas_topology toneMint
class node_dataset,node_pandapower,node_pandapipes,node_format_io,node_archive toneRose
class node_cleanup,node_checks,node_plot toneIndigo
```

## Components

### Model generation

- [Generation workflow](https://github.com/davefoss/dave_core/blob/main/src/dave_core/create.py): `src/dave_core/create.py`
- [Target area](https://github.com/davefoss/dave_core/blob/main/src/dave_core/geography/target_area.py): `src/dave_core/geography/target_area.py`
- [OSM geography](https://github.com/davefoss/dave_core/blob/main/src/dave_core/geography/osm_data.py): `src/dave_core/geography/osm_data.py`
- [Runtime settings](https://github.com/davefoss/dave_core/blob/main/src/dave_core/settings.py): `src/dave_core/settings.py`

### Open data

- [OEP requests](https://github.com/davefoss/dave_core/blob/main/src/dave_core/datapool/oep_request.py): `src/dave_core/datapool/oep_request.py`
- [OSM requests](https://github.com/davefoss/dave_core/blob/main/src/dave_core/datapool/osm_request.py): `src/dave_core/datapool/osm_request.py`
- [Reference data](https://github.com/davefoss/dave_core/blob/main/src/dave_core/datapool/read_data.py): `src/dave_core/datapool/read_data.py`
- **OpenEnergyPlatform**
- **Overpass services**

### Grid construction

- [Grid components](https://github.com/davefoss/dave_core/tree/main/src/dave_core/components): `src/dave_core/components`
- [Power plants](https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/power_plants.py): `src/dave_core/components/power_plants.py`
- [Substations](https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/substations.py): `src/dave_core/components/substations.py`
- [Transformers](https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/transformers.py): `src/dave_core/components/transformers.py`
- [Gas components](https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/gas_components.py): `src/dave_core/components/gas_components.py`
- [Loads](https://github.com/davefoss/dave_core/blob/main/src/dave_core/components/loads.py): `src/dave_core/components/loads.py`
- [Voltage topology](https://github.com/davefoss/dave_core/tree/main/src/dave_core/topology): `src/dave_core/topology`
- [Low-voltage topology](https://github.com/davefoss/dave_core/blob/main/src/dave_core/topology/low_voltage.py): `src/dave_core/topology/low_voltage.py`
- [Gas topology](https://github.com/davefoss/dave_core/blob/main/src/dave_core/topology/high_pressure.py): `src/dave_core/topology/high_pressure.py`

### Model and exchange

- [Grid dataset](https://github.com/davefoss/dave_core/blob/main/src/dave_core/dave_structure.py): `src/dave_core/dave_structure.py`
- [Pandapower export](https://github.com/davefoss/dave_core/blob/main/src/dave_core/converter/create_pandapower.py): `src/dave_core/converter/create_pandapower.py`
- [Pandapipes export](https://github.com/davefoss/dave_core/blob/main/src/dave_core/converter/create_pandapipes.py): `src/dave_core/converter/create_pandapipes.py`
- [File and format IO](https://github.com/davefoss/dave_core/blob/main/src/dave_core/io/file_io.py): `src/dave_core/io/file_io.py`
- [Archive IO](https://github.com/davefoss/dave_core/blob/main/src/dave_core/archiv_io.py): `src/dave_core/archiv_io.py`

### Validation and views

- [Model cleanup](https://github.com/davefoss/dave_core/blob/main/src/dave_core/processing/clean_up.py): `src/dave_core/processing/clean_up.py`
- [Structural checks](https://github.com/davefoss/dave_core/blob/main/src/dave_core/plausibility/structural_check.py): `src/dave_core/plausibility/structural_check.py`
- [Network plotting](https://github.com/davefoss/dave_core/blob/main/src/dave_core/plotting/plot.py): `src/dave_core/plotting/plot.py`

### Other components

- **Model user**

## Connections

- Model user → Generation workflow: requests model
- Generation workflow → Target area: selects region (evidence: `src/dave_core/create.py`)
- Generation workflow → Grid dataset: initializes model (evidence: `src/dave_core/create.py`)
- Generation workflow → Grid components: builds components (evidence: `src/dave_core/create.py`)
- Generation workflow → Model cleanup: cleans model (evidence: `src/dave_core/create.py`)
- Generation workflow → Pandapower export: converts model (evidence: `src/dave_core/create.py`)
- Generation workflow → Pandapipes export: converts model (evidence: `src/dave_core/create.py`)
- Generation workflow → File and format IO: uses file IO (evidence: `src/dave_core/create.py`)
- Generation workflow → Archive IO: uses archive IO (evidence: `src/dave_core/create.py`)
- Generation workflow → Runtime settings: uses settings (evidence: `src/dave_core/create.py`)
- Target area → Reference data: reads boundaries (evidence: `src/dave_core/geography/target_area.py`)
- Target area → OSM geography: loads map features (evidence: `src/dave_core/geography/target_area.py`)
- OSM geography → OSM requests: requests map data (evidence: `src/dave_core/geography/osm_data.py`)
- OSM requests → Reference data: uses data readers (evidence: `src/dave_core/datapool/osm_request.py`)
- OSM requests → Overpass services: queries
- OEP requests → OpenEnergyPlatform: queries (evidence: `src/dave_core/datapool/oep_request.py`)
- Grid components → Power plants: includes
- Grid components → Substations: includes (evidence: `src/dave_core/components/transformers.py`)
- Grid components → Transformers: includes (evidence: `src/dave_core/components/transformers.py`)
- Grid components → Gas components: includes
- Grid components → Loads: includes
- Power plants → OEP requests: requests source data (evidence: `src/dave_core/components/power_plants.py`)
- Substations → OEP requests: requests source data (evidence: `src/dave_core/components/substations.py`)
- Transformers → Substations: uses substation data (evidence: `src/dave_core/components/transformers.py`)
- Loads → OSM requests: requests map data (evidence: `src/dave_core/components/loads.py`)
- Loads → Reference data: reads reference data (evidence: `src/dave_core/components/loads.py`)
- Gas components → Reference data: reads reference data (evidence: `src/dave_core/components/gas_components.py`)
- Voltage topology → Low-voltage topology: includes (evidence: `src/dave_core/topology/low_voltage.py`)
- Voltage topology → Gas topology: includes
- Low-voltage topology → Substations: uses substations (evidence: `src/dave_core/topology/low_voltage.py`)
- Model cleanup → Structural checks: checks structure (evidence: `src/dave_core/processing/clean_up.py`)
- Pandapower export → Structural checks: runs diagnostics (evidence: `src/dave_core/converter/create_pandapower.py`)
- File and format IO → Grid dataset: reads and writes (evidence: `src/dave_core/io/file_io.py`)
- Archive IO → File and format IO: uses file IO (evidence: `src/dave_core/archiv_io.py`)
