How cresym/harmony works
Harmony is a framework for modeling and analyzing converter-rich AC/DC power systems, with command-line and graphical entry points. The principal workflow is to provide a JSON configuration, construct a simulation and its network components, then run power-system computations and inspect results. The model covers network elements, renewable plants, converters, and controls; analysis branches include power flow/OPF, state-space modeling, stability estimation, and stability certificates. The README documents CLI, GUI, JSON, and C++-script usage. Sampled source confirms CLI dispatch and JSON component construction; wiring among unsampled subsystems is intentionally left out.
Main entry points: network.cpp Network · component_builder.cpp Component factory · cli.cpp CLI dispatch · main.cpp CLI entry
Components 26
User interfaces
- CLI dispatch
src/cli.cpp - CLI entry
src/main.cpp - GUI launcher
src/ui/harmony_launcher.cpp - GUI entry
src/ui/harmony_ui_main.cpp
Configuration
- JSON validation
src/json/json_validator.cpp - JSON parameters
src/json/json_parameters.cpp - JSON expressions
src/json/json_expression.cpp - Component factory
src/json/component_builder.cpp - Simulation builder
src/json/simulation_builder.cpp - Computation runner
src/json/computation_runner.cpp
Power system model
- Network
src/network.cpp - Subnetwork
src/SubNetwork.cpp - Grid elements
src/Elements/Element.cpp - Converters
src/Elements/Converter/MMC.cpp - Renewable plants
src/Elements/RES/PV_plant.cpp
Analysis and results
- Power flow and OPF
src/Solver/OPF/Powerflow_solver.cpp - State-space model
src/Solver/State_Space_Model/State_Space_Model.cpp - Stability estimate
src/Solver/Stability_Estimate/Stability_estimate.cpp - Stability certificates
src/Solver/Certificate/Stability_certificate.cpp - Visualization
src/Solver/Helper_Functions/Visualization.cpp
Control dynamics
- Control blocks
src/Control/Control_block.cpp - P and PI controllers
src/Control/Controller/ProportionalIntegral_controller.cpp
Other components
- CLI user
- GUI user
- JSON input
- C++ scripts
Connections 22
- CLI user → CLI entry: invokes
- CLI entry → CLI dispatch: parses options
- CLI dispatch → Computation runner: runs JSON simulation
- JSON input → Computation runner: configures run
- GUI user → GUI launcher: launches
- GUI launcher → GUI entry: starts interface
- C++ scripts → CLI dispatch: selects example
- JSON validation → JSON input: validates
- JSON parameters → JSON input: resolves parameters
- JSON expressions → JSON input: parses expressions
- Component factory → Grid elements: constructs elements
- Component factory → Converters: constructs converters
- Component factory → Renewable plants: constructs plants
- Simulation builder → Network: builds simulation network
- Network → Subnetwork: organizes network
- Network → Power flow and OPF: supplies network data
- Network → State-space model: supplies system model
- State-space model → Stability estimate: supports stability analysis
- Stability estimate → Stability certificates: informs certification
- Power flow and OPF → Visualization: provides results
- Converters → Control blocks: uses control dynamics
- Control blocks → P and PI controllers: specialized by