Building a Distribution System#

With the distribution graph and all three mappers (phase, voltage, equipment) ready, you can assemble the final DistributionSystem — a Grid Data Models object that can be serialized to JSON or exported to simulator formats.

Build and Export#

from shift import DistributionSystemBuilder
from pathlib import Path

# `new_graph` — DistributionGraph (see Building a Graph / Updating Branch Types)
# `phase_mapper` — from Mapping Phases
# `voltage_mapper` — from Mapping Voltages
# `eq_mapper` — from Mapping Equipment

builder = DistributionSystemBuilder(
    name="fort_worth_feeder",
    dist_graph=new_graph,
    phase_mapper=phase_mapper,
    voltage_mapper=voltage_mapper,
    equipment_mapper=eq_mapper,
)

system = builder.get_system()

Serialize to JSON#

output_folder = Path("./models")
output_folder.mkdir(exist_ok=True)
system.to_json(output_folder / "fort_worth_feeder.json")

Export to a Simulator#

The DistributionSystem object is compatible with Ditto writers for exporting to OpenDSS, CYME, Synergi, and other simulators:

# Example (requires the Ditto package)
# from ditto.writers.opendss import OpenDSSWriter
# writer = OpenDSSWriter()
# writer.write(system, output_path="./opendss_model")

What’s Next#

See the Complete Example for the full pipeline in a single script, or the API Reference for detailed class documentation.