# PNNL TD Dynamic Load Use Case Scripts¶

## Introduction¶

This use case is to provide data and insights of detailed individual load responses (including the protection actions) to faults in the transmission system for deriving the aggregate protection models and evaluating the performance of WECC composite load model, i.e., CMPLDW.

Thus, it requires the T&D  dynamic co-simulation capability. For initialization of the dynamic co-simulation, T&D power flow co-simulation is also required.

In this use case, the transmission part simulation is performed by InterPSS, whereas GridLAB-D is used for distribution power flow and dynamic simulation. GridLAB-D subsecond (deltaMode) simulation capability will be leveraged for dynamic simulation. HELICS is utilized to handle time synchronization and data message exchange between InterPSS and GridLAB-D. As InterPSS is a Java-based simulation tool, so HELICS with Java binding is needed for InterPSS, while GridLAB-D will use the default HELICS C++ APIs.

In the current release, the test cases comprise IEEE 39-bus system (for the transmission system part), a test feeder and a generic commercial PNNL taxonomy feeder (for the distribution system part).

While HECLIS supports iteration at both initialization and execution stages, in this use case, iteration between T&D at both power flow and each time step of dynamic simulation has not been implemented yet, due to the fact that current GridLAB-D HELICS implementation do not support iteration. This will be one of the focuses of next phase development.

## Install GridLAB-D with HELICS interface¶

The use case is currently developed in Linux environment, so the following instructions are only tested on Linux. Information for other development environment will be provided in the future.

1. Follow the instructions provided by HELICS developers and install HELICS with Java binding, which will be enabled by default installation configuration setting. You can use ccmake . during the build process to check or change the configuration.

2. Install GridLAB-D. HELICS support currently (7/14/2018) is provided in the feature/1024 branch <https://github.com/gridlab-d/gridlab-d/tree/feature/1024>__, So you need to check it out first: git checkout -b feature/1024 origin/feature/1024

Then you have to build GridLAB-D yourself as described here.

NOTE: The motor protection models in GridLAB-D are currently (7/14/2018) developed in feature/1105 <https://github.com/gridlab-d/gridlab-d/tree/feature/1105>__ branch, so it requires some extra work to check out and merge this part into the GridLAB-D to run on the one of the study cases with motor protection.

## Checkout required InterPSS libraries¶

The modeling and simulation capabilities that will be used in this use case are accessed through InterPSS Java libraries (*jar), which in turn depend on some third-party libraries. All these libraries are access in the InterPSS-Project/**ipss-common** on github.

To checkout all the required libraries, simply run git clone https://github.com/InterPSS-Project/ipss-common.git

## Setup InterPSS running environment in Eclipse¶

Given that compiling the simulation java file for this use case using InterPSS and HELICS Jar files is very complex, Eclipse IDE is recommended to use to build and run the InterPSS-based simulation code.

1. Install Java-8, if it is not available or other Java version is used.
2. Install Eclipse. Follow Instructions provided here
3. Open Eclipse:
1. cd <path to Eclipse>
2. ./eclipse
4. Import the InterPSS ipss-common project into Eclipse
5. Check out this TDC-Use-Case project
6. Import ipss.plugin.external.cosim project under the PNNL-TD-Dynamic-Load into Eclipse
7. Configure ipss.plugin.external.cosim project
• Select Project->Right Click->Build Path->Link Source…,
• Select the <Path to HELICS Build folder>/swig/java folder as the Linked folder location.
• Configure Build Path: * For the libraries, select and add all those under the ipss.lib folder of the ipss-common , select and add the following jar files under the ipss.lib.3rdPty folder: * apache: commons-logging, commons-math3 * cache: hazelcast-3.8.jar * eclipse: all emf jar files

## Case files¶

1. Transmissions:
• A dataset for IEEE 39-Bus system, including power flow, dynamic and sequence data
• A json configuration file for co-simulation
2. Distribution feeders:
• A simple feeder with diesel generators– IEEE-13_Dynamic_2gen_swingsub_helics.glm, and associated player files and a json configuration file for co-simulation
• A general commercial taxonomy feeder, i.e., GC-12.47-1.glm, with motor and helics_msg modules added to it, and associated player files and a json configuration file for co-simulation

## Run the use case¶

1. Open terminal 1, start helics_brokers with cmd lines, for one transmission and one distribution feeder co-simulation, we will need 2 brokers, and the cmd line should be, helics_broker 2
2. Open terminal 2, start Eclipse, run TestTransCoSim.java
3. Open terminal 3, first get the case folder: cd /home/huan289/eclipse-workspace/ipss.plugin.external.cosim/testData/GLD/, then run gridlab-d IEEE-13_Dynamic_2gen_swingsub_helics.glm