OEDI SI/Scenarios/EMT simulation for transmission system with IBRs using ParaEMT

From Open Energy Information

EMT simulation for transmission system with IBRs using ParaEMT​ Summary


Docker Container

Download the docker container at:


Run Locally

http://localhost:8080/edit_scenario?EMT simulation for transmission system with IBRs using ParaEMT
    Run Locally


Input Data

Download input data at:


    Output Data

    Download output data at:

      References


        Back to EMT simulation for transmission systems with IBRs



        Property "Objective" (as page type) with input value "Generate EMT simulation data for transmission systems using an open-source Python-based EMT simulator ParaEMT. The dataset generated using this scenario can be utilized for ML-based fault detection, transient stability analysis, IBR interconnection study, and so on." contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process.


      1. Standard EMT simulation algorithms implemented in Python.
      2. Run an open-source EMT simulator, ParaEMT, efficiently through Google Colab or Docker.
      3. Open source ParaEMT code from GitHub: https://github.com/NREL/ParaEMT_public
      4. System static data in a PSSE .raw file and dynamic data in a .xlsx file. Several test system data are included in the GitHub repository.
      5. Three-phase voltage of the network buses and currents of branches.
      6. Dynamic states of synchronous generators (e.g., rotor speed, rotor angle, active power, reactive power, exciter field voltage).
      7. Dynamic states of IBRs (e.g., PLL frequency, d-q axes currents, active power, reactive power).
      8. Bus states (e.g., Bus frequency, Bus voltage magnitude, Bus voltage angle).
      9. Load states (e.g., load impedance magnitude and angle, load active and reactive power).
      10. The Google Colab Notebook includes the main function for conducting EMT simulations:
        1. Install required packages. Run this only once at the beginning.
        2. Import required libraries.
        3. Configure simulation settings, e.g., choose system, set time step and time length, configure disturbances.
        4. Initialize the simulation.
        5. Run time domain simulation.
        6. Plot simulation results.
        7. Save simulation results as .csv files.
        8. Download saved .csv files and plotted figures from Google Colab virtual machine.
      11. The Docker includes all required functions along with the Python environment, run an EMT simulation in the Jupiter Notebook:
        1. Configure simulation settings, e.g., choose system, set time step and time length, configure disturbances.
        2. Initialize the simulation.
        3. Run time domain simulation.
        4. Plot simulation results.
        5. Save simulation results as .pkl and .csv files.
      12. Simulation configurations include mainly:

        Choose system, time step, time length:
        SimMod = 1 # 0 - Save a snapshot, 1 - run from a snapshot
        DSrate = 10 # down sampling rate, i.e. results saved every DSrate sim steps
        systemN = 6 # 1: 2-gen, 2: 9-bus, 3: 39-bus, 4: 179-bus, 5: 240-bus, 6: 2-area
        ts = 50e-6 # time step, second
        Tlen = 10 # total simulation time length, second

        Control step change:
        emt.t_sc = 1
        emt.i_gen_sc = 0
        emt.flag_exc_gov = 1 # 0 - exc, 1 - gov emt.dsp = - 0.02
        emt.flag_sc = 1 # default, do not change

        Generator trip:
        emt.t_gentrip = 200
        emt.i_gentrip = 1
        emt.flag_gentrip = 1
        emt.flag_reinit = 1

        Bus grounding fault, with line trip:
        emt.busfault_t = 0.5
        emt.fault_bus_idx = 0
        emt.busfault_tlen = 5/60 # 5 cycles
        emt.busfault_type = 3 # Check psutils for fault types
        emt.busfault_r = [x / 100000 for x in [1, 1, 1, 1, 1, 1]]
        emt.fault_tripline = 0 # 1: Enable tripping line
        emt.fault_line_idx = 0
        emt.bus_del_ind=[] #bus delete index, do not change
        emt.add_line_num=0 # Do not change
        emt.t_gentrip = 200
        emt.i_gentrip = 1
        emt.flag_gentrip = 1
        emt.flag_reinit = 1
      13. Test system input data are included in the GitHub repository, which is linked automatically with the Google Colab notebook code, and also included in OEDI-ParaEMT Docker.
      14. The Google Colab notebook code will download the simulation results data automatically after running it, and Docker will also save the results.
      15. M. Xiong, B. Wang, D. Vaidhynathan, J. Maack, M. Reynolds, A. Hoke, K. Sun, J. Tan, “ParaEMT: an open source, parallelizable, and HPC-compatible EMT simulator for large-scale IBR-rich power grids,” IEEE Trans. Power Del., vol. 39, no. 2, pp. 911-921, Apr. 2024.
      16. M. Xiong, B. Wang, D. Vaidhynathan, J. Maack, M. Reynolds, A. Hoke, K. Sun, D. Ramasubramanian, V. Verma, J. Tan, “An open-source parallel EMT simulation framework,” Electric Power Syst. Res., vol. 235, 2024, Art. no. 110734.