Skip to content

Commit

Permalink
Merge pull request #287 from GMLC-TDC/develop
Browse files Browse the repository at this point in the history
V1.0.2
  • Loading branch information
phlptp authored Apr 27, 2018
2 parents e36ceb7 + 241e42e commit 7588315
Show file tree
Hide file tree
Showing 59 changed files with 533 additions and 281 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ script:
# - echo "$LD_LIBRARY_PATH"
# - echo "$DYLD_FALLBACK_LIBRARY_PATH"
- python3 -m helics
- python3 -m pytest -v ../tests/python_helics
- python3 -m pytest -sv ../tests/python_helics

notifications:
email: false
Expand Down
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@ All notable changes to this project after the 1.0.0 release will be documented i

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [unreleased]
## [1.0.2] -2018-04-28
### Fixed
- Bug not allowing command line parameters separate from the command if a positional argument was in usage
- Fixed Bug for federate not allowing changes in period or minTimeDelay after entry to execution mode
- added python2 interface option (this will be available but not fully capable going forward)
- A few more race conditions fixed from clang thread-sanitizer

## [1.0.1] - 2018-04-22
### Fixed
Expand Down
11 changes: 7 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
##############################################################################
#Copyright © 2017-2018,
#Copyright © 2017-2018,
#Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC
#All rights reserved. See LICENSE file and DISCLAIMER for more details.
##############################################################################
Expand All @@ -12,9 +12,9 @@ project (HELICS)
#-----------------------------------------------------------------------------
set (HELICS_VERSION_MAJOR 1)
set (HELICS_VERSION_MINOR 0)
set (HELICS_VERSION_PATCH 1)
set (HELICS_VERSION_PATCH 2)
set (HELICS_VERSION_BUILD 0)
set (HELICS_DATE "04-22-18")
set (HELICS_DATE "04-28-18")
set (HELICS_VERSION "${HELICS_VERSION_MAJOR}.${HELICS_VERSION_MINOR}.${HELICS_VERSION_PATCH}")
set (HELICS_VERSION_STRING "${HELICS_VERSION} ${HELICS_DATE}")

Expand Down Expand Up @@ -404,7 +404,7 @@ INSTALL(FILES ${KEY_LIBRARY_FILES}
OPTION(ENABLE_CLANG_TOOLS "if clang is found enable some custom targets for clang formatting and tidy" OFF)

if (ENABLE_CLANG_TOOLS)
include(clang-cxx-dev-tools)
include(clang-cxx-dev-tools)
endif(ENABLE_CLANG_TOOLS)

if (INTERFACE_BUILD)
Expand Down Expand Up @@ -514,7 +514,9 @@ endif()
# -------------------------------------------------------------
# CPack
# -------------------------------------------------------------
OPTION(ENABLE_PACKAGE_BUILD "Add projects for making packages and installers for HELICS" OFF)

IF(ENABLE_PACKAGE_BUILD)
set(CPACK_PACKAGE_NAME "Helics")
set(CPACK_PACKAGE_VENDOR "GMLC")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "HELICS")
Expand Down Expand Up @@ -570,3 +572,4 @@ endif(WIN32)
set(CPACK_SOURCE_IGNORE_FILES "/Build*/;/build*/;/.git/")
#THIS LINE MUST BE LAST
include(CPack)
ENDIF(ENABLE_PACKAGE_BUILD)
4 changes: 2 additions & 2 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
shallow_clone: true

version: 1.0.1.{build}
version: 1.0.2.{build}

image: Visual Studio 2015

Expand All @@ -20,7 +20,7 @@ before_build:
- IF NOT EXIST C:\ProgramData\chocolatey\bin\swig.exe choco install swig --yes --limit-output #> $null
- mkdir build
- cd build
- cmake .. -G "Visual Studio 14 2015 Win64" -DAUTOBUILD_ZMQ=ON -DBOOST_INSTALL_PATH=C:/libraries/boost_1_63_0 -DBUILD_RELEASE_ONLY=ON -DBUILD_C_SHARED_LIB=ON -DBUILD_JAVA_INTERFACE=ON -DBUILD_HELICS_EXAMPLES=ON
- cmake .. -G "Visual Studio 14 2015 Win64" -DAUTOBUILD_ZMQ=ON -DBOOST_INSTALL_PATH=C:/libraries/boost_1_63_0 -DENABLE_PACKAGE_BUILD=ON -DBUILD_RELEASE_ONLY=ON -DBUILD_C_SHARED_LIB=ON -DBUILD_JAVA_INTERFACE=ON -DBUILD_HELICS_EXAMPLES=ON
- cd ..

build:
Expand Down
10 changes: 5 additions & 5 deletions docs/apps/App.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
helics_app
=======

The helics apps executable is one of the HELICS apps available with the library
The HELICS apps executable is one of the HELICS apps available with the library
Its purpose is to provide a common executable for running any of the other as

typical syntax is as follows
Expand All @@ -11,9 +11,9 @@ helics-app.exe <app> <app arguments ...>
possible apps are

#### Echo
The [Echo](echo.md) app is a responsive app that will echo any message sent to its endpoints back to the orginal source with a specified delay
The [Echo](echo.md) app is a responsive app that will echo any message sent to its endpoints back to the original source with a specified delay

THis is useful for testing communication pathways and in combination with filters can be used to create some interesting situations
This is useful for testing communication pathways and in combination with filters can be used to create some interesting situations

#### Player
The [player](Player.md) app will generate signals through specified interfaces from prescribed data
Expand All @@ -29,9 +29,9 @@ The additional purpose is used as a library object as the basis for additional d

#### Source

The [Source](Source.md) app is a signal generator like the player execpt that is can generate signals from defined patterns including some random signals in value and timing, and other patterns like sine, square wave, ramps
The [Source](Source.md) app is a signal generator like the player except that is can generate signals from defined patterns including some random signals in value and timing, and other patterns like sine, square wave, ramps
and others. Used much like the player in situations some test signals are needed.

#### Broker

The [Broker](Broker.md) executes a broker like the stand alone Broker app.
The [Broker](Broker.md) executes a broker like the stand alone Broker app.
8 changes: 4 additions & 4 deletions docs/apps/Broker.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Broker
=======

Brokers function as intermediaries or roots in the HELICS hiearchy
Brokers function as intermediaries or roots in the HELICS hierarchy
The Broker can be run through the helics_broker or via helics-app


Expand Down Expand Up @@ -51,7 +51,7 @@ the player executable also takes an untagged argument of a file name for example
helics_player player_file.txt --stop 5
```

Players support both delimited text files and json files some examples can be found in
Players support both delimited text files and JSON files some examples can be found in

[Player configuation Examples](https://github.com/GMLC-TDC/HELICS-src/tree/master/tests/helics/apps/test_files)

Expand Down Expand Up @@ -79,7 +79,7 @@ the optional third column specifies a type valid types are
time specifications are typically numerical with optional units
`5` or `"500 ms"` or `23.7us` if there is a space between the number and units it must be enclosed in quotes
if no units are specified the time defaults to units specified via `--timeunits` or seconds if none were specified
valid units are "s", "ms","us","min", "day", "hr", "ns", "ps" the default precision in HELICS is ns so time specified in ps is not guaranteed to be precise
valid units are "s", "ms", "us", "min", "day", "hr", "ns", "ps" the default precision in HELICS is ns so time specified in ps is not guaranteed to be precise


| identifier | type | Example |
Expand Down Expand Up @@ -194,5 +194,5 @@ Example JSON
}
```

some configuration can also be done through JSON through elements of "stop","local","separator","timeunits"
some configuration can also be done through JSON through elements of "stop", "local", "separator", "timeunits"
and file elements can be used to load up additional files
4 changes: 2 additions & 2 deletions docs/apps/Player.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ the player executable also takes an untagged argument of a file name for example
helics_player player_file.txt --stop 5
```

Players support both delimited text files and json files some examples can be found in
Players support both delimited text files and JSON files some examples can be found in

[Player configuation Examples](https://github.com/GMLC-TDC/HELICS-src/tree/master/tests/helics/apps/test_files)

Expand Down Expand Up @@ -81,7 +81,7 @@ the optional third column specifies a type valid types are
time specifications are typically numerical with optional units
`5` or `"500 ms"` or `23.7us` if there is a space between the number and units it must be enclosed in quotes
if no units are specified the time defaults to units specified via `--timeunits` or seconds if none were specified
valid units are "s", "ms","us","min", "day", "hr", "ns", "ps" the default precision in HELICS is ns so time specified in ps is not guaranteed to be precise
valid units are "s", "ms", "us", "min", "day", "hr", "ns", "ps" the default precision in HELICS is ns so time specified in ps is not guaranteed to be precise


| identifier | type | Example |
Expand Down
6 changes: 3 additions & 3 deletions docs/apps/Source.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Source
=======

The Source app generates signals for other federates, it functions similarly to the
The Source app generates signals for other federates, it functions similarly to the
player but doesn't take a prescribed file instead it generates signals according to some
mathematical function, like sine, ramp, pulse, or random walk.
THis can be useful for sending probing signals or just testing responses of the federate to various stimuli.
mathematical function, like sine, ramp, pulse, or random walk.
This can be useful for sending probing signals or just testing responses of the federate to various stimuli.


Command line arguments
Expand Down
2 changes: 1 addition & 1 deletion docs/apps/Tracer.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ the tracer executable also takes an untagged argument of a file name for example
helics_app tracer tracer_file.txt --stop 5
```

Tracers support both delimited text files and json files some examples can be found in
Tracers support both delimited text files and JSON files some examples can be found in

[Player configuation Examples](https://github.com/GMLC-TDC/HELICS-src/tree/master/tests/helics/apps/test_files)

Expand Down
36 changes: 36 additions & 0 deletions docs/installation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,39 @@ Lines that don’t start with `$` are typically showing the output of the previo
linux
```

The following are a few things that could be useful to know before starting out.

Firstly, you can follow HELICS development on our [GitHub](https://github.com/GMLC-TDC/HELICS-src) page.
HELICS is open-source. The development team uses `git` for version control, and GitHub to host the code publically.
The latest HELICS will be on the `develop` branch.
Tagged releases occur on the `master` branch.
If you clone the HELICS-src repository, you will be placed in the `master` branch by default.
To switch to the `develop` branch, you can type the following:

```bash
git checkout develop
```

To switch to a tagged release, you can type the following:

```bash
git checkout v1.0.1
```

You will not need a full understanding of how `git` works for installing HELICS, but if you are interested you can find a good `git` resource in [this page](https://git-scm.com/book/en/v2).

Secondly, HELICS-src is a modern CPP cross-platform software application.
One challenge while maintaining the same codebase across multiple operating systems is that we have to ensure that everything installs correctly everywhere.
The development team uses `CMake` to build HELICS.
`CMake` is a cross-platform tool designed to build, test and package software.
Having the latest version of `CMake` can make the build process much smoother.
`CMake` reads certain files (CMakeLists.txt) from the HELICS-src repository, and creates a bunch of build files.
These build files specify how different files depend on each other and when these build files are run, HELICS is built.
The exact instructions to run on each operating system are given in the individual installation instructions, but one important thing to remember is that these build files are essentially temporary files.
If you have an issue building HELICS, once you make a change (installing/removing/adding anything), you probably need to delete these temporary files and re-generate them.
We've found in practice that you don't have to do this too often, but it can save hours of frustration if you are already aware that this needs to be done.

Another valuable piece of information about `CMake` is that almost every "OPTION" is configurable while you generate the build files.
This means you can pass it configurations settings as a key value pair by adding `-D{NAME_OF_OPTION}={VALUE_OF_OPTION}` to the `cmake` command line interface.
For example, to build the Python extension all you need to do is pass in `-DBUILD_PYTHON_INTERFACE=ON`.
Again, there are more instructions in the individual installation pages but a useful trick to know if something isn't documented or a slightly more advanced feature is required.
2 changes: 1 addition & 1 deletion docs/installation/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import helics

In [2]: helics.helicsGetVersion()
Out[2]: '1.0.0-alpha.3 (02-12-18)'
Out[2]: '1.0.2 (04-28-18)'

```

Expand Down
6 changes: 3 additions & 3 deletions docs/installation/mac.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,10 @@ recorder:
cd /path/to/helics_install/bin

$ helics_player --version
0.1
1.0.2 (04-28-18)

$ helics_recorder --version
0.1
1.0.2 (04-28-18)
```

Building HELICS with python support
Expand Down Expand Up @@ -159,7 +159,7 @@ IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import helics

In [2]: helics.helicsGetVersion()
Out[2]: '1.0.0-alpha.3 (02-12-18)'
Out[2]: '1.0.2 (04-28-18)'

```

Expand Down
22 changes: 12 additions & 10 deletions docs/installation/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ To set up your environment:
1.61 or later recommended (core library should build with 1.58,
but tests will not). For CMake to detect it automatically either
extract Boost to the root of your drive, or set the BOOST\_INSTALL\_PATH
environment variable to the install location. The cmake will only automatically find
boost 1.61 or newer.
environment variable to the install location. The cmake will only automatically find
boost 1.61 or newer.
Building with Visual Studio 2017 will require boost 1.65.1 or newer and cmake 3.9
or newer. Use 14.0 versions for Visual Studio 2015, 14.1 files for Visual studio 2017.
Boost 1.66 with cmake 3.11 is the current recommended configuration.
Boost 1.66 with cmake 3.11 is the current recommended configuration.
3. *Optional* Install [ZeroMQ](http://zeromq.org/build:_start) if you
need ZeroMQ support and need a copy in a global system location.
We recommend skipping this step and running cmake with the
Expand All @@ -39,7 +39,7 @@ To set up your environment:
if you need MPI support.
5. *Optional* Install
[SWIG](http://www.swig.org/download.html)
if you wish to generate the interface libraries, appropriate build files are
if you wish to generate the interface libraries, appropriate build files are
included in the repository so it shouldn't be necessary to regenerate unless the libraries are modified
6. Open a Visual Studio Command Prompt, and go to your working
directory.
Expand Down Expand Up @@ -106,18 +106,21 @@ recorder (located in the 'build\src\helics\apps\player\Debug' folder):
> cd C:\Path\To\build\src\helics\apps\Debug

> helics_player.exe --version
0.1
1.0.2 04-28-2018

> helics_recorder.exe --version
0.1
1.0.2 04-28-2018
```

Building HELICS with python support
-----------------------------------

setting `-DBUILD_PYTHON_INTERFACE=ON` will generate a project to build the python interface, if python is installed to a system
Setting `-DBUILD_PYTHON_INTERFACE=ON` will generate a project to build the python interface, if python is installed to a system
path then the appropriate libraries and flags will be automatically found. If SWIG is available and you wish to regenerate the interface
set SWIG\_EXECUTABLE to the location of swig.exe. Otherwise DISABLE\_SWIG can be set to ON to build using repo sources for the interface.
We highly recommend using Anaconda3/Miniconda3 for the Python distribution.
Additionally, you will need to ensure that the Python distribution used is built using the same compiler architecture (x86/x64) as the one you are using to build HELICS, as well as the one that was used to build Boost (as mentioned above).
ZeroMQ will be built using the CMake build process.

![](../img/windows-command-line-install.png)

Expand All @@ -137,7 +140,7 @@ cmake --build . --config Release --target install
Add the following to the Windows PYTHONPATH environment variable or run the following in the command line.

```bash
set PYTHONPATH=C:\local\helics-v1.0.0\python;%PYTHONPATH%
set PYTHONPATH=C:\local\helics-v1.0.2\python;%PYTHONPATH%
```

If you open a interactive Python session and import helics, you should be able to get the version of `helics` and an output that is similar to the following.
Expand All @@ -151,9 +154,8 @@ IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import helics

In [2]: helics.helicsGetVersion()
Out[2]: '1.0.0 (04-15-18)'
Out[2]: '1.0.2 (04-28-18)'

```

![](../img/windows-python-success.png)

2 changes: 1 addition & 1 deletion docs/introduction/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ java -Djava.library.path="/Library/Java/Extensions:/Network/Library/Java/Extensi
You should see the output that is similar to the following.

```
HELICS Version: 1.0.0-beta.1 02-26-18
HELICS Version: 1.0.2 (04-28-18)
```

creating a jar file.
Expand Down
4 changes: 2 additions & 2 deletions docs/mainpage.dox
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
@mainpage HELICS

@image html HELICS_Logo.png width=5cm
<p>HELICS (Hiearchical Engine for Large-scale infrastructre Co-Simulation) is a co-simulation plaform
<p>HELICS (Hierarchical Engine for Large-Scale infrastructure Co-Simulation) is a co-simulation platform
<p/> <br/>


Expand All @@ -11,4 +11,4 @@
[Disclaimer](../../DISCLAIMER)
<br/>
[license](../../LICENSE)
*/
*/
1 change: 0 additions & 1 deletion src/helics/application_api/Endpoints.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/*
Copyright © 2017-2018,
Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC
All rights reserved. See LICENSE file and DISCLAIMER for more details.
Expand Down
Loading

0 comments on commit 7588315

Please sign in to comment.