Role Description
System Planner, Co-op [Eng.]
May 2024 - Aug 2024
To gain insight into their power systems, electrical distribution companies model and simulate their networks using load flow analysis software. As a system planning co-op, I was responsible for assisting in the 2024 CYME model update, which ensured that network models were up to date with the latest projects and could be used reliably. My day-to-day work involved modifying production models to reflect the electrical connectivity and layout of the most current system. To expedite this process, I wrote various Python automation scripts, which were capable of executing simulations, analyzing results, modifying the model, and editing the structure of an internal project manger database.
Some of my key responsibilities:
Interfaced with CYME's Python API in embedded and non-embedded environments
Validated connectivity and layout of the system by cleaning up project redundancies and resolving topology conflicts
Executed load allocations to update the models with new customer load data. Updated primary meter loading using field data
Updated validating legacy project modifications and adding new entries to the base model's project management system
Prepared production models for contingency & restoration simulations
Python libraries I learned and worked with:
Major Projects
Load Allocation Automation
Load allocation is a critical step in the modeling process which predicts how load is distributed across a system. I developed a Python automation suite that performs load allocation simulations within CYME using its Python API. The suite used a central program to run simulations, locate errors within network, identify the error type and execute an appropriate corrective action. Any modifications that the script made to the production model were logged for engineering review. This project saved our team ~3 weeks worth of manual simulation and debugging.
Database Layer for APM
CYME provides licensing for an "Advanced Project Manager (APM)" module, which allows project scopes/mods to be included or excluded from a working model. I designed a custom database layer in Python which abstracted APM data structures into a class with methods to manipulate project data both in-memory and on disk. Using hierarchal indexing, I also implemented a simple but useful querying system. My design allowed our team to automate repetitive project management tasks, organize modifications, and quickly identify redundant/problematic legacy projects and mods.
Network Connectivity Debugger
In order to be used reliably, production models must possess an accurate and functional network connectivity, but there are occasional mistakes in the model extraction which need to be fixed during the update. I defined several classes of connectivity error and scripted a suite which identified and resolved these errors by gathering context from the surrounding system. The suite repaired connectivity issues such as invalid phase merges, looping conflicts and missing POD ties. It also flagged suspicious network patterns for manual review and logged all actions in a report. This project saved our team ~1 month worth of manual debugging.
Conductor Bottleneck Identifier
A conductor bottleneck refers a section of line or cable that has a lower ampacity that the upstream and downstream conductors. In practice, conductor bottlenecks pose thermal overload risks and voltage drop issues. I developed an algorithm which iterated over network models to identify bottleneck scenarios and fix them by 'upgrading' conductors appropriately based on various network parameters. The script logged all modifications to the production models, which were manually validated. This algorithm saved our team ~2 weeks worth of manual searching, and was later used to expedite the contingency switching assessment.
Note: All proprietary or confidential information belonging to these companies and their operations has been omitted from the content on this website.