Code Monkey home page Code Monkey logo

arras-energy / gridlabd-old Goto Github PK

View Code? Open in Web Editor NEW
31.0 31.0 31.0 578.29 MB

HiPAS GridLAB-D is the California Energy Commission (CEC) version of GridLAB-D.

Home Page: https://docs.gridlabd.us

License: BSD 3-Clause "New" or "Revised" License

Python 8.23% Batchfile 0.08% C++ 62.80% C 2.36% Makefile 0.51% CSS 0.19% XSLT 2.46% Shell 0.82% M4 0.70% HTML 6.50% JavaScript 0.49% MATLAB 0.02% Awk 0.08% TeX 0.01% Dockerfile 0.01% Jupyter Notebook 14.64% HCL 0.11%
grid-simulation power-simulator power-systems power-systems-analysis smartgrid transactive-energy

gridlabd-old's People

Contributors

afisher1 avatar aivanova5 avatar atmurray avatar avpeery avatar catzzz avatar chenyousu avatar dchassin avatar dependabot[bot] avatar dpinney avatar ftuffner avatar huangrenke avatar jacobhansens avatar jcald1 avatar jcfuller1 avatar johnsonhsiung avatar jongoncalves avatar kdheepak avatar kellydavid avatar kevinpschneider avatar nikhilgupta10 avatar ntenney avatar priyatm62 avatar saraborc avatar sjinpnnl avatar temcdrm avatar trevorhardy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gridlabd-old's Issues

Python code to process JSON dumps

Requested features:

  1. Implement as a python class.
  2. Read and write JSON dumps and GLM MINIMAL saves
  3. Sanity checks on the model:
  • header value checks (e.g., lat/lon, naming conventions)
  • basic value checks for object properties based on underlying class
  • topological processing (e.g., powerflow model structure)
  1. Graphical representation
  • graph representations of model structure and powerflow structure
  1. Polyglot model save/load
  2. Direct translators for other tools
  • Matpower
  • CIM
  • Synergi
  • Cyme
  • OpenDSS
  1. Model editing API (add, remove, set/get properties, etc.)

Support Aliases for Recorded Properties

Recorded properties should be able to be aliased so that the names in the CSV header override the actual property name.
e.g.:

property node_HVMV_Sub_LSB:total_moment as node_HVMV_Sub_LSB:current_stress

[CLOSED] Timestamps need to accept " in addition to '

This is necessary to allow the following usage:

#define STARTTIME=2000-01-01 00:00:00 UTC
#define STOPTIME=2000-01-02 00:00:00 UTC
clock {
    starttime ${STARTTIME};
    stoptime ${STOPTIME};
}

which is currently impossible because the parser insists on having single quotes, which global_getvar always put only double quotes.

Filters are not working

Visual inspection of gldcore/autotest/test_filter_delay/output.csv indicates the filter is not working. Also, the absence of an assert statement makes it difficult to detect the failure.

Support the Continuation of a Simulation Run Using the State of a Last Simulation Run

After running a simulation using the -o flag with an XML or JSON output file name, the user should be able to feed that final state file into a new simulation run so that the final state after the second run is the same as if a single simulation had been run with the exact same duration/number of time steps.

The final random state of an object after the first run should be carried over as the starting random state of the same object in the next simulation run, along with the other states. The original random seed should be carried forward as well, but any new random numbers would continue from the current random state, not the original random seed. At the end of the simulation the random state and random seed would match the values as if there had been a single run.

Add measured_voltage_1-2 to powerflow:triplex_meter

The current values available are:

complex measured_voltage_1[V]; // measured voltage, phase 1 to ground
complex measured_voltage_2[V]; // measured voltage, phase 2 to ground
complex measured_voltage_N[V]; // measured voltage, phase N to ground

Add support for printenv command-line option

We need the ability to see what the environment is for a gridlabd installation. Having a --printenv command-line option to display the environment variables would be very useful.

Properties with units are not working in the pole object

Any property in pole_configuration object that has a unit can not be re-assigned unless the unit is specified explicitly within a model file. Error:

[root@1c381fc128de autotest]# gridlabd test_pole.glm
/usr/local/bin/gridlabd: line 341: 66732 Bus error               "$bindir/gridlabd.bin" "$@"

Ability to record the units of measure

When recording a property, we should be able to extract the units of measure.

e.g., for wind speed:

wind_speed = 10
wind_speed.units_of_measure = 'm/s'

Add support for gdb in docker images

To use the --gdb command line option on gridlabd docker images, the images must be run with the options --cap-add=SYS_PTRACE --security-opt seccomp=unconfined and the following command must be run in the container debuginfo-install glibc-2.17-222.el7.x86_64 libgcc-4.8.5-28.el7_5.1.x86_64 libstdc++-4.8.5-28.el7_5.1.x86_64.

Add the ability to identify the origin of a build

We need the ability to produce the git information that was prevailing during the build of the current install. This includes the remote, commit number, status, and diff among other things. The should be obtain using a command line option like --origin.

Implement fault in pole model when critical stress is reached.

When the critical stress is reached, it should trigger a fault.

Whether or not a fault should be triggered when the critical stress is reached should be a parameter in the pole object. The default should probably be true.

Note: Depending on what is decided on how to handle wind susceptibility, we may want the configuration property to allow the modeler to trigger a fault based on the wind speed at failure property (calculated from wind susceptibility). The fault could be caused by either the pole stress or wind speed at failure threshold reached (whichever comes first), only or the other threshold reached, or only when both thresholds are reached.

Eliminate use of `min` and `max` macros in `platform.h`

Problem

The macros used to be the traditional C macro, but were changed to use fmin() and fmax(). Unfortunately this doesn't work for values that aren't double, e.g., as char* in connection/udp.cpp.

Solution

The entire code base should be updated so that the correct functions (e.g., fmin, fmax) are used and the min and max macros are eliminated completely.

This would also address the hidden problem that max is a defined as a member of some classes like double_array and complex_array.

Save/dump writes values instead of definitions

Saves are different from dumps insofar as we need to save the definitions of properties like randomvar, schedule, etc. rather than saving the value of the property. This makes it difficult if not impossible to restore a model fully to the condition it was in at the time it was saved.

The distinction between a save and dump is not made at this point but it should be introduced. This will require a review of the code to determine where the expectation is a save versus a dump.

Add susceptibility to wind property to poles

Add a property to the powerflow:pole object to record the suceptibility to wind. This may be derivative of the "ratio of actual stress to critical stress" with respect to wind.

Multi-recorder string buffer error

@aivanova5 see branch, I converted one node to a pole. node_15

https://github.com/PresencePG/grip-server/blob/feature/glm_add_subnetwork/components/grip_sim_runner/simulation_models/ieee123_pole_vulnerability/ieee123_pole_vulnerability.glm

(venv370) ➜  ieee123_pole_vulnerability git:(feature/glm_add_subnetwork) ✗ docker run -it -v $(pwd):/model gridlabd/slac-master:latest gridlabd --version -o ieee123.glm.json -W /model ieee123_pole_vulnerability.glm
GridLAB-D 4.0.0-17872 (b0721201:master) 64-bit LINUX RELEASE
*** Error in `/usr/local/bin/gridlabd.bin': free(): invalid next size (normal): 0x0000000001da66c0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81489)[0x7f73bc025489]
/usr/local/bin/gridlabd.bin(delete_exception_handler+0x33)[0x429df3]
/usr/local/bin/gridlabd.bin(unit_find+0x48)[0x48cef8]
/usr/local/bin/gridlabd.bin[0x41292a]
/usr/local/bin/gridlabd.bin[0x4152a0]
/usr/local/bin/gridlabd.bin[0x450b80]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x44f25f]
/usr/local/bin/gridlabd.bin[0x4524f5]
/usr/local/bin/gridlabd.bin(loadall_glm_roll+0x24c)[0x455c2c]
/usr/local/bin/gridlabd.bin(loadall+0x10d)[0x45601d]
/usr/local/bin/gridlabd.bin(cmdarg_load+0x1b1)[0x41c301]
/usr/local/bin/gridlabd.bin(main+0x15f)[0x4157ef]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f73bbfc63d5]
/usr/local/bin/gridlabd.bin[0x415bb4]
======= Memory map: ========
00400000-004c6000 r-xp 00000000 08:01 1070429                            /usr/local/bin/gridlabd.bin
006c5000-006c6000 r--p 000c5000 08:01 1070429                            /usr/local/bin/gridlabd.bin
006c6000-006d5000 rw-p 000c6000 08:01 1070429                            /usr/local/bin/gridlabd.bin
006d5000-00ece000 rw-p 00000000 00:00 0
014f3000-01dbd000 rw-p 00000000 00:00 0                                  [heap]
7f73ac000000-7f73ac021000 rw-p 00000000 00:00 0
7f73ac021000-7f73b0000000 ---p 00000000 00:00 0
7f73b23d7000-7f73b2446000 r-xp 00000000 08:01 1070549                    /usr/local/lib/gridlabd/tape.so
7f73b2446000-7f73b2646000 ---p 0006f000 08:01 1070549                    /usr/local/lib/gridlabd/tape.so
7f73b2646000-7f73b2647000 r--p 0006f000 08:01 1070549                    /usr/local/lib/gridlabd/tape.so
7f73b2647000-7f73b2649000 rw-p 00070000 08:01 1070549                    /usr/local/lib/gridlabd/tape.so
7f73b2649000-7f73b2656000 r-xp 00000000 08:01 1070529                    /usr/local/lib/gridlabd/gismo.so
7f73b2656000-7f73b2855000 ---p 0000d000 08:01 1070529                    /usr/local/lib/gridlabd/gismo.so
7f73b2855000-7f73b2856000 r--p 0000c000 08:01 1070529                    /usr/local/lib/gridlabd/gismo.so
7f73b2856000-7f73b2857000 rw-p 0000d000 08:01 1070529                    /usr/local/lib/gridlabd/gismo.so
7f73b2857000-7f73bb5c1000 rw-p 00000000 00:00 0
7f73bb5c1000-7f73bb616000 r-xp 00000000 08:01 1070547                    /usr/local/lib/gridlabd/residential.so
7f73bb616000-7f73bb815000 ---p 00055000 08:01 1070547                    /usr/local/lib/gridlabd/residential.so
7f73bb815000-7f73bb816000 r--p 00054000 08:01 1070547                    /usr/local/lib/gridlabd/residential.so
7f73bb816000-7f73bb818000 rw-p 00055000 08:01 1070547                    /usr/local/lib/gridlabd/residential.so
7f73bb818000-7f73bb81a000 rw-p 00000000 00:00 0
7f73bb81a000-7f73bb97f000 r-xp 00000000 08:01 1070543                    /usr/local/lib/gridlabd/powerflow.so
7f73bb97f000-7f73bbb7f000 ---p 00165000 08:01 1070543                    /usr/local/lib/gridlabd/powerflow.so
7f73bbb7f000-7f73bbb80000 r--p 00165000 08:01 1070543                    /usr/local/lib/gridlabd/powerflow.so
7f73bbb80000-7f73bbb82000 rw-p 00166000 08:01 1070543                    /usr/local/lib/gridlabd/powerflow.so
7f73bbb82000-7f73bbb85000 rw-p 00000000 00:00 0
7f73bbb85000-7f73bbba1000 r-xp 00000000 08:01 1070521                    /usr/local/lib/gridlabd/climate.so
7f73bbba1000-7f73bbda0000 ---p 0001c000 08:01 1070521                    /usr/local/lib/gridlabd/climate.so
7f73bbda0000-7f73bbda1000 r--p 0001b000 08:01 1070521                    /usr/local/lib/gridlabd/climate.so
7f73bbda1000-7f73bbda2000 rw-p 0001c000 08:01 1070521                    /usr/local/lib/gridlabd/climate.so
7f73bbda2000-7f73bbfa4000 rw-p 00000000 00:00 0
7f73bbfa4000-7f73bc166000 r-xp 00000000 08:01 1331013                    /usr/lib64/libc-2.17.so
7f73bc166000-7f73bc366000 ---p 001c2000 08:01 1331013                    /usr/lib64/libc-2.17.so
7f73bc366000-7f73bc36a000 r--p 001c2000 08:01 1331013                    /usr/lib64/libc-2.17.so
7f73bc36a000-7f73bc36c000 rw-p 001c6000 08:01 1331013                    /usr/lib64/libc-2.17.so
7f73bc36c000-7f73bc371000 rw-p 00000000 00:00 0
7f73bc371000-7f73bc388000 r-xp 00000000 08:01 1331177                    /usr/lib64/libpthread-2.17.so
7f73bc388000-7f73bc587000 ---p 00017000 08:01 1331177                    /usr/lib64/libpthread-2.17.so
7f73bc587000-7f73bc588000 r--p 00016000 08:01 1331177                    /usr/lib64/libpthread-2.17.so
7f73bc588000-7f73bc589000 rw-p 00017000 08:01 1331177                    /usr/lib64/libpthread-2.17.so
7f73bc589000-7f73bc58d000 rw-p 00000000 00:00 0
7f73bc58d000-7f73bc5a2000 r-xp 00000000 08:01 1331058                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f73bc5a2000-7f73bc7a1000 ---p 00015000 08:01 1331058                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f73bc7a1000-7f73bc7a2000 r--p 00014000 08:01 1331058                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f73bc7a2000-7f73bc7a3000 rw-p 00015000 08:01 1331058                    /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f73bc7a3000-7f73bc8a4000 r-xp 00000000 08:01 1331119                    /usr/lib64/libm-2.17.so
7f73bc8a4000-7f73bcaa3000 ---p 00101000 08:01 1331119                    /usr/lib64/libm-2.17.so
7f73bcaa3000-7f73bcaa4000 r--p 00100000 08:01 1331119                    /usr/lib64/libm-2.17.so
7f73bcaa4000-7f73bcaa5000 rw-p 00101000 08:01 1331119                    /usr/lib64/libm-2.17.so
7f73bcaa5000-7f73bcb8e000 r-xp 00000000 08:01 1331213                    /usr/lib64/libstdc++.so.6.0.19
7f73bcb8e000-7f73bcd8d000 ---p 000e9000 08:01 1331213                    /usr/lib64/libstdc++.so.6.0.19
7f73bcd8d000-7f73bcd95000 r--p 000e8000 08:01 1331213                    /usr/lib64/libstdc++.so.6.0.19
7f73bcd95000-7f73bcd97000 rw-p 000f0000 08:01 1331213                    /usr/lib64/libstdc++.so.6.0.19
7f73bcd97000-7f73bcdac000 rw-p 00000000 00:00 0
7f73bcdac000-7f73bcdae000 r-xp 00000000 08:01 1331038                    /usr/lib64/libdl-2.17.so
7f73bcdae000-7f73bcfae000 ---p 00002000 08:01 1331038                    /usr/lib64/libdl-2.17.so
7f73bcfae000-7f73bcfaf000 r--p 00002000 08:01 1331038                    /usr/lib64/libdl-2.17.so
7f73bcfaf000-7f73bcfb0000 rw-p 00003000 08:01 1331038                    /usr/lib64/libdl-2.17.so
7f73bcfb0000-7f73bcfd2000 r-xp 00000000 08:01 1330973                    /usr/lib64/ld-2.17.so
7f73bd0c4000-7f73bd1cb000 rw-p 00000000 00:00 0
7f73bd1cd000-7f73bd1d1000 rw-p 00000000 00:00 0
7f73bd1d1000-7f73bd1d2000 r--p 00021000 08:01 1330973                    /usr/lib64/ld-2.17.so
7f73bd1d2000-7f73bd1d3000 rw-p 00022000 08:01 1330973                    /usr/lib64/ld-2.17.so
7f73bd1d3000-7f73bd1d4000 rw-p 00000000 00:00 0
7fff686b6000-7fff6870b000 rw-p 00000000 00:00 0                          [stack]
7fff687f1000-7fff687f3000 r--p 00000000 00:00 0                          [vvar]
7fff687f3000-7fff687f5000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
/usr/local/bin/gridlabd: line 351:    20 Aborted                 "$bindir/gridlabd.bin" "$@"

GridLAB-D Fails to compile on Ubuntu

GridLAB-D is not compiling on Debian-based systems. The following output is from Ubuntu and the Dockerfile sets up a Debian Docker image.

make[1]: Entering directory '/home/jorge/projects/grip/gridlabd'
  CXX      assert/assert_assert_la-assert.lo
  CXX      assert/assert_assert_la-complex_assert.lo
  CXX      assert/assert_assert_la-double_assert.lo
  CXX      assert/assert_assert_la-enum_assert.lo
  CXX      assert/assert_assert_la-int_assert.lo
  CXX      assert/assert_assert_la-init.lo
  CXX      assert/assert_assert_la-main.lo
  CXXLD    assert/assert.la
  CXX      climate/climate_climate_la-climate.lo
  CXX      climate/climate_climate_la-csv_reader.lo
  CXX      climate/climate_climate_la-init.lo
In file included from /usr/include/c++/7/vector:60:0,
                 from climate/climate.h:17,
                 from climate/init.cpp:11:
/usr/include/c++/7/bits/stl_algobase.h:243:56: error: macro "min" passed 3 arguments, but takes just 2
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
                                                        ^
/usr/include/c++/7/bits/stl_algobase.h:265:56: error: macro "max" passed 3 arguments, but takes just 2
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
                                                        ^
In file included from ./gldcore/gridlabd.h:91:0,
                 from climate/init.cpp:9:
/usr/include/c++/7/bits/stl_algobase.h:195:5: error: expected unqualified-id before ‘const’
     min(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/7/bits/stl_algobase.h:195:5: error: expected ‘)’ before ‘const’
/usr/include/c++/7/bits/stl_algobase.h:195:5: error: expected ‘)’ before ‘const’
/usr/include/c++/7/bits/stl_algobase.h:195:5: error: expected initializer before ‘const’
/usr/include/c++/7/bits/stl_algobase.h:219:5: error: expected unqualified-id before ‘const’
     max(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/7/bits/stl_algobase.h:219:5: error: expected ‘)’ before ‘const’
/usr/include/c++/7/bits/stl_algobase.h:219:5: error: expected ‘)’ before ‘const’
/usr/include/c++/7/bits/stl_algobase.h:219:5: error: expected initializer before ‘const’
In file included from /usr/include/c++/7/vector:60:0,
                 from climate/climate.h:17,
                 from climate/init.cpp:11:
/usr/include/c++/7/bits/stl_algobase.h:246:7: error: expected primary-expression before ‘if’
       if (__comp(__b, __a))
       ^~
/usr/include/c++/7/bits/stl_algobase.h:246:7: error: expected ‘}’ before ‘if’
/usr/include/c++/7/bits/stl_algobase.h:246:7: error: expected ‘;’ before ‘if’
/usr/include/c++/7/bits/stl_algobase.h:248:7: error: expected unqualified-id before ‘return’
       return __a;
       ^~~~~~
/usr/include/c++/7/bits/stl_algobase.h:268:7: error: expected primary-expression before ‘if’
       if (__comp(__a, __b))
       ^~
/usr/include/c++/7/bits/stl_algobase.h:268:7: error: expected ‘}’ before ‘if’
/usr/include/c++/7/bits/stl_algobase.h:268:7: error: expected ‘;’ before ‘if’
/usr/include/c++/7/bits/stl_algobase.h:270:7: error: expected unqualified-id before ‘return’
       return __a;
       ^~~~~~
/usr/include/c++/7/bits/stl_algobase.h:271:5: error: expected declaration before ‘}’ token
     }
     ^
Makefile:5348: recipe for target 'climate/climate_climate_la-init.lo' failed
make[1]: *** [climate/climate_climate_la-init.lo] Error 1
make[1]: Leaving directory '/home/jorge/projects/grip/gridlabd'
Makefile:7170: recipe for target 'install' failed
make: *** [install] Error 2

Dockerfile:

FROM library/python:3.7-stretch

RUN apt-get update
RUN apt-get install -y python3
RUN apt-get install -y python3-pip

# RUN apt-get install -y postgresql-client

# For VIM
RUN apt-get install -y apt-file
RUN apt-file update
RUN apt-get install -y vim

# RUN pip install --upgrade pip

# COPY requirements.txt /
# RUN pip3 install --trusted-host pypi.org -r /requirements.txt

# Setup GridLAB-D
RUN apt-get install -y libxerces-c-dev automake cmake libboost-all-dev  build-essential
WORKDIR /
#RUN git clone https://github.com/gridlab-d/gridlab-d.git
RUN git clone -b dchassin/json_dump https://github.com/dchassin/gridlabd.git
WORKDIR /gridlabd
RUN pwd
RUN autoreconf -if
RUN ./configure --enable-silent-rules 'CFLAGS=-g -O0 -w' 'CXXFLAGS=-g -O0 -w' 'LDFLAGS=-g -O0 -w'
RUN make
RUN make install

# WORKDIR /code

CMD ["gridlabd" "--version"]

Add pole failure modeling

Add support for power pole modeling to the powerflow module. This should include effect of wind, ice, and tilt. The model should be based on the attached document.

pole_loading.pdf

Wind Forecasting Module

The GRIP wind impact anticipation application needs a wind forecast.

It should probably:

  1. Be a Python module so it can be used for multiple applications on the platform.
  2. Provide at least an hourly, day-ahead forecast. Most distribution utility operational decisions are made day-ahead. And I doubt multi-day-ahead wind forecasts are any good.
  3. Give as much geographical specificity as possible (i.e. town level not state level).
  4. Use an API since it will probably rely on someone with lots of weather data and forecasting methods with a long history (NOAA?).
  5. Include a function to output .csv results that can be easily consumed by GridLAB-D's climate/pole objects.
  6. Be free or affordable by GRIP easily for a couple years.

From/to is not being exported to JSON

We're trying to get the to/from properties in the JSON dump. We can see the to connection from the overhead_line to the node in the GLM file, but in the JSON output, we're not seeing any reference to the node at all and no to/from in the node itself, so we're not seeing a way to get the topology from JSON.

GLM File:

object overhead_line {
     phases ABCN;
     name "LN5563942-5";
     from "Q16483_CAP";
     to "R42247";
     length 0.005260km;
     configuration "3PH_H-397_ACSR397_ACSR397_ACSR2/0_ACSR";
}

object node {
     phases ABCN;
     name "R42247";
     nominal_voltage 7199.558;
}

JSON output. No references to "R42247" other than the definition:

		"R42247" : {
			"id" : "14716",
			"class" : "node",
			"rank" : "5",
			"clock" : "4268336",
			"schedule_skew" : "0",
			"rng_state" : "115093100",
			"heartbeat" : "0",
			"guid" : "0x7dcee4dc7c3e8e67",
			"flags" : "0x100",
			"bustype" : "PQ",
			"busflags" : "HASSOURCE",
			"reference_bus" : "",
			"maximum_voltage_error" : "+0.719956 V",
			"voltage_A" : "+7495.8-33.0728d V",
			"voltage_B" : "+7524.74-153.128d V",
			"voltage_C" : "+7520.39+87.3804d V",
			"voltage_AB" : "+13011.8-3.03646d V",
			"voltage_BC" : "+12996-122.883d V",
			"voltage_CA" : "+13034+117.1d V",
			"mean_repair_time" : "+0 s",
			"frequency_measure_type" : "NONE",
			"sfm_Tf" : "+0.01 s",
			"pll_Kp" : "+10 pu",
			"pll_Ki" : "+100 pu",
			"measured_angle_A" : "+0 rad",
			"measured_frequency_A" : "+60 Hz",
			"measured_angle_B" : "+0 rad",
			"measured_frequency_B" : "+60 Hz",
			"measured_angle_C" : "+0 rad",
			"measured_frequency_C" : "+60 Hz",
			"measured_frequency" : "+60 Hz",
			"service_status" : "IN_SERVICE",
			"service_status_double" : "-1",
			"previous_uptime" : "-1 min",
			"current_uptime" : "+3 min",
			"Norton_dynamic" : "FALSE",
			"generator_dynamic" : "FALSE",
			"GFA_enable" : "FALSE",
			"GFA_freq_low_trip" : "+59.5 Hz",
			"GFA_freq_high_trip" : "+60.5 Hz",
			"GFA_volt_low_trip" : "+0.8 pu",
			"GFA_volt_high_trip" : "+1.2 pu",
			"GFA_reconnect_time" : "+300 s",
			"GFA_freq_disconnect_time" : "+0.2 s",
			"GFA_volt_disconnect_time" : "+0.2 s",
			"GFA_status" : "TRUE",
			"GFA_trip_method" : "NONE",
			"topological_parent" : ""
		},

need to save random state separately from random seed

The global_randomseed is used as the storage space for the current state of the random number generator. This makes it impossible to recover the original seed and reset the state in a subsequent simulation.

Recommend adding a new global called global_randomstate and setting the ur_state in gldcore/random.c/random_init to point to that instead of glolbal_randomseed.

Allow Group Recorders, Multirecorders, and Collectors to be listed on separate lines

Currently multiple properties have to be listed on the same line with no spaces. This makes it difficult to read when attempting to record many different properties in the same recorder. The user should be able to separate out the properties with a carriage return since the property line definition ends with a ";"

object multi_recorder {
      file 8500_pole_vulnerability.csv;
      property climate:wind_speed,node_HVMV_Sub_HSB:measured_real_power,node_HVMV_Sub_HSB:measured_reactive_power,node_HVMV_Sub_LSB:nominal_voltage,node_HVMV_Sub_LSB:pole_stress,node_HVMV_Sub_LSB:susceptibility,node_HVMV_Sub_LSB:nominal_voltage,node_HVMV_Sub_48332:pole_stress,node_HVMV_Sub_48332:susceptibility;
      //Triplex meters - Not Needed for now
//node_SX2673305B_1:measured_real_power,node_SX2673305B_1:measured_voltage_12.real,node_SX3048196B_1:measured_real_power,node_SX3048196B_1:measured_voltage_12.real;
      interval 3600;
};

Power in IEEE123 swing bus is much lower than power in line going to a pole

In a recent simulation run of the IEEE123 pole vulnerability model, the lines to the poles have a lot more power than the substation swing bus.

e.g.:

first time step
+20964.4 substation (measured real power)
+1.10552e+06 pole (power out real)

last time step
+14474.3 substation (measured real power)
+761657 pole (power out real)

There is no solar in this model and both measurements are in W according to modhelp.

Docker platform doesn't build with the necessary gdb libraries

When checking out a docker image the permissions for debugger are not enabled. In addition, the image doesn't build right away with the correct libraries:

To get around it and to manually enable gdb I had to do two steps:

(1) correctly allow permissions as:

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it -v $(pwd)/gridlabd:gridlabd image_name

then run within docker bash,

(2) %host: debuginfo-install glibc-2.17-222.el7.x86_64 libgcc-4.8.5-28.el7_5.1.x86_64 libstdc++-4.8.5-28.el7_5.1.x86_64

Rogue pointer caused by use of std object in gridlabd classes

The use of std::* object in gld_object classes is strictly prohibited until gldcore/object.c/create_object is updated to support C++ constructors.

In particular, mysql/recorder.h has std::vector<gld_property> and std::vector<gld_unit> as instances rather than pointer to instances. They must be pointers, and the instances must be constructed using new in recorder::create().

Fix method of setting and getting default property values

This issue arises from problems with compile GLM files in minimal form (see #74). The ability to suppress default values doesn't work reliably because too many defaults are not set properly when the class template is constructed. There needs to be a more robust method of setting and getting defaults when the class is registered and the template is constructed.

Support 2 Modes - With Failure/Fault and Without

The user should be able to run the simulation in 2 modes: 1) no failure/fault occurring when the pole stress is reached and 2) poles breaking when the pole stress is reached and causing a fault.

The first mode would be just to get an an idea of which poles are the most vulnerable. This option should be able to be specified either when running in server mode or directly in the GLM file.

For the first mode, the fault would not occur and pole stress could potentially go beyond 1. Whether the pole status should go to "FAILED" and service_status to "OUT_OF_SERVICE" needs to be determined. On the one hand if there is no failure then the status should be OK. On the other we need a way to tell whether a pole should have failed.

Publish additional pole properties

Publish the following additional pole properties:

total_moment
resisting_moment
wind speed at failure
the components of the calculation for wind speed at failure

Ability to record meter properties directly on node and poles

We would like to be able to record the meter properties directly on a pole (e.g., measured_real_power). This would allow us to record various properties under a single object (e.g., pole stress and measured real power on the same pole object).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.