From 0abd409cdef0b0265de48e5b2048c2b404b5901b Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 11 Feb 2020 14:01:22 -0800 Subject: [PATCH 01/32] Webserver defaults (#1084) * Enable the HELICS webserver by default if boost version is sufficient. Remove use of `HELICS_ENABLE_WEBSERVER` * update cmake conditions * fix the boost version check * VERSION_GREATER doesn't exist in cmake 3.4 so fix it * Apply suggestions from code review Co-Authored-By: Ryan Mast Co-authored-by: Ryan Mast --- .../release-build/installer-Linux.sh | 2 +- .../release-build/installer-Windows.sh | 2 +- .../release-build/installer-macOS.sh | 2 +- CHANGELOG.md | 19 +++++++++++++++++++ config/Docker/Dockerfile-HELICS-apps | 2 +- docs/installation/helics_cmake_options.md | 2 +- docs/user-guide/running_interaction.md | 2 +- src/helics/apps/CMakeLists.txt | 11 ++++++----- 8 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release-build/installer-Linux.sh b/.github/workflows/release-build/installer-Linux.sh index 0e3c249f85..acd0976a15 100755 --- a/.github/workflows/release-build/installer-Linux.sh +++ b/.github/workflows/release-build/installer-Linux.sh @@ -7,7 +7,7 @@ #rm cmake-install.sh mkdir build && cd build || exit -cmake -DCMAKE_BUILD_TYPE=Release -DHELICS_ZMQ_SUBPROJECT=ON -DHELICS_ENABLE_PACKAGE_BUILD=ON -DSTATIC_STANDARD_LIB=static -DHELICS_BUILD_EXAMPLES=OFF -DHELICS_BUILD_APP_EXECUTABLES=ON -DHELICS_BUILD_APP_LIBRARY=ON -DHELICS_ENABLE_WEBSERVER=ON -DBUILD_TESTING=OFF .. +cmake -DCMAKE_BUILD_TYPE=Release -DHELICS_ZMQ_SUBPROJECT=ON -DHELICS_ENABLE_PACKAGE_BUILD=ON -DSTATIC_STANDARD_LIB=static -DHELICS_BUILD_EXAMPLES=OFF -DHELICS_BUILD_APP_EXECUTABLES=ON -DHELICS_BUILD_APP_LIBRARY=ON -DBUILD_TESTING=OFF .. cmake --build . --config Release cpack_dir="$(command -v cmake)" cpack_dir="${cpack_dir%/cmake}" diff --git a/.github/workflows/release-build/installer-Windows.sh b/.github/workflows/release-build/installer-Windows.sh index 36b8286dad..f3e32949a5 100755 --- a/.github/workflows/release-build/installer-Windows.sh +++ b/.github/workflows/release-build/installer-Windows.sh @@ -6,7 +6,7 @@ echo "Building ${CPACK_GEN} installer with ${BUILD_GEN} for ${BUILD_ARCH}" choco install -y swig mkdir build && cd build || exit -cmake -G "${BUILD_GEN}" -A "${BUILD_ARCH/x86/Win32}" -DCMAKE_BUILD_TYPE=Release -DHELICS_ENABLE_PACKAGE_BUILD=ON -DBUILD_PYTHON_INTERFACE=ON -DBUILD_JAVA_INTERFACE=ON -DSTATIC_STANDARD_LIB=static -DHELICS_USE_ZMQ_STATIC_LIBRARY=ON -DHELICS_BUILD_EXAMPLES=OFF -DHELICS_BUILD_APP_EXECUTABLES=ON -DHELICS_BUILD_APP_LIBRARY=ON -DHELICS_ENABLE_WEBSERVER=ON -DBUILD_TESTING=OFF .. +cmake -G "${BUILD_GEN}" -A "${BUILD_ARCH/x86/Win32}" -DCMAKE_BUILD_TYPE=Release -DHELICS_ENABLE_PACKAGE_BUILD=ON -DBUILD_PYTHON_INTERFACE=ON -DBUILD_JAVA_INTERFACE=ON -DSTATIC_STANDARD_LIB=static -DHELICS_USE_ZMQ_STATIC_LIBRARY=ON -DHELICS_BUILD_EXAMPLES=OFF -DHELICS_BUILD_APP_EXECUTABLES=ON -DHELICS_BUILD_APP_LIBRARY=ON -DBUILD_TESTING=OFF .. cmake --build . --config Release cpack_dir="$(command -v cmake)" cpack_dir="${cpack_dir%/cmake}" diff --git a/.github/workflows/release-build/installer-macOS.sh b/.github/workflows/release-build/installer-macOS.sh index 30a389a77c..6fc554f67a 100755 --- a/.github/workflows/release-build/installer-macOS.sh +++ b/.github/workflows/release-build/installer-macOS.sh @@ -4,7 +4,7 @@ brew install swig boost mkdir build && cd build || exit -cmake -DCMAKE_BUILD_TYPE=Release -DHELICS_ZMQ_SUBPROJECT=ON -DHELICS_ENABLE_PACKAGE_BUILD=ON -DBUILD_PYTHON_INTERFACE=ON -DBUILD_JAVA_INTERFACE=ON -DHELICS_BUILD_EXAMPLES=OFF -DHELICS_BUILD_APP_EXECUTABLES=ON -DHELICS_BUILD_APP_LIBRARY=ON -DHELICS_ENABLE_WEBSERVER=ON -DBUILD_TESTING=OFF .. +cmake -DCMAKE_BUILD_TYPE=Release -DHELICS_ZMQ_SUBPROJECT=ON -DHELICS_ENABLE_PACKAGE_BUILD=ON -DBUILD_PYTHON_INTERFACE=ON -DBUILD_JAVA_INTERFACE=ON -DHELICS_BUILD_EXAMPLES=OFF -DHELICS_BUILD_APP_EXECUTABLES=ON -DHELICS_BUILD_APP_LIBRARY=ON -DBUILD_TESTING=OFF .. cmake --build . --config Release cpack_dir="$(command -v cmake)" cpack_dir="${cpack_dir%/cmake}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 073af42071..c09ff7cca5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,24 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm A note on future revisions. Everything within a major version number should be code compatible (with the exception of experimental interfaces). The most notable example of an experimental interface is the support for multiple source inputs. The APIs to deal with this will change in future minor releases. Everything within a single minor release should be network compatible with other federates on the same minor release number. Compatibility across minor release numbers may be possible in some situations but we are not going to guarantee this as those components are subject to performance improvements and may need to be modified at some point. Patch releases will be limited to bug fixes and other improvements not impacting the public API or network compatibility. Check the [Public API](./docs/Public_API.md) for details on what is included and excluded from the public API and version stability. +## [2.4.1][] - 2020-03-04 +Increased code coverage and additional bug fixes. + + +### Changed +- the helics webserver will build by default if the conditions are met + +### Fixed + +### Added +- `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is off by default. + +### Deprecated + +### Removed +- `HELICS_ENABLE_WEBSERVER` option to enable the webserver + + ## [2.4.0][] - 2020-02-04 A few bug fixes, code coverage on the shared library increased to 100%, library updates, Broker server enhancements including an http REST API, and a lot of work on the build systems to enable easier releases and packaging. @@ -492,3 +510,4 @@ This is a major revision so this changelog will not capture all the changes that [2.3.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.3.0 [2.3.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.3.1 [2.4.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.4.0 +[2.4.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.4.1 diff --git a/config/Docker/Dockerfile-HELICS-apps b/config/Docker/Dockerfile-HELICS-apps index 6cd032b839..39c3d920ad 100644 --- a/config/Docker/Dockerfile-HELICS-apps +++ b/config/Docker/Dockerfile-HELICS-apps @@ -24,7 +24,7 @@ RUN if [ "${ENABLE_GITHUB-}" = "true" ]; then rm -rf HELICS && git clone --depth # Generates the makefiles for building HELICS without tests, examples, C shared library, or the IPC core # Build type is set to release for the optimized binaries (and smaller size) -RUN mkdir build && cd build && cmake -DHELICS_BUILD_TESTS=OFF -DHELICS_ENABLE_WEBSERVER=ON \ +RUN mkdir build && cd build && cmake -DHELICS_BUILD_TESTS=OFF \ -DHELICS_BUILD_EXAMPLES=OFF -DHELICS_DISABLE_C_SHARED_LIB=ON -DENABLE_IPC_CORE=OFF \ -DCMAKE_BUILD_TYPE=Release -DHELICS_BINARY_ONLY_INSTALL=ON -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ -DCMAKE_INSTALL_PREFIX=/root/develop/helics-install /root/HELICS diff --git a/docs/installation/helics_cmake_options.md b/docs/installation/helics_cmake_options.md index 3752775227..1c28dbc2d8 100644 --- a/docs/installation/helics_cmake_options.md +++ b/docs/installation/helics_cmake_options.md @@ -6,7 +6,6 @@ - `HELICS_BUILD_APP_LIBRARY` : \[Default=ON\] Tell HELICS to build the [app]() Library - `HELICS_BUILD_APP_EXECUTABLES` : \[Default=ON\] Build some executables associated with the apps - `HELICS_BUILD_BENCHMARKS` : \[Default=OFF\] Build some timing benchmarks associated with HELICS -- `HELICS_ENABLE_WEBSERVER` : \[Default=OFF\] Build the webserver as part of the `helics_broker_server` requires boost 1.70 or higher. - `HELICS_BUILD_CXX_SHARED_LIB` : \[Default=OFF\] Build C++ shared libraries of the Application API C++ interface to HELICS and if `HELICS_BUILD_APP_LIBRARY` is also enabled another C++ shared library with the APP library - `HELICS_BUILD_EXAMPLES` : \[Default=OFF\] Build a few select examples using HELICS, this is mostly for testing purposes. The main examples repo is [here](https://github.com/GMLC-TDC/HELICS-Examples) - `HELICS_BUILD_TESTS` : \[Default=OFF\] Build the HELICS unit and system test executables. @@ -46,6 +45,7 @@ These options effect the configuration of HELICS itself and how/what gets built ### Build configuration Options Options effect the connection of libraries used in HELICS and how they are linked. - `HELICS_DISABLE_BOOST` : \[Default=OFF\] Completely turn off searching and inclusion of boost libraries. This will disable the IPC core, disable the webserver and few other features, possibly more in the future. +- `HELICS_DISABLE_WEBSERVER` : \[Default=OFF\] Disable building the webserver part of the `helics_broker_server` and `helics_broker`. The webserver requires boost 1.70 or higher and `HELICS_DISABLE_BOOST` will take precedence. - `HELICS_DISABLE_ASIO` : \[Default=OFF\] Completely turn off inclusion of ASIO libraries. This will disable all TCP and UDP cores, disable real time mode for HELICS, and disable all timeout features for the Library so **use with caution**. - `HELICS_ENABLE_SUBMODULE_UPDATE` : \[Default=ON\] Enable CMake to automatically download the submodules and update them if necessary - `HELICS_ENABLE_ERROR_ON_WARNING` :\[Default=OFF\] Turns on Werror or equivalent, probably not useful for normal activity, There isn't many warnings but left in to allow the possibility diff --git a/docs/user-guide/running_interaction.md b/docs/user-guide/running_interaction.md index 07f163457a..a80dc26e81 100644 --- a/docs/user-guide/running_interaction.md +++ b/docs/user-guide/running_interaction.md @@ -1,6 +1,6 @@ # Interacting with a Running Simulation -Starting in HELICS 2.4 there is a webserver that can be run with the broker_server or helics_broker_server. This requires building with the cmake option `HELICS_ENABLE_WEBSERVER` and using a boost version >=1.70. +Starting in HELICS 2.4 there is a webserver that can be run with the broker_server or helics_broker_server. This requires using a boost version >=1.70. The Webserver can be disabled by the `HELICS_DISABLE_BOOST=ON` or `HELICS_DISABLE_WEBSERVER=ON` options being set. ## Startup The webserver can be started with the option `--http` For example to run a broker server with zmq and the webserver active for 30 minutes. The `--duration` is optional and the default is 30 minutes but any time can be specified. diff --git a/src/helics/apps/CMakeLists.txt b/src/helics/apps/CMakeLists.txt index 2bd2f7a63f..0790042bd1 100644 --- a/src/helics/apps/CMakeLists.txt +++ b/src/helics/apps/CMakeLists.txt @@ -9,9 +9,9 @@ if(HELICS_BUILD_APP_LIBRARY) - cmake_dependent_option( - HELICS_ENABLE_WEBSERVER "Enable a webserver app structure to be embedded with the broker server" OFF - "NOT HELICS_DISABLE_BOOST;Boost_VERSION VERSION_GREATER 1.69" OFF + cmake_dependent_advanced_option( + HELICS_DISABLE_WEBSERVER "Disable the embedded webserver app structure in the broker server" OFF + "NOT HELICS_DISABLE_BOOST;Boost_VERSION VERSION_GREATER 1.69" ON ) set( helics_apps_public_headers @@ -57,7 +57,8 @@ if(HELICS_BUILD_APP_LIBRARY) TypedBrokerServer.cpp ) - if (HELICS_ENABLE_WEBSERVER) + if (BOOST_VERSION_LEVEL GREATER 69 AND NOT (HELICS_DISABLE_WEBSERVER OR HELICS_DISABLE_BOOST)) + message(STATUS "Building webserver Boost version ${Boost_VERSION} ${BOOST_VERSION_LEVEL}") list(APPEND helics_apps_broker_files helicsWebServer.cpp) list(APPEND helics_apps_broker_headers helicsWebServer.hpp) endif() @@ -70,7 +71,7 @@ if(HELICS_BUILD_APP_LIBRARY) target_link_libraries(helics_apps PUBLIC helics_application_api) target_link_libraries(helics_apps PRIVATE HELICS::compile_flags_target fmt::fmt) - if (HELICS_ENABLE_WEBSERVER) + if (BOOST_VERSION_LEVEL GREATER 69 AND NOT (HELICS_DISABLE_WEBSERVER OR HELICS_DISABLE_BOOST)) target_compile_definitions(helics_apps PUBLIC HELICS_ENABLE_WEBSERVER=1) target_compile_definitions(helics_apps PUBLIC BOOST_DATE_TIME_NO_LIB) endif() From dd3ad4ca462f6b8d362a7d2bd3187d8cd96e5f4b Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 11 Feb 2020 16:12:54 -0800 Subject: [PATCH 02/32] Update filesystem (#1086) * update filesystem library to v1.3.0 * add note in changelog --- CHANGELOG.md | 5 +-- CONTRIBUTORS.md | 2 +- ThirdParty/helics/external/filesystem.hpp | 41 ++++++++++------------- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c09ff7cca5..89351d7075 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,12 +12,13 @@ Increased code coverage and additional bug fixes. ### Changed -- the helics webserver will build by default if the conditions are met +- The helics webserver will build by default if the conditions are met +- Update filesystem library to [v1.3.0](https://github.com/gulrak/filesystem/releases/tag/v1.3.0) ### Fixed ### Added -- `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is off by default. +- `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is disabled. ### Deprecated diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index e1e733e8c8..6d27fefa1c 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -86,7 +86,7 @@ HELICS makes use of `C++17` headers, but due to `C++14` compatibility requiremen This variant was chosen for compatibility with C++17 over boost variant and better cross platform support than some of the other versions available. The single header version is included with the source. [Boost Software License](https://github.com/mpark/variant/blob/master/LICENSE.md). ### [gulrak/filesystem](https://github.com/gulrak/filesystem) -A single-header standalone variant of the filesystem library is used to avoid compiled libraries in boost. The single header version is included with the source and is released with a [BSD-3 clause](https://github.com/gulrak/filesystem/blob/master/LICENSE) license. +A single-header standalone variant of the filesystem library(v1.3.0) is used to avoid compiled libraries in boost. The single header version is included with the source and is released with a [MIT](https://github.com/gulrak/filesystem/blob/master/LICENSE) license (used as of HELICS 2.4.1) prior versions had a BSD-3-Clause license. ### CMake scripts Several CMake scripts came from other sources and were either used or modified for use in HELICS. diff --git a/ThirdParty/helics/external/filesystem.hpp b/ThirdParty/helics/external/filesystem.hpp index d1e8b54ead..56b2f7180d 100644 --- a/ThirdParty/helics/external/filesystem.hpp +++ b/ThirdParty/helics/external/filesystem.hpp @@ -5,32 +5,24 @@ //--------------------------------------------------------------------------------------- // // Copyright (c) 2018, Steffen Schümann -// All rights reserved. // -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: // -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. // -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// 3. Neither the name of the copyright holder nor the names of its contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. // //--------------------------------------------------------------------------------------- // @@ -177,7 +169,7 @@ //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ghc::filesystem version in decimal (major * 10000 + minor * 100 + patch) -#define GHC_FILESYSTEM_VERSION 10211L +#define GHC_FILESYSTEM_VERSION 10300L namespace ghc { namespace filesystem { @@ -4266,6 +4258,7 @@ GHC_INLINE space_info space(const path& p, std::error_code& ec) noexcept } return {static_cast(sfs.f_blocks * sfs.f_frsize), static_cast(sfs.f_bfree * sfs.f_frsize), static_cast(sfs.f_bavail * sfs.f_frsize)}; #else + (void)p; ec = detail::make_error_code(detail::portable_error::not_supported); return {static_cast(-1), static_cast(-1), static_cast(-1)}; #endif From 5a64481f07489800be9c420161b6c52f5a04c9b6 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 11 Feb 2020 22:13:39 -0800 Subject: [PATCH 03/32] Federate coverage (#1082) * work on increasing the code coverage for Federate.cpp [codecov] * fix broken test [codecov] * add a few more tests of error paths [codecov] * add a few more tests of federates [codecov] * fix a few tests with federate * fed tests after disconnect. [codecov] * more tests and a few bug fixes [codecov] * fix a few issues with the iterative time [codecov] * fix some time return issues and add more test paths [codecov] * more test paths from Federate.cpp [codecov] * update the test files to use different core names * add additional file test [codecov] * get better file tests [codecov] * fix a few warnings and tests [codecov] * update some files and tests [codecov] * update some test files and fix a continue issue in the file readers [codecov] * add some core and broker termination operations [codecov] * fix a few failing tests and potential faulted path on the logging functions * fix a few more warnings [codecov] * fix warning level output [codecov] * Automated formatting of source files (#1083) Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> [codecov] * update changelog with fixes and updates Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 6 +- src/helics/application_api/Federate.cpp | 228 +++--- src/helics/application_api/FederateInfo.cpp | 2 + src/helics/application_api/FederateInfo.hpp | 12 +- src/helics/apps/AsioBrokerServer.cpp | 4 +- src/helics/apps/MultiBroker.cpp | 1 + src/helics/core/ActionMessage.cpp | 15 + src/helics/core/ActionMessage.hpp | 5 +- src/helics/core/BrokerFactory.cpp | 35 +- src/helics/core/BrokerFactory.hpp | 3 + src/helics/core/CoreFactory.cpp | 33 +- src/helics/core/CoreFactory.hpp | 3 + src/helics/core/FederateState.cpp | 27 +- src/helics/core/TimeCoordinator.cpp | 74 +- src/helics/core/TimeCoordinator.hpp | 4 +- src/helics/core/core-types.hpp | 1 + src/helics/core/coreTypeOperations.cpp | 10 + src/helics/helics_enums.h | 4 +- .../helics/application_api/FederateTests.cpp | 658 +++++++++++++++++- tests/helics/application_api/FilterTests.cpp | 3 +- .../ValueFederateAdditionalTests.cpp | 7 +- tests/helics/application_api/testFixtures.cpp | 3 +- tests/helics/apps/BrokerServerTests.cpp | 5 + tests/helics/shared_library/badInputTests.cpp | 6 +- .../helics/shared_library/evilInputTests.cpp | 4 +- tests/helics/system_tests/ErrorTests.cpp | 9 + .../test_files/example_unusual_filters.json | 58 ++ .../test_files/example_unusual_filters2.json | 108 +++ .../test_files/example_unusual_filters3.json | 88 +++ tests/helics/test_files/unusual_filters.toml | 96 +++ tests/helics/test_files/unusual_filters2.toml | 22 + 31 files changed, 1345 insertions(+), 189 deletions(-) create mode 100644 tests/helics/test_files/example_unusual_filters.json create mode 100644 tests/helics/test_files/example_unusual_filters2.json create mode 100644 tests/helics/test_files/example_unusual_filters3.json create mode 100644 tests/helics/test_files/unusual_filters.toml create mode 100644 tests/helics/test_files/unusual_filters2.toml diff --git a/CHANGELOG.md b/CHANGELOG.md index 89351d7075..c20629b93c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,16 +14,20 @@ Increased code coverage and additional bug fixes. ### Changed - The helics webserver will build by default if the conditions are met - Update filesystem library to [v1.3.0](https://github.com/gulrak/filesystem/releases/tag/v1.3.0) +- The behavior of the Federate *Complete operations to be uniform and consistent ### Fixed +- Issue with iterative requests that were not being honored if the federate was acting in isolation +- A few pathways which would allow segmentation faults if a federate was disconnected and particular functions were called ### Added - `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is disabled. +- A series of test for Federate.cpp to increase coverage on that file to 100% ### Deprecated ### Removed -- `HELICS_ENABLE_WEBSERVER` option to enable the webserver +- `HELICS_ENABLE_WEBSERVER` option to enable the webserver. This option was added as experimental in 2.4.0 ## [2.4.0][] - 2020-02-04 diff --git a/src/helics/application_api/Federate.cpp b/src/helics/application_api/Federate.cpp index f98eefbfa3..1a427ed118 100644 --- a/src/helics/application_api/Federate.cpp +++ b/src/helics/application_api/Federate.cpp @@ -44,8 +44,8 @@ Federate::Federate(const std::string& fedName, const FederateInfo& fi): name(fed coreObject = CoreFactory::FindOrCreate(fi.coreType, fi.coreName, generateFullCoreInitString(fi)); if (!coreObject->isOpenToNewFederates()) { - std::cout << "found core object is not open" << std::endl; coreObject = nullptr; + logWarningMessage("found core object is not open"); CoreFactory::cleanUpCores(200ms); coreObject = CoreFactory::FindOrCreate(fi.coreType, fi.coreName, generateFullCoreInitString(fi)); @@ -55,10 +55,6 @@ Federate::Federate(const std::string& fedName, const FederateInfo& fi): name(fed } } } - if (!coreObject) { - throw(RegistrationFailure( - "Unable to connect to specified core: unable to create specified core")); - } /** make sure the core is connected */ if (!coreObject->isConnected()) { coreObject->connect(); @@ -102,10 +98,6 @@ Federate::Federate( } } - if (!coreObject) { - currentMode = modes::error; - return; - } /** make sure the core is connected */ if (!coreObject->isConnected()) { coreObject->connect(); @@ -114,28 +106,34 @@ Federate::Federate( name = fi.defName; } fedID = coreObject->registerFederate(name, fi); - if (!fedID.isValid()) { - currentMode = modes::error; - return; - } nameSegmentSeparator = fi.separator; currentTime = coreObject->getCurrentTime(fedID); asyncCallInfo = std::make_unique>(); fManager = std::make_unique(coreObject.get(), this, fedID); } -Federate::Federate(const std::string& configString): - Federate(std::string{}, loadFederateInfo(configString)) +static bool looksLikeFile(const std::string& configString) { - registerFilterInterfaces(configString); + if (hasTomlExtension(configString)) { + return true; + } + if ((hasJsonExtension(configString)) || + (configString.find_first_of('{') != std::string::npos)) { + return true; + } + return false; } Federate::Federate(const std::string& fedName, const std::string& configString): Federate(fedName, loadFederateInfo(configString)) { - registerFilterInterfaces(configString); + if (looksLikeFile(configString)) { + registerFilterInterfaces(configString); + } } +Federate::Federate(const std::string& configString): Federate(std::string{}, configString) {} + Federate::Federate() noexcept { // this function needs to be defined for the virtual inheritance to compile but shouldn't actually be executed @@ -174,38 +172,53 @@ Federate::~Federate() try { finalize(); } + // LCOV_EXCL_START catch (...) // do not allow a throw inside the destructor { } + // LCOV_EXCL_STOP } } void Federate::enterInitializingMode() { auto cm = currentMode.load(); - if (cm == modes::startup) { - coreObject->enterInitializingMode(fedID); - currentMode = modes::initializing; - currentTime = coreObject->getCurrentTime(fedID); - startupToInitializeStateTransition(); - } else if (cm == modes::pending_init) { - enterInitializingModeComplete(); - } else if (cm != modes::initializing) // if we are already in initialization do nothing - { - throw(InvalidFunctionCall("cannot transition from current mode to initializing mode")); + switch (cm) { + case modes::startup: + try { + coreObject->enterInitializingMode(fedID); + currentMode = modes::initializing; + currentTime = coreObject->getCurrentTime(fedID); + startupToInitializeStateTransition(); + } + catch (const HelicsException&) { + currentMode = modes::error; + throw; + } + break; + case modes::pending_init: + enterInitializingModeComplete(); + break; + case modes::initializing: + break; + default: + throw(InvalidFunctionCall("cannot transition from current mode to initializing mode")); } } void Federate::enterInitializingModeAsync() { - auto asyncInfo = asyncCallInfo->lock(); - if (currentMode == modes::startup) { - currentMode = modes::pending_init; - asyncInfo->initFuture = - std::async(std::launch::async, [this]() { coreObject->enterInitializingMode(fedID); }); - } else if (currentMode == modes::pending_init) { + auto cm = currentMode.load(); + if (cm == modes::startup) { + auto asyncInfo = asyncCallInfo->lock(); + if (currentMode.compare_exchange_strong(cm, modes::pending_init)) { + asyncInfo->initFuture = std::async(std::launch::async, [this]() { + coreObject->enterInitializingMode(fedID); + }); + } + } else if (cm == modes::pending_init) { return; - } else if (currentMode != modes::initializing) // if we are already in initialization do nothing + } else if (cm != modes::initializing) // if we are already in initialization do nothing { throw(InvalidFunctionCall("cannot transition from current mode to initializing mode")); } @@ -213,11 +226,11 @@ void Federate::enterInitializingModeAsync() bool Federate::isAsyncOperationCompleted() const { - constexpr std::chrono::seconds wait_delay(0); + constexpr std::chrono::seconds wait_delay{0}; auto ready = std::future_status::ready; auto asyncInfo = asyncCallInfo->lock_shared(); - switch (currentMode) { + switch (currentMode.load()) { case modes::pending_init: return (asyncInfo->initFuture.wait_for(wait_delay) == ready); case modes::pending_exec: @@ -235,7 +248,7 @@ bool Federate::isAsyncOperationCompleted() const void Federate::enterInitializingModeComplete() { - switch (currentMode) { + switch (currentMode.load()) { case modes::pending_init: { auto asyncInfo = asyncCallInfo->lock(); try { @@ -257,7 +270,7 @@ void Federate::enterInitializingModeComplete() default: throw(InvalidFunctionCall( "cannot call Initialization Complete function without first calling " - "enterInitializingModeAsync function")); + "enterInitializingModeAsync function or being in startup mode")); } } @@ -283,8 +296,10 @@ iteration_result Federate::enterExecutingMode(iteration_request iterate) updateTime(getCurrentTime(), getCurrentTime()); break; case iteration_result::error: + // LCOV_EXCL_START currentMode = modes::error; break; + // LCOV_EXCL_STOP case iteration_result::halted: currentMode = modes::finalize; break; @@ -299,9 +314,11 @@ iteration_result Federate::enterExecutingMode(iteration_request iterate) case modes::pending_time: requestTimeComplete(); break; - case modes:: - pending_iterative_time: // since this isn't guaranteed to progress it shouldn't be called in - // this fashion + case modes::pending_iterative_time: { + auto result = requestTimeIterativeComplete(); + return (result.state == iteration_result::iterating) ? iteration_result::next_step : + result.state; + } default: throw(InvalidFunctionCall("cannot transition from current state to execution state")); break; @@ -315,6 +332,7 @@ void Federate::enterExecutingModeAsync(iteration_request iterate) case modes::startup: { auto eExecFunc = [this, iterate]() { coreObject->enterInitializingMode(fedID); + currentTime = coreObject->getCurrentTime(fedID); startupToInitializeStateTransition(); return coreObject->enterExecutingMode(fedID, iterate); }; @@ -337,7 +355,9 @@ void Federate::enterExecutingModeAsync(iteration_request iterate) case modes::pending_exec: break; case modes::executing: - // already in this state --> do nothing + case modes::pending_time: + case modes::pending_iterative_time: + // we are already in or executing a function that would achieve this request break; default: throw(InvalidFunctionCall("cannot transition from current state to execution state")); @@ -347,36 +367,40 @@ void Federate::enterExecutingModeAsync(iteration_request iterate) iteration_result Federate::enterExecutingModeComplete() { - if (currentMode != modes::pending_exec) { - throw(InvalidFunctionCall( - "cannot call finalize function without first calling async function")); - } - auto asyncInfo = asyncCallInfo->lock(); - try { - auto res = asyncInfo->execFuture.get(); - switch (res) { - case iteration_result::next_step: - currentMode = modes::executing; - currentTime = timeZero; - initializeToExecuteStateTransition(); - break; - case iteration_result::iterating: - currentMode = modes::initializing; - updateTime(getCurrentTime(), getCurrentTime()); - break; - case iteration_result::error: + switch (currentMode.load()) { + case modes::pending_exec: { + auto asyncInfo = asyncCallInfo->lock(); + try { + auto res = asyncInfo->execFuture.get(); + switch (res) { + case iteration_result::next_step: + currentMode = modes::executing; + currentTime = timeZero; + initializeToExecuteStateTransition(); + break; + case iteration_result::iterating: + currentMode = modes::initializing; + updateTime(getCurrentTime(), getCurrentTime()); + break; + case iteration_result::error: + // LCOV_EXCL_START + currentMode = modes::error; + break; + // LCOV_EXCL_STOP + case iteration_result::halted: + currentMode = modes::finalize; + break; + } + + return res; + } + catch (const std::exception&) { currentMode = modes::error; - break; - case iteration_result::halted: - currentMode = modes::finalize; - break; + throw; + } } - - return res; - } - catch (const std::exception&) { - currentMode = modes::error; - throw; + default: + return enterExecutingMode(); } } @@ -457,7 +481,7 @@ void Federate::finalize() finalizeComplete(); return; default: - throw(InvalidFunctionCall("cannot call finalize in present state")); + throw(InvalidFunctionCall("cannot call finalize in present state")); // LCOV_EXCL_LINE } coreObject->finalize(fedID); if (fManager) { @@ -509,31 +533,43 @@ void Federate::finalizeComplete() void Federate::disconnect() { - if (coreObject) { - coreObject->finalize(fedID); - } - currentMode = modes::finalize; + finalize(); coreObject = nullptr; } void Federate::error(int errorcode) { - currentMode = modes::error; - if (!coreObject) { - throw( - InvalidFunctionCall("cannot generate error on uninitialized or disconnected Federate")); - } std::string errorString = "error " + std::to_string(errorcode) + " in federate " + name; - coreObject->logMessage(fedID, errorcode, errorString); + error(errorcode, errorString); } void Federate::error(int errorcode, const std::string& message) { - currentMode = modes::error; if (!coreObject) { throw( InvalidFunctionCall("cannot generate error on uninitialized or disconnected Federate")); } + // deal with pending operations first + switch (currentMode.load()) { + case modes::pending_init: + enterInitializingModeComplete(); + break; + case modes::pending_exec: + enterExecutingModeComplete(); + break; + case modes::pending_time: + requestTimeComplete(); + break; + case modes::pending_iterative_time: + requestTimeIterativeComplete(); + break; + case modes::pending_finalize: + finalizeComplete(); + break; + default: + break; + } + currentMode = modes::error; coreObject->logMessage(fedID, errorcode, message); } @@ -580,8 +616,10 @@ iteration_time Federate::requestTimeIterative(Time nextInternalTimeStep, iterati currentMode = modes::finalize; break; case iteration_result::error: + // LCOV_EXCL_START currentMode = modes::error; break; + // LCOV_EXCL_STOP } return iterativeTime; } @@ -658,8 +696,10 @@ iteration_time Federate::requestTimeIterativeComplete() currentMode = modes::finalize; break; case iteration_result::error: + // LCOV_EXCL_START currentMode = modes::error; break; + // LCOV_EXCL_STOP } return iterativeTime; } @@ -792,7 +832,7 @@ void Federate::registerFilterInterfacesJson(const std::string& jsonString) auto props = filt["properties"]; if (props.isArray()) { for (const auto& prop : props) { - if ((!prop.isMember("name")) && (!prop.isMember("value"))) { + if ((!prop.isMember("name")) || (!prop.isMember("value"))) { std::cerr << "properties must be specified with \"name\" and \"value\" fields\n"; continue; @@ -804,12 +844,10 @@ void Federate::registerFilterInterfacesJson(const std::string& jsonString) } } } else { - if ((!props.isMember("name")) && (!props.isMember("value"))) { + if ((!props.isMember("name")) || (!props.isMember("value"))) { std::cerr << "properties must be specified with \"name\" and \"value\" fields\n"; - continue; - } - if (props["value"].isDouble()) { + } else if (props["value"].isDouble()) { filter.set(props["name"].asString(), props["value"].asDouble()); } else { filter.setString(props["name"].asString(), props["value"].asString()); @@ -878,8 +916,8 @@ void Federate::registerFilterInterfacesToml(const std::string& tomlString) static_cast(filter).addDeliveryEndpoint(target); }); } - if (isMember(doc, "properties")) { - auto props = toml::find(doc, "properties"); + if (isMember(filt, "properties")) { + auto props = toml::find(filt, "properties"); if (props.is_array()) { auto& propArray = props.as_array(); for (const auto& prop : propArray) { @@ -908,9 +946,7 @@ void Federate::registerFilterInterfacesToml(const std::string& tomlString) if ((propname.empty()) || (propval.is_uninitialized())) { std::cerr << "properties must be specified with \"name\" and \"value\" fields\n"; - continue; - } - if (propval.is_floating()) { + } else if (propval.is_floating()) { filter.set(propname, propval.as_floating()); } else { filter.setString(propname, propval.as_string()); @@ -1200,7 +1236,13 @@ std::string const& Federate::getInfo(interface_handle handle) void Federate::logMessage(int level, const std::string& message) const { - coreObject->logMessage(fedID, level, message); + if (coreObject) { + coreObject->logMessage(fedID, level, message); + } else if (level <= helics_log_level_warning) { + std::cerr << message << std::endl; + } else { + std::cout << message << std::endl; + } } } // namespace helics diff --git a/src/helics/application_api/FederateInfo.cpp b/src/helics/application_api/FederateInfo.cpp index 3b632661a2..6b98681869 100644 --- a/src/helics/application_api/FederateInfo.cpp +++ b/src/helics/application_api/FederateInfo.cpp @@ -445,6 +445,8 @@ FederateInfo loadFederateInfo(const std::string& configString) (hasJsonExtension(configString)) || (configString.find_first_of('{') != std::string::npos)) { ret = loadFederateInfoJson(configString); + } else if (configString.find("--") != std::string::npos) { + ret.loadInfoFromArgsIgnoreOutput(configString); } else { ret.defName = configString; } diff --git a/src/helics/application_api/FederateInfo.hpp b/src/helics/application_api/FederateInfo.hpp index 1749589e1f..4c54b270fb 100644 --- a/src/helics/application_api/FederateInfo.hpp +++ b/src/helics/application_api/FederateInfo.hpp @@ -58,29 +58,31 @@ class HELICS_CXX_EXPORT FederateInfo: public CoreFederateInfo { explicit FederateInfo(std::vector& args); /** load a federateInfo object from command line arguments outside the constructor @param args a string containing the command line arguments + @return a vector of strings containing the unused arguments */ std::vector loadInfoFromArgs(const std::string& args); /** load a federateInfo object from command line arguments outside the constructor @param argc the number of arguments @param argv an array of char * pointers to the arguments + @return a vector of strings containing the unused arguments */ std::vector loadInfoFromArgs(int argc, char* argv[]); /** load a federateInfo object from command line arguments contained in a vector @param[in,out] args a vector of arguments to load. The unused arguments will be returned in the vector */ void loadInfoFromArgs(std::vector& args); - - private: - std::unique_ptr makeCLIApp(); /** load a federateInfo object from command line arguments outside the constructor - @param args a string containing the command line arguments - */ + @param args a string containing the command line arguments + */ void loadInfoFromArgsIgnoreOutput(const std::string& args); /** load a federateInfo object from command line arguments outside the constructor @param argc the number of arguments @param argv an array of char * pointers to the arguments */ void loadInfoFromArgsIgnoreOutput(int argc, char* argv[]); + + private: + std::unique_ptr makeCLIApp(); }; /** generate a FederateInfo object from a config file (JSON, TOML) diff --git a/src/helics/apps/AsioBrokerServer.cpp b/src/helics/apps/AsioBrokerServer.cpp index 3ad163de36..19f601780e 100644 --- a/src/helics/apps/AsioBrokerServer.cpp +++ b/src/helics/apps/AsioBrokerServer.cpp @@ -144,7 +144,7 @@ namespace apps { { std::string ext_interface = "0.0.0.0"; int tcpport = DEFAULT_TCP_BROKER_PORT_NUMBER; - std::chrono::milliseconds timeout(20000); + //std::chrono::milliseconds timeout(20000); if (config_->isMember("tcp")) { auto V = (*config_)["tcp"]; replaceIfMember(V, "interface", ext_interface); @@ -159,7 +159,7 @@ namespace apps { { std::string ext_interface = "0.0.0.0"; int udpport = DEFAULT_UDP_BROKER_PORT_NUMBER; - std::chrono::milliseconds timeout(20000); + //std::chrono::milliseconds timeout(20000); if (config_->isMember("udp")) { auto V = (*config_)["udp"]; replaceIfMember(V, "interface", ext_interface); diff --git a/src/helics/apps/MultiBroker.cpp b/src/helics/apps/MultiBroker.cpp index b1e0031083..4b880e0d11 100644 --- a/src/helics/apps/MultiBroker.cpp +++ b/src/helics/apps/MultiBroker.cpp @@ -118,6 +118,7 @@ static std::unique_ptr case core_type::NNG: case core_type::UNRECOGNIZED: case core_type::WEBSOCKET: + case core_type::NULLCORE: break; } if (comm) { diff --git a/src/helics/core/ActionMessage.cpp b/src/helics/core/ActionMessage.cpp index 527f37308f..8020b49f9a 100644 --- a/src/helics/core/ActionMessage.cpp +++ b/src/helics/core/ActionMessage.cpp @@ -804,4 +804,19 @@ int appendMessage(ActionMessage& m, const ActionMessage& newMessage) } return (-1); } + +void setIterationFlags(ActionMessage& command, iteration_request iterate) +{ + switch (iterate) { + case iteration_request::force_iteration: + setActionFlag(command, iteration_requested_flag); + setActionFlag(command, required_flag); + break; + case iteration_request::iterate_if_needed: + setActionFlag(command, iteration_requested_flag); + break; + case iteration_request::no_iterations: + break; + } +} } // namespace helics diff --git a/src/helics/core/ActionMessage.hpp b/src/helics/core/ActionMessage.hpp index caa26fdab0..d83baaec72 100644 --- a/src/helics/core/ActionMessage.hpp +++ b/src/helics/core/ActionMessage.hpp @@ -305,10 +305,13 @@ std::ostream& operator<<(std::ostream& os, const ActionMessage& command); @return the integer location of the message in the stringData section*/ int appendMessage(ActionMessage& m, const ActionMessage& newMessage); -/** generate a string reprenting an error from an ActionMessage +/** generate a string representing an error from an ActionMessage @param command the command to generate the error string for @return a string describing the error, if the string is not an error the string is empty */ std::string errorMessageString(const ActionMessage& command); +/** set the flags for an iteration request*/ +void setIterationFlags(ActionMessage& command, iteration_request iterate); + } // namespace helics diff --git a/src/helics/core/BrokerFactory.cpp b/src/helics/core/BrokerFactory.cpp index b67c3050a1..55b465e6d5 100644 --- a/src/helics/core/BrokerFactory.cpp +++ b/src/helics/core/BrokerFactory.cpp @@ -170,6 +170,12 @@ std::shared_ptr makeBroker(core_type type, const std::string& name) throw(HelicsException("tcp single socket broker type is not available")); #endif break; + case core_type::NNG: + case core_type::WEBSOCKET: + case core_type::HTTP: + throw(HelicsException("core type is not available")); + case core_type::NULLCORE: + throw(HelicsException("nullcore is explicitly not available nor will ever be")); default: throw(HelicsException("unrecognized broker type")); } @@ -254,14 +260,14 @@ need be without issue*/ delayedDestroyer(destroyerCallFirst); //!< the object handling the delayed destruction static gmlc::concurrency::SearchableObjectHolder - searchableObjects; //!< the object managing the searchable objects + searchableBrokers; //!< the object managing the searchable objects // this will trip the line when it is destroyed at global destruction time static gmlc::concurrency::TripWireTrigger tripTrigger; std::shared_ptr findBroker(const std::string& brokerName) { - return searchableObjects.findObject(brokerName); + return searchableBrokers.findObject(brokerName); } static bool isJoinableBrokerOfType(core_type type, const std::shared_ptr& ptr) @@ -329,24 +335,24 @@ need be without issue*/ std::shared_ptr findJoinableBrokerOfType(core_type type) { - return searchableObjects.findObject( + return searchableBrokers.findObject( [type](auto& ptr) { return isJoinableBrokerForType(type, ptr); }); } - std::vector> getAllBrokers() { return searchableObjects.getObjects(); } + std::vector> getAllBrokers() { return searchableBrokers.getObjects(); } - bool brokersActive() { return !searchableObjects.empty(); } + bool brokersActive() { return !searchableBrokers.empty(); } bool registerBroker(const std::shared_ptr& broker) { bool registered = false; if (broker) { - registered = searchableObjects.addObject(broker->getIdentifier(), broker); + registered = searchableBrokers.addObject(broker->getIdentifier(), broker); } cleanUpBrokers(); if ((!registered) && (broker)) { std::this_thread::sleep_for(std::chrono::milliseconds(200)); - registered = searchableObjects.addObject(broker->getIdentifier(), broker); + registered = searchableBrokers.addObject(broker->getIdentifier(), broker); } if (registered) { delayedDestroyer.addObjectsToBeDestroyed(broker); @@ -361,15 +367,24 @@ need be without issue*/ return delayedDestroyer.destroyObjects(delay); } + void terminateAllBrokers() + { + auto brokers = getAllBrokers(); + for (auto& brk : brokers) { + brk->disconnect(); + } + cleanUpBrokers(std::chrono::milliseconds(250)); + } + bool copyBrokerIdentifier(const std::string& copyFromName, const std::string& copyToName) { - return searchableObjects.copyObject(copyFromName, copyToName); + return searchableBrokers.copyObject(copyFromName, copyToName); } void unregisterBroker(const std::string& name) { - if (!searchableObjects.removeObject(name)) { - searchableObjects.removeObject( + if (!searchableBrokers.removeObject(name)) { + searchableBrokers.removeObject( [&name](auto& obj) { return (obj->getIdentifier() == name); }); } } diff --git a/src/helics/core/BrokerFactory.hpp b/src/helics/core/BrokerFactory.hpp index e3aa479740..e89aad0538 100644 --- a/src/helics/core/BrokerFactory.hpp +++ b/src/helics/core/BrokerFactory.hpp @@ -88,5 +88,8 @@ registered or when the clean up function is called this prevents some odd thread /** display the help listing for a particular core_type*/ void displayHelp(core_type type = core_type::UNRECOGNIZED); + + /** terminate all running Brokers*/ + void terminateAllBrokers(); } // namespace BrokerFactory } // namespace helics diff --git a/src/helics/core/CoreFactory.cpp b/src/helics/core/CoreFactory.cpp index b927a969d6..58b4c9fd90 100644 --- a/src/helics/core/CoreFactory.cpp +++ b/src/helics/core/CoreFactory.cpp @@ -67,8 +67,8 @@ std::shared_ptr makeCore(core_type type, const std::string& name) # ifdef ENABLE_IPC_CORE type = core_type::IPC; # else -# ifdef ENABLE_TEST_CORE - type = core_type::TEST; +# ifdef ENABLE_INPROC_CORE + type = core_type::INPROC; # else type = core_type::UNRECOGNIZED; # endif // ENABLE_TEST_CORE @@ -182,6 +182,12 @@ std::shared_ptr makeCore(core_type type, const std::string& name) throw(HelicsException("TCP single socket core is not available")); #endif break; + case core_type::NNG: + case core_type::WEBSOCKET: + case core_type::HTTP: + throw(HelicsException("core type is not available")); + case core_type::NULLCORE: + throw(HelicsException("the nullcore explicitly doesn't exist")); default: throw(HelicsException("unrecognized core type")); } @@ -353,14 +359,14 @@ without issue*/ delayedDestroyer(destroyerCallFirst); //!< the object handling the delayed destruction static gmlc::concurrency::SearchableObjectHolder - searchableObjects; //!< the object managing the searchable objects + searchableCores; //!< the object managing the searchable cores // this will trip the line when it is destroyed at global destruction time static gmlc::concurrency::TripWireTrigger tripTrigger; std::shared_ptr findCore(const std::string& name) { - return searchableObjects.findObject(name); + return searchableCores.findObject(name); } static bool isJoinableCoreOfType(core_type type, const std::shared_ptr& ptr) @@ -434,7 +440,7 @@ without issue*/ std::shared_ptr findJoinableCoreOfType(core_type type) { - return searchableObjects.findObject( + return searchableCores.findObject( [type](auto& ptr) { return isJoinableCoreForType(type, ptr); }); } @@ -443,7 +449,7 @@ without issue*/ bool res = false; auto tcore = std::dynamic_pointer_cast(core); if (tcore) { - res = searchableObjects.addObject(tcore->getIdentifier(), tcore); + res = searchableCores.addObject(tcore->getIdentifier(), tcore); } cleanUpCores(); if (res) { @@ -459,15 +465,24 @@ without issue*/ return delayedDestroyer.destroyObjects(delay); } + void terminateAllCores() + { + auto brokers = searchableCores.getObjects(); + for (auto& brk : brokers) { + brk->disconnect(); + } + cleanUpCores(std::chrono::milliseconds(250)); + } + bool copyCoreIdentifier(const std::string& copyFromName, const std::string& copyToName) { - return searchableObjects.copyObject(copyFromName, copyToName); + return searchableCores.copyObject(copyFromName, copyToName); } void unregisterCore(const std::string& name) { - if (!searchableObjects.removeObject(name)) { - searchableObjects.removeObject( + if (!searchableCores.removeObject(name)) { + searchableCores.removeObject( [&name](auto& obj) { return (obj->getIdentifier() == name); }); } } diff --git a/src/helics/core/CoreFactory.hpp b/src/helics/core/CoreFactory.hpp index 1e46814b47..ff082c8b21 100644 --- a/src/helics/core/CoreFactory.hpp +++ b/src/helics/core/CoreFactory.hpp @@ -141,6 +141,9 @@ registered or when the clean up function is called this prevents some odd thread /** display the help listing for a particular core_type*/ void displayHelp(core_type type = core_type::UNRECOGNIZED); + + /** terminate All existing cores */ + void terminateAllCores(); } // namespace CoreFactory } // namespace helics diff --git a/src/helics/core/FederateState.cpp b/src/helics/core/FederateState.cpp index fed9080cc1..24587a896f 100644 --- a/src/helics/core/FederateState.cpp +++ b/src/helics/core/FederateState.cpp @@ -437,17 +437,7 @@ iteration_result FederateState::enterExecutingMode(iteration_request iterate) // timeCoord->enteringExecMode (iterate); ActionMessage exec(CMD_EXEC_REQUEST); exec.source_id = global_id.load(); - switch (iterate) { - case iteration_request::force_iteration: - setActionFlag(exec, iteration_requested_flag); - setActionFlag(exec, required_flag); - break; - case iteration_request::iterate_if_needed: - setActionFlag(exec, iteration_requested_flag); - break; - case iteration_request::no_iterations: - break; - } + setIterationFlags(exec, iterate); addAction(exec); @@ -528,18 +518,7 @@ iteration_time FederateState::requestTime(Time nextTime, iteration_request itera ActionMessage treq(CMD_TIME_REQUEST); treq.source_id = global_id.load(); treq.actionTime = nextTime; - switch (iterate) { - case iteration_request::force_iteration: - setActionFlag(treq, iteration_requested_flag); - setActionFlag(treq, required_flag); - break; - case iteration_request::iterate_if_needed: - setActionFlag(treq, iteration_requested_flag); - break; - case iteration_request::no_iterations: - break; - } - + setIterationFlags(treq, iterate); addAction(treq); LOG_TRACE(timeCoord->printTimeStatus()); // timeCoord->timeRequest (nextTime, iterate, nextValueTime (), nextMessageTime ()); @@ -835,7 +814,7 @@ message_processing_result FederateState::processActionMessage(ActionMessage& cmd LOG_TIMING("Granting Initialization"); timeGranted_mode = true; int pcode = checkInterfaces(); - if (pcode != 0) { + if (pcode != defs::errors::ok) { return message_processing_result::error; } return message_processing_result::next_step; diff --git a/src/helics/core/TimeCoordinator.cpp b/src/helics/core/TimeCoordinator.cpp index 6ef69b4ba0..ef3a34d753 100644 --- a/src/helics/core/TimeCoordinator.cpp +++ b/src/helics/core/TimeCoordinator.cpp @@ -41,18 +41,20 @@ void TimeCoordinator::enteringExecMode(iteration_request mode) if (executionMode) { return; } - iterating = (mode != iteration_request::no_iterations); + iterating = mode; checkingExec = true; ActionMessage execreq(CMD_EXEC_REQUEST); execreq.source_id = source_id; - if (iterating) { - setActionFlag(execreq, iteration_requested_flag); + if (iterating != iteration_request::no_iterations) { + setIterationFlags(execreq, iterating); } transmitTimingMessage(execreq); } void TimeCoordinator::disconnect() { + time_granted = Time::maxVal(); + time_grantBase = Time::maxVal(); if (sendMessageFunction) { std::set connections(dependents.begin(), dependents.end()); for (auto dep : dependencies) { @@ -95,9 +97,10 @@ void TimeCoordinator::timeRequest( Time newValueTime, Time newMessageTime) { - iterating = (iterate != iteration_request::no_iterations); - if (iterating) { - if (nextTime < time_granted) { + iterating = iterate; + + if (iterating != iteration_request::no_iterations) { + if (nextTime < time_granted || iterating == iteration_request::force_iteration) { nextTime = time_granted; } } else { @@ -136,7 +139,8 @@ bool TimeCoordinator::updateNextExecutionTime() } time_exec = std::min(time_requested, time_exec); if (time_exec <= time_granted) { - time_exec = (iterating) ? time_granted : getNextPossibleTime(); + time_exec = (iterating == iteration_request::no_iterations) ? getNextPossibleTime() : + time_granted; } if ((time_exec - time_granted) > timeZero) { time_exec = generateAllowedTime(time_exec); @@ -148,7 +152,8 @@ bool TimeCoordinator::updateNextExecutionTime() void TimeCoordinator::updateNextPossibleEventTime() { - time_next = (!iterating) ? getNextPossibleTime() : time_granted; + time_next = + (iterating == iteration_request::no_iterations) ? getNextPossibleTime() : time_granted; if (info.uninterruptible) { time_next = time_requested; @@ -174,7 +179,7 @@ void TimeCoordinator::updateValueTime(Time valueUpdateTime) } if (valueUpdateTime < time_value) { auto ptime = time_value; - if (iterating) { + if (iterating != iteration_request::no_iterations) { time_value = (valueUpdateTime <= time_granted) ? time_granted : valueUpdateTime; } else { auto nextPossibleTime = getNextPossibleTime(); @@ -272,7 +277,7 @@ void TimeCoordinator::updateMessageTime(Time messageUpdateTime) if (messageUpdateTime < time_message) { auto ptime = time_message; - if (iterating) { + if (iterating != iteration_request::no_iterations) { time_message = (messageUpdateTime <= time_granted) ? time_granted : messageUpdateTime; } else { auto nextPossibleTime = getNextPossibleTime(); @@ -354,7 +359,8 @@ message_processing_result TimeCoordinator::checkTimeGrant() if (time_block <= time_exec) { return message_processing_result::continue_processing; } - if ((!iterating) || (time_exec > time_granted)) { + if ((iterating == iteration_request::no_iterations) || + (time_exec > time_granted && iterating == iteration_request::iterate_if_needed)) { iteration = 0; if (time_allow > time_exec) { updateTimeGrant(); @@ -401,8 +407,8 @@ void TimeCoordinator::sendTimeRequest() const upd.Te = (time_exec != Time::maxVal()) ? time_exec + info.outputDelay : time_exec; upd.Tdemin = (time_minDe < time_next) ? time_next : time_minDe; - if (iterating) { - setActionFlag(upd, iteration_requested_flag); + if (iterating != iteration_request::no_iterations) { + setIterationFlags(upd, iterating); upd.counter = iteration; } transmitTimingMessage(upd); @@ -412,14 +418,15 @@ void TimeCoordinator::sendTimeRequest() const void TimeCoordinator::updateTimeGrant() { - time_granted = time_exec; - time_grantBase = time_granted; - + if (iterating != iteration_request::force_iteration) { + time_granted = time_exec; + time_grantBase = time_granted; + } ActionMessage treq(CMD_TIME_GRANT); treq.source_id = source_id; treq.actionTime = time_granted; treq.counter = iteration; - if (iterating) { + if (iterating != iteration_request::no_iterations) { dependencies.resetIteratingTimeRequests(time_exec); } transmitTimingMessage(treq); @@ -525,22 +532,27 @@ message_processing_result TimeCoordinator::checkExecEntry() if (time_block <= timeZero) { return ret; } - if (!dependencies.checkIfReadyForExecEntry(iterating)) { + if (!dependencies.checkIfReadyForExecEntry(iterating != iteration_request::no_iterations)) { return ret; } - if (iterating) { - if (hasInitUpdates) { - if (iteration >= info.maxIterations) { - ret = message_processing_result::next_step; + switch (iterating) { + case iteration_request::no_iterations: + ret = message_processing_result::next_step; + break; + case iteration_request::iterate_if_needed: + if (hasInitUpdates) { + if (iteration >= info.maxIterations) { + ret = message_processing_result::next_step; + } else { + ret = message_processing_result::iterating; + } } else { - ret = message_processing_result::iterating; + ret = message_processing_result::next_step; } - } else { - ret = message_processing_result:: - next_step; // todo add a check for updates and iteration limit - } - } else { - ret = message_processing_result::next_step; + break; + case iteration_request::force_iteration: + ret = message_processing_result::iterating; + break; } if (ret == message_processing_result::next_step) { @@ -617,12 +629,12 @@ message_process_result TimeCoordinator::processTimeMessage(const ActionMessage& if (dep->Tnext > time_exec) { return message_process_result::delay_processing; } - if ((iterating) && (time_exec == dep->Tnext)) { + if ((iterating != iteration_request::no_iterations) && (time_exec == dep->Tnext)) { return message_process_result::delay_processing; } break; case DependencyInfo::time_state_t::exec_requested_iterative: - if ((iterating) && (checkingExec)) { + if ((iterating != iteration_request::no_iterations) && (checkingExec)) { return message_process_result::delay_processing; } break; diff --git a/src/helics/core/TimeCoordinator.hpp b/src/helics/core/TimeCoordinator.hpp index b729e4d679..69cfedb3f7 100644 --- a/src/helics/core/TimeCoordinator.hpp +++ b/src/helics/core/TimeCoordinator.hpp @@ -76,7 +76,9 @@ class TimeCoordinator { public: global_federate_id source_id{ 0}; //!< the identifier for inserting into the source id field of any generated messages; - bool iterating{false}; //!< indicator that the coordinator should be iterating if need be + iteration_request iterating{ + iteration_request:: + no_iterations}; //!< indicator that the coordinator should be iterating if need be bool checkingExec{ false}; //!< flag indicating that the coordinator is trying to enter the exec mode bool executionMode{false}; //!< flag that the coordinator has entered the execution Mode diff --git a/src/helics/core/core-types.hpp b/src/helics/core/core-types.hpp index a9832626e8..e4f65379d1 100644 --- a/src/helics/core/core-types.hpp +++ b/src/helics/core/core-types.hpp @@ -49,6 +49,7 @@ enum class core_type : int { HTTP = helics_core_type_http, //!< core/broker using web traffic WEBSOCKET = helics_core_type_websocket, //!< core/broker using web sockets INPROC = helics_core_type_inproc, //!< core/broker using a stripped down in process core type + NULLCORE = helics_core_type_null, //!< explicit core type that doesn't exist UNRECOGNIZED = 22, //!< unknown }; diff --git a/src/helics/core/coreTypeOperations.cpp b/src/helics/core/coreTypeOperations.cpp index 23a90821b1..cae77f040e 100644 --- a/src/helics/core/coreTypeOperations.cpp +++ b/src/helics/core/coreTypeOperations.cpp @@ -44,6 +44,8 @@ namespace core { return "inproc_"; case core_type::WEBSOCKET: return "websocket_"; + case core_type::NULLCORE: + return "null_"; default: return std::string(); } @@ -95,6 +97,9 @@ namespace core { {"web", core_type::WEBSOCKET}, {"inproc", core_type::INPROC}, {"nng", core_type::NNG}, + {"null", core_type::NULLCORE}, + {"nullcore", core_type::NULLCORE}, + {"none", core_type::NULLCORE}, {"http", core_type::HTTP}, {"HTTP", core_type::HTTP}, {"web", core_type::HTTP}, @@ -150,6 +155,9 @@ namespace core { if (type.compare(0, 3, "web") == 0) { return core_type::WEBSOCKET; } + if (type.compare(0, 4, "null") == 0) { + return core_type::NULLCORE; + } return core_type::UNRECOGNIZED; } @@ -233,6 +241,8 @@ namespace core { case core_type::WEBSOCKET: available = false; break; + case core_type::NULLCORE: + available = false; default: break; } diff --git a/src/helics/helics_enums.h b/src/helics/helics_enums.h index 24785e1836..b8a1d4c7fe 100644 --- a/src/helics/helics_enums.h +++ b/src/helics/helics_enums.h @@ -41,8 +41,10 @@ typedef enum { helics_core_type_http = 12, /*!< a core type using http for communication*/ helics_core_type_websocket = 14, /*!< a core using websockets for communication*/ helics_core_type_inproc = - 18 /*!< an in process core type for handling communications in shared memory + 18, /*!< an in process core type for handling communications in shared memory it is pretty similar to the test core but stripped from the "test" components*/ + helics_core_type_null = + 66 /*!< an explicit core type that is recognized but explicitly doesn't exist, for testing and a few other assorted reasons*/ } helics_core_type; /** enumeration of allowable data types for publications and inputs*/ diff --git a/tests/helics/application_api/FederateTests.cpp b/tests/helics/application_api/FederateTests.cpp index c83a6d3149..c795152242 100644 --- a/tests/helics/application_api/FederateTests.cpp +++ b/tests/helics/application_api/FederateTests.cpp @@ -5,10 +5,12 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ +#include "helics/application_api/CoreApp.hpp" #include "helics/application_api/Federate.hpp" +#include "helics/application_api/Filters.hpp" #include "helics/core/BrokerFactory.hpp" -//#include "helics/core/CoreFactory.hpp" #include "helics/core/Core.hpp" +#include "helics/core/CoreFactory.hpp" #include "helics/core/core-exceptions.hpp" #include @@ -228,6 +230,13 @@ TEST(federate_tests, multiple_federates_async_calls) Fed1->enterInitializingModeAsync(); Fed2->enterInitializingMode(); + EXPECT_NO_THROW(Fed2->enterInitializingMode()); + + auto c1 = Fed1->getCorePointer(); + auto c2 = Fed2->getCorePointer(); + EXPECT_EQ(c1->getIdentifier(), c2->getIdentifier()); + c1.reset(); + c2.reset(); Fed1->enterInitializingModeComplete(); @@ -262,6 +271,653 @@ TEST(federate_tests, multiple_federates_async_calls) Fed2->finalize(); } +TEST(federate_tests, missing_core) +{ + helics::FederateInfo fi(helics::core_type::NULLCORE); + fi.coreName = "core_missing"; + fi.coreInitString = "-f 1"; + + EXPECT_THROW( + auto Fed1 = std::make_shared("fed1", fi), helics::HelicsException); +} + +TEST(federate_tests, not_open) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterExecutingMode(); + + EXPECT_THROW( + auto fed2 = std::make_shared("fed2", fi), helics::RegistrationFailure); + Fed1->finalize(); +} + +TEST(federate_tests, coreApp) +{ + helics::CoreApp capp(helics::core_type::TEST, "corename", "-f 1 --autobroker"); + helics::FederateInfo fi(helics::core_type::TEST); + auto Fed1 = std::make_shared("fed1", capp, fi); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + + Fed1->finalize(); +} + +TEST(federate_tests, core_ptr) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_ptr"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", nullptr, fi); + Fed1->enterExecutingMode(); + + EXPECT_THROW( + auto fed2 = std::make_shared("fed2", nullptr, fi), + helics::RegistrationFailure); + Fed1->finalize(); +} + +TEST(federate_tests, core_ptr_no_name) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared(std::string{}, nullptr, fi); + Fed1->enterExecutingMode(); + Fed1->finalize(); +} + +TEST(federate_tests, from_string) +{ + auto Fed1 = std::make_shared( + "fed1", "--type=TEST --corename core_init --coreinitstring='-f 1 --autobroker'"); + Fed1->enterExecutingMode(); + + auto c1 = Fed1->getCorePointer(); + EXPECT_EQ(c1->getIdentifier(), "core_init"); + Fed1->finalize(); + c1.reset(); +} + +TEST(federate_tests, from_file1) +{ + auto fstr1 = std::string(TEST_DIR) + "example_filters.json"; + auto Fed1 = std::make_shared(fstr1); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + Fed1->finalize(); +} + +TEST(federate_tests, from_file3) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr1 = std::string(TEST_DIR) + "example_unusual_filters.json"; + auto Fed1 = std::make_shared(fstr1); + EXPECT_THROW(Fed1->enterExecutingMode(), helics::HelicsException); + Fed1->finalize(); + Fed1->getCorePointer()->disconnect(); +} + +TEST(federate_tests, from_file4) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr1 = std::string(TEST_DIR) + "example_unusual_filters2.json"; + auto Fed1 = std::make_shared(fstr1); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + Fed1->finalize(); +} + +TEST(federate_tests, from_file2) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr2 = std::string(TEST_DIR) + "example_filters.toml"; + auto Fed1 = std::make_shared(fstr2); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + Fed1->finalize(); +} + +TEST(federate_tests, from_file5) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr2 = "non_existing.toml"; + EXPECT_THROW(std::make_shared(fstr2), helics::InvalidParameter); +} + +TEST(federate_tests, from_file6) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + + auto fstr2 = std::string(TEST_DIR) + "example_filters.toml"; + auto Fed1 = std::make_shared(fstr2); + EXPECT_THROW(Fed1->registerFilterInterfaces("non_existing.toml"), helics::InvalidParameter); +} + +TEST(federate_tests, from_file7) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr3 = std::string(TEST_DIR) + "example_unusual_filters3.json"; + auto Fed1 = std::make_shared(fstr3); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + Fed1->finalize(); +} + +TEST(federate_tests, from_file8) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr3 = std::string(TEST_DIR) + "unusual_filters.toml"; + auto Fed1 = std::make_shared(fstr3); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + Fed1->finalize(); +} + +TEST(federate_tests, from_file9) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr4 = std::string(TEST_DIR) + "example_filters.toml"; + auto Fed1 = std::make_shared(fstr4); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + EXPECT_THROW( + Fed1->registerFilterInterfaces(std::string(TEST_DIR) + "unusual_filters2.toml"), + helics::InvalidParameter); + Fed1->finalize(); + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); +} + +TEST(federate_tests, from_string2) +{ + auto Fed1 = std::make_shared( + "--name=fed1 --type=TEST --corename core_init --coreinitstring='-f 1 --autobroker'"); + Fed1->enterExecutingMode(); + + EXPECT_EQ(Fed1->getName(), "fed1"); + Fed1->finalize(); +} + +TEST(federate_tests, enterInit) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_a"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingModeAsync(); + //make sure it doesn't error if called twice + EXPECT_NO_THROW(Fed1->enterInitializingModeAsync()); + EXPECT_NO_THROW(Fed1->isAsyncOperationCompleted()); + EXPECT_NO_THROW(Fed1->enterInitializingMode()); + EXPECT_NO_THROW(Fed1->enterInitializingModeComplete()); + + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::initializing); + EXPECT_NO_THROW(Fed1->finalize()); +} + +TEST(federate_tests, enterInitComplete) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_b"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + //this should be the same as just calling enterInitializingMode + EXPECT_NO_THROW(Fed1->enterInitializingModeComplete()); + + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::initializing); + Fed1->finalize(); +} + +TEST(federate_tests, enterExec) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_c"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingModeAsync(); + Fed1->setProperty(helics_properties::helics_property_time_delta, helics::Time(1.0)); + //make sure it doesn't error if called twice + EXPECT_NO_THROW(Fed1->enterInitializingModeAsync()); + EXPECT_NO_THROW(Fed1->enterExecutingModeAsync()); + EXPECT_NO_THROW(Fed1->isAsyncOperationCompleted()); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + EXPECT_NO_THROW(Fed1->enterExecutingModeComplete()); + EXPECT_NO_THROW(Fed1->enterExecutingModeAsync()); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::executing); + Fed1->finalizeComplete(); +} + +TEST(federate_tests, enterExecAfterFinal) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_ec"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingMode(); + auto cr = Fed1->getCorePointer(); + cr->disconnect(); + + auto iterating = Fed1->enterExecutingMode(); + EXPECT_EQ(iterating, helics::iteration_result::halted); + + Fed1->finalize(); +} + +TEST(federate_tests, enterExecAfterFinalAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_eca"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingMode(); + auto cr = Fed1->getCorePointer(); + cr->disconnect(); + + Fed1->enterExecutingModeAsync(); + auto iterating = Fed1->enterExecutingModeComplete(); + EXPECT_EQ(iterating, helics::iteration_result::halted); + + Fed1->finalize(); +} + +TEST(federate_tests, iterativeTimeRequestHalt) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_eca1"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterExecutingMode(); + + auto cr = Fed1->getCorePointer(); + cr->disconnect(); + + auto itTime = Fed1->requestTimeIterative(2.0, helics::iteration_request::force_iteration); + EXPECT_EQ(itTime.state, helics::iteration_result::halted); + EXPECT_EQ(itTime.grantedTime, helics::Time::maxVal()); + + Fed1->finalize(); +} + +TEST(federate_tests, iterativeTimeRequestAsyncHalt) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_eca2"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterExecutingMode(); + + auto cr = Fed1->getCorePointer(); + cr->disconnect(); + + Fed1->requestTimeIterativeAsync(2.0, helics::iteration_request::force_iteration); + auto itTime = Fed1->requestTimeIterativeComplete(); + EXPECT_EQ(itTime.state, helics::iteration_result::halted); + EXPECT_EQ(itTime.grantedTime, helics::Time::maxVal()); + + Fed1->finalize(); +} + +TEST(federate_tests, enterExecAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_d"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingModeAsync(); + EXPECT_NO_THROW(Fed1->enterExecutingModeAsync()); + EXPECT_NO_THROW(Fed1->finalize()); +} + +TEST(federate_tests, enterExecAsyncIterative) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingModeAsync(helics::iteration_request::force_iteration); + EXPECT_NO_THROW(Fed1->enterExecutingModeAsync()); + auto res = Fed1->enterExecutingModeComplete(); + EXPECT_EQ(res, helics::iteration_result::iterating); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::initializing); + EXPECT_NO_THROW(Fed1->finalizeAsync()); + EXPECT_NO_THROW(Fed1->finalizeAsync()); + EXPECT_NO_THROW(Fed1->finalize()); +} + +TEST(federate_tests, enterRequestTimeAsyncIterative) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->requestTimeAsync(1.0); + while (!Fed1->isAsyncOperationCompleted()) { + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + } + EXPECT_TRUE(Fed1->isAsyncOperationCompleted()); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + EXPECT_EQ(Fed1->getCurrentTime(), 1.0); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::executing); + + Fed1->requestTimeIterativeAsync(37.0, helics::iteration_request::force_iteration); + while (!Fed1->isAsyncOperationCompleted()) { + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + } + auto itime = Fed1->requestTimeIterativeComplete(); + EXPECT_EQ(itime.grantedTime, 1.0); + EXPECT_EQ(itime.state, helics::iteration_result::iterating); + Fed1->requestTimeIterativeAsync(1.0, helics::iteration_request::force_iteration); + Fed1->finalizeAsync(); + while (!Fed1->isAsyncOperationCompleted()) { + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + } + EXPECT_TRUE(Fed1->isAsyncOperationCompleted()); + Fed1->finalizeComplete(); +} + +TEST(federate_tests, enterRequestTimeAsyncIterativeFinalize) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e2"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->requestTimeIterativeAsync(1.0, helics::iteration_request::force_iteration); + EXPECT_NO_THROW(Fed1->finalize()); + //check time results after finalize + auto tm = Fed1->requestTime(3.0); + EXPECT_EQ(tm, helics::Time::maxVal()); +} + +TEST(federate_tests, enterRequestTimeAsyncFinalize) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e3"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->requestTimeAsync(1.0); + EXPECT_NO_THROW(Fed1->finalize()); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::finalize); +} + +TEST(federate_tests, enterRequestTimeAsyncFinalizeAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e3a"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->requestTimeAsync(1.0); + EXPECT_NO_THROW(Fed1->finalizeAsync()); + Fed1->finalizeComplete(); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::finalize); +} + +TEST(federate_tests, enterEnterExecAsyncFinalize) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e4"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingMode(); + Fed1->enterExecutingModeAsync(); + EXPECT_NO_THROW(Fed1->finalize()); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::finalize); +} + +TEST(federate_tests, enterEnterInitAsyncFinalize) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e5"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingModeAsync(); + EXPECT_NO_THROW(Fed1->finalize()); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::finalize); +} + +TEST(federate_tests, enterEnterExecAsyncFinalizeAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e4a"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingMode(); + Fed1->enterExecutingModeAsync(); + EXPECT_NO_THROW(Fed1->finalizeAsync()); + Fed1->finalizeComplete(); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::finalize); +} + +TEST(federate_tests, enterEnterInitAsyncFinalizeAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_e5a"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterInitializingModeAsync(); + EXPECT_NO_THROW(Fed1->finalizeAsync()); + Fed1->finalizeComplete(); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::finalize); +} + +TEST(federate_tests, enterExecPendingTimeIterative) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_epa"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->enterExecutingMode(); + Fed1->requestTimeIterativeAsync(2.0, helics::iteration_request::force_iteration); + auto it = Fed1->enterExecutingMode(); + EXPECT_EQ(it, helics::iteration_result::next_step); + Fed1->finalizeComplete(); + EXPECT_EQ(Fed1->getCurrentMode(), helics::Federate::modes::finalize); +} + +TEST(federate_tests, forceErrorExec) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_fe"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->error(9827); + + EXPECT_THROW(Fed1->enterInitializingMode(), helics::InvalidFunctionCall); + EXPECT_THROW(Fed1->enterExecutingMode(), helics::InvalidFunctionCall); + + Fed1->getCorePointer()->disconnect(); +} + +TEST(federate_tests, forceErrorExecAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_fe1"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingModeAsync(helics::iteration_request::force_iteration); + Fed1->error(9827); + + EXPECT_THROW(Fed1->enterInitializingMode(), helics::InvalidFunctionCall); + EXPECT_THROW(Fed1->enterExecutingMode(), helics::InvalidFunctionCall); + + Fed1->getCorePointer()->disconnect(); +} + +TEST(federate_tests, forceErrorInitAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_fe2"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterInitializingModeAsync(); + Fed1->error(9827); + + EXPECT_THROW(Fed1->enterInitializingMode(), helics::InvalidFunctionCall); + EXPECT_THROW(Fed1->enterExecutingMode(), helics::InvalidFunctionCall); + + Fed1->getCorePointer()->disconnect(); +} + +TEST(federate_tests, forceErrorPendingTimeAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_fe3"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->requestTimeAsync(2.0); + Fed1->error(9827); + + EXPECT_THROW(Fed1->requestTime(3.0), helics::InvalidFunctionCall); + + Fed1->getCorePointer()->disconnect(); +} + +TEST(federate_tests, queryTest1) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_q"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed_q", fi); + + Fed1->enterExecutingMode(); + + auto qres = Fed1->query("name"); + EXPECT_EQ(qres, "fed_q"); + qres = Fed1->query("corename"); + auto cr = Fed1->getCorePointer(); + EXPECT_EQ(qres, cr->getIdentifier()); + qres = Fed1->query("federate", "name"); + EXPECT_EQ(qres, "fed_q"); + + cr.reset(); + Fed1->disconnect(); + qres = Fed1->query("corename"); + EXPECT_EQ(qres.front(), '#'); + qres = Fed1->query("subscriptions"); + EXPECT_EQ(qres.front(), '#'); + qres = Fed1->query("root", "subscriptions"); + EXPECT_EQ(qres.front(), '#'); + + qres = Fed1->queryComplete(helics::query_id_t{4}); + EXPECT_EQ(qres.front(), '#'); + + EXPECT_FALSE(Fed1->isQueryCompleted(helics::query_id_t{2})); + EXPECT_NO_THROW(Fed1->logMessage(10, "test log message")); +} + +TEST(federate_tests, forceErrorPendingTimeIterativeAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_fe4"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->requestTimeIterativeAsync(2.0, helics::iteration_request::no_iterations); + Fed1->error(9827); + + EXPECT_THROW(Fed1->requestTime(3.0), helics::InvalidFunctionCall); + + Fed1->getCorePointer()->disconnect(); +} + +TEST(federate_tests, forceErrorFinalizeAsync) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_fe5"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->finalizeAsync(); + Fed1->error(9827); + + EXPECT_THROW(Fed1->requestTime(3.0), helics::InvalidFunctionCall); + + Fed1->getCorePointer()->disconnect(); +} + +TEST(federate_tests, error_after_disconnect) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_g"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + auto& f1 = Fed1->registerGlobalFilter("filt1", "type1", "type2"); + Fed1->enterExecutingMode(); + Fed1->disconnect(); + + const auto& Fedref = *Fed1; + auto& fb = Fedref.getFilter(0); + auto& fb2 = Fedref.getFilter("filt1"); + auto& fb3 = Fedref.getFilter("notafilter"); + auto& fb4 = Fed1->getFilter("filt1"); + EXPECT_EQ(Fed1->getInterfaceName(fb), Fed1->getInterfaceName(f1)); + EXPECT_EQ(Fed1->getInterfaceName(fb2), Fed1->getInterfaceName(f1)); + EXPECT_EQ(Fed1->getInterfaceName(fb4), Fed1->getInterfaceName(f1)); + EXPECT_FALSE(fb3.isValid()); + + EXPECT_THROW(Fed1->setGlobal("global1", "global1"), helics::InvalidFunctionCall); + EXPECT_THROW(Fed1->addSourceTarget(f1, "ept"), helics::InvalidFunctionCall); + + EXPECT_THROW(Fed1->addDestinationTarget(f1, "ept"), helics::InvalidFunctionCall); + EXPECT_THROW(Fed1->setFilterOperator(f1, {}), helics::InvalidFunctionCall); + + EXPECT_THROW( + Fed1->setInterfaceOption(helics::interface_handle{0}, 0, false), + helics::InvalidFunctionCall); + EXPECT_THROW( + Fed1->setInfo(helics::interface_handle{0}, "information"), helics::InvalidFunctionCall); + EXPECT_THROW(Fed1->error(99), helics::InvalidFunctionCall); +} + static constexpr const char* simple_global_files[] = {"example_globals1.json", "example_globals1.toml", "example_globals2.json"}; diff --git a/tests/helics/application_api/FilterTests.cpp b/tests/helics/application_api/FilterTests.cpp index f458e5e50c..80e422692b 100644 --- a/tests/helics/application_api/FilterTests.cpp +++ b/tests/helics/application_api/FilterTests.cpp @@ -59,8 +59,9 @@ TEST_P(filter_single_type_test, message_filter_registration) mFed->finalizeAsync(); // std::this_thread::sleep_for (std::chrono::milliseconds (50)); - auto& f3 = fFed->registerFilter(); + auto& f3 = fFed->registerCloningFilter(); fFed->addSourceTarget(f3, "filter0/fout"); + f3.addDestinationTarget("port2"); EXPECT_TRUE(f3.getHandle() != f2.getHandle()); fFed->finalize(); // std::cout << "fFed returned\n"; diff --git a/tests/helics/application_api/ValueFederateAdditionalTests.cpp b/tests/helics/application_api/ValueFederateAdditionalTests.cpp index 0842464c51..af5e250b00 100644 --- a/tests/helics/application_api/ValueFederateAdditionalTests.cpp +++ b/tests/helics/application_api/ValueFederateAdditionalTests.cpp @@ -102,6 +102,7 @@ TEST_P(valuefed_add_single_type_tests_ci_skip, publisher_registration) helics::Publication pubid(vFed1.get(), "pub1", helics::helicsType()); helics::PublicationT pubid2(helics::GLOBAL, vFed1.get(), "pub2"); + vFed1->setSeparator('-'); helics::Publication pubid3(vFed1.get(), "pub3", helics::helicsType(), "V"); vFed1->enterExecutingMode(); @@ -112,11 +113,11 @@ TEST_P(valuefed_add_single_type_tests_ci_skip, publisher_registration) EXPECT_EQ(sv, "fed0/pub1"); EXPECT_EQ(sv2, "pub2"); auto pub3name = pubid3.getKey(); - EXPECT_EQ(pub3name, "fed0/pub3"); + EXPECT_EQ(pub3name, "fed0-pub3"); EXPECT_EQ(pubid3.getType(), "double"); EXPECT_EQ(pubid3.getUnits(), "V"); - + vFed1->setSeparator('/'); EXPECT_TRUE(vFed1->getPublication("pub1").getHandle() == pubid.getHandle()); EXPECT_TRUE(vFed1->getPublication("pub2").getHandle() == pubid2.getHandle()); EXPECT_TRUE(vFed1->getPublication("fed0/pub1").getHandle() == pubid.getHandle()); @@ -285,7 +286,7 @@ TEST_P(valuefed_add_single_type_tests_ci_skip, single_transfer) EXPECT_EQ(s, "string1"); // advance time - gtime = vFed1->requestTime(2.0); + gtime = vFed1->requestTimeAdvance(1.0); // make sure the value was updated EXPECT_EQ(gtime, 2.0); s = vFed1->getString(subid); diff --git a/tests/helics/application_api/testFixtures.cpp b/tests/helics/application_api/testFixtures.cpp index ebc032e364..664aebbf36 100644 --- a/tests/helics/application_api/testFixtures.cpp +++ b/tests/helics/application_api/testFixtures.cpp @@ -6,6 +6,7 @@ SPDX-License-Identifier: BSD-3-Clause */ #include "testFixtures.hpp" +#include "helics/common/loggerCore.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" @@ -70,7 +71,7 @@ FederateTestFixture::~FederateTestFixture() } if (broker->isConnected()) { - std::cout << "forcing disconnect\n"; + helics::LoggerManager::logMessage("forcing disconnect"); broker->disconnect(); } } diff --git a/tests/helics/apps/BrokerServerTests.cpp b/tests/helics/apps/BrokerServerTests.cpp index ffa5c150f2..5a521650d0 100644 --- a/tests/helics/apps/BrokerServerTests.cpp +++ b/tests/helics/apps/BrokerServerTests.cpp @@ -22,8 +22,13 @@ class BrokerServerTests: public ::testing::TestWithParam{GetParam().first}); + + brks.forceTerminate(); + cleanupHelicsLibrary(); + bool active = brks.hasActiveBrokers(); if (active) { + cleanupHelicsLibrary(); std::this_thread::sleep_for(std::chrono::milliseconds(300)); active = brks.hasActiveBrokers(); } diff --git a/tests/helics/shared_library/badInputTests.cpp b/tests/helics/shared_library/badInputTests.cpp index c9a9b4ad1c..0f3ea25ce3 100644 --- a/tests/helics/shared_library/badInputTests.cpp +++ b/tests/helics/shared_library/badInputTests.cpp @@ -97,13 +97,13 @@ TEST_F(bad_input_tests, test_creation) TEST(error_tests, unavailable_core_type) { auto err = helicsErrorInitialize(); - auto core = helicsCreateCore("nng", "test", "", &err); + auto core = helicsCreateCore("nullcore", "test", "", &err); EXPECT_NE(err.error_code, 0); helicsErrorClear(&err); - auto brk = helicsCreateBroker("nng", "test", "", &err); + auto brk = helicsCreateBroker("null", "test", "", &err); EXPECT_NE(err.error_code, 0); - EXPECT_EQ(helicsIsCoreTypeAvailable("nng"), helics_false); + EXPECT_EQ(helicsIsCoreTypeAvailable("null"), helics_false); EXPECT_EQ(helicsIsCoreTypeAvailable(nullptr), helics_false); EXPECT_EQ(helicsIsCoreTypeAvailable("blahblah"), helics_false); diff --git a/tests/helics/shared_library/evilInputTests.cpp b/tests/helics/shared_library/evilInputTests.cpp index b3b7be3ba1..a5c1ab640f 100644 --- a/tests/helics/shared_library/evilInputTests.cpp +++ b/tests/helics/shared_library/evilInputTests.cpp @@ -880,10 +880,10 @@ TEST(evil_fedInfo_test, helicsFederateInfoSetCoreTypeFromString) helics_federate_info evil_fi = reinterpret_cast(rdata); auto err = helicsErrorInitialize(); err.error_code = 45; - helicsFederateInfoSetCoreTypeFromString(nullptr, "nng", &err); + helicsFederateInfoSetCoreTypeFromString(nullptr, "null", &err); EXPECT_EQ(err.error_code, 45); helicsErrorClear(&err); - helicsFederateInfoSetCoreTypeFromString(evil_fi, "nng", &err); + helicsFederateInfoSetCoreTypeFromString(evil_fi, "nullcore", &err); EXPECT_NE(err.error_code, 0); auto fi = helicsCreateFederateInfo(); helicsErrorClear(&err); diff --git a/tests/helics/system_tests/ErrorTests.cpp b/tests/helics/system_tests/ErrorTests.cpp index 544fea393f..72b8933eb2 100644 --- a/tests/helics/system_tests/ErrorTests.cpp +++ b/tests/helics/system_tests/ErrorTests.cpp @@ -166,6 +166,10 @@ TEST_F(error_tests, duplicate_publication_names2) } catch (const helics::RegistrationFailure&) { gotException = true; + EXPECT_TRUE(fed2->getCurrentMode() == helics::Federate::modes::error); + //this should do nothing + EXPECT_THROW(fed2->enterExecutingMode(), helics::InvalidFunctionCall); + EXPECT_TRUE(fed2->getCurrentMode() == helics::Federate::modes::error); } try { @@ -173,8 +177,13 @@ TEST_F(error_tests, duplicate_publication_names2) } catch (const helics::RegistrationFailure&) { gotException = true; + EXPECT_TRUE(fed1->getCurrentMode() == helics::Federate::modes::error); + //this should do nothing + EXPECT_THROW(fed1->enterExecutingMode(), helics::InvalidFunctionCall); + EXPECT_TRUE(fed1->getCurrentMode() == helics::Federate::modes::error); } EXPECT_TRUE(gotException); + fed1->finalize(); fed2->finalize(); broker->disconnect(); diff --git a/tests/helics/test_files/example_unusual_filters.json b/tests/helics/test_files/example_unusual_filters.json new file mode 100644 index 0000000000..fcc53ad771 --- /dev/null +++ b/tests/helics/test_files/example_unusual_filters.json @@ -0,0 +1,58 @@ +//this should be a valid json file (except comments are not recognized in standard JSON) +{ //example json configuration file for a message federate that also creates some filters +"name":"filterFed_u", // the name of the federate +//possible flags +"observer":false, // indicator that the federate does not send anything +"rollback": false, // indicator that the federate can use rollback -NOTE: not used at present +"only_update_on_change":false, //indicator that the federate should only indicate updated values on change +"only_transmit_on_change":false, //indicator that the federate should only publish if the value changed +"source_only":false, //indicator that the federate is only a source and is not expected to receive anything +"uninterruptible":false, //indicator that the federate should only return requested times +"coretype":"test", //the type of the core "test","zmq","udp","icp","tcp","mpi" +"corename":"ucore1", //this matters most for icp and test cores, can be empty +"coreinit":"--autobroker", // the initialization string for the core in the form of a command line arguments +"max_iterations":10, //the maximum number of iterations for a time step +"period": 1.0, //the period with which federate may return time +"offset": 0.0, // the offset shift in the period +"time_delta":0.0, // the minimum time between subsequent return times +"output_delay":0, //the propagation delay for federates to send data +"input_delay":0, //the input delay for external data to propagate to federates + +//endpoints used in the federate not really necessary to define endpoints for a filer +"endpoints":[ +{ +"name":"ept1", // the name of the endpoint + "type":"genmessage", // the type assocaited with a endpoint endpoint types have limited usefullness at present (optional) + "global":true //set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) +}, +{ +"name":"clonedest", // the name of the endpoint + "global":true //set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) +} +], +"filters":[ +{ + "name":"filtername", //filters can have names (optional) + "cloning":true, + "optional":true, + "sourcetargets":"ept1", // source target for the filter + "inputType":"genmessage", //can trigger some warnings if there is mismatches for custom filters only used if operation is "custom" + "outputType":"genmessage", //this could be useful if the filter actually translates the data and can be used to automatically order filters + "operation":"custom", //currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "info":"this is an information string for use by the application", + "flags":"optional" +}, +{ + "required":true, + "name":"filtername2", //filters can have names (optional) + "sourcetargets":["filterFed/ept2"], //this is a key field specifying the source targets can be an array + "dest":["dest targets"], // field specifying destination targets + "inputType":"genmessage", //can trigger some warnings if there is mismatches for custom filters only used if operation is "custom" + "outputType":"genmessage", //this could be useful if the filter actually translates the data and can be used to automatically order filters + "operation":"custom", //currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "flags":"-optional" +} +] + +} + diff --git a/tests/helics/test_files/example_unusual_filters2.json b/tests/helics/test_files/example_unusual_filters2.json new file mode 100644 index 0000000000..54325ff96b --- /dev/null +++ b/tests/helics/test_files/example_unusual_filters2.json @@ -0,0 +1,108 @@ +//this should be a valid json file (except comments are not recognized in standard JSON) +{ //example json configuration file for a message federate that also creates some filters +"name":"filterFed", // the name of the federate +//possible flags +"observer":false, // indicator that the federate does not send anything +"rollback": false, // indicator that the federate can use rollback -NOTE: not used at present +"only_update_on_change":false, //indicator that the federate should only indicate updated values on change +"only_transmit_on_change":false, //indicator that the federate should only publish if the value changed +"source_only":false, //indicator that the federate is only a source and is not expected to receive anything +"uninterruptible":false, //indicator that the federate should only return requested times +"coretype":"test", //the type of the core "test","zmq","udp","icp","tcp","mpi" +"corename":"ucore2", //this matters most for icp and test cores, can be empty +"coreinit":"-f 1 --autobroker", // the initialization string for the core in the form of a command line arguments +"max_iterations":10, //the maximum number of iterations for a time step +"period": 1.0, //the period with which federate may return time +"offset": 0.0, // the offset shift in the period +"time_delta":0.0, // the minimum time between subsequent return times +"output_delay":0, //the propagation delay for federates to send data +"input_delay":0, //the input delay for external data to propagate to federates + +//endpoints used in the federate not really necessary to define endpoints for a filer +"endpoints":[ +{ +"name":"ept1", // the name of the endpoint + "type":"genmessage", // the type assocaited with a endpoint endpoint types have limited usefullness at present (optional) + "global":true //set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) +}, +{ +"name":"clonedest", // the name of the endpoint + "global":true //set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) +}, +{ +"name":"ept2", // the name of the endpoint + "type":"message2", // the type assocaited with a endpoint (optional) + //the fact that there is no global value creates a local endpoint with global name messageFed/ept2 + "knownDestinations":"ept1", //this value can be an array of strings or just a single one it names key paths + //knownDestinations can be used to optimize the communication pathways inside of HELICS + "subscriptions":"fed2/sub1" //subscribe an endpoint to a particular publication this means that an endpoint will get a message whenever anything is published to that particular key + //the message will be raw data so it would have to be translated to be useful. this can also be a json array to subscribe to multiple publications +} +], +"filters":[ +{ + "name":"filtername", //filters can have names (optional) + "sourcetargets":"ept1", // source target for the filter + "inputType":"genmessage", //can trigger some warnings if there is mismatches for custom filters only used if operation is "custom" + "outputType":"genmessage", //this could be useful if the filter actually translates the data and can be used to automatically order filters + "operation":"delay", //currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "info":"this is an information string for use by the application", + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + { + "value":0.2, //times default to seconds though units can also be specified "200 ms" or similar + "name":"delay" //A delay filter just has a single property + } +}, +{ + "name":"filtername3", //filters can have names (optional) + "sourcetargets":"ept1", // source target for the filter + "operation":"delay", //currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "info":"this is an information string for use by the application", + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + { + "value":0.2, //times default to seconds though units can also be specified "200 ms" or similar + "name":"delay" //A delay filter just has a single property + } +}, +{ + "name":"filtername2", //filters can have names (optional) + "sourcetargets":["filterFed/ept2"], //this is a key field specifying the source targets can be an array + //"dest":["dest targets"], // field specifying destination targets + "operation":"blahblah", //currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + { + "bname":"newdestination", //A reroute filter takes a new destination + "value":"ept1" //the value here is the endpoint that should be the new destination + } +}, +{ + "name":"filtername4", //filters can have names (optional) + "sourcetargets":["filterFed/ept2"], //this is a key field specifying the source targets can be an array + //"dest":["dest targets"], // field specifying destination targets + "operation":"delay", //currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + { + "bname":"newdestination", //A reroute filter takes a new destination + "value":"ept1" //the value here is the endpoint that should be the new destination + } +}, +{ + "name":"filterClone", //filters can have names (optional) + "delivery":"ept2", //cloning filters can have a delivery field + "cloning":true, //specify that this is cloning filter + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + [{ + "id4":"destination", //destination adds a cloning filter for all messages delivered to a particular + "value":"ept1" //the value here the endpoint that will have its messages cloned + }, + { + + "name":"source", //source adds a cloning filter for all messages send from a particular endpoint + "value":"ept1" //the value here the endpoint that will have its messages cloned + } + ] //this pair of properties clone all messages to or from "ept1" this could also be done in one property with "endpoint" but this seemed more instructive in this file +} +] + +} + diff --git a/tests/helics/test_files/example_unusual_filters3.json b/tests/helics/test_files/example_unusual_filters3.json new file mode 100644 index 0000000000..8347ed4196 --- /dev/null +++ b/tests/helics/test_files/example_unusual_filters3.json @@ -0,0 +1,88 @@ +//this should be a valid json file (except comments are not recognized in standard JSON) +{ //example json configuration file for a message federate that also creates some filters +"name":"filterFed", // the name of the federate +//possible flags +"observer":false, // indicator that the federate does not send anything +"rollback": false, // indicator that the federate can use rollback -NOTE: not used at present +"only_update_on_change":false, //indicator that the federate should only indicate updated values on change +"only_transmit_on_change":false, //indicator that the federate should only publish if the value changed +"source_only":false, //indicator that the federate is only a source and is not expected to receive anything +"uninterruptible":false, //indicator that the federate should only return requested times +"coretype":"inproc", //the type of the core "test","zmq","udp","icp","tcp","mpi" +"corename":"ucore3", //this matters most for icp and test cores, can be empty +"coreinit":"-f 1 --autobroker", // the initialization string for the core in the form of a command line arguments +"max_iterations":10, //the maximum number of iterations for a time step +"period": 1.0, //the period with which federate may return time +"offset": 0.0, // the offset shift in the period +"time_delta":0.0, // the minimum time between subsequent return times +"output_delay":0, //the propagation delay for federates to send data +"input_delay":0, //the input delay for external data to propagate to federates + +//endpoints used in the federate not really necessary to define endpoints for a filer +"endpoints":[ +{ +"name":"ept1", // the name of the endpoint + "type":"genmessage", // the type assocaited with a endpoint endpoint types have limited usefullness at present (optional) + "global":true //set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) +}, +{ +"name":"clonedest", // the name of the endpoint + "global":true //set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) +}, +{ +"name":"ept2", // the name of the endpoint + "type":"message2", // the type assocaited with a endpoint (optional) + //the fact that there is no global value creates a local endpoint with global name messageFed/ept2 + "knownDestinations":"ept1", //this value can be an array of strings or just a single one it names key paths + //knownDestinations can be used to optimize the communication pathways inside of HELICS + "subscriptions":"fed2/sub1" //subscribe an endpoint to a particular publication this means that an endpoint will get a message whenever anything is published to that particular key + //the message will be raw data so it would have to be translated to be useful. this can also be a json array to subscribe to multiple publications +} +], +"filters":[ +{ + "name":"filtername", //filters can have names (optional) + "sourcetargets":"ept1", // source target for the filter + "operation":"delay", //currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "info":"this is an information string for use by the application", + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + [{ + "value":0.2, //times default to seconds though units can also be specified "200 ms" or similar + "name":"delay" //A delay filter just has a single property + }, + { + "value":0.3, //times default to seconds though units can also be specified "200 ms" or similar + "name":"delay" //A delay filter just has a single property + }] +}, +{ + "name":"filtername2", //filters can have names (optional) + "sourcetargets":["filterFed/ept2"], //this is a key field specifying the source targets can be an array + //"dest":["dest targets"], // field specifying destination targets + "operation":"blahblah", //INVALID OPERATION TEST valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + { + "name":"newdestination", //A reroute filter takes a new destination + "value":"ept1" //the value here is the endpoint that should be the new destination + } +}, +{ + "name":"filterClone", //filters can have names (optional) + "delivery":"ept2", //cloning filters can have a delivery field + "cloning":true, //specify that this is cloning filter + "properties": //additional properties for filters are specified in a property array or object if there is just a single one + [{ + "id4":"destination", //NOT A RECOGNIZED FIELD, no "name" field + "value":0.1 //the value here the endpoint that will have its messages cloned + }, + { + + "name":"source", //source adds a cloning filter for all messages send from a particular endpoint + "value":"ept1" //the value here the endpoint that will have its messages cloned + } + ] //this pair of properties clone all messages to or from "ept1" this could also be done in one property with "endpoint" but this seemed more instructive in this file +} +] + +} + diff --git a/tests/helics/test_files/unusual_filters.toml b/tests/helics/test_files/unusual_filters.toml new file mode 100644 index 0000000000..3966bd0ef6 --- /dev/null +++ b/tests/helics/test_files/unusual_filters.toml @@ -0,0 +1,96 @@ +#example toml configuration file for a message federate that also creates some filters +name="filterFed" # the name of the federate + +#possible flags +observer=false # indicator that the federate does not send anything +rollback= false # indicator that the federate can use rollback -NOTE= not used at present +only_update_on_change=false #indicator that the federate should only indicate updated values on change +only_transmit_on_change=false #indicator that the federate should only publish if the value changed +source_only=false #indicator that the federate is only a source and is not expected to receive anything +uninterruptible=false #indicator that the federate should only return requested times +coretype="test" #the type of the core "test","zmq","udp","icp","tcp","mpi" +corename="tomlcore" #this matters most for icp and test cores, can be empty +coreinit="--autobroker" # the initialization string for the core in the form of a command line arguments +max_iterations=10 #the maximum number of iterations for a time step +period= 1.0 #the period with which federate may return time +offset= 0.0 # the offset shift in the period +time_delta=0.0 # the minimum time between subsequent return times +output_delay=0 #the propagation delay for federates to send data +input_delay=0 #the input delay for external data to propagate to federates +separator=":" # set the character separator for local interfaces + +#endpoints used in the federate not really necessary to define endpoints for a filer +[[endpoints]] +name="ept1" # the name of the endpoint + type="genmessage" # the type assocaited with a endpoint endpoint types have limited usefullness at present (optional) + global=true #set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) + + +[[endpoints]] +name="clonedest" # the name of the endpoint + global=true #set to true to make the key global (default is false in which case the endpoint is prepended with the federate name) + + +[[endpoints]] +name="ept2" # the name of the endpoint + type="message2" # the type assocaited with a endpoint (optional) + + #the fact that there is no global value creates a local endpoint with global name messageFed/ept2 + knownDestinations="ept1" #this value can be an array of strings or just a single one it names key paths + + #knownDestinations can be used to optimize the communication pathways inside of HELICS + subscriptions="fed2/sub1" #subscribe an endpoint to a particular publication this means that an endpoint will get a message whenever anything is published to that particular key + #the message will be raw data so it would have to be translated to be useful. this can also be a json array to subscribe to multiple publications + +[[filters]] + name="filtername" #filters can have names (optional) + targets="ept1" #this is a key field specifying the target endpoint + inputType="genmessage" #can trigger some warnings if there is mismatches for custom filters only used if operation is "custom" + outputType="genmessage" #this could be useful if the filter actually translates the data and can be used to automatically order filters + operation="delay" #currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + info="this is an information string for use by the application" + #additional properties for filters are specified in a property array or object if there is just a single one +[[filters]] + name="filtername3" #filters can have names (optional) + targets="ept1" #this is a key field specifying the target endpoint + operation="delay" #currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + info="this is an information string for use by the application" + #additional properties for filters are specified in a property array or object if there is just a single one + #A delay filter just has a single property + [[filters.properties]] #additional properties for filters are specified in a property array or object if there is just a single one + name="delay" #destination adds a cloning filter for all messages delivered to a particular + value=0.2 #the value here the endpoint that will have its messages cloned + [[filters.properties]] + name="source" #source adds a source filter for all messages send from a particular endpoint + value="ept1" #the value here the endpoint that will have its messages cloned + #this could also have been done with the sourcetarget or desttargets fields +[[filters]] + name="filtername2" #filters can have names (optional) + targets="filterFed/ept2" #this is a key field specifying the target endpoint, for filters targets is a synonym for sourcetargets + operation="other" #currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + #additional properties for filters are specified in a property array or object if there is just a single one + #A reroute filter takes a new destination + #the value here is the endpoint that should be the new destination + properties= {bname="newdestination", value="ept1"} +[[filters]] + name="filtername2" #filters can have names (optional) + targets="filterFed/ept2" #this is a key field specifying the target endpoint, for filters targets is a synonym for sourcetargets + operation="delay" #currently valid operations are "delay","clone","cloning","timedelay","randomdelay","randomdrop","reroute","redirect","custom" + #additional properties for filters are specified in a property array or object if there is just a single one + #A reroute filter takes a new destination + #the value here is the endpoint that should be the new destination + properties= {bname="newdestination", value="ept1"} +[[filters]] + name="filterClone" #filters can have names (optional) + delivery="ept2" #for cloning filters this is the delivery address + cloning=true #specify that this is cloning filter + [[filters.properties]] #additional properties for filters are specified in a property array or object if there is just a single one + bnhb="destination" #destination adds a cloning filter for all messages delivered to a particular + value="ept1" #the value here the endpoint that will have its messages cloned + [[filters.properties]] + name="source" #source adds a cloning filter for all messages send from a particular endpoint + value="ept1" #the value here the endpoint that will have its messages cloned + #this could also have been done with the sourcetarget or desttargets fields + #this pair of properties clone all messages to or from "ept1" this could also be done in one property with "endpoint" but this seemed more instructive in this file + + diff --git a/tests/helics/test_files/unusual_filters2.toml b/tests/helics/test_files/unusual_filters2.toml new file mode 100644 index 0000000000..8e875d97f3 --- /dev/null +++ b/tests/helics/test_files/unusual_filters2.toml @@ -0,0 +1,22 @@ +#example toml configuration file for a message federate that also creates some filters +name="filterFed" # the name of the federate + +#possible flags +observer=false # indicator that the federate does not send anything +rollback= false # indicator that the federate can use rollback -NOTE= not used at present +only_update_on_change=false #indicator that the federate should only indicate updated values on change +only_transmit_on_change=false #indicator that the federate should only publish if the value changed +source_only=false #indicator that the federate is only a source and is not expected to receive anything +uninterruptible=false #indicator that the federate should only return requested times +coretype="test" #the type of the core "test","zmq","udp","icp","tcp","mpi" +corename="tomlcoreb" #this matters most for icp and test cores, can be empty +coreinit="--autobroker" # the initialization string for the core in the form of a command line arguments +max_iterations=10 #the maximum number of iterations for a time step +period= 1.0 #the period with which federate may return time +offset= 0.0 # the offset shift in the period +time_delta=0.0 # the minimum time between subsequent return times +output_delay=0 #the propagation delay for federates to send data +input_delay=0 #the input delay for external data to propagate to federates +separator=":" # set the character separator for local interfaces + +filters="things" From f2aa303c3b3cbd320cc7acf0c1ab7dccc709cb81 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2020 11:22:20 -0800 Subject: [PATCH 04/32] Automated update to SWIG generated interface files (#1087) Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> --- interfaces/java/interface/helicsJNI.java | 1 + interfaces/java/interface/helicsJava.c | 12 + .../java/interface/helics_core_type.java | 6 +- .../matlab/+helics/helics_core_type_null.m | 7 + .../matlab/+helics/helics_data_type_any.m | 2 +- .../matlab/+helics/helics_data_type_boolean.m | 2 +- .../matlab/+helics/helics_data_type_complex.m | 2 +- .../+helics/helics_data_type_complex_vector.m | 2 +- .../matlab/+helics/helics_data_type_double.m | 2 +- .../matlab/+helics/helics_data_type_int.m | 2 +- .../+helics/helics_data_type_named_point.m | 2 +- .../matlab/+helics/helics_data_type_raw.m | 2 +- .../matlab/+helics/helics_data_type_string.m | 2 +- .../matlab/+helics/helics_data_type_time.m | 2 +- .../matlab/+helics/helics_data_type_vector.m | 2 +- .../+helics/helics_error_connection_failure.m | 2 +- .../matlab/+helics/helics_error_discard.m | 2 +- .../+helics/helics_error_execution_failure.m | 2 +- .../+helics/helics_error_external_type.m | 2 +- .../+helics/helics_error_insufficient_space.m | 2 +- .../+helics/helics_error_invalid_argument.m | 2 +- .../helics_error_invalid_function_call.m | 2 +- .../+helics/helics_error_invalid_object.m | 2 +- .../helics_error_invalid_state_transition.m | 2 +- .../matlab/+helics/helics_error_other.m | 2 +- .../helics_error_registration_failure.m | 2 +- .../+helics/helics_error_system_failure.m | 2 +- .../matlab/+helics/helics_filter_type_clone.m | 2 +- .../+helics/helics_filter_type_custom.m | 2 +- .../matlab/+helics/helics_filter_type_delay.m | 2 +- .../+helics/helics_filter_type_firewall.m | 2 +- .../+helics/helics_filter_type_random_delay.m | 2 +- .../+helics/helics_filter_type_random_drop.m | 2 +- .../+helics/helics_filter_type_reroute.m | 2 +- .../+helics/helics_flag_delay_init_entry.m | 2 +- .../+helics/helics_flag_enable_init_entry.m | 2 +- .../+helics/helics_flag_forward_compute.m | 2 +- ...elics_flag_ignore_time_mismatch_warnings.m | 2 +- .../+helics/helics_flag_interruptible.m | 2 +- .../matlab/+helics/helics_flag_observer.m | 2 +- .../helics_flag_only_transmit_on_change.m | 2 +- .../helics_flag_only_update_on_change.m | 2 +- .../matlab/+helics/helics_flag_realtime.m | 2 +- .../helics_flag_restrictive_time_policy.m | 2 +- .../matlab/+helics/helics_flag_rollback.m | 2 +- .../helics_flag_single_thread_federate.m | 2 +- .../+helics/helics_flag_slow_responding.m | 2 +- .../matlab/+helics/helics_flag_source_only.m | 2 +- .../+helics/helics_flag_uninterruptible.m | 2 +- ...helics_flag_wait_for_current_time_update.m | 2 +- .../helics_handle_option_buffer_data.m | 2 +- ...helics_handle_option_connection_optional.m | 2 +- ...helics_handle_option_connection_required.m | 2 +- .../helics_handle_option_ignore_interrupts.m | 2 +- ...elics_handle_option_ignore_unit_mismatch.m | 2 +- ...ndle_option_multiple_connections_allowed.m | 2 +- ...cs_handle_option_only_transmit_on_change.m | 2 +- ...lics_handle_option_only_update_on_change.m | 2 +- ...ics_handle_option_single_connection_only.m | 2 +- ...elics_handle_option_strict_type_checking.m | 2 +- ...helics_iteration_request_force_iteration.m | 2 +- ...lics_iteration_request_iterate_if_needed.m | 2 +- .../helics_iteration_request_no_iteration.m | 2 +- .../+helics/helics_iteration_result_error.m | 2 +- .../+helics/helics_iteration_result_halted.m | 2 +- .../helics_iteration_result_iterating.m | 2 +- .../helics_iteration_result_next_step.m | 2 +- .../+helics/helics_log_level_connections.m | 2 +- .../matlab/+helics/helics_log_level_data.m | 2 +- .../matlab/+helics/helics_log_level_error.m | 2 +- .../+helics/helics_log_level_interfaces.m | 2 +- .../+helics/helics_log_level_no_print.m | 2 +- .../matlab/+helics/helics_log_level_summary.m | 2 +- .../matlab/+helics/helics_log_level_timing.m | 2 +- .../matlab/+helics/helics_log_level_trace.m | 2 +- .../matlab/+helics/helics_log_level_warning.m | 2 +- interfaces/matlab/+helics/helics_ok.m | 2 +- .../helics_property_int_console_log_level.m | 2 +- .../helics_property_int_file_log_level.m | 2 +- .../+helics/helics_property_int_log_level.m | 2 +- .../helics_property_int_max_iterations.m | 2 +- .../+helics/helics_property_time_delta.m | 2 +- .../helics_property_time_input_delay.m | 2 +- .../+helics/helics_property_time_offset.m | 2 +- .../helics_property_time_output_delay.m | 2 +- .../+helics/helics_property_time_period.m | 2 +- .../+helics/helics_property_time_rt_lag.m | 2 +- .../+helics/helics_property_time_rt_lead.m | 2 +- .../helics_property_time_rt_tolerance.m | 2 +- .../matlab/+helics/helics_state_error.m | 2 +- .../matlab/+helics/helics_state_execution.m | 2 +- .../matlab/+helics/helics_state_finalize.m | 2 +- .../+helics/helics_state_initialization.m | 2 +- .../+helics/helics_state_pending_exec.m | 2 +- .../+helics/helics_state_pending_finalize.m | 2 +- .../+helics/helics_state_pending_init.m | 2 +- .../helics_state_pending_iterative_time.m | 2 +- .../+helics/helics_state_pending_time.m | 2 +- .../matlab/+helics/helics_state_startup.m | 2 +- interfaces/matlab/+helics/helics_warning.m | 2 +- interfaces/matlab/helicsMEX.cpp | 386 +++++++++--------- interfaces/python/helics.py | 2 + interfaces/python/helicsPython.c | 1 + 103 files changed, 318 insertions(+), 289 deletions(-) create mode 100644 interfaces/matlab/+helics/helics_core_type_null.m diff --git a/interfaces/java/interface/helicsJNI.java b/interfaces/java/interface/helicsJNI.java index 47167bf708..e41acb8f23 100644 --- a/interfaces/java/interface/helicsJNI.java +++ b/interfaces/java/interface/helicsJNI.java @@ -23,6 +23,7 @@ public class helicsJNI { public final static native int helics_core_type_http_get(); public final static native int helics_core_type_websocket_get(); public final static native int helics_core_type_inproc_get(); + public final static native int helics_core_type_null_get(); public final static native int helics_data_type_string_get(); public final static native int helics_data_type_double_get(); public final static native int helics_data_type_int_get(); diff --git a/interfaces/java/interface/helicsJava.c b/interfaces/java/interface/helicsJava.c index bf9575bef9..afa8122f8e 100644 --- a/interfaces/java/interface/helicsJava.c +++ b/interfaces/java/interface/helicsJava.c @@ -389,6 +389,18 @@ SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1core_1type_1inpro } +SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1core_1type_1null_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + helics_core_type result; + + (void)jenv; + (void)jcls; + result = (helics_core_type)helics_core_type_null; + jresult = (jint)result; + return jresult; +} + + SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1data_1type_1string_1get(JNIEnv *jenv, jclass jcls) { jint jresult = 0 ; helics_data_type result; diff --git a/interfaces/java/interface/helics_core_type.java b/interfaces/java/interface/helics_core_type.java index f0b48a8d44..a1f4e7bc1f 100644 --- a/interfaces/java/interface/helics_core_type.java +++ b/interfaces/java/interface/helics_core_type.java @@ -71,6 +71,10 @@ public final class helics_core_type { * it is pretty similar to the test core but stripped from the "test" components */ public final static helics_core_type helics_core_type_inproc = new helics_core_type("helics_core_type_inproc", helicsJNI.helics_core_type_inproc_get()); + /** + * an explicit core type that is recognized but explicitly doesn't exist, for testing and a few other assorted reasons + */ + public final static helics_core_type helics_core_type_null = new helics_core_type("helics_core_type_null", helicsJNI.helics_core_type_null_get()); public final int swigValue() { return swigValue; @@ -106,7 +110,7 @@ private helics_core_type(String swigName, helics_core_type swigEnum) { swigNext = this.swigValue+1; } - private static helics_core_type[] swigValues = { helics_core_type_default, helics_core_type_zmq, helics_core_type_mpi, helics_core_type_test, helics_core_type_interprocess, helics_core_type_ipc, helics_core_type_tcp, helics_core_type_udp, helics_core_type_zmq_test, helics_core_type_nng, helics_core_type_tcp_ss, helics_core_type_http, helics_core_type_websocket, helics_core_type_inproc }; + private static helics_core_type[] swigValues = { helics_core_type_default, helics_core_type_zmq, helics_core_type_mpi, helics_core_type_test, helics_core_type_interprocess, helics_core_type_ipc, helics_core_type_tcp, helics_core_type_udp, helics_core_type_zmq_test, helics_core_type_nng, helics_core_type_tcp_ss, helics_core_type_http, helics_core_type_websocket, helics_core_type_inproc, helics_core_type_null }; private static int swigNext = 0; private final int swigValue; private final String swigName; diff --git a/interfaces/matlab/+helics/helics_core_type_null.m b/interfaces/matlab/+helics/helics_core_type_null.m new file mode 100644 index 0000000000..f693155315 --- /dev/null +++ b/interfaces/matlab/+helics/helics_core_type_null.m @@ -0,0 +1,7 @@ +function v = helics_core_type_null() + persistent vInitialized; + if isempty(vInitialized) + vInitialized = helicsMEX(0, 14); + end + v = vInitialized; +end diff --git a/interfaces/matlab/+helics/helics_data_type_any.m b/interfaces/matlab/+helics/helics_data_type_any.m index 22f216ac53..9e0890da11 100644 --- a/interfaces/matlab/+helics/helics_data_type_any.m +++ b/interfaces/matlab/+helics/helics_data_type_any.m @@ -1,7 +1,7 @@ function v = helics_data_type_any() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 24); + vInitialized = helicsMEX(0, 25); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_boolean.m b/interfaces/matlab/+helics/helics_data_type_boolean.m index 86fb48a99d..8ebf7a441e 100644 --- a/interfaces/matlab/+helics/helics_data_type_boolean.m +++ b/interfaces/matlab/+helics/helics_data_type_boolean.m @@ -1,7 +1,7 @@ function v = helics_data_type_boolean() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 21); + vInitialized = helicsMEX(0, 22); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_complex.m b/interfaces/matlab/+helics/helics_data_type_complex.m index af62821c6b..e9f738aa5e 100644 --- a/interfaces/matlab/+helics/helics_data_type_complex.m +++ b/interfaces/matlab/+helics/helics_data_type_complex.m @@ -1,7 +1,7 @@ function v = helics_data_type_complex() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 17); + vInitialized = helicsMEX(0, 18); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_complex_vector.m b/interfaces/matlab/+helics/helics_data_type_complex_vector.m index 9bc787da16..a6a8c80bb9 100644 --- a/interfaces/matlab/+helics/helics_data_type_complex_vector.m +++ b/interfaces/matlab/+helics/helics_data_type_complex_vector.m @@ -1,7 +1,7 @@ function v = helics_data_type_complex_vector() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 19); + vInitialized = helicsMEX(0, 20); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_double.m b/interfaces/matlab/+helics/helics_data_type_double.m index 24d8764209..feb8a9bc84 100644 --- a/interfaces/matlab/+helics/helics_data_type_double.m +++ b/interfaces/matlab/+helics/helics_data_type_double.m @@ -1,7 +1,7 @@ function v = helics_data_type_double() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 15); + vInitialized = helicsMEX(0, 16); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_int.m b/interfaces/matlab/+helics/helics_data_type_int.m index 8c29936a07..b5caca4110 100644 --- a/interfaces/matlab/+helics/helics_data_type_int.m +++ b/interfaces/matlab/+helics/helics_data_type_int.m @@ -1,7 +1,7 @@ function v = helics_data_type_int() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 16); + vInitialized = helicsMEX(0, 17); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_named_point.m b/interfaces/matlab/+helics/helics_data_type_named_point.m index 1744c0f248..1a98d125f1 100644 --- a/interfaces/matlab/+helics/helics_data_type_named_point.m +++ b/interfaces/matlab/+helics/helics_data_type_named_point.m @@ -1,7 +1,7 @@ function v = helics_data_type_named_point() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 20); + vInitialized = helicsMEX(0, 21); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_raw.m b/interfaces/matlab/+helics/helics_data_type_raw.m index fac8cb0521..d51890ba78 100644 --- a/interfaces/matlab/+helics/helics_data_type_raw.m +++ b/interfaces/matlab/+helics/helics_data_type_raw.m @@ -1,7 +1,7 @@ function v = helics_data_type_raw() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 23); + vInitialized = helicsMEX(0, 24); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_string.m b/interfaces/matlab/+helics/helics_data_type_string.m index 962938269e..06279e1ef1 100644 --- a/interfaces/matlab/+helics/helics_data_type_string.m +++ b/interfaces/matlab/+helics/helics_data_type_string.m @@ -1,7 +1,7 @@ function v = helics_data_type_string() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 14); + vInitialized = helicsMEX(0, 15); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_time.m b/interfaces/matlab/+helics/helics_data_type_time.m index c30ee0214b..0128353e71 100644 --- a/interfaces/matlab/+helics/helics_data_type_time.m +++ b/interfaces/matlab/+helics/helics_data_type_time.m @@ -1,7 +1,7 @@ function v = helics_data_type_time() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 22); + vInitialized = helicsMEX(0, 23); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_data_type_vector.m b/interfaces/matlab/+helics/helics_data_type_vector.m index 829ebc8df9..de70b3be50 100644 --- a/interfaces/matlab/+helics/helics_data_type_vector.m +++ b/interfaces/matlab/+helics/helics_data_type_vector.m @@ -1,7 +1,7 @@ function v = helics_data_type_vector() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 18); + vInitialized = helicsMEX(0, 19); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_connection_failure.m b/interfaces/matlab/+helics/helics_error_connection_failure.m index c2ebc35fc6..7f0b0fa21e 100644 --- a/interfaces/matlab/+helics/helics_error_connection_failure.m +++ b/interfaces/matlab/+helics/helics_error_connection_failure.m @@ -1,7 +1,7 @@ function v = helics_error_connection_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 52); + vInitialized = helicsMEX(0, 53); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_discard.m b/interfaces/matlab/+helics/helics_error_discard.m index 0aed89a752..6d80228b6f 100644 --- a/interfaces/matlab/+helics/helics_error_discard.m +++ b/interfaces/matlab/+helics/helics_error_discard.m @@ -1,7 +1,7 @@ function v = helics_error_discard() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 55); + vInitialized = helicsMEX(0, 56); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_execution_failure.m b/interfaces/matlab/+helics/helics_error_execution_failure.m index 33f5aa7ae2..d28ac01482 100644 --- a/interfaces/matlab/+helics/helics_error_execution_failure.m +++ b/interfaces/matlab/+helics/helics_error_execution_failure.m @@ -1,7 +1,7 @@ function v = helics_error_execution_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 60); + vInitialized = helicsMEX(0, 61); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_external_type.m b/interfaces/matlab/+helics/helics_error_external_type.m index 2ba06b7830..668adf47b3 100644 --- a/interfaces/matlab/+helics/helics_error_external_type.m +++ b/interfaces/matlab/+helics/helics_error_external_type.m @@ -1,7 +1,7 @@ function v = helics_error_external_type() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 63); + vInitialized = helicsMEX(0, 64); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_insufficient_space.m b/interfaces/matlab/+helics/helics_error_insufficient_space.m index a32eed7437..7503c0b3f7 100644 --- a/interfaces/matlab/+helics/helics_error_insufficient_space.m +++ b/interfaces/matlab/+helics/helics_error_insufficient_space.m @@ -1,7 +1,7 @@ function v = helics_error_insufficient_space() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 61); + vInitialized = helicsMEX(0, 62); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_invalid_argument.m b/interfaces/matlab/+helics/helics_error_invalid_argument.m index cc99d97554..fbb67b6a52 100644 --- a/interfaces/matlab/+helics/helics_error_invalid_argument.m +++ b/interfaces/matlab/+helics/helics_error_invalid_argument.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_argument() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 54); + vInitialized = helicsMEX(0, 55); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_invalid_function_call.m b/interfaces/matlab/+helics/helics_error_invalid_function_call.m index eeb7d91d8c..785d29e2bc 100644 --- a/interfaces/matlab/+helics/helics_error_invalid_function_call.m +++ b/interfaces/matlab/+helics/helics_error_invalid_function_call.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_function_call() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 59); + vInitialized = helicsMEX(0, 60); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_invalid_object.m b/interfaces/matlab/+helics/helics_error_invalid_object.m index 1aed13d9a8..23e3dc8a0e 100644 --- a/interfaces/matlab/+helics/helics_error_invalid_object.m +++ b/interfaces/matlab/+helics/helics_error_invalid_object.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_object() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 53); + vInitialized = helicsMEX(0, 54); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_invalid_state_transition.m b/interfaces/matlab/+helics/helics_error_invalid_state_transition.m index 1f1bb43a30..bbd5b01f78 100644 --- a/interfaces/matlab/+helics/helics_error_invalid_state_transition.m +++ b/interfaces/matlab/+helics/helics_error_invalid_state_transition.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_state_transition() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 58); + vInitialized = helicsMEX(0, 59); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_other.m b/interfaces/matlab/+helics/helics_error_other.m index cb385afa0b..9652d5e979 100644 --- a/interfaces/matlab/+helics/helics_error_other.m +++ b/interfaces/matlab/+helics/helics_error_other.m @@ -1,7 +1,7 @@ function v = helics_error_other() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 62); + vInitialized = helicsMEX(0, 63); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_registration_failure.m b/interfaces/matlab/+helics/helics_error_registration_failure.m index 72ccd7c7b3..d1a7e023c6 100644 --- a/interfaces/matlab/+helics/helics_error_registration_failure.m +++ b/interfaces/matlab/+helics/helics_error_registration_failure.m @@ -1,7 +1,7 @@ function v = helics_error_registration_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 51); + vInitialized = helicsMEX(0, 52); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_error_system_failure.m b/interfaces/matlab/+helics/helics_error_system_failure.m index 181777ed4f..1bfd71ff1f 100644 --- a/interfaces/matlab/+helics/helics_error_system_failure.m +++ b/interfaces/matlab/+helics/helics_error_system_failure.m @@ -1,7 +1,7 @@ function v = helics_error_system_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 56); + vInitialized = helicsMEX(0, 57); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_filter_type_clone.m b/interfaces/matlab/+helics/helics_filter_type_clone.m index 53ad86f69d..28d542ad89 100644 --- a/interfaces/matlab/+helics/helics_filter_type_clone.m +++ b/interfaces/matlab/+helics/helics_filter_type_clone.m @@ -1,7 +1,7 @@ function v = helics_filter_type_clone() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 91); + vInitialized = helicsMEX(0, 92); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_filter_type_custom.m b/interfaces/matlab/+helics/helics_filter_type_custom.m index 91d52ed3c9..f10e0ddf86 100644 --- a/interfaces/matlab/+helics/helics_filter_type_custom.m +++ b/interfaces/matlab/+helics/helics_filter_type_custom.m @@ -1,7 +1,7 @@ function v = helics_filter_type_custom() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 86); + vInitialized = helicsMEX(0, 87); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_filter_type_delay.m b/interfaces/matlab/+helics/helics_filter_type_delay.m index 57665a0829..0b62b80651 100644 --- a/interfaces/matlab/+helics/helics_filter_type_delay.m +++ b/interfaces/matlab/+helics/helics_filter_type_delay.m @@ -1,7 +1,7 @@ function v = helics_filter_type_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 87); + vInitialized = helicsMEX(0, 88); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_filter_type_firewall.m b/interfaces/matlab/+helics/helics_filter_type_firewall.m index cd75319e7b..6754524c2f 100644 --- a/interfaces/matlab/+helics/helics_filter_type_firewall.m +++ b/interfaces/matlab/+helics/helics_filter_type_firewall.m @@ -1,7 +1,7 @@ function v = helics_filter_type_firewall() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 92); + vInitialized = helicsMEX(0, 93); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_filter_type_random_delay.m b/interfaces/matlab/+helics/helics_filter_type_random_delay.m index c6fa221f95..d46c33e44b 100644 --- a/interfaces/matlab/+helics/helics_filter_type_random_delay.m +++ b/interfaces/matlab/+helics/helics_filter_type_random_delay.m @@ -1,7 +1,7 @@ function v = helics_filter_type_random_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 88); + vInitialized = helicsMEX(0, 89); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_filter_type_random_drop.m b/interfaces/matlab/+helics/helics_filter_type_random_drop.m index 888c18fc9b..c5737fb129 100644 --- a/interfaces/matlab/+helics/helics_filter_type_random_drop.m +++ b/interfaces/matlab/+helics/helics_filter_type_random_drop.m @@ -1,7 +1,7 @@ function v = helics_filter_type_random_drop() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 89); + vInitialized = helicsMEX(0, 90); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_filter_type_reroute.m b/interfaces/matlab/+helics/helics_filter_type_reroute.m index b64579c8f2..ec414678a5 100644 --- a/interfaces/matlab/+helics/helics_filter_type_reroute.m +++ b/interfaces/matlab/+helics/helics_filter_type_reroute.m @@ -1,7 +1,7 @@ function v = helics_filter_type_reroute() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 90); + vInitialized = helicsMEX(0, 91); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_delay_init_entry.m b/interfaces/matlab/+helics/helics_flag_delay_init_entry.m index bb2c46d200..ac81564838 100644 --- a/interfaces/matlab/+helics/helics_flag_delay_init_entry.m +++ b/interfaces/matlab/+helics/helics_flag_delay_init_entry.m @@ -1,7 +1,7 @@ function v = helics_flag_delay_init_entry() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 38); + vInitialized = helicsMEX(0, 39); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_enable_init_entry.m b/interfaces/matlab/+helics/helics_flag_enable_init_entry.m index e074e31677..66e086a14a 100644 --- a/interfaces/matlab/+helics/helics_flag_enable_init_entry.m +++ b/interfaces/matlab/+helics/helics_flag_enable_init_entry.m @@ -1,7 +1,7 @@ function v = helics_flag_enable_init_entry() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 39); + vInitialized = helicsMEX(0, 40); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_forward_compute.m b/interfaces/matlab/+helics/helics_flag_forward_compute.m index f507861ba3..fd9198fec1 100644 --- a/interfaces/matlab/+helics/helics_flag_forward_compute.m +++ b/interfaces/matlab/+helics/helics_flag_forward_compute.m @@ -1,7 +1,7 @@ function v = helics_flag_forward_compute() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 34); + vInitialized = helicsMEX(0, 35); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_ignore_time_mismatch_warnings.m b/interfaces/matlab/+helics/helics_flag_ignore_time_mismatch_warnings.m index 7b540ce3bb..a85babb170 100644 --- a/interfaces/matlab/+helics/helics_flag_ignore_time_mismatch_warnings.m +++ b/interfaces/matlab/+helics/helics_flag_ignore_time_mismatch_warnings.m @@ -1,7 +1,7 @@ function v = helics_flag_ignore_time_mismatch_warnings() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 40); + vInitialized = helicsMEX(0, 41); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_interruptible.m b/interfaces/matlab/+helics/helics_flag_interruptible.m index df3a5fd11e..4f7a14a912 100644 --- a/interfaces/matlab/+helics/helics_flag_interruptible.m +++ b/interfaces/matlab/+helics/helics_flag_interruptible.m @@ -1,7 +1,7 @@ function v = helics_flag_interruptible() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 27); + vInitialized = helicsMEX(0, 28); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_observer.m b/interfaces/matlab/+helics/helics_flag_observer.m index af027e71e3..714bf855bc 100644 --- a/interfaces/matlab/+helics/helics_flag_observer.m +++ b/interfaces/matlab/+helics/helics_flag_observer.m @@ -1,7 +1,7 @@ function v = helics_flag_observer() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 25); + vInitialized = helicsMEX(0, 26); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_only_transmit_on_change.m b/interfaces/matlab/+helics/helics_flag_only_transmit_on_change.m index 4c8b10202a..9aeb3be630 100644 --- a/interfaces/matlab/+helics/helics_flag_only_transmit_on_change.m +++ b/interfaces/matlab/+helics/helics_flag_only_transmit_on_change.m @@ -1,7 +1,7 @@ function v = helics_flag_only_transmit_on_change() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 29); + vInitialized = helicsMEX(0, 30); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_only_update_on_change.m b/interfaces/matlab/+helics/helics_flag_only_update_on_change.m index 941838dd38..2a4d672a76 100644 --- a/interfaces/matlab/+helics/helics_flag_only_update_on_change.m +++ b/interfaces/matlab/+helics/helics_flag_only_update_on_change.m @@ -1,7 +1,7 @@ function v = helics_flag_only_update_on_change() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 30); + vInitialized = helicsMEX(0, 31); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_realtime.m b/interfaces/matlab/+helics/helics_flag_realtime.m index 501e48b734..4255220ed5 100644 --- a/interfaces/matlab/+helics/helics_flag_realtime.m +++ b/interfaces/matlab/+helics/helics_flag_realtime.m @@ -1,7 +1,7 @@ function v = helics_flag_realtime() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 35); + vInitialized = helicsMEX(0, 36); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_restrictive_time_policy.m b/interfaces/matlab/+helics/helics_flag_restrictive_time_policy.m index fa835a377b..ffe09a383e 100644 --- a/interfaces/matlab/+helics/helics_flag_restrictive_time_policy.m +++ b/interfaces/matlab/+helics/helics_flag_restrictive_time_policy.m @@ -1,7 +1,7 @@ function v = helics_flag_restrictive_time_policy() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 32); + vInitialized = helicsMEX(0, 33); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_rollback.m b/interfaces/matlab/+helics/helics_flag_rollback.m index ef7289dab5..c4bed0cf89 100644 --- a/interfaces/matlab/+helics/helics_flag_rollback.m +++ b/interfaces/matlab/+helics/helics_flag_rollback.m @@ -1,7 +1,7 @@ function v = helics_flag_rollback() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 33); + vInitialized = helicsMEX(0, 34); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_single_thread_federate.m b/interfaces/matlab/+helics/helics_flag_single_thread_federate.m index f6d007fdec..61512aed36 100644 --- a/interfaces/matlab/+helics/helics_flag_single_thread_federate.m +++ b/interfaces/matlab/+helics/helics_flag_single_thread_federate.m @@ -1,7 +1,7 @@ function v = helics_flag_single_thread_federate() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 36); + vInitialized = helicsMEX(0, 37); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_slow_responding.m b/interfaces/matlab/+helics/helics_flag_slow_responding.m index 0cd828b563..39a0f0335d 100644 --- a/interfaces/matlab/+helics/helics_flag_slow_responding.m +++ b/interfaces/matlab/+helics/helics_flag_slow_responding.m @@ -1,7 +1,7 @@ function v = helics_flag_slow_responding() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 37); + vInitialized = helicsMEX(0, 38); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_source_only.m b/interfaces/matlab/+helics/helics_flag_source_only.m index efb138172b..bf0fc708b7 100644 --- a/interfaces/matlab/+helics/helics_flag_source_only.m +++ b/interfaces/matlab/+helics/helics_flag_source_only.m @@ -1,7 +1,7 @@ function v = helics_flag_source_only() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 28); + vInitialized = helicsMEX(0, 29); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_uninterruptible.m b/interfaces/matlab/+helics/helics_flag_uninterruptible.m index d08bbc9db2..9a94369589 100644 --- a/interfaces/matlab/+helics/helics_flag_uninterruptible.m +++ b/interfaces/matlab/+helics/helics_flag_uninterruptible.m @@ -1,7 +1,7 @@ function v = helics_flag_uninterruptible() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 26); + vInitialized = helicsMEX(0, 27); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_flag_wait_for_current_time_update.m b/interfaces/matlab/+helics/helics_flag_wait_for_current_time_update.m index 86ea2278e9..1b2841ac50 100644 --- a/interfaces/matlab/+helics/helics_flag_wait_for_current_time_update.m +++ b/interfaces/matlab/+helics/helics_flag_wait_for_current_time_update.m @@ -1,7 +1,7 @@ function v = helics_flag_wait_for_current_time_update() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 31); + vInitialized = helicsMEX(0, 32); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_buffer_data.m b/interfaces/matlab/+helics/helics_handle_option_buffer_data.m index 201c1e20ab..7e0fbb1dc0 100644 --- a/interfaces/matlab/+helics/helics_handle_option_buffer_data.m +++ b/interfaces/matlab/+helics/helics_handle_option_buffer_data.m @@ -1,7 +1,7 @@ function v = helics_handle_option_buffer_data() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 80); + vInitialized = helicsMEX(0, 81); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_connection_optional.m b/interfaces/matlab/+helics/helics_handle_option_connection_optional.m index 747d44db02..134eb6040c 100644 --- a/interfaces/matlab/+helics/helics_handle_option_connection_optional.m +++ b/interfaces/matlab/+helics/helics_handle_option_connection_optional.m @@ -1,7 +1,7 @@ function v = helics_handle_option_connection_optional() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 77); + vInitialized = helicsMEX(0, 78); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_connection_required.m b/interfaces/matlab/+helics/helics_handle_option_connection_required.m index 606da25189..2540742e34 100644 --- a/interfaces/matlab/+helics/helics_handle_option_connection_required.m +++ b/interfaces/matlab/+helics/helics_handle_option_connection_required.m @@ -1,7 +1,7 @@ function v = helics_handle_option_connection_required() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 76); + vInitialized = helicsMEX(0, 77); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_ignore_interrupts.m b/interfaces/matlab/+helics/helics_handle_option_ignore_interrupts.m index 31613b25bb..47c385ae39 100644 --- a/interfaces/matlab/+helics/helics_handle_option_ignore_interrupts.m +++ b/interfaces/matlab/+helics/helics_handle_option_ignore_interrupts.m @@ -1,7 +1,7 @@ function v = helics_handle_option_ignore_interrupts() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 85); + vInitialized = helicsMEX(0, 86); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_ignore_unit_mismatch.m b/interfaces/matlab/+helics/helics_handle_option_ignore_unit_mismatch.m index d7617db644..3a57149ce5 100644 --- a/interfaces/matlab/+helics/helics_handle_option_ignore_unit_mismatch.m +++ b/interfaces/matlab/+helics/helics_handle_option_ignore_unit_mismatch.m @@ -1,7 +1,7 @@ function v = helics_handle_option_ignore_unit_mismatch() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 82); + vInitialized = helicsMEX(0, 83); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_multiple_connections_allowed.m b/interfaces/matlab/+helics/helics_handle_option_multiple_connections_allowed.m index 4f5fcd2bac..ebf4a0e76e 100644 --- a/interfaces/matlab/+helics/helics_handle_option_multiple_connections_allowed.m +++ b/interfaces/matlab/+helics/helics_handle_option_multiple_connections_allowed.m @@ -1,7 +1,7 @@ function v = helics_handle_option_multiple_connections_allowed() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 79); + vInitialized = helicsMEX(0, 80); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_only_transmit_on_change.m b/interfaces/matlab/+helics/helics_handle_option_only_transmit_on_change.m index 7bf3e2227a..1b79d7095c 100644 --- a/interfaces/matlab/+helics/helics_handle_option_only_transmit_on_change.m +++ b/interfaces/matlab/+helics/helics_handle_option_only_transmit_on_change.m @@ -1,7 +1,7 @@ function v = helics_handle_option_only_transmit_on_change() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 83); + vInitialized = helicsMEX(0, 84); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_only_update_on_change.m b/interfaces/matlab/+helics/helics_handle_option_only_update_on_change.m index 9ef6504c06..d4ef8f190a 100644 --- a/interfaces/matlab/+helics/helics_handle_option_only_update_on_change.m +++ b/interfaces/matlab/+helics/helics_handle_option_only_update_on_change.m @@ -1,7 +1,7 @@ function v = helics_handle_option_only_update_on_change() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 84); + vInitialized = helicsMEX(0, 85); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_single_connection_only.m b/interfaces/matlab/+helics/helics_handle_option_single_connection_only.m index dd1f686f55..be6ae1ca5a 100644 --- a/interfaces/matlab/+helics/helics_handle_option_single_connection_only.m +++ b/interfaces/matlab/+helics/helics_handle_option_single_connection_only.m @@ -1,7 +1,7 @@ function v = helics_handle_option_single_connection_only() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 78); + vInitialized = helicsMEX(0, 79); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_handle_option_strict_type_checking.m b/interfaces/matlab/+helics/helics_handle_option_strict_type_checking.m index 9422d64fa5..6cf6ec761e 100644 --- a/interfaces/matlab/+helics/helics_handle_option_strict_type_checking.m +++ b/interfaces/matlab/+helics/helics_handle_option_strict_type_checking.m @@ -1,7 +1,7 @@ function v = helics_handle_option_strict_type_checking() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 81); + vInitialized = helicsMEX(0, 82); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_iteration_request_force_iteration.m b/interfaces/matlab/+helics/helics_iteration_request_force_iteration.m index 2ed9508300..7f851be9ba 100644 --- a/interfaces/matlab/+helics/helics_iteration_request_force_iteration.m +++ b/interfaces/matlab/+helics/helics_iteration_request_force_iteration.m @@ -1,7 +1,7 @@ function v = helics_iteration_request_force_iteration() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 94); + vInitialized = helicsMEX(0, 95); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_iteration_request_iterate_if_needed.m b/interfaces/matlab/+helics/helics_iteration_request_iterate_if_needed.m index 521f82437f..f9f20ab005 100644 --- a/interfaces/matlab/+helics/helics_iteration_request_iterate_if_needed.m +++ b/interfaces/matlab/+helics/helics_iteration_request_iterate_if_needed.m @@ -1,7 +1,7 @@ function v = helics_iteration_request_iterate_if_needed() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 95); + vInitialized = helicsMEX(0, 96); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_iteration_request_no_iteration.m b/interfaces/matlab/+helics/helics_iteration_request_no_iteration.m index 96e7479e25..0f8b5f377b 100644 --- a/interfaces/matlab/+helics/helics_iteration_request_no_iteration.m +++ b/interfaces/matlab/+helics/helics_iteration_request_no_iteration.m @@ -1,7 +1,7 @@ function v = helics_iteration_request_no_iteration() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 93); + vInitialized = helicsMEX(0, 94); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_iteration_result_error.m b/interfaces/matlab/+helics/helics_iteration_result_error.m index 644df667ca..3d1b0c5fce 100644 --- a/interfaces/matlab/+helics/helics_iteration_result_error.m +++ b/interfaces/matlab/+helics/helics_iteration_result_error.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_error() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 97); + vInitialized = helicsMEX(0, 98); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_iteration_result_halted.m b/interfaces/matlab/+helics/helics_iteration_result_halted.m index 13a4b63403..ed3b6e8a4c 100644 --- a/interfaces/matlab/+helics/helics_iteration_result_halted.m +++ b/interfaces/matlab/+helics/helics_iteration_result_halted.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_halted() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 98); + vInitialized = helicsMEX(0, 99); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_iteration_result_iterating.m b/interfaces/matlab/+helics/helics_iteration_result_iterating.m index 6e0d36b2c2..07c96a7361 100644 --- a/interfaces/matlab/+helics/helics_iteration_result_iterating.m +++ b/interfaces/matlab/+helics/helics_iteration_result_iterating.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_iterating() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 99); + vInitialized = helicsMEX(0, 100); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_iteration_result_next_step.m b/interfaces/matlab/+helics/helics_iteration_result_next_step.m index 97e69f12d1..12480798fe 100644 --- a/interfaces/matlab/+helics/helics_iteration_result_next_step.m +++ b/interfaces/matlab/+helics/helics_iteration_result_next_step.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_next_step() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 96); + vInitialized = helicsMEX(0, 97); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_connections.m b/interfaces/matlab/+helics/helics_log_level_connections.m index ca7ea73efb..ffd5d7b4d4 100644 --- a/interfaces/matlab/+helics/helics_log_level_connections.m +++ b/interfaces/matlab/+helics/helics_log_level_connections.m @@ -1,7 +1,7 @@ function v = helics_log_level_connections() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 45); + vInitialized = helicsMEX(0, 46); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_data.m b/interfaces/matlab/+helics/helics_log_level_data.m index aa059ad953..49ce05a3d8 100644 --- a/interfaces/matlab/+helics/helics_log_level_data.m +++ b/interfaces/matlab/+helics/helics_log_level_data.m @@ -1,7 +1,7 @@ function v = helics_log_level_data() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 48); + vInitialized = helicsMEX(0, 49); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_error.m b/interfaces/matlab/+helics/helics_log_level_error.m index fbd83816e1..d64cb040c5 100644 --- a/interfaces/matlab/+helics/helics_log_level_error.m +++ b/interfaces/matlab/+helics/helics_log_level_error.m @@ -1,7 +1,7 @@ function v = helics_log_level_error() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 42); + vInitialized = helicsMEX(0, 43); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_interfaces.m b/interfaces/matlab/+helics/helics_log_level_interfaces.m index d865b58e76..10f6f6ebd0 100644 --- a/interfaces/matlab/+helics/helics_log_level_interfaces.m +++ b/interfaces/matlab/+helics/helics_log_level_interfaces.m @@ -1,7 +1,7 @@ function v = helics_log_level_interfaces() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 46); + vInitialized = helicsMEX(0, 47); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_no_print.m b/interfaces/matlab/+helics/helics_log_level_no_print.m index 33c6886c57..fe6ff53b31 100644 --- a/interfaces/matlab/+helics/helics_log_level_no_print.m +++ b/interfaces/matlab/+helics/helics_log_level_no_print.m @@ -1,7 +1,7 @@ function v = helics_log_level_no_print() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 41); + vInitialized = helicsMEX(0, 42); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_summary.m b/interfaces/matlab/+helics/helics_log_level_summary.m index cabcf852ba..c9905e7d6b 100644 --- a/interfaces/matlab/+helics/helics_log_level_summary.m +++ b/interfaces/matlab/+helics/helics_log_level_summary.m @@ -1,7 +1,7 @@ function v = helics_log_level_summary() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 44); + vInitialized = helicsMEX(0, 45); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_timing.m b/interfaces/matlab/+helics/helics_log_level_timing.m index c79a0b0272..d5be9aaa16 100644 --- a/interfaces/matlab/+helics/helics_log_level_timing.m +++ b/interfaces/matlab/+helics/helics_log_level_timing.m @@ -1,7 +1,7 @@ function v = helics_log_level_timing() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 47); + vInitialized = helicsMEX(0, 48); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_trace.m b/interfaces/matlab/+helics/helics_log_level_trace.m index 314731c0a5..693c378188 100644 --- a/interfaces/matlab/+helics/helics_log_level_trace.m +++ b/interfaces/matlab/+helics/helics_log_level_trace.m @@ -1,7 +1,7 @@ function v = helics_log_level_trace() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 49); + vInitialized = helicsMEX(0, 50); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_log_level_warning.m b/interfaces/matlab/+helics/helics_log_level_warning.m index bd820bb094..e8db34eabb 100644 --- a/interfaces/matlab/+helics/helics_log_level_warning.m +++ b/interfaces/matlab/+helics/helics_log_level_warning.m @@ -1,7 +1,7 @@ function v = helics_log_level_warning() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 43); + vInitialized = helicsMEX(0, 44); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_ok.m b/interfaces/matlab/+helics/helics_ok.m index 5a5ba78981..842608f015 100644 --- a/interfaces/matlab/+helics/helics_ok.m +++ b/interfaces/matlab/+helics/helics_ok.m @@ -1,7 +1,7 @@ function v = helics_ok() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 50); + vInitialized = helicsMEX(0, 51); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_int_console_log_level.m b/interfaces/matlab/+helics/helics_property_int_console_log_level.m index a8f6aecc44..0bf6e5ba4c 100644 --- a/interfaces/matlab/+helics/helics_property_int_console_log_level.m +++ b/interfaces/matlab/+helics/helics_property_int_console_log_level.m @@ -1,7 +1,7 @@ function v = helics_property_int_console_log_level() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 75); + vInitialized = helicsMEX(0, 76); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_int_file_log_level.m b/interfaces/matlab/+helics/helics_property_int_file_log_level.m index 01281a5cb1..c60af73008 100644 --- a/interfaces/matlab/+helics/helics_property_int_file_log_level.m +++ b/interfaces/matlab/+helics/helics_property_int_file_log_level.m @@ -1,7 +1,7 @@ function v = helics_property_int_file_log_level() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 74); + vInitialized = helicsMEX(0, 75); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_int_log_level.m b/interfaces/matlab/+helics/helics_property_int_log_level.m index 676c0814b2..9af85fcea0 100644 --- a/interfaces/matlab/+helics/helics_property_int_log_level.m +++ b/interfaces/matlab/+helics/helics_property_int_log_level.m @@ -1,7 +1,7 @@ function v = helics_property_int_log_level() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 73); + vInitialized = helicsMEX(0, 74); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_int_max_iterations.m b/interfaces/matlab/+helics/helics_property_int_max_iterations.m index 7ee49a6b6a..9738f70fe0 100644 --- a/interfaces/matlab/+helics/helics_property_int_max_iterations.m +++ b/interfaces/matlab/+helics/helics_property_int_max_iterations.m @@ -1,7 +1,7 @@ function v = helics_property_int_max_iterations() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 72); + vInitialized = helicsMEX(0, 73); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_delta.m b/interfaces/matlab/+helics/helics_property_time_delta.m index a4f8b43258..6a795cf5dc 100644 --- a/interfaces/matlab/+helics/helics_property_time_delta.m +++ b/interfaces/matlab/+helics/helics_property_time_delta.m @@ -1,7 +1,7 @@ function v = helics_property_time_delta() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 64); + vInitialized = helicsMEX(0, 65); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_input_delay.m b/interfaces/matlab/+helics/helics_property_time_input_delay.m index 3ed3b039bb..f84cca29a1 100644 --- a/interfaces/matlab/+helics/helics_property_time_input_delay.m +++ b/interfaces/matlab/+helics/helics_property_time_input_delay.m @@ -1,7 +1,7 @@ function v = helics_property_time_input_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 70); + vInitialized = helicsMEX(0, 71); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_offset.m b/interfaces/matlab/+helics/helics_property_time_offset.m index dcd068d9f5..17ece6dbcf 100644 --- a/interfaces/matlab/+helics/helics_property_time_offset.m +++ b/interfaces/matlab/+helics/helics_property_time_offset.m @@ -1,7 +1,7 @@ function v = helics_property_time_offset() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 66); + vInitialized = helicsMEX(0, 67); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_output_delay.m b/interfaces/matlab/+helics/helics_property_time_output_delay.m index ea31e2c2d4..22b8d1ac93 100644 --- a/interfaces/matlab/+helics/helics_property_time_output_delay.m +++ b/interfaces/matlab/+helics/helics_property_time_output_delay.m @@ -1,7 +1,7 @@ function v = helics_property_time_output_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 71); + vInitialized = helicsMEX(0, 72); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_period.m b/interfaces/matlab/+helics/helics_property_time_period.m index c3d1592916..2398e756a8 100644 --- a/interfaces/matlab/+helics/helics_property_time_period.m +++ b/interfaces/matlab/+helics/helics_property_time_period.m @@ -1,7 +1,7 @@ function v = helics_property_time_period() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 65); + vInitialized = helicsMEX(0, 66); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_rt_lag.m b/interfaces/matlab/+helics/helics_property_time_rt_lag.m index fa6d769dae..8a80beeac5 100644 --- a/interfaces/matlab/+helics/helics_property_time_rt_lag.m +++ b/interfaces/matlab/+helics/helics_property_time_rt_lag.m @@ -1,7 +1,7 @@ function v = helics_property_time_rt_lag() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 67); + vInitialized = helicsMEX(0, 68); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_rt_lead.m b/interfaces/matlab/+helics/helics_property_time_rt_lead.m index e7ff375a74..0e17fc1d52 100644 --- a/interfaces/matlab/+helics/helics_property_time_rt_lead.m +++ b/interfaces/matlab/+helics/helics_property_time_rt_lead.m @@ -1,7 +1,7 @@ function v = helics_property_time_rt_lead() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 68); + vInitialized = helicsMEX(0, 69); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_property_time_rt_tolerance.m b/interfaces/matlab/+helics/helics_property_time_rt_tolerance.m index c90a36c3f9..1031fe586e 100644 --- a/interfaces/matlab/+helics/helics_property_time_rt_tolerance.m +++ b/interfaces/matlab/+helics/helics_property_time_rt_tolerance.m @@ -1,7 +1,7 @@ function v = helics_property_time_rt_tolerance() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 69); + vInitialized = helicsMEX(0, 70); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_error.m b/interfaces/matlab/+helics/helics_state_error.m index 944e221ca5..8c62a34877 100644 --- a/interfaces/matlab/+helics/helics_state_error.m +++ b/interfaces/matlab/+helics/helics_state_error.m @@ -1,7 +1,7 @@ function v = helics_state_error() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 104); + vInitialized = helicsMEX(0, 105); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_execution.m b/interfaces/matlab/+helics/helics_state_execution.m index 03423b076f..6354a491a2 100644 --- a/interfaces/matlab/+helics/helics_state_execution.m +++ b/interfaces/matlab/+helics/helics_state_execution.m @@ -1,7 +1,7 @@ function v = helics_state_execution() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 102); + vInitialized = helicsMEX(0, 103); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_finalize.m b/interfaces/matlab/+helics/helics_state_finalize.m index 62991c1aa2..395c60818b 100644 --- a/interfaces/matlab/+helics/helics_state_finalize.m +++ b/interfaces/matlab/+helics/helics_state_finalize.m @@ -1,7 +1,7 @@ function v = helics_state_finalize() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 103); + vInitialized = helicsMEX(0, 104); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_initialization.m b/interfaces/matlab/+helics/helics_state_initialization.m index c9f28c6d6a..76f3a0833f 100644 --- a/interfaces/matlab/+helics/helics_state_initialization.m +++ b/interfaces/matlab/+helics/helics_state_initialization.m @@ -1,7 +1,7 @@ function v = helics_state_initialization() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 101); + vInitialized = helicsMEX(0, 102); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_pending_exec.m b/interfaces/matlab/+helics/helics_state_pending_exec.m index ba290fa9dc..253df446b6 100644 --- a/interfaces/matlab/+helics/helics_state_pending_exec.m +++ b/interfaces/matlab/+helics/helics_state_pending_exec.m @@ -1,7 +1,7 @@ function v = helics_state_pending_exec() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 106); + vInitialized = helicsMEX(0, 107); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_pending_finalize.m b/interfaces/matlab/+helics/helics_state_pending_finalize.m index dee27b2331..0af363f3f4 100644 --- a/interfaces/matlab/+helics/helics_state_pending_finalize.m +++ b/interfaces/matlab/+helics/helics_state_pending_finalize.m @@ -1,7 +1,7 @@ function v = helics_state_pending_finalize() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 109); + vInitialized = helicsMEX(0, 110); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_pending_init.m b/interfaces/matlab/+helics/helics_state_pending_init.m index db1313a948..bb4e494576 100644 --- a/interfaces/matlab/+helics/helics_state_pending_init.m +++ b/interfaces/matlab/+helics/helics_state_pending_init.m @@ -1,7 +1,7 @@ function v = helics_state_pending_init() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 105); + vInitialized = helicsMEX(0, 106); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_pending_iterative_time.m b/interfaces/matlab/+helics/helics_state_pending_iterative_time.m index eef14d4421..93daf61f5a 100644 --- a/interfaces/matlab/+helics/helics_state_pending_iterative_time.m +++ b/interfaces/matlab/+helics/helics_state_pending_iterative_time.m @@ -1,7 +1,7 @@ function v = helics_state_pending_iterative_time() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 108); + vInitialized = helicsMEX(0, 109); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_pending_time.m b/interfaces/matlab/+helics/helics_state_pending_time.m index 2058c116a2..e6236ee341 100644 --- a/interfaces/matlab/+helics/helics_state_pending_time.m +++ b/interfaces/matlab/+helics/helics_state_pending_time.m @@ -1,7 +1,7 @@ function v = helics_state_pending_time() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 107); + vInitialized = helicsMEX(0, 108); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_state_startup.m b/interfaces/matlab/+helics/helics_state_startup.m index 9b7d9678be..9525d565ec 100644 --- a/interfaces/matlab/+helics/helics_state_startup.m +++ b/interfaces/matlab/+helics/helics_state_startup.m @@ -1,7 +1,7 @@ function v = helics_state_startup() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 100); + vInitialized = helicsMEX(0, 101); end v = vInitialized; end diff --git a/interfaces/matlab/+helics/helics_warning.m b/interfaces/matlab/+helics/helics_warning.m index 39e12e7ae2..a3f21ab95b 100644 --- a/interfaces/matlab/+helics/helics_warning.m +++ b/interfaces/matlab/+helics/helics_warning.m @@ -1,7 +1,7 @@ function v = helics_warning() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 57); + vInitialized = helicsMEX(0, 58); end v = vInitialized; end diff --git a/interfaces/matlab/helicsMEX.cpp b/interfaces/matlab/helicsMEX.cpp index 55040f8c3f..ec043ff788 100644 --- a/interfaces/matlab/helicsMEX.cpp +++ b/interfaces/matlab/helicsMEX.cpp @@ -14007,102 +14007,103 @@ SWIGINTERN const char* SwigConstantName(int con_id) { case 11: return "helics_core_type_http"; case 12: return "helics_core_type_websocket"; case 13: return "helics_core_type_inproc"; - case 14: return "helics_data_type_string"; - case 15: return "helics_data_type_double"; - case 16: return "helics_data_type_int"; - case 17: return "helics_data_type_complex"; - case 18: return "helics_data_type_vector"; - case 19: return "helics_data_type_complex_vector"; - case 20: return "helics_data_type_named_point"; - case 21: return "helics_data_type_boolean"; - case 22: return "helics_data_type_time"; - case 23: return "helics_data_type_raw"; - case 24: return "helics_data_type_any"; - case 25: return "helics_flag_observer"; - case 26: return "helics_flag_uninterruptible"; - case 27: return "helics_flag_interruptible"; - case 28: return "helics_flag_source_only"; - case 29: return "helics_flag_only_transmit_on_change"; - case 30: return "helics_flag_only_update_on_change"; - case 31: return "helics_flag_wait_for_current_time_update"; - case 32: return "helics_flag_restrictive_time_policy"; - case 33: return "helics_flag_rollback"; - case 34: return "helics_flag_forward_compute"; - case 35: return "helics_flag_realtime"; - case 36: return "helics_flag_single_thread_federate"; - case 37: return "helics_flag_slow_responding"; - case 38: return "helics_flag_delay_init_entry"; - case 39: return "helics_flag_enable_init_entry"; - case 40: return "helics_flag_ignore_time_mismatch_warnings"; - case 41: return "helics_log_level_no_print"; - case 42: return "helics_log_level_error"; - case 43: return "helics_log_level_warning"; - case 44: return "helics_log_level_summary"; - case 45: return "helics_log_level_connections"; - case 46: return "helics_log_level_interfaces"; - case 47: return "helics_log_level_timing"; - case 48: return "helics_log_level_data"; - case 49: return "helics_log_level_trace"; - case 50: return "helics_ok"; - case 51: return "helics_error_registration_failure"; - case 52: return "helics_error_connection_failure"; - case 53: return "helics_error_invalid_object"; - case 54: return "helics_error_invalid_argument"; - case 55: return "helics_error_discard"; - case 56: return "helics_error_system_failure"; - case 57: return "helics_warning"; - case 58: return "helics_error_invalid_state_transition"; - case 59: return "helics_error_invalid_function_call"; - case 60: return "helics_error_execution_failure"; - case 61: return "helics_error_insufficient_space"; - case 62: return "helics_error_other"; - case 63: return "helics_error_external_type"; - case 64: return "helics_property_time_delta"; - case 65: return "helics_property_time_period"; - case 66: return "helics_property_time_offset"; - case 67: return "helics_property_time_rt_lag"; - case 68: return "helics_property_time_rt_lead"; - case 69: return "helics_property_time_rt_tolerance"; - case 70: return "helics_property_time_input_delay"; - case 71: return "helics_property_time_output_delay"; - case 72: return "helics_property_int_max_iterations"; - case 73: return "helics_property_int_log_level"; - case 74: return "helics_property_int_file_log_level"; - case 75: return "helics_property_int_console_log_level"; - case 76: return "helics_handle_option_connection_required"; - case 77: return "helics_handle_option_connection_optional"; - case 78: return "helics_handle_option_single_connection_only"; - case 79: return "helics_handle_option_multiple_connections_allowed"; - case 80: return "helics_handle_option_buffer_data"; - case 81: return "helics_handle_option_strict_type_checking"; - case 82: return "helics_handle_option_ignore_unit_mismatch"; - case 83: return "helics_handle_option_only_transmit_on_change"; - case 84: return "helics_handle_option_only_update_on_change"; - case 85: return "helics_handle_option_ignore_interrupts"; - case 86: return "helics_filter_type_custom"; - case 87: return "helics_filter_type_delay"; - case 88: return "helics_filter_type_random_delay"; - case 89: return "helics_filter_type_random_drop"; - case 90: return "helics_filter_type_reroute"; - case 91: return "helics_filter_type_clone"; - case 92: return "helics_filter_type_firewall"; - case 93: return "helics_iteration_request_no_iteration"; - case 94: return "helics_iteration_request_force_iteration"; - case 95: return "helics_iteration_request_iterate_if_needed"; - case 96: return "helics_iteration_result_next_step"; - case 97: return "helics_iteration_result_error"; - case 98: return "helics_iteration_result_halted"; - case 99: return "helics_iteration_result_iterating"; - case 100: return "helics_state_startup"; - case 101: return "helics_state_initialization"; - case 102: return "helics_state_execution"; - case 103: return "helics_state_finalize"; - case 104: return "helics_state_error"; - case 105: return "helics_state_pending_init"; - case 106: return "helics_state_pending_exec"; - case 107: return "helics_state_pending_time"; - case 108: return "helics_state_pending_iterative_time"; - case 109: return "helics_state_pending_finalize"; + case 14: return "helics_core_type_null"; + case 15: return "helics_data_type_string"; + case 16: return "helics_data_type_double"; + case 17: return "helics_data_type_int"; + case 18: return "helics_data_type_complex"; + case 19: return "helics_data_type_vector"; + case 20: return "helics_data_type_complex_vector"; + case 21: return "helics_data_type_named_point"; + case 22: return "helics_data_type_boolean"; + case 23: return "helics_data_type_time"; + case 24: return "helics_data_type_raw"; + case 25: return "helics_data_type_any"; + case 26: return "helics_flag_observer"; + case 27: return "helics_flag_uninterruptible"; + case 28: return "helics_flag_interruptible"; + case 29: return "helics_flag_source_only"; + case 30: return "helics_flag_only_transmit_on_change"; + case 31: return "helics_flag_only_update_on_change"; + case 32: return "helics_flag_wait_for_current_time_update"; + case 33: return "helics_flag_restrictive_time_policy"; + case 34: return "helics_flag_rollback"; + case 35: return "helics_flag_forward_compute"; + case 36: return "helics_flag_realtime"; + case 37: return "helics_flag_single_thread_federate"; + case 38: return "helics_flag_slow_responding"; + case 39: return "helics_flag_delay_init_entry"; + case 40: return "helics_flag_enable_init_entry"; + case 41: return "helics_flag_ignore_time_mismatch_warnings"; + case 42: return "helics_log_level_no_print"; + case 43: return "helics_log_level_error"; + case 44: return "helics_log_level_warning"; + case 45: return "helics_log_level_summary"; + case 46: return "helics_log_level_connections"; + case 47: return "helics_log_level_interfaces"; + case 48: return "helics_log_level_timing"; + case 49: return "helics_log_level_data"; + case 50: return "helics_log_level_trace"; + case 51: return "helics_ok"; + case 52: return "helics_error_registration_failure"; + case 53: return "helics_error_connection_failure"; + case 54: return "helics_error_invalid_object"; + case 55: return "helics_error_invalid_argument"; + case 56: return "helics_error_discard"; + case 57: return "helics_error_system_failure"; + case 58: return "helics_warning"; + case 59: return "helics_error_invalid_state_transition"; + case 60: return "helics_error_invalid_function_call"; + case 61: return "helics_error_execution_failure"; + case 62: return "helics_error_insufficient_space"; + case 63: return "helics_error_other"; + case 64: return "helics_error_external_type"; + case 65: return "helics_property_time_delta"; + case 66: return "helics_property_time_period"; + case 67: return "helics_property_time_offset"; + case 68: return "helics_property_time_rt_lag"; + case 69: return "helics_property_time_rt_lead"; + case 70: return "helics_property_time_rt_tolerance"; + case 71: return "helics_property_time_input_delay"; + case 72: return "helics_property_time_output_delay"; + case 73: return "helics_property_int_max_iterations"; + case 74: return "helics_property_int_log_level"; + case 75: return "helics_property_int_file_log_level"; + case 76: return "helics_property_int_console_log_level"; + case 77: return "helics_handle_option_connection_required"; + case 78: return "helics_handle_option_connection_optional"; + case 79: return "helics_handle_option_single_connection_only"; + case 80: return "helics_handle_option_multiple_connections_allowed"; + case 81: return "helics_handle_option_buffer_data"; + case 82: return "helics_handle_option_strict_type_checking"; + case 83: return "helics_handle_option_ignore_unit_mismatch"; + case 84: return "helics_handle_option_only_transmit_on_change"; + case 85: return "helics_handle_option_only_update_on_change"; + case 86: return "helics_handle_option_ignore_interrupts"; + case 87: return "helics_filter_type_custom"; + case 88: return "helics_filter_type_delay"; + case 89: return "helics_filter_type_random_delay"; + case 90: return "helics_filter_type_random_drop"; + case 91: return "helics_filter_type_reroute"; + case 92: return "helics_filter_type_clone"; + case 93: return "helics_filter_type_firewall"; + case 94: return "helics_iteration_request_no_iteration"; + case 95: return "helics_iteration_request_force_iteration"; + case 96: return "helics_iteration_request_iterate_if_needed"; + case 97: return "helics_iteration_result_next_step"; + case 98: return "helics_iteration_result_error"; + case 99: return "helics_iteration_result_halted"; + case 100: return "helics_iteration_result_iterating"; + case 101: return "helics_state_startup"; + case 102: return "helics_state_initialization"; + case 103: return "helics_state_execution"; + case 104: return "helics_state_finalize"; + case 105: return "helics_state_error"; + case 106: return "helics_state_pending_init"; + case 107: return "helics_state_pending_exec"; + case 108: return "helics_state_pending_time"; + case 109: return "helics_state_pending_iterative_time"; + case 110: return "helics_state_pending_finalize"; default: return 0; } } @@ -14147,102 +14148,103 @@ SWIGINTERN int swigConstant(int SWIGUNUSEDPARM(resc), mxArray *resv[], int argc, case 11: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_core_type_http",SWIG_From_int(static_cast< int >(helics_core_type_http)));; break; case 12: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_core_type_websocket",SWIG_From_int(static_cast< int >(helics_core_type_websocket)));; break; case 13: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_core_type_inproc",SWIG_From_int(static_cast< int >(helics_core_type_inproc)));; break; - case 14: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_string",SWIG_From_int(static_cast< int >(helics_data_type_string)));; break; - case 15: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_double",SWIG_From_int(static_cast< int >(helics_data_type_double)));; break; - case 16: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_int",SWIG_From_int(static_cast< int >(helics_data_type_int)));; break; - case 17: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_complex",SWIG_From_int(static_cast< int >(helics_data_type_complex)));; break; - case 18: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_vector",SWIG_From_int(static_cast< int >(helics_data_type_vector)));; break; - case 19: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_complex_vector",SWIG_From_int(static_cast< int >(helics_data_type_complex_vector)));; break; - case 20: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_named_point",SWIG_From_int(static_cast< int >(helics_data_type_named_point)));; break; - case 21: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_boolean",SWIG_From_int(static_cast< int >(helics_data_type_boolean)));; break; - case 22: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_time",SWIG_From_int(static_cast< int >(helics_data_type_time)));; break; - case 23: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_raw",SWIG_From_int(static_cast< int >(helics_data_type_raw)));; break; - case 24: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_any",SWIG_From_int(static_cast< int >(helics_data_type_any)));; break; - case 25: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_observer",SWIG_From_int(static_cast< int >(helics_flag_observer)));; break; - case 26: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_uninterruptible",SWIG_From_int(static_cast< int >(helics_flag_uninterruptible)));; break; - case 27: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_interruptible",SWIG_From_int(static_cast< int >(helics_flag_interruptible)));; break; - case 28: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_source_only",SWIG_From_int(static_cast< int >(helics_flag_source_only)));; break; - case 29: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_only_transmit_on_change",SWIG_From_int(static_cast< int >(helics_flag_only_transmit_on_change)));; break; - case 30: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_only_update_on_change",SWIG_From_int(static_cast< int >(helics_flag_only_update_on_change)));; break; - case 31: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_wait_for_current_time_update",SWIG_From_int(static_cast< int >(helics_flag_wait_for_current_time_update)));; break; - case 32: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_restrictive_time_policy",SWIG_From_int(static_cast< int >(helics_flag_restrictive_time_policy)));; break; - case 33: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_rollback",SWIG_From_int(static_cast< int >(helics_flag_rollback)));; break; - case 34: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_forward_compute",SWIG_From_int(static_cast< int >(helics_flag_forward_compute)));; break; - case 35: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_realtime",SWIG_From_int(static_cast< int >(helics_flag_realtime)));; break; - case 36: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_single_thread_federate",SWIG_From_int(static_cast< int >(helics_flag_single_thread_federate)));; break; - case 37: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_slow_responding",SWIG_From_int(static_cast< int >(helics_flag_slow_responding)));; break; - case 38: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_delay_init_entry",SWIG_From_int(static_cast< int >(helics_flag_delay_init_entry)));; break; - case 39: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_enable_init_entry",SWIG_From_int(static_cast< int >(helics_flag_enable_init_entry)));; break; - case 40: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_ignore_time_mismatch_warnings",SWIG_From_int(static_cast< int >(helics_flag_ignore_time_mismatch_warnings)));; break; - case 41: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_no_print",SWIG_From_int(static_cast< int >(helics_log_level_no_print)));; break; - case 42: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_error",SWIG_From_int(static_cast< int >(helics_log_level_error)));; break; - case 43: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_warning",SWIG_From_int(static_cast< int >(helics_log_level_warning)));; break; - case 44: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_summary",SWIG_From_int(static_cast< int >(helics_log_level_summary)));; break; - case 45: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_connections",SWIG_From_int(static_cast< int >(helics_log_level_connections)));; break; - case 46: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_interfaces",SWIG_From_int(static_cast< int >(helics_log_level_interfaces)));; break; - case 47: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_timing",SWIG_From_int(static_cast< int >(helics_log_level_timing)));; break; - case 48: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_data",SWIG_From_int(static_cast< int >(helics_log_level_data)));; break; - case 49: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_trace",SWIG_From_int(static_cast< int >(helics_log_level_trace)));; break; - case 50: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_ok",SWIG_From_int(static_cast< int >(helics_ok)));; break; - case 51: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_registration_failure",SWIG_From_int(static_cast< int >(helics_error_registration_failure)));; break; - case 52: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_connection_failure",SWIG_From_int(static_cast< int >(helics_error_connection_failure)));; break; - case 53: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_object",SWIG_From_int(static_cast< int >(helics_error_invalid_object)));; break; - case 54: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_argument",SWIG_From_int(static_cast< int >(helics_error_invalid_argument)));; break; - case 55: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_discard",SWIG_From_int(static_cast< int >(helics_error_discard)));; break; - case 56: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_system_failure",SWIG_From_int(static_cast< int >(helics_error_system_failure)));; break; - case 57: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_warning",SWIG_From_int(static_cast< int >(helics_warning)));; break; - case 58: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_state_transition",SWIG_From_int(static_cast< int >(helics_error_invalid_state_transition)));; break; - case 59: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_function_call",SWIG_From_int(static_cast< int >(helics_error_invalid_function_call)));; break; - case 60: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_execution_failure",SWIG_From_int(static_cast< int >(helics_error_execution_failure)));; break; - case 61: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_insufficient_space",SWIG_From_int(static_cast< int >(helics_error_insufficient_space)));; break; - case 62: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_other",SWIG_From_int(static_cast< int >(helics_error_other)));; break; - case 63: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_external_type",SWIG_From_int(static_cast< int >(helics_error_external_type)));; break; - case 64: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_delta",SWIG_From_int(static_cast< int >(helics_property_time_delta)));; break; - case 65: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_period",SWIG_From_int(static_cast< int >(helics_property_time_period)));; break; - case 66: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_offset",SWIG_From_int(static_cast< int >(helics_property_time_offset)));; break; - case 67: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lag",SWIG_From_int(static_cast< int >(helics_property_time_rt_lag)));; break; - case 68: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lead",SWIG_From_int(static_cast< int >(helics_property_time_rt_lead)));; break; - case 69: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_tolerance",SWIG_From_int(static_cast< int >(helics_property_time_rt_tolerance)));; break; - case 70: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_input_delay",SWIG_From_int(static_cast< int >(helics_property_time_input_delay)));; break; - case 71: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_output_delay",SWIG_From_int(static_cast< int >(helics_property_time_output_delay)));; break; - case 72: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_max_iterations",SWIG_From_int(static_cast< int >(helics_property_int_max_iterations)));; break; - case 73: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_log_level",SWIG_From_int(static_cast< int >(helics_property_int_log_level)));; break; - case 74: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_file_log_level",SWIG_From_int(static_cast< int >(helics_property_int_file_log_level)));; break; - case 75: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_console_log_level",SWIG_From_int(static_cast< int >(helics_property_int_console_log_level)));; break; - case 76: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_required",SWIG_From_int(static_cast< int >(helics_handle_option_connection_required)));; break; - case 77: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_optional",SWIG_From_int(static_cast< int >(helics_handle_option_connection_optional)));; break; - case 78: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_single_connection_only",SWIG_From_int(static_cast< int >(helics_handle_option_single_connection_only)));; break; - case 79: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_multiple_connections_allowed",SWIG_From_int(static_cast< int >(helics_handle_option_multiple_connections_allowed)));; break; - case 80: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_buffer_data",SWIG_From_int(static_cast< int >(helics_handle_option_buffer_data)));; break; - case 81: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_strict_type_checking",SWIG_From_int(static_cast< int >(helics_handle_option_strict_type_checking)));; break; - case 82: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_unit_mismatch",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_unit_mismatch)));; break; - case 83: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_transmit_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_transmit_on_change)));; break; - case 84: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_update_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_update_on_change)));; break; - case 85: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_interrupts",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_interrupts)));; break; - case 86: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_custom",SWIG_From_int(static_cast< int >(helics_filter_type_custom)));; break; - case 87: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_delay",SWIG_From_int(static_cast< int >(helics_filter_type_delay)));; break; - case 88: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_delay",SWIG_From_int(static_cast< int >(helics_filter_type_random_delay)));; break; - case 89: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_drop",SWIG_From_int(static_cast< int >(helics_filter_type_random_drop)));; break; - case 90: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_reroute",SWIG_From_int(static_cast< int >(helics_filter_type_reroute)));; break; - case 91: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_clone",SWIG_From_int(static_cast< int >(helics_filter_type_clone)));; break; - case 92: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_firewall",SWIG_From_int(static_cast< int >(helics_filter_type_firewall)));; break; - case 93: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_no_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_no_iteration)));; break; - case 94: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_force_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_force_iteration)));; break; - case 95: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_iterate_if_needed",SWIG_From_int(static_cast< int >(helics_iteration_request_iterate_if_needed)));; break; - case 96: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_next_step",SWIG_From_int(static_cast< int >(helics_iteration_result_next_step)));; break; - case 97: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_error",SWIG_From_int(static_cast< int >(helics_iteration_result_error)));; break; - case 98: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_halted",SWIG_From_int(static_cast< int >(helics_iteration_result_halted)));; break; - case 99: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_iterating",SWIG_From_int(static_cast< int >(helics_iteration_result_iterating)));; break; - case 100: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_startup",SWIG_From_int(static_cast< int >(helics_state_startup)));; break; - case 101: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_initialization",SWIG_From_int(static_cast< int >(helics_state_initialization)));; break; - case 102: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_execution",SWIG_From_int(static_cast< int >(helics_state_execution)));; break; - case 103: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_finalize",SWIG_From_int(static_cast< int >(helics_state_finalize)));; break; - case 104: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_error",SWIG_From_int(static_cast< int >(helics_state_error)));; break; - case 105: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_init",SWIG_From_int(static_cast< int >(helics_state_pending_init)));; break; - case 106: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_exec",SWIG_From_int(static_cast< int >(helics_state_pending_exec)));; break; - case 107: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_time",SWIG_From_int(static_cast< int >(helics_state_pending_time)));; break; - case 108: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_iterative_time",SWIG_From_int(static_cast< int >(helics_state_pending_iterative_time)));; break; - case 109: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_finalize",SWIG_From_int(static_cast< int >(helics_state_pending_finalize)));; break; + case 14: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_core_type_null",SWIG_From_int(static_cast< int >(helics_core_type_null)));; break; + case 15: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_string",SWIG_From_int(static_cast< int >(helics_data_type_string)));; break; + case 16: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_double",SWIG_From_int(static_cast< int >(helics_data_type_double)));; break; + case 17: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_int",SWIG_From_int(static_cast< int >(helics_data_type_int)));; break; + case 18: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_complex",SWIG_From_int(static_cast< int >(helics_data_type_complex)));; break; + case 19: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_vector",SWIG_From_int(static_cast< int >(helics_data_type_vector)));; break; + case 20: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_complex_vector",SWIG_From_int(static_cast< int >(helics_data_type_complex_vector)));; break; + case 21: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_named_point",SWIG_From_int(static_cast< int >(helics_data_type_named_point)));; break; + case 22: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_boolean",SWIG_From_int(static_cast< int >(helics_data_type_boolean)));; break; + case 23: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_time",SWIG_From_int(static_cast< int >(helics_data_type_time)));; break; + case 24: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_raw",SWIG_From_int(static_cast< int >(helics_data_type_raw)));; break; + case 25: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_data_type_any",SWIG_From_int(static_cast< int >(helics_data_type_any)));; break; + case 26: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_observer",SWIG_From_int(static_cast< int >(helics_flag_observer)));; break; + case 27: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_uninterruptible",SWIG_From_int(static_cast< int >(helics_flag_uninterruptible)));; break; + case 28: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_interruptible",SWIG_From_int(static_cast< int >(helics_flag_interruptible)));; break; + case 29: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_source_only",SWIG_From_int(static_cast< int >(helics_flag_source_only)));; break; + case 30: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_only_transmit_on_change",SWIG_From_int(static_cast< int >(helics_flag_only_transmit_on_change)));; break; + case 31: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_only_update_on_change",SWIG_From_int(static_cast< int >(helics_flag_only_update_on_change)));; break; + case 32: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_wait_for_current_time_update",SWIG_From_int(static_cast< int >(helics_flag_wait_for_current_time_update)));; break; + case 33: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_restrictive_time_policy",SWIG_From_int(static_cast< int >(helics_flag_restrictive_time_policy)));; break; + case 34: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_rollback",SWIG_From_int(static_cast< int >(helics_flag_rollback)));; break; + case 35: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_forward_compute",SWIG_From_int(static_cast< int >(helics_flag_forward_compute)));; break; + case 36: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_realtime",SWIG_From_int(static_cast< int >(helics_flag_realtime)));; break; + case 37: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_single_thread_federate",SWIG_From_int(static_cast< int >(helics_flag_single_thread_federate)));; break; + case 38: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_slow_responding",SWIG_From_int(static_cast< int >(helics_flag_slow_responding)));; break; + case 39: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_delay_init_entry",SWIG_From_int(static_cast< int >(helics_flag_delay_init_entry)));; break; + case 40: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_enable_init_entry",SWIG_From_int(static_cast< int >(helics_flag_enable_init_entry)));; break; + case 41: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_ignore_time_mismatch_warnings",SWIG_From_int(static_cast< int >(helics_flag_ignore_time_mismatch_warnings)));; break; + case 42: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_no_print",SWIG_From_int(static_cast< int >(helics_log_level_no_print)));; break; + case 43: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_error",SWIG_From_int(static_cast< int >(helics_log_level_error)));; break; + case 44: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_warning",SWIG_From_int(static_cast< int >(helics_log_level_warning)));; break; + case 45: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_summary",SWIG_From_int(static_cast< int >(helics_log_level_summary)));; break; + case 46: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_connections",SWIG_From_int(static_cast< int >(helics_log_level_connections)));; break; + case 47: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_interfaces",SWIG_From_int(static_cast< int >(helics_log_level_interfaces)));; break; + case 48: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_timing",SWIG_From_int(static_cast< int >(helics_log_level_timing)));; break; + case 49: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_data",SWIG_From_int(static_cast< int >(helics_log_level_data)));; break; + case 50: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_trace",SWIG_From_int(static_cast< int >(helics_log_level_trace)));; break; + case 51: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_ok",SWIG_From_int(static_cast< int >(helics_ok)));; break; + case 52: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_registration_failure",SWIG_From_int(static_cast< int >(helics_error_registration_failure)));; break; + case 53: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_connection_failure",SWIG_From_int(static_cast< int >(helics_error_connection_failure)));; break; + case 54: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_object",SWIG_From_int(static_cast< int >(helics_error_invalid_object)));; break; + case 55: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_argument",SWIG_From_int(static_cast< int >(helics_error_invalid_argument)));; break; + case 56: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_discard",SWIG_From_int(static_cast< int >(helics_error_discard)));; break; + case 57: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_system_failure",SWIG_From_int(static_cast< int >(helics_error_system_failure)));; break; + case 58: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_warning",SWIG_From_int(static_cast< int >(helics_warning)));; break; + case 59: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_state_transition",SWIG_From_int(static_cast< int >(helics_error_invalid_state_transition)));; break; + case 60: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_function_call",SWIG_From_int(static_cast< int >(helics_error_invalid_function_call)));; break; + case 61: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_execution_failure",SWIG_From_int(static_cast< int >(helics_error_execution_failure)));; break; + case 62: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_insufficient_space",SWIG_From_int(static_cast< int >(helics_error_insufficient_space)));; break; + case 63: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_other",SWIG_From_int(static_cast< int >(helics_error_other)));; break; + case 64: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_external_type",SWIG_From_int(static_cast< int >(helics_error_external_type)));; break; + case 65: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_delta",SWIG_From_int(static_cast< int >(helics_property_time_delta)));; break; + case 66: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_period",SWIG_From_int(static_cast< int >(helics_property_time_period)));; break; + case 67: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_offset",SWIG_From_int(static_cast< int >(helics_property_time_offset)));; break; + case 68: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lag",SWIG_From_int(static_cast< int >(helics_property_time_rt_lag)));; break; + case 69: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lead",SWIG_From_int(static_cast< int >(helics_property_time_rt_lead)));; break; + case 70: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_tolerance",SWIG_From_int(static_cast< int >(helics_property_time_rt_tolerance)));; break; + case 71: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_input_delay",SWIG_From_int(static_cast< int >(helics_property_time_input_delay)));; break; + case 72: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_output_delay",SWIG_From_int(static_cast< int >(helics_property_time_output_delay)));; break; + case 73: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_max_iterations",SWIG_From_int(static_cast< int >(helics_property_int_max_iterations)));; break; + case 74: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_log_level",SWIG_From_int(static_cast< int >(helics_property_int_log_level)));; break; + case 75: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_file_log_level",SWIG_From_int(static_cast< int >(helics_property_int_file_log_level)));; break; + case 76: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_console_log_level",SWIG_From_int(static_cast< int >(helics_property_int_console_log_level)));; break; + case 77: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_required",SWIG_From_int(static_cast< int >(helics_handle_option_connection_required)));; break; + case 78: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_optional",SWIG_From_int(static_cast< int >(helics_handle_option_connection_optional)));; break; + case 79: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_single_connection_only",SWIG_From_int(static_cast< int >(helics_handle_option_single_connection_only)));; break; + case 80: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_multiple_connections_allowed",SWIG_From_int(static_cast< int >(helics_handle_option_multiple_connections_allowed)));; break; + case 81: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_buffer_data",SWIG_From_int(static_cast< int >(helics_handle_option_buffer_data)));; break; + case 82: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_strict_type_checking",SWIG_From_int(static_cast< int >(helics_handle_option_strict_type_checking)));; break; + case 83: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_unit_mismatch",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_unit_mismatch)));; break; + case 84: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_transmit_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_transmit_on_change)));; break; + case 85: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_update_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_update_on_change)));; break; + case 86: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_interrupts",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_interrupts)));; break; + case 87: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_custom",SWIG_From_int(static_cast< int >(helics_filter_type_custom)));; break; + case 88: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_delay",SWIG_From_int(static_cast< int >(helics_filter_type_delay)));; break; + case 89: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_delay",SWIG_From_int(static_cast< int >(helics_filter_type_random_delay)));; break; + case 90: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_drop",SWIG_From_int(static_cast< int >(helics_filter_type_random_drop)));; break; + case 91: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_reroute",SWIG_From_int(static_cast< int >(helics_filter_type_reroute)));; break; + case 92: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_clone",SWIG_From_int(static_cast< int >(helics_filter_type_clone)));; break; + case 93: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_firewall",SWIG_From_int(static_cast< int >(helics_filter_type_firewall)));; break; + case 94: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_no_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_no_iteration)));; break; + case 95: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_force_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_force_iteration)));; break; + case 96: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_iterate_if_needed",SWIG_From_int(static_cast< int >(helics_iteration_request_iterate_if_needed)));; break; + case 97: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_next_step",SWIG_From_int(static_cast< int >(helics_iteration_result_next_step)));; break; + case 98: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_error",SWIG_From_int(static_cast< int >(helics_iteration_result_error)));; break; + case 99: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_halted",SWIG_From_int(static_cast< int >(helics_iteration_result_halted)));; break; + case 100: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_iterating",SWIG_From_int(static_cast< int >(helics_iteration_result_iterating)));; break; + case 101: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_startup",SWIG_From_int(static_cast< int >(helics_state_startup)));; break; + case 102: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_initialization",SWIG_From_int(static_cast< int >(helics_state_initialization)));; break; + case 103: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_execution",SWIG_From_int(static_cast< int >(helics_state_execution)));; break; + case 104: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_finalize",SWIG_From_int(static_cast< int >(helics_state_finalize)));; break; + case 105: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_error",SWIG_From_int(static_cast< int >(helics_state_error)));; break; + case 106: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_init",SWIG_From_int(static_cast< int >(helics_state_pending_init)));; break; + case 107: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_exec",SWIG_From_int(static_cast< int >(helics_state_pending_exec)));; break; + case 108: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_time",SWIG_From_int(static_cast< int >(helics_state_pending_time)));; break; + case 109: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_iterative_time",SWIG_From_int(static_cast< int >(helics_state_pending_iterative_time)));; break; + case 110: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_finalize",SWIG_From_int(static_cast< int >(helics_state_pending_finalize)));; break; default: SWIG_Error(SWIG_RuntimeError, "No such constant."); return 1; diff --git a/interfaces/python/helics.py b/interfaces/python/helics.py index 9e4b81fdbd..da7ddd14d7 100644 --- a/interfaces/python/helics.py +++ b/interfaces/python/helics.py @@ -98,6 +98,8 @@ class _SwigNonDynamicMeta(type): an in process core type for handling communications in shared memory it is pretty similar to the test core but stripped from the "test" components """ +helics_core_type_null = _helics.helics_core_type_null +r""" an explicit core type that is recognized but explicitly doesn't exist, for testing and a few other assorted reasons""" helics_data_type_string = _helics.helics_data_type_string r""" a sequence of characters""" helics_data_type_double = _helics.helics_data_type_double diff --git a/interfaces/python/helicsPython.c b/interfaces/python/helicsPython.c index 5c3ba8173d..dfc9805c62 100644 --- a/interfaces/python/helicsPython.c +++ b/interfaces/python/helicsPython.c @@ -18619,6 +18619,7 @@ SWIG_init(void) { SWIG_Python_SetConstant(d, "helics_core_type_http",SWIG_From_int((int)(helics_core_type_http))); SWIG_Python_SetConstant(d, "helics_core_type_websocket",SWIG_From_int((int)(helics_core_type_websocket))); SWIG_Python_SetConstant(d, "helics_core_type_inproc",SWIG_From_int((int)(helics_core_type_inproc))); + SWIG_Python_SetConstant(d, "helics_core_type_null",SWIG_From_int((int)(helics_core_type_null))); SWIG_Python_SetConstant(d, "helics_data_type_string",SWIG_From_int((int)(helics_data_type_string))); SWIG_Python_SetConstant(d, "helics_data_type_double",SWIG_From_int((int)(helics_data_type_double))); SWIG_Python_SetConstant(d, "helics_data_type_int",SWIG_From_int((int)(helics_data_type_int))); From 34a39f0725dc539305476c365bf881da0cb2446a Mon Sep 17 00:00:00 2001 From: Philip Top Date: Wed, 19 Feb 2020 12:44:44 -0800 Subject: [PATCH 05/32] Value federate coverage (#1088) * Add test functions for coverage on valueFederate.cpp * some additional tests for getInput getPublication * add notes to files indicating they are not suitable for examples * Automated formatting of source files (#1089) Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> --- CHANGELOG.md | 3 + src/helics/application_api/Federate.cpp | 22 +- src/helics/application_api/ValueFederate.cpp | 191 ++++----- src/helics/application_api/ValueFederate.hpp | 35 +- src/helics/common/CMakeLists.txt | 2 + src/helics/common/addTargets.hpp | 2 + src/helics/common/configFileHelpers.cpp | 21 + src/helics/common/configFileHelpers.hpp | 15 + .../ValueFederateAdditionalTests.cpp | 383 ++++++++++++++++++ .../application_api/ValueFederateKeyTests.cpp | 20 +- .../test_files/example_value_fed_bad.toml | 23 ++ .../test_files/example_value_fed_testb.json | 71 ++++ .../test_files/example_value_fed_testb.toml | 37 ++ tests/helics/test_files/unusual_filters2.toml | 6 +- 14 files changed, 697 insertions(+), 134 deletions(-) create mode 100644 src/helics/common/configFileHelpers.cpp create mode 100644 src/helics/common/configFileHelpers.hpp create mode 100644 tests/helics/test_files/example_value_fed_bad.toml create mode 100644 tests/helics/test_files/example_value_fed_testb.json create mode 100644 tests/helics/test_files/example_value_fed_testb.toml diff --git a/CHANGELOG.md b/CHANGELOG.md index c20629b93c..751837458e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,14 +15,17 @@ Increased code coverage and additional bug fixes. - The helics webserver will build by default if the conditions are met - Update filesystem library to [v1.3.0](https://github.com/gulrak/filesystem/releases/tag/v1.3.0) - The behavior of the Federate *Complete operations to be uniform and consistent +- Configuration of flags and targets for interfaces in json and toml files can be done in multiple sections ### Fixed - Issue with iterative requests that were not being honored if the federate was acting in isolation - A few pathways which would allow segmentation faults if a federate was disconnected and particular functions were called +- ValueFederate add indexedTargets, the function template would not work is was written and was unusable. ### Added - `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is disabled. - A series of test for Federate.cpp to increase coverage on that file to 100% +- A series of tests for ValueFederate.*pp to increase coverage on that file to 100% ### Deprecated diff --git a/src/helics/application_api/Federate.cpp b/src/helics/application_api/Federate.cpp index 1a427ed118..bfe0ef01de 100644 --- a/src/helics/application_api/Federate.cpp +++ b/src/helics/application_api/Federate.cpp @@ -7,9 +7,8 @@ SPDX-License-Identifier: BSD-3-Clause #include "Federate.hpp" #include "../common/GuardedTypes.hpp" -#include "../common/JsonProcessingFunctions.hpp" -#include "../common/TomlProcessingFunctions.hpp" #include "../common/addTargets.hpp" +#include "../common/configFileHelpers.hpp" #include "../core/BrokerFactory.hpp" #include "../core/Core.hpp" #include "../core/CoreFactory.hpp" @@ -112,18 +111,6 @@ Federate::Federate( fManager = std::make_unique(coreObject.get(), this, fedID); } -static bool looksLikeFile(const std::string& configString) -{ - if (hasTomlExtension(configString)) { - return true; - } - if ((hasJsonExtension(configString)) || - (configString.find_first_of('{') != std::string::npos)) { - return true; - } - return false; -} - Federate::Federate(const std::string& fedName, const std::string& configString): Federate(fedName, loadFederateInfo(configString)) { @@ -731,7 +718,12 @@ void Federate::registerFilterInterfaces(const std::string& configString) if (hasTomlExtension(configString)) { registerFilterInterfacesToml(configString); } else { - registerFilterInterfacesJson(configString); + try { + registerFilterInterfacesJson(configString); + } + catch (const std::invalid_argument& e) { + throw(helics::InvalidParameter(e.what())); + } } } diff --git a/src/helics/application_api/ValueFederate.cpp b/src/helics/application_api/ValueFederate.cpp index d398384f3d..22a7e743b9 100644 --- a/src/helics/application_api/ValueFederate.cpp +++ b/src/helics/application_api/ValueFederate.cpp @@ -6,9 +6,8 @@ SPDX-License-Identifier: BSD-3-Clause */ #include "ValueFederate.hpp" -#include "../common/JsonProcessingFunctions.hpp" -#include "../common/TomlProcessingFunctions.hpp" #include "../common/addTargets.hpp" +#include "../common/configFileHelpers.hpp" #include "../core/Core.hpp" #include "../core/core-exceptions.hpp" #include "../core/helics_definitions.hpp" @@ -37,18 +36,30 @@ ValueFederate::ValueFederate( { vfManager = std::make_unique(coreObject.get(), this, getID()); } -ValueFederate::ValueFederate(const std::string& configString): - Federate(std::string(), loadFederateInfo(configString)) + +ValueFederate::ValueFederate(const std::string& fedName, CoreApp& core, const FederateInfo& fi): + Federate(fedName, core, fi) { vfManager = std::make_unique(coreObject.get(), this, getID()); - ValueFederate::registerInterfaces(configString); } ValueFederate::ValueFederate(const std::string& fedName, const std::string& configString): Federate(fedName, loadFederateInfo(configString)) { vfManager = std::make_unique(coreObject.get(), this, getID()); - ValueFederate::registerInterfaces(configString); + if (looksLikeFile(configString)) { + ValueFederate::registerInterfaces(configString); + } +} + +ValueFederate::ValueFederate(const std::string& configString): + ValueFederate(std::string{}, configString) +{ +} + +ValueFederate::ValueFederate(const char* configString): + ValueFederate(std::string{}, std::string{configString}) +{ } ValueFederate::ValueFederate() = default; @@ -218,17 +229,17 @@ void ValueFederate::registerValueInterfacesJson(const std::string& jsonString) auto key = getKey(pub); Publication* pubAct = &vfManager->getPublication(key); - if (pubAct->isValid()) { - continue; - } - auto type = getOrDefault(pub, "type", emptyStr); - auto units = getOrDefault(pub, "units", emptyStr); - bool global = getOrDefault(pub, "global", defaultGlobal); - if (global) { - pubAct = ®isterGlobalPublication(key, type, units); - } else { - pubAct = ®isterPublication(key, type, units); + if (!pubAct->isValid()) { + auto type = getOrDefault(pub, "type", emptyStr); + auto units = getOrDefault(pub, "units", emptyStr); + bool global = getOrDefault(pub, "global", defaultGlobal); + if (global) { + pubAct = ®isterGlobalPublication(key, type, units); + } else { + pubAct = ®isterPublication(key, type, units); + } } + loadOptions(this, pub, *pubAct); } } @@ -236,16 +247,14 @@ void ValueFederate::registerValueInterfacesJson(const std::string& jsonString) auto subs = doc["subscriptions"]; for (const auto& sub : subs) { auto key = getKey(sub); - auto& subAct = vfManager->getSubscription(key); - if (subAct.isValid()) { - continue; + auto subAct = &vfManager->getSubscription(key); + if (!subAct->isValid()) { + auto type = getOrDefault(sub, "type", emptyStr); + auto units = getOrDefault(sub, "units", emptyStr); + subAct = ®isterInput(emptyStr, type, units); } - auto type = getOrDefault(sub, "type", emptyStr); - auto units = getOrDefault(sub, "units", emptyStr); - auto& subNew = registerInput(emptyStr, type, units); - subNew.addTarget(key); - - loadOptions(this, sub, subNew); + subAct->addTarget(key); + loadOptions(this, sub, *subAct); } } if (doc.isMember("inputs")) { @@ -254,17 +263,17 @@ void ValueFederate::registerValueInterfacesJson(const std::string& jsonString) auto key = getKey(ipt); Input* inp = &vfManager->getInput(key); - if (inp->isValid()) { - continue; - } - auto type = getOrDefault(ipt, "type", emptyStr); - auto units = getOrDefault(ipt, "units", emptyStr); - bool global = getOrDefault(ipt, "global", defaultGlobal); - if (global) { - inp = ®isterGlobalInput(key, type, units); - } else { - inp = ®isterInput(key, type, units); + if (!inp->isValid()) { + auto type = getOrDefault(ipt, "type", emptyStr); + auto units = getOrDefault(ipt, "units", emptyStr); + bool global = getOrDefault(ipt, "global", defaultGlobal); + if (global) { + inp = ®isterGlobalInput(key, type, units); + } else { + inp = ®isterInput(key, type, units); + } } + loadOptions(this, ipt, *inp); } } @@ -285,24 +294,22 @@ void ValueFederate::registerValueInterfacesToml(const std::string& tomlString) if (isMember(doc, "publications")) { auto pubs = toml::find(doc, "publications"); if (!pubs.is_array()) { - throw(helics::InvalidParameter("filters section in yoml file must be an array")); + throw(helics::InvalidParameter("publications section in toml file must be an array")); } auto& pubArray = pubs.as_array(); for (const auto& pub : pubArray) { auto key = getKey(pub); - auto id = vfManager->getPublication(key); - if (id.isValid()) { - continue; - } - auto type = getOrDefault(pub, "type", emptyStr); - auto units = getOrDefault(pub, "units", emptyStr); - bool global = getOrDefault(pub, "global", defaultGlobal); - Publication* pubObj = nullptr; - if (global) { - pubObj = ®isterGlobalPublication(key, type, units); - } else { - pubObj = ®isterPublication(key, type, units); + Publication* pubObj = &vfManager->getPublication(key); + if (!pubObj->isValid()) { + auto type = getOrDefault(pub, "type", emptyStr); + auto units = getOrDefault(pub, "units", emptyStr); + bool global = getOrDefault(pub, "global", defaultGlobal); + if (global) { + pubObj = ®isterGlobalPublication(key, type, units); + } else { + pubObj = ®isterPublication(key, type, units); + } } loadOptions(this, pub, *pubObj); } @@ -310,19 +317,20 @@ void ValueFederate::registerValueInterfacesToml(const std::string& tomlString) if (isMember(doc, "subscriptions")) { auto subs = toml::find(doc, "subscriptions"); if (!subs.is_array()) { - throw(helics::InvalidParameter("subscriptions section in toml file must be an array")); + //this line is tested in the publications section so not really necessary to check again since it is an expensive test + throw(helics::InvalidParameter( + "subscriptions section in toml file must be an array")); // LCOV_EXCL_LINE } auto& subArray = subs.as_array(); for (const auto& sub : subArray) { auto key = getKey(sub); Input* id = &vfManager->getSubscription(key); - if (id->isValid()) { - continue; - } - auto type = getOrDefault(sub, "type", emptyStr); - auto units = getOrDefault(sub, "units", emptyStr); + if (!id->isValid()) { + auto type = getOrDefault(sub, "type", emptyStr); + auto units = getOrDefault(sub, "units", emptyStr); - id = ®isterInput(emptyStr, type, units); + id = ®isterInput(emptyStr, type, units); + } id->addTarget(key); loadOptions(this, sub, *id); @@ -331,24 +339,25 @@ void ValueFederate::registerValueInterfacesToml(const std::string& tomlString) if (isMember(doc, "inputs")) { auto ipts = toml::find(doc, "inputs"); if (!ipts.is_array()) { - throw(helics::InvalidParameter("inputs section in toml file must be an array")); + throw(helics::InvalidParameter( + "inputs section in toml file must be an array")); // LCOV_EXCL_LINE } auto& iptArray = ipts.as_array(); for (const auto& ipt : iptArray) { auto key = getKey(ipt); Input* id = &vfManager->getInput(key); - if (id->isValid()) { - continue; - } - auto type = getOrDefault(ipt, "type", emptyStr); - auto units = getOrDefault(ipt, "units", emptyStr); - bool global = getOrDefault(ipt, "global", defaultGlobal); - if (global) { - id = ®isterGlobalInput(key, type, units); - } else { - id = ®isterInput(key, type, units); + if (!id->isValid()) { + auto type = getOrDefault(ipt, "type", emptyStr); + auto units = getOrDefault(ipt, "units", emptyStr); + bool global = getOrDefault(ipt, "global", defaultGlobal); + if (global) { + id = ®isterGlobalInput(key, type, units); + } else { + id = ®isterInput(key, type, units); + } } + loadOptions(this, ipt, *id); } } @@ -397,35 +406,31 @@ static void generateData( char separator, Json::Value val) { - if (val.isObject()) { - auto mn = val.getMemberNames(); - for (auto& name : mn) { - auto so = val[name]; - if (so.isObject()) { - generateData(vpairs, prefix + name + separator, separator, so); + auto mn = val.getMemberNames(); + for (auto& name : mn) { + auto so = val[name]; + if (so.isObject()) { + generateData(vpairs, prefix + name + separator, separator, so); + } else { + if (so.isDouble()) { + vpairs.emplace_back(prefix + name, so.asDouble()); } else { - if (so.isDouble()) { - vpairs.emplace_back(prefix + name, so.asDouble()); - } else { - vpairs.emplace_back(prefix + name, so.asString()); - } + vpairs.emplace_back(prefix + name, so.asString()); } } - } else { - if (val.isDouble()) { - vpairs.emplace_back(prefix, val.asDouble()); - } else { - vpairs.emplace_back(prefix, val.asString()); - } } } void ValueFederate::registerFromPublicationJSON(const std::string& jsonString) { - auto jv = loadJson(jsonString); - if (jv.isNull()) { - throw(helics::InvalidParameter("unable to load file or string")); - } + auto jv = [&]() { + try { + return loadJson(jsonString); + } + catch (const std::invalid_argument&) { + throw(helics::InvalidParameter("unable to load file or string")); + } + }(); std::vector> vpairs; generateData(vpairs, "", nameSegmentSeparator, jv); @@ -446,10 +451,14 @@ void ValueFederate::registerFromPublicationJSON(const std::string& jsonString) void ValueFederate::publishJSON(const std::string& jsonString) { - auto jv = loadJson(jsonString); - if (jv.isNull()) { - throw(helics::InvalidParameter("unable to load file or string")); - } + auto jv = [&]() { + try { + return loadJson(jsonString); + } + catch (const std::invalid_argument&) { + throw(helics::InvalidParameter("unable to load file or string")); + } + }(); std::vector> vpairs; generateData(vpairs, "", nameSegmentSeparator, jv); diff --git a/src/helics/application_api/ValueFederate.hpp b/src/helics/application_api/ValueFederate.hpp index 7d5eb12e40..bd023459e5 100644 --- a/src/helics/application_api/ValueFederate.hpp +++ b/src/helics/application_api/ValueFederate.hpp @@ -28,6 +28,7 @@ class HELICS_CXX_EXPORT ValueFederate: @param fi a federate information structure */ ValueFederate(const std::string& fedName, const FederateInfo& fi); + /**constructor taking a core and a federate information structure, sore information in fi is ignored @param fedName the name of the federate, can be empty to use the name from fi or an auto generated one @param core a shared ptr to a core to join @@ -37,11 +38,20 @@ class HELICS_CXX_EXPORT ValueFederate: const std::string& fedName, const std::shared_ptr& core, const FederateInfo& fi); + + /**constructor taking a CoreApp and a federate information structure + @param fedName the name of the federate can be empty to use a name from the federateInfo + @param core a CoreApp with the core to connect to. + @param fi a federate information structure + */ + ValueFederate(const std::string& fedName, CoreApp& core, const FederateInfo& fi); + /**constructor taking a string with the required information @param configString can be either a JSON file a TOML file (with extension TOML) or a string containing JSON code */ explicit ValueFederate(const std::string& configString); + /**constructor taking a string with the required information @param fedName the name of the federate, can be empty to use the name from the configString @param configString can be either a JSON file a TOML file (with extension TOML) or a string containing JSON @@ -56,6 +66,10 @@ class HELICS_CXX_EXPORT ValueFederate: */ explicit ValueFederate(bool res); + /** this is an overload for the string operation top deconflict with the bool version + */ + explicit ValueFederate(const char* configString); + public: /** federate is not copyable*/ ValueFederate(const ValueFederate& fed) = delete; @@ -482,21 +496,17 @@ class HELICS_CXX_EXPORT ValueFederate: @param target the name of the publication to remove */ void removeTarget(const Input& inp, const std::string& target); + /** add a 1-d Indexed target to an interface @details call is only valid in startup mode, register an optional subscription for a 1D array of values @param iObject an interface object to add the target to @param target the name of the target @param index1 the index into a 1 dimensional array of values - @param units the optional units on the subscription */ template - void addTargetIndexed( - const iType& iObject, - const std::string& target, - int index1, - const std::string& units = std::string()) + void addIndexedTarget(const iType& iObject, const std::string& target, int index1) { - addTarget(iObject, target + '_' + std::to_string(index1), units); + addTarget(iObject, target + '_' + std::to_string(index1)); } /** add an indexed target to an interface @@ -505,18 +515,11 @@ class HELICS_CXX_EXPORT ValueFederate: @param target the name of the target @param index1 the first index of a 2-D value structure @param index2 the 2nd index of a 2-D value structure - @param units the optional units on the subscription */ template - void addTargetIndexed( - const iType& iObject, - const std::string& target, - int index1, - int index2, - const std::string& units = std::string()) + void addIndexedTarget(const iType& iObject, const std::string& target, int index1, int index2) { - addTarget( - iObject, target + '_' + std::to_string(index1) + '_' + std::to_string(index2), units); + addTarget(iObject, target + '_' + std::to_string(index1) + '_' + std::to_string(index2)); } /** check if a given subscription has an update diff --git a/src/helics/common/CMakeLists.txt b/src/helics/common/CMakeLists.txt index 1383ec1740..e383172c12 100644 --- a/src/helics/common/CMakeLists.txt +++ b/src/helics/common/CMakeLists.txt @@ -18,6 +18,7 @@ set( fmt_format.h fmt_ostream.h addTargets.hpp + configFileHelpers.hpp ) set( @@ -27,6 +28,7 @@ set( TomlProcessingFunctions.cpp logger.cpp loggerCore.cpp + configFileHelpers.cpp ) set(zmq_headers zmqContextManager.h zmqHelper.h diff --git a/src/helics/common/addTargets.hpp b/src/helics/common/addTargets.hpp index 59a3d9afa1..e448dc47f9 100644 --- a/src/helics/common/addTargets.hpp +++ b/src/helics/common/addTargets.hpp @@ -6,6 +6,8 @@ SPDX-License-Identifier: BSD-3-Clause */ #pragma once +#include "configFileHelpers.hpp" + #include #include diff --git a/src/helics/common/configFileHelpers.cpp b/src/helics/common/configFileHelpers.cpp new file mode 100644 index 0000000000..a9ed2025e3 --- /dev/null +++ b/src/helics/common/configFileHelpers.cpp @@ -0,0 +1,21 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ +#pragma once + +#include "configFileHelpers.hpp" + +bool looksLikeFile(const std::string& configString) +{ + if (hasTomlExtension(configString)) { + return true; + } + if ((hasJsonExtension(configString)) || + (configString.find_first_of('{') != std::string::npos)) { + return true; + } + return false; +} diff --git a/src/helics/common/configFileHelpers.hpp b/src/helics/common/configFileHelpers.hpp new file mode 100644 index 0000000000..5327c73aba --- /dev/null +++ b/src/helics/common/configFileHelpers.hpp @@ -0,0 +1,15 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "JsonProcessingFunctions.hpp" +#include "TomlProcessingFunctions.hpp" + +/** check if a string looks like a recognized file or a command line of some kind +Does not check actual file existence or do any other verification other than do a preliminary check if the string +could be a json|toml|ini file or looks like a json string, and if it does return true otherwise return false +*/ +bool looksLikeFile(const std::string& configString); diff --git a/tests/helics/application_api/ValueFederateAdditionalTests.cpp b/tests/helics/application_api/ValueFederateAdditionalTests.cpp index af5e250b00..9e3afba646 100644 --- a/tests/helics/application_api/ValueFederateAdditionalTests.cpp +++ b/tests/helics/application_api/ValueFederateAdditionalTests.cpp @@ -6,6 +6,7 @@ SPDX-License-Identifier: BSD-3-Clause */ #include "ValueFederateTestTemplates.hpp" +#include "helics/application_api/CoreApp.hpp" #include "helics/application_api/Publications.hpp" #include "helics/application_api/Subscriptions.hpp" #include "helics/application_api/ValueFederate.hpp" @@ -604,6 +605,47 @@ TEST_P(valuefed_add_configfile_tests, file_load) vFed.disconnect(); } +TEST(valuefed_json_tests, file_loadb) +{ + helics::ValueFederate vFed(std::string(TEST_DIR) + "example_value_fed_testb.json"); + + EXPECT_EQ(vFed.getName(), "valueFed2"); + + EXPECT_EQ(vFed.getInputCount(), 3); + EXPECT_EQ(vFed.getPublicationCount(), 2); + auto& id = vFed.getPublication("primary"); + + EXPECT_EQ(id.getName(), "valueFed2/pub2"); + + vFed.disconnect(); + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); +} + +TEST(valuefederate, toml_file_loadb) +{ + helics::ValueFederate vFed(std::string(TEST_DIR) + "example_value_fed_testb.toml"); + + EXPECT_EQ(vFed.getName(), "valueFed_toml"); + + EXPECT_EQ(vFed.getInputCount(), 3); + EXPECT_EQ(vFed.getPublicationCount(), 2); + auto& id = vFed.getPublication("primary"); + + EXPECT_EQ(id.getName(), "valueFed_toml/pub2"); + vFed.enterExecutingMode(); + vFed.disconnect(); +} + +TEST(valuefederate, toml_file_bad) +{ + EXPECT_THROW( + helics::ValueFederate vFed(std::string(TEST_DIR) + "example_value_fed_bad.toml"), + helics::InvalidParameter); + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); +} + INSTANTIATE_TEST_SUITE_P( valuefed_tests, valuefed_add_configfile_tests, @@ -611,8 +653,11 @@ INSTANTIATE_TEST_SUITE_P( TEST(valuefed_json_tests, json_publish) { + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); helics::FederateInfo fi(helics::core_type::TEST); fi.separator = '/'; + fi.coreName = "json_test2"; fi.coreInitString = "--autobroker"; helics::ValueFederate vFed("test2", fi); vFed.registerGlobalPublication("pub1"); @@ -650,8 +695,11 @@ TEST(valuefed_json_tests, json_publish) TEST(valuefed_json_tests, test_json_register_publish) { + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); helics::FederateInfo fi(helics::core_type::TEST); fi.separator = '/'; + fi.coreName = "core_pub_json"; fi.coreInitString = "--autobroker"; helics::ValueFederate vFed("test2", fi); @@ -679,6 +727,36 @@ TEST(valuefed_json_tests, test_json_register_publish) vFed.disconnect(); } +TEST(valuefed_json_tests, test_json_register_publish_error) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.separator = '/'; + fi.coreInitString = "--autobroker"; + helics::ValueFederate vFed("test2", fi); + + vFed.registerPublication("pub1"); + //this tests an already registered publication + vFed.registerFromPublicationJSON(std::string(TEST_DIR) + "example_pub_input1.json"); + auto& s1 = vFed.registerSubscription("test2/pub1"); + auto& s2 = vFed.registerSubscription("test2/pub2"); + auto& s3 = vFed.registerSubscription("test2/group1/pubA"); + auto& s4 = vFed.registerSubscription("test2/group1/pubB"); + + EXPECT_NO_THROW(vFed.registerFromPublicationJSON("{\"pub3\":45}")); + auto& s5 = vFed.registerSubscription("test2/pub3"); + vFed.enterExecutingMode(); + + vFed.publishJSON(std::string(TEST_DIR) + "example_pub_input1.json"); + EXPECT_NO_THROW(vFed.publishJSON("{\"pub3\":45}")); + vFed.requestTime(1.0); + EXPECT_EQ(s1.getValue(), 99.9); + EXPECT_EQ(s2.getValue(), "things"); + EXPECT_EQ(s3.getValue(), 45.7); + EXPECT_EQ(s4.getValue(), "count"); + EXPECT_EQ(s5.getValue(), 45.0); + vFed.disconnect(); +} + INSTANTIATE_TEST_SUITE_P( valuefed_tests, valuefed_add_single_type_tests_ci_skip, @@ -691,3 +769,308 @@ INSTANTIATE_TEST_SUITE_P( valuefed_tests, valuefed_add_all_type_tests_ci_skip, ::testing::ValuesIn(core_types_all)); + +TEST(valuefederate, coreApp) +{ + helics::CoreApp capp(helics::core_type::TEST, "corename", "-f 1 --autobroker"); + helics::FederateInfo fi(helics::core_type::TEST); + auto Fed1 = std::make_shared("vfed1", capp, fi); + EXPECT_NO_THROW(Fed1->enterExecutingMode()); + + Fed1->finalize(); +} + +TEST(valuefederate, core_ptr) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_ptr"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", nullptr, fi); + Fed1->enterExecutingMode(); + + EXPECT_THROW( + auto fed2 = std::make_shared("vfed2", nullptr, fi), + helics::RegistrationFailure); + Fed1->finalize(); +} + +TEST(valuefederate, from_file_bad) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + std::string fstr2 = "non_existing.toml"; + EXPECT_THROW(std::make_shared(fstr2), helics::InvalidParameter); +} + +TEST(valuefederate, from_file_bad2) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + auto fstr2 = "non_existing.toml"; + EXPECT_THROW(std::make_shared(fstr2), helics::InvalidParameter); +} + +TEST(valuefederate, from_file_bad3) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_bad_toml"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfedb", fi); + + auto fstr2 = "non_existing.toml"; + EXPECT_THROW(Fed1->registerInterfaces(fstr2), helics::InvalidParameter); + Fed1->finalize(); + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); +} + +TEST(valuefederate, pubAlias) +{ + helics::BrokerFactory::terminateAllBrokers(); + helics::CoreFactory::terminateAllCores(); + + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_alias"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", fi); + auto& pub1 = Fed1->registerPublication("", "parsecs"); + + Fed1->addAlias(pub1, "localPub"); + + auto& pub_a = Fed1->getPublication("localPub"); + + EXPECT_EQ(pub_a.getUnits(), pub1.getUnits()); + EXPECT_EQ(pub_a.getUnits(), "parsecs"); + + Fed1->enterExecutingMode(); + Fed1->finalize(); +} + +TEST(valuefederate, regJsonFailures) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_pjson"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", fi); + + EXPECT_THROW(Fed1->registerFromPublicationJSON("invalid.json"), helics::InvalidParameter); + + Fed1->enterExecutingMode(); + EXPECT_THROW(Fed1->publishJSON("invalid.json"), helics::InvalidParameter); + Fed1->finalize(); +} + +TEST(valuefederate, getInputs) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_ipt"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", fi); + + auto& id1 = Fed1->registerInput("inp1", "double", "V"); + Fed1->enterExecutingMode(); + + auto& ip2 = Fed1->getInput("inp1"); + EXPECT_TRUE(ip2.isValid()); + EXPECT_EQ(ip2.getName(), id1.getName()); + + const auto& cFed = *Fed1; + + auto& ip3 = cFed.getInput(0); + EXPECT_TRUE(ip3.isValid()); + EXPECT_EQ(ip3.getName(), id1.getName()); + + auto& ip4 = cFed.getInput("inp1"); + EXPECT_TRUE(ip4.isValid()); + EXPECT_EQ(ip4.getName(), id1.getName()); + + auto& ip5 = cFed.getInput("vfed1/inp1"); + EXPECT_TRUE(ip5.isValid()); + EXPECT_EQ(ip5.getName(), id1.getName()); + Fed1->finalize(); +} + +TEST(valuefederate, indexed_inputs) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_indexipt"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", fi); + + auto& id0 = Fed1->registerIndexedInput("inp", 0, "V"); + auto& id1 = Fed1->registerIndexedInput("inp", 1, "V"); + + auto& id2 = Fed1->registerIndexedInput("inp", 1, 1, "A"); + + Fed1->enterExecutingMode(); + + auto& ip2 = Fed1->getInput("inp", 0); + EXPECT_TRUE(ip2.isValid()); + EXPECT_EQ(ip2.getName(), id0.getName()); + + auto& ip3 = Fed1->getInput("inp", 1); + EXPECT_TRUE(ip3.isValid()); + EXPECT_EQ(ip3.getName(), id1.getName()); + + auto& ip4 = Fed1->getInput("inp", 1, 1); + EXPECT_TRUE(ip4.isValid()); + EXPECT_EQ(ip4.getName(), id2.getName()); + + Fed1->finalize(); +} + +TEST(valuefederate, indexed_pubs) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_indexpub"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", fi); + + auto& pz = Fed1->registerGlobalPublication("pubg", "volt*meters"); + + auto& plocal = Fed1->registerPublication("publocal", "W"); + + auto& p0 = Fed1->registerIndexedPublication("pub", 0, "V"); + auto& p1 = Fed1->registerIndexedPublication("pub", 1, "V"); + + auto& p2 = Fed1->registerIndexedPublication("pub", 1, 1, "A"); + + Fed1->registerSubscription("pubg"); + + Fed1->enterExecutingMode(); + + auto& ip2 = Fed1->getPublication("pub", 0); + EXPECT_TRUE(ip2.isValid()); + EXPECT_EQ(ip2.getName(), p0.getName()); + + auto& ip3 = Fed1->getPublication("pub", 1); + EXPECT_TRUE(ip3.isValid()); + EXPECT_EQ(ip3.getName(), p1.getName()); + + auto& ip4 = Fed1->getPublication("pub", 1, 1); + EXPECT_TRUE(ip4.isValid()); + EXPECT_EQ(ip4.getName(), p2.getName()); + + const auto& cFed = *Fed1; + + auto& pg3 = cFed.getPublication(0); + EXPECT_TRUE(pg3.isValid()); + EXPECT_EQ(pg3.getName(), pz.getName()); + + auto& pg4 = cFed.getPublication("pubg"); + EXPECT_TRUE(pg4.isValid()); + EXPECT_EQ(pg4.getName(), pz.getName()); + + auto& gs = cFed.getSubscription("pubg"); + EXPECT_TRUE(gs.isValid()); + EXPECT_EQ(gs.getTarget(), "pubg"); + + auto& pg5 = cFed.getPublication("publocal"); + EXPECT_TRUE(pg5.isValid()); + EXPECT_EQ(pg5.getName(), plocal.getName()); + + Fed1->finalize(); +} + +TEST(valuefederate, update_query) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_upd_query"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", fi); + auto& p1 = Fed1->registerIndexedPublication("pub", 1); + auto& p2 = Fed1->registerIndexedPublication("pub", 2); + auto& p3 = Fed1->registerIndexedPublication("pubb", 1, 1); + + auto& s1 = Fed1->registerIndexedSubscription("pub", 1); + auto& s2 = Fed1->registerIndexedSubscription("pub", 2); + auto& s3 = Fed1->registerIndexedSubscription("pubb", 1, 1); + + Fed1->enterExecutingMode(); + p1.publish(5); + Fed1->requestNextStep(); + auto upd = Fed1->queryUpdates(); + Fed1->clearUpdates(); + ASSERT_EQ(upd.size(), 1U); + EXPECT_EQ(upd[0], 0); + + p2.publish(3); + Fed1->requestNextStep(); + + upd = Fed1->queryUpdates(); + Fed1->clearUpdates(); + ASSERT_EQ(upd.size(), 1U); + EXPECT_EQ(upd[0], 1); + + p1.publish(6); + p2.publish(7); + Fed1->requestNextStep(); + + upd = Fed1->queryUpdates(); + Fed1->clearUpdates(); + ASSERT_EQ(upd.size(), 2U); + EXPECT_EQ(upd[0], 0); + + p1.publish(8); + p2.publish(9); + p3.publish(10); + Fed1->requestNextStep(); + + upd = Fed1->queryUpdates(); + EXPECT_TRUE(s1.isUpdated()); + EXPECT_TRUE(s2.isUpdated()); + EXPECT_TRUE(s3.isUpdated()); + + Fed1->clearUpdates(); + ASSERT_EQ(upd.size(), 3U); + EXPECT_EQ(upd[0], 0); + Fed1->requestNextStep(); + + upd = Fed1->queryUpdates(); + EXPECT_EQ(upd.size(), 0U); + + Fed1->finalize(); +} + +TEST(valuefederate, indexed_targets) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_ind_target"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("vfed1", fi); + auto& p1 = Fed1->registerIndexedPublication("pub", 1); + auto& p2 = Fed1->registerIndexedPublication("pub", 2); + auto& p3 = Fed1->registerIndexedPublication("pubb", 1, 1); + + auto& s1 = Fed1->registerInput(""); + auto& s2 = Fed1->registerInput(""); + auto& s3 = Fed1->registerInput(""); + + Fed1->addIndexedTarget(s1, "pub", 1); + Fed1->addIndexedTarget(s2, "pub", 2); + Fed1->addIndexedTarget(s3, "pubb", 1, 1); + Fed1->enterExecutingMode(); + + p1.publish(8); + p2.publish(9); + p3.publish(10); + Fed1->requestNextStep(); + + EXPECT_EQ(s1.getValue(), 8); + EXPECT_EQ(s2.getValue(), 9); + EXPECT_EQ(s3.getValue(), 10); + + Fed1->finalize(); +} diff --git a/tests/helics/application_api/ValueFederateKeyTests.cpp b/tests/helics/application_api/ValueFederateKeyTests.cpp index 7d3c5ac007..50a799a899 100644 --- a/tests/helics/application_api/ValueFederateKeyTests.cpp +++ b/tests/helics/application_api/ValueFederateKeyTests.cpp @@ -20,7 +20,7 @@ SPDX-License-Identifier: BSD-3-Clause /** these test cases test out the value federates */ -class valuefed_single_type_tests: +class valuefed_single_type: public ::testing::TestWithParam, public FederateTestFixture { }; @@ -33,7 +33,7 @@ class valuefed_all_type_tests: class valuefed_tests: public ::testing::Test, public FederateTestFixture { }; -TEST_P(valuefed_single_type_tests, subscriber_and_publisher_registration) +TEST_P(valuefed_single_type, subscriber_and_publisher_registration) { std::this_thread::sleep_for(std::chrono::milliseconds(100)); using namespace helics; @@ -87,7 +87,7 @@ TEST_P(valuefed_single_type_tests, subscriber_and_publisher_registration) EXPECT_TRUE(vFed1->getCurrentMode() == Federate::modes::finalize); } -TEST_P(valuefed_single_type_tests, single_transfer_publisher) +TEST_P(valuefed_single_type, single_transfer_publisher) { SetupTest(GetParam(), 1); auto vFed1 = GetFederateAs(0); @@ -486,7 +486,7 @@ TEST_F(valuefed_tests, dual_transfer_core_link_json_string) EXPECT_TRUE(res); } -TEST_P(valuefed_single_type_tests, init_publish) +TEST_P(valuefed_single_type, init_publish) { SetupTest(GetParam(), 1); auto vFed1 = GetFederateAs(0); @@ -529,7 +529,7 @@ TEST_P(valuefed_single_type_tests, init_publish) vFed1->finalize(); } -TEST_P(valuefed_single_type_tests, block_send_receive) +TEST_P(valuefed_single_type, block_send_receive) { SetupTest(GetParam(), 1); auto vFed1 = GetFederateAs(0); @@ -554,7 +554,7 @@ TEST_P(valuefed_single_type_tests, block_send_receive) /** test the all callback*/ -TEST_P(valuefed_single_type_tests, all_callback) +TEST_P(valuefed_single_type, all_callback) { SetupTest(GetParam(), 1, 1.0); auto vFed1 = GetFederateAs(0); @@ -616,7 +616,7 @@ TEST_P(valuefed_single_type_tests, all_callback) vFed1->finalize(); } -TEST_P(valuefed_single_type_tests, transfer_close) +TEST_P(valuefed_single_type, transfer_close) { SetupTest(GetParam(), 1); auto vFed1 = GetFederateAs(0); @@ -661,7 +661,7 @@ TEST_P(valuefed_single_type_tests, transfer_close) vFed1->finalize(); } -TEST_P(valuefed_single_type_tests, transfer_remove_target) +TEST_P(valuefed_single_type, transfer_remove_target) { SetupTest(GetParam(), 1); auto vFed1 = GetFederateAs(0); @@ -899,7 +899,7 @@ TEST_F(valuefed_tests, rem_target_single_test) vFed2->finalize(); } -TEST_P(valuefed_single_type_tests, dual_transfer_remove_target_input) +TEST_P(valuefed_single_type, dual_transfer_remove_target_input) { SetupTest(GetParam(), 2); auto vFed1 = GetFederateAs(0); @@ -963,7 +963,7 @@ TEST_P(valuefed_single_type_tests, dual_transfer_remove_target_input) INSTANTIATE_TEST_SUITE_P( valuefed_key_tests, - valuefed_single_type_tests, + valuefed_single_type, ::testing::ValuesIn(core_types_single)); INSTANTIATE_TEST_SUITE_P( valuefed_key_tests, diff --git a/tests/helics/test_files/example_value_fed_bad.toml b/tests/helics/test_files/example_value_fed_bad.toml new file mode 100644 index 0000000000..039499199a --- /dev/null +++ b/tests/helics/test_files/example_value_fed_bad.toml @@ -0,0 +1,23 @@ +#this is a incorrect toml file for testing some file checks. The publications should be an array instead of a single value + +name="vFed_toml" # the name of the federate + +coretype="test" #the type of the core "test","zmq","udp","icp","tcp","mpi" +corename="toml_test_bad" #this matters most for icp and test cores, can be empty +coreinit="--autobroker" # the initialization string for the core in the form of a command line arguments +period= 1.0 #the period with which federate may return time + +#subscriptions used in the federate (also example of inline table +#set required to true to make helics issue a warning if the publication is not found +#example of inline tables (be careful it falls under the most recent [section] or [[table]] +subscriptions=[ +{key="pub1", required=true}, + # shortcut is a naming shortcut for the publication for later retrieval +{key="vFed_toml/pub2", shortcut="pubshortcut", info="this is an information string for use by the application"} +] + +inputs=[ +{key="ipt2", type="double",flags="optional", target="pub1", global=true} +] #specify an input with a target + +publications="bad_pub" diff --git a/tests/helics/test_files/example_value_fed_testb.json b/tests/helics/test_files/example_value_fed_testb.json new file mode 100644 index 0000000000..c57838b3cc --- /dev/null +++ b/tests/helics/test_files/example_value_fed_testb.json @@ -0,0 +1,71 @@ +//this should be a valid json file (except comments are not recognized in standard JSON) +{ //example json configuration file for a value federate all arguments are optional + "name": "valueFed2", // the name of the federate + //possible flags + "observer": false, // indicator that the federate does not send anything + "rollback": false, // indicator that the federate can use rollback -NOTE: not used at present + "only_update_on_change": false, //indicator that the federate should only indicate updated values on change + "only_transmit_on_change": false, //indicator that the federate should only publish if the value changed + "source_only": false, //indicator that the federate is only a source and is not expected to receive anything + "uninterruptible": false, //indicator that the federate should only return requested times + "coretype": "test", //the type of the core "test","zmq","udp","ipc","tcp","mpi" + "corename": "testb_core", //this matters most for ipc and inproc cores, can be empty + "coreinit": "--autobroker", // the initialization string for the core in the form of a command line arguments + "max_iterations": 10, //the maximum number of iterations for a time step + "period": 1.0, //the period with which federate may return time + "offset": 0.0, // the offset shift in the period + "time_delta": 0.0, // the minimum time between subsequent return times + "output_delay": 0, //the propagation delay for federates to send data + "input_delay": 0, //the input delay for external data to propagate to federates + "log_level": 1, //specify the log level + + //Publications used in the federate + "publications": [ + { + "key": "pub1", // the name of the publication + "type": "double", // the type assocaited with a publication (optional) + "unit": "m", // the units associated with a publication (optional) + "global": true, //set to true to make the key global (default is false in which case the publication is prepended with the federate name) + "info": "this is an information string for use by the application", + "flags":["required","-optional"] + }, + { + "key": "pub2", // the name of the publication + "type": "double", // the type assocaited with a publication (optional) + //no global:true implies this will have the federate name prepended like valueFed/pub2 + "alias": "primary" + } + ], + //subscriptions used in the federate + "subscriptions": [ + { + "key": "pub1", // the key of the publication + "required": true, //set to true to make helics issue a warning if the publication is not found + "tolerance":0.3 + }, + { + "key": "fedName/pub2", // the name of the publication to subscribe to + "shortcut": "pubshortcut", //a naming shortcut for the publication for later retrieval + "info": "this is an information string for use by the application", + "optional":true //the subscription is optional + } + ], + + "inputs": [ + { + "key": "ipt2", + "type": "double", + "required": true, + "target": "pub1", + "global":true + } + //specify an input with a target multiple targets could be specified like "targets":["pub1","pub2","pub3"] + ], + + + "globals": [ + [ "global1", "this is a global1 value" ], + [ "global2", "this is another global value" ] + ] +} + diff --git a/tests/helics/test_files/example_value_fed_testb.toml b/tests/helics/test_files/example_value_fed_testb.toml new file mode 100644 index 0000000000..dc1642102e --- /dev/null +++ b/tests/helics/test_files/example_value_fed_testb.toml @@ -0,0 +1,37 @@ +#this is a toml configuration file for HELICS value federate +#example toml configuration file for a value federate all arguments are optional + +name="valueFed_toml" # the name of the federate + +coretype="test" #the type of the core "test","zmq","udp","icp","tcp","mpi" +corename="toml_testb" #this matters most for icp and test cores, can be empty +coreinit="--autobroker" # the initialization string for the core in the form of a command line arguments +period= 1.0 #the period with which federate may return time + +#subscriptions used in the federate (also example of inline table +#set required to true to make helics issue a warning if the publication is not found +#example of inline tables (be careful it falls under the most recent [section] or [[table]] +subscriptions=[ +{key="pub1", required=true}, + # shortcut is a naming shortcut for the publication for later retrieval +{key="valueFed_toml/pub2", shortcut="pubshortcut", info="this is an information string for use by the application"} +] + +inputs=[ +{key="ipt2", type="double",flags="optional", target="pub1", global=true} +] #specify an input with a target + + +#Publications used in the federate +[[publications]] +key="pub1" # the name of the publication + type="double" # the type assocaited with a publication (optional) + unit="m" # the units associated with a publication (optional) + global=true #set to true to make the key global (default is false in which case the publication is prepended with the federate name) + info="this is an information string for use by the application" + +[[publications]] +key="pub2" # the name of the publication + type="double" # the type assocaited with a publication (optional) + alias="primary" + #no global=true implies this will have the federate name prepended like valueFed/pub2 diff --git a/tests/helics/test_files/unusual_filters2.toml b/tests/helics/test_files/unusual_filters2.toml index 8e875d97f3..ef505eabbb 100644 --- a/tests/helics/test_files/unusual_filters2.toml +++ b/tests/helics/test_files/unusual_filters2.toml @@ -1,5 +1,7 @@ -#example toml configuration file for a message federate that also creates some filters -name="filterFed" # the name of the federate +#This is not a valid configuration file for HELICS. The Filter section needs to be an array +# This file is for testing some error handling inside HELICS + +name="filterFed_bad" # the name of the federate #possible flags observer=false # indicator that the federate does not send anything From 0015ad45acb7d63f24c8286c1bb121c8464ec2de Mon Sep 17 00:00:00 2001 From: Philip Top Date: Fri, 21 Feb 2020 09:10:18 -0800 Subject: [PATCH 06/32] Helics builder (#1090) * add helics-builder docker file * update changelog --- CHANGELOG.md | 3 +- config/Docker/Dockerfile-HELICS-builder | 40 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 config/Docker/Dockerfile-HELICS-builder diff --git a/CHANGELOG.md b/CHANGELOG.md index 751837458e..e3a5b9f4ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,12 +20,13 @@ Increased code coverage and additional bug fixes. ### Fixed - Issue with iterative requests that were not being honored if the federate was acting in isolation - A few pathways which would allow segmentation faults if a federate was disconnected and particular functions were called -- ValueFederate add indexedTargets, the function template would not work is was written and was unusable. +- ValueFederate `addIndexedTargets`, the function template would not work as was written and was unusable, it is now tested and operational. ### Added - `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is disabled. - A series of test for Federate.cpp to increase coverage on that file to 100% - A series of tests for ValueFederate.*pp to increase coverage on that file to 100% +- Docker image for a helics builder which includes build tools and the helics installation ### Deprecated diff --git a/config/Docker/Dockerfile-HELICS-builder b/config/Docker/Dockerfile-HELICS-builder new file mode 100644 index 0000000000..97b799f551 --- /dev/null +++ b/config/Docker/Dockerfile-HELICS-builder @@ -0,0 +1,40 @@ +# The docker build command should be run from the root folder of the HELICS source code repository with submodules cloned +# Some of the possible ways to get a working directory are: +# 1. clone the repository with git clone --recurse-submodules +# 2. run git submodule update --init after a normal git clone +# 3. download and extract a tar file from a HELICS release that includes submodules + +FROM helics/buildenv:gcc8-builder as builder + +# Copies the current directory from the host to use as the source code for building HELICS +COPY . /root/HELICS +WORKDIR /root + +# Sets the number of threads for make to use +ARG MAKE_PARALLEL + +# Set ENABLE_GITHUB to true if you have only downloaded this Dockerfile without the rest of the HELICS source code repository +# For users, it is recommended to just pull an already built Docker image from Docker Hub (building can take up to 30 minutes) +ARG ENABLE_GITHUB=false +ARG GIT_BRANCH=develop + +# Remove the copied source directory and replace it with a GitHub clone +# The git clone part of this line shows how to recursively clone a specific branch from a git repository +RUN if [ "${ENABLE_GITHUB-}" = "true" ]; then rm -rf HELICS && git clone --depth 1 --recurse-submodules --branch $GIT_BRANCH https://github.com/GMLC-TDC/HELICS; fi + +# Generates the makefiles for building HELICS without tests, examples, C shared library, or the IPC core +# Build type is set to release for the optimized binaries (and smaller size) +RUN mkdir build && cd build && cmake -DHELICS_BUILD_TESTS=OFF -DHELICS_BUILD_CXX_SHARED_LIB=ON\ + -DHELICS_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/root/develop/helics-install /root/HELICS + +# Compile and install HELICS to a temporary prefix (for easy copying to the final image) +RUN cd build && make -j${MAKE_PARALLEL:-2} install + +############################################################################## + +# Create final image with the HELICS libraries ready to link +FROM helics/buildenv:gcc8-builder + +# Copy the HELICS install from the builder image stage above to a location in the PATH env var +COPY --from=builder /root/develop/helics-install /usr From e5c3ab6a29c396017ffdb458fb235976921f4bf8 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Fri, 21 Feb 2020 11:32:30 -0800 Subject: [PATCH 07/32] Remove VS2015 Windows Server 2012 CI build (#1071) * Remove VS2015 Windows Server 2012 CI build * Set addToPath=true for using Python instead of relying on the default value * Update CHANGELOG.md * Update CHANGELOG.md Co-authored-by: Philip Top --- .ci/azure-pipelines.yml | 20 ++------------------ CHANGELOG.md | 3 ++- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/.ci/azure-pipelines.yml b/.ci/azure-pipelines.yml index 1a4858b212..51c57cd9ec 100644 --- a/.ci/azure-pipelines.yml +++ b/.ci/azure-pipelines.yml @@ -2,10 +2,6 @@ jobs: - job: Windows strategy: matrix: - VS2015-64bit: - imageName: "vs2015-win2012r2" - langArch: "x64" - vsArch: "x64" VS2017-32bit: imageName: "vs2017-win2016" langArch: "x86" @@ -25,14 +21,6 @@ jobs: # ----------------------- # Install dependencies # ----------------------- - - powershell: | - Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) - echo "##vso[task.prependpath]C:\\ProgramData\\chocolatey\\bin" - choco install boost-msvc-14.1 cmake --yes --limit-output - echo "##vso[task.prependpath]C:\\Program Files\\CMake\\bin" - condition: eq( variables['imageName'], 'vs2015-win2012r2' ) - displayName: Install chocolatey, boost, and newer cmake - - bash: choco install swig --yes --limit-output condition: eq( variables['Agent.OS'], 'Windows_NT' ) displayName: Install swig @@ -40,11 +28,10 @@ jobs: - task: UsePythonVersion@0 inputs: versionSpec: '3.5' + addToPath: true architecture: $(langArch) - condition: ne( variables['imageName'], 'vs2015-win2012r2' ) - bash: pip3 install pytest - condition: ne( variables['imageName'], 'vs2015-win2012r2' ) displayName: Install pytest # ----------------------- @@ -66,7 +53,7 @@ jobs: inputs: cmakeArgs: -DBUILD_JAVA_INTERFACE=ON . displayName: 'Configure Java interface' - condition: and(ne( variables['imageName'], 'vs2015-win2012r2' ), eq( variables['langArch'], 'x64' )) + condition: eq( variables['langArch'], 'x64' ) # ----------------------- # Build HELICS @@ -84,20 +71,17 @@ jobs: "${cpack_dir}/cpack" -G "NSIS" -C Release -B "$PWD/installer-output" displayName: 'Package HELICS' workingDirectory: build - condition: ne( variables['imageName'], 'vs2015-win2012r2' ) - task: CopyFiles@2 inputs: sourceFolder: '$(Build.SourcesDirectory)/build/installer-output' contents: '*.exe' TargetFolder: '$(Build.ArtifactStagingDirectory)' - condition: ne( variables['imageName'], 'vs2015-win2012r2' ) - task: PublishBuildArtifacts@1 inputs: pathtoPublish: '$(Build.ArtifactStagingDirectory)' artifactName: installer - condition: ne( variables['imageName'], 'vs2015-win2012r2' ) # ----------------------- # Test HELICS diff --git a/CHANGELOG.md b/CHANGELOG.md index e3a5b9f4ba..452298cde4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,8 @@ Increased code coverage and additional bug fixes. ### Deprecated ### Removed -- `HELICS_ENABLE_WEBSERVER` option to enable the webserver. This option was added as experimental in 2.4.0 +- `HELICS_ENABLE_WEBSERVER` option to enable the webserver. This option was added as experimental in 2.4.0 +- VS2015 Windows Server 2012 CI build is removed. Azure Pipelines is [removing the image](https://devblogs.microsoft.com/devops/removing-older-images-in-azure-pipelines-hosted-pools/) because it is outdated and sees little use. VS2015 is still tested through Appveyor for the time being. ## [2.4.0][] - 2020-02-04 From 3a226830e0b96cd06e13fe7488175c41caed6132 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 25 Feb 2020 12:22:05 -0800 Subject: [PATCH 08/32] Cmake new policy (#1093) * adjust the cmake policy to actually use the new policy and figure out where the issues with the old policies lie * tweak some of the python cmake swig stuff to use proper target naming * try to adjust the java cmake commands and fix compiler warning * update the java target using alias targets * try different addLoadLibraryCommand.cmake * update copyright dates on some files and adjust the CSharp cmake with the updated policy(I don't think it was even available on the old policy) * update version policy for subdirectory as root cases and some more date updates --- CMakeLists.txt | 28 ++++------- benchmarks/CMakeLists.txt | 7 ++- interfaces/CMakeLists.txt | 13 +----- interfaces/csharp/CMakeLists.txt | 10 ++-- interfaces/java/CMakeLists.txt | 46 ++++++++++--------- interfaces/java/addLoadLibraryCommand.cmake | 6 +-- interfaces/java/javaSwigGenerateOnly.cmake | 2 +- interfaces/java/overwriteJavaFiles.cmake | 2 +- .../matlab/generateMEXcreationScript.cmake | 2 +- .../matlab/matlabSwigGenerateOnly.cmake | 2 +- interfaces/matlab/overwriteMatlabFiles.cmake | 2 +- interfaces/octave/README.md | 2 +- .../octave/generateOCTcreationScript.cmake | 2 +- interfaces/octave/modifyOctSourceFile.cmake | 2 +- interfaces/python/CMakeLists.txt | 27 +++++------ src/CMakeLists.txt | 8 +++- src/helics/CMakeLists.txt | 3 +- src/helics/common/configFileHelpers.cpp | 1 - tests/CMakeLists.txt | 5 ++ tests/java/CMakeLists.txt | 8 ++-- tests/java/HelloWorld.java | 2 +- 21 files changed, 89 insertions(+), 91 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fa4003959..eb21fddd9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,32 +8,24 @@ # ~~~ cmake_minimum_required(VERSION 3.4) -cmake_policy(VERSION 3.4) - -project(HELICS VERSION 2.4.0) - -if(POLICY CMP0069) - # Policy CMP0069 INTERPROCEDURAL OPTIMIZATION, just use the new policy since this - # isn't used for old systems - cmake_policy(SET CMP0069 NEW) -endif() - -if(POLICY CMP0074) - # Policy CMP0074 find_package uses _ROOT variables - cmake_policy(SET CMP0074 NEW) +# Make sure users don't get warnings on a tested (3.4 to 3.16) version +# of CMake. For most of the policies, the new version is better (hence the change). +# We don't use the 3.0...3.16 syntax because of a bug in MSVC 15.7 +# built-in and modified CMake 3.11 +if(CMAKE_VERSION VERSION_LESS 3.16) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) +else() + cmake_policy(VERSION 3.16) endif() -if(POLICY CMP0076) - # Policy CMP0074 target_sources now converts relative paths to absolute - cmake_policy(SET CMP0076 NEW) -endif() +project(HELICS VERSION 2.4.1) # ----------------------------------------------------------------------------- # HELICS Version number # ----------------------------------------------------------------------------- set(HELICS_VERSION_BUILD) # use ISO date YYYY-MM-DD -set(HELICS_DATE "2020-02-04") +set(HELICS_DATE "2020-02-21") set(HELICS_VERSION_UNDERSCORE "${HELICS_VERSION_MAJOR}_${HELICS_VERSION_MINOR}_${HELICS_VERSION_PATCH}" diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 2cc191e16f..a05807782c 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -10,12 +10,17 @@ get_directory_property(hasParent PARENT_DIRECTORY) if(hasParent) if (CMAKE_VERSION VERSION_LESS 3.5.1) - message(FATAL_ERROR "Google benchmarks requires cmake version 3.5.1 or higher") + message(FATAL_ERROR "Google benchmarks requires CMake version 3.5.1 or higher") endif() include(AddGooglebenchmark) add_subdirectory(helics) else() cmake_minimum_required(VERSION 3.5.1) + if(CMAKE_VERSION VERSION_LESS 3.16) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) + else() + cmake_policy(VERSION 3.16) + endif() set(HELICS_BUILD_TESTS OFF CACHE INTERNAL "") set(BUILD_PYTHON_INTERFACE OFF CACHE INTERNAL "") set(BUILD_PYTHON2_INTERFACE OFF CACHE INTERNAL "") diff --git a/interfaces/CMakeLists.txt b/interfaces/CMakeLists.txt index f86f82056a..d548de63cb 100644 --- a/interfaces/CMakeLists.txt +++ b/interfaces/CMakeLists.txt @@ -100,6 +100,7 @@ if(HELICS_ENABLE_SWIG OR swig_required) set( CMAKE_PROGRAM_PATH "C:/ProgramData/chocolatey/bin" + "C:/local/swigwin-4.0.1" "C:/local/swigwin-4.0.0" "C:/local/swigwin-3.0.12" "C:/local/swigwin-3.0.11" @@ -110,6 +111,7 @@ if(HELICS_ENABLE_SWIG OR swig_required) CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH}" "C:/ProgramData/chocolatey/bin" + "C:/local/swigwin-4.0.1" "C:/local/swigwin-4.0.0" "C:/local/swigwin-3.0.12" "C:/local/swigwin-3.0.11" @@ -117,17 +119,6 @@ if(HELICS_ENABLE_SWIG OR swig_required) ) endif() endif() - if(POLICY CMP0078) - # Policy CMP0078 introduced since CMake 3.13.2 so if we want to be compatible - # this affects the targets generated by swig with older versions (see - # cmake_minimum_required) we should put 'cmake_policy' under condition. - cmake_policy(SET CMP0078 OLD) - endif() - if(POLICY CMP0086) - # Policy CMP0086 the old behavior is assumed in the java interface, TODO: PT - # examine its usage and implications for now leave it at the OLD - cmake_policy(SET CMP0086 OLD) - endif() find_package(SWIG 3 REQUIRED) include(${SWIG_USE_FILE}) endif() diff --git a/interfaces/csharp/CMakeLists.txt b/interfaces/csharp/CMakeLists.txt index 57174fef4d..1d3e79cdf6 100644 --- a/interfaces/csharp/CMakeLists.txt +++ b/interfaces/csharp/CMakeLists.txt @@ -27,23 +27,23 @@ if(SWIG_EXECUTABLE) swig_link_libraries(CShelics helicsSharedLib) - set_target_properties(CShelics PROPERTIES FOLDER interfaces) + set_target_properties(${SWIG_MODULE_CShelics_REAL_NAME} PROPERTIES FOLDER interfaces) else() message(SEND_ERROR "C# interface build requires swig") endif() # SWIG_EXECUTABLE # Set the output library name to _helics -set_target_properties(CShelics PROPERTIES DEBUG_POSTFIX "") +set_target_properties(${SWIG_MODULE_CShelics_REAL_NAME} PROPERTIES DEBUG_POSTFIX "") -copy_key_files_to_target_location(CShelics) -copy_shared_target(CShelics helicsSharedLib) +copy_key_files_to_target_location(${SWIG_MODULE_CShelics_REAL_NAME}) +copy_shared_target(${SWIG_MODULE_CShelics_REAL_NAME} helicsSharedLib) install_key_files_with_comp(csharp) install( TARGETS - CShelics + ${SWIG_MODULE_CShelics_REAL_NAME} DESTINATION csharp COMPONENT diff --git a/interfaces/java/CMakeLists.txt b/interfaces/java/CMakeLists.txt index d25350a65e..073b941da7 100644 --- a/interfaces/java/CMakeLists.txt +++ b/interfaces/java/CMakeLists.txt @@ -21,17 +21,17 @@ else() if(HELICS_ENABLE_SWIG AND SWIG_EXECUTABLE) # Enable generation using swig - set_property(SOURCE helicsJava.i PROPERTY SWIG_MODULE_NAME JNIhelics) + set_property(SOURCE helicsJava.i PROPERTY SWIG_MODULE_NAME helics) set(CMAKE_SWIG_FLAGS "-package;com.java.helics") - if(SWIG_VERSION VERSION_GREATER "4.0.0") + if(SWIG_VERSION VERSION_GREATER 4.0.0) set(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} "-doxygen") endif() if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.7) swig_add_library( - JNIhelics + helicsJava TYPE MODULE LANGUAGE @@ -40,18 +40,20 @@ else() helicsJava.i ) else() - swig_add_module(JNIhelics java helicsJava.i) + swig_add_module(helicsJava java helicsJava.i) endif() - swig_link_libraries(JNIhelics helicsSharedLib) - swig_link_libraries(JNIhelics ${JAVA_LIBRARIES}) + swig_link_libraries(helicsJava helicsSharedLib) + swig_link_libraries(helicsJava ${JAVA_LIBRARIES}) - set_target_properties(JNIhelics PROPERTIES FOLDER interfaces) + set_target_properties(${SWIG_MODULE_helicsJava_REAL_NAME} PROPERTIES FOLDER interfaces) # get rid of some annoying warnings coming from swig generated code if(NOT MSVC) - target_compile_options(JNIhelics PRIVATE "-Wno-strict-aliasing") + target_compile_options(${SWIG_MODULE_helicsJava_REAL_NAME} PRIVATE "-Wno-strict-aliasing") endif() - + add_library(helics::java ALIAS ${SWIG_MODULE_helicsJava_REAL_NAME}) + message(STATUS "java target is ${SWIG_MODULE_helicsJava_REAL_NAME}") + set(HELICS_JAVA_TARGET ${SWIG_MODULE_helicsJava_REAL_NAME}) else() file( @@ -62,9 +64,11 @@ else() # Update if necessary set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long") endif() - add_library(JNIhelics SHARED interface/helicsJava.c) - target_link_libraries(JNIhelics helicsSharedLib ${JAVA_LIBRARIES}) - set_target_properties(JNIhelics PROPERTIES FOLDER interfaces) + add_library(helicsJava SHARED interface/helicsJava.c) + target_link_libraries(helicsJava helicsSharedLib ${JAVA_LIBRARIES}) + set_target_properties(helicsJava PROPERTIES FOLDER interfaces) + add_library(helics::java ALIAS helicsJava) + set(HELICS_JAVA_TARGET helicsJava) endif() # HELICS_ENABLE_SWIG configure_file(MakeJarCMakeLists.txt.in ${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.txt @@ -72,27 +76,27 @@ else() file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/buildjar/) - # -D ADDITIONAL_JAR_FILES=$;$ + # -D ADDITIONAL_JAR_FILES=$;$ add_custom_command( - TARGET "JNIhelics" POST_BUILD + TARGET ${HELICS_JAVA_TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} -D - LIBRARY_FILE=$ + LIBRARY_FILE=$ -P ${CMAKE_CURRENT_SOURCE_DIR}/addLoadLibraryCommand.cmake ) if (CMAKE_GENERATOR_PLATFORM) add_custom_command( - TARGET "JNIhelics" POST_BUILD + TARGET ${HELICS_JAVA_TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -G ${CMAKE_GENERATOR} -A ${CMAKE_GENERATOR_PLATFORM} .. WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/buildjar" VERBATIM ) else() add_custom_command( - TARGET "JNIhelics" POST_BUILD + TARGET ${HELICS_JAVA_TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -G ${CMAKE_GENERATOR} .. WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/buildjar" VERBATIM @@ -101,7 +105,7 @@ endif() add_custom_command( - TARGET "JNIhelics" POST_BUILD + TARGET ${HELICS_JAVA_TARGET} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS @@ -114,8 +118,8 @@ endif() VERBATIM ) - copy_key_files_to_target_location(JNIhelics) - copy_shared_target(JNIhelics helicsSharedLib) + copy_key_files_to_target_location(${HELICS_JAVA_TARGET}) + copy_shared_target(${HELICS_JAVA_TARGET} helicsSharedLib) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/buildjar/helics-${HELICS_VERSION}.jar @@ -132,7 +136,7 @@ endif() install_key_files_with_comp(java) install( TARGETS - JNIhelics + ${HELICS_JAVA_TARGET} DESTINATION java COMPONENT diff --git a/interfaces/java/addLoadLibraryCommand.cmake b/interfaces/java/addLoadLibraryCommand.cmake index ba86e70a5b..760d274a0b 100644 --- a/interfaces/java/addLoadLibraryCommand.cmake +++ b/interfaces/java/addLoadLibraryCommand.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. @@ -8,10 +8,10 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # addLoadLibraryCommand.cmake -#adds a load library function to the JNIHelics.java +#adds a load library function to the helics.java if (NOT LIBRARY_FILE) -set(LIBRARY_FILE JNIhelics) +set(LIBRARY_FILE helics) else() get_filename_component(LIBRARY_FILE ${LIBRARY_FILE} NAME_WE) STRING(REGEX REPLACE "^lib" "" LIBRARY_FILE ${LIBRARY_FILE}) diff --git a/interfaces/java/javaSwigGenerateOnly.cmake b/interfaces/java/javaSwigGenerateOnly.cmake index fcfc3bd49f..3a14a1cd2c 100644 --- a/interfaces/java/javaSwigGenerateOnly.cmake +++ b/interfaces/java/javaSwigGenerateOnly.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. diff --git a/interfaces/java/overwriteJavaFiles.cmake b/interfaces/java/overwriteJavaFiles.cmake index 364ffd29b5..e147f0b68a 100644 --- a/interfaces/java/overwriteJavaFiles.cmake +++ b/interfaces/java/overwriteJavaFiles.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. diff --git a/interfaces/matlab/generateMEXcreationScript.cmake b/interfaces/matlab/generateMEXcreationScript.cmake index 6c5b4ebb89..4b4bd86efd 100644 --- a/interfaces/matlab/generateMEXcreationScript.cmake +++ b/interfaces/matlab/generateMEXcreationScript.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. diff --git a/interfaces/matlab/matlabSwigGenerateOnly.cmake b/interfaces/matlab/matlabSwigGenerateOnly.cmake index d6b6083ef7..811da4fb14 100644 --- a/interfaces/matlab/matlabSwigGenerateOnly.cmake +++ b/interfaces/matlab/matlabSwigGenerateOnly.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. diff --git a/interfaces/matlab/overwriteMatlabFiles.cmake b/interfaces/matlab/overwriteMatlabFiles.cmake index 094723cfda..19100bf8a2 100644 --- a/interfaces/matlab/overwriteMatlabFiles.cmake +++ b/interfaces/matlab/overwriteMatlabFiles.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. diff --git a/interfaces/octave/README.md b/interfaces/octave/README.md index 13d36673bd..6710a5f550 100644 --- a/interfaces/octave/README.md +++ b/interfaces/octave/README.md @@ -6,6 +6,6 @@ ## BUILD HELICS with the Octave interface -In cmake turn on the BUILD_OCTAVE_INTERFACE option +In CMake turn on the BUILD_OCTAVE_INTERFACE option a file helics.oct will be created and placed in /octave directory along with the needed libraries diff --git a/interfaces/octave/generateOCTcreationScript.cmake b/interfaces/octave/generateOCTcreationScript.cmake index fe77bfde98..5a27500dc4 100644 --- a/interfaces/octave/generateOCTcreationScript.cmake +++ b/interfaces/octave/generateOCTcreationScript.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. diff --git a/interfaces/octave/modifyOctSourceFile.cmake b/interfaces/octave/modifyOctSourceFile.cmake index af7406d781..969573afeb 100644 --- a/interfaces/octave/modifyOctSourceFile.cmake +++ b/interfaces/octave/modifyOctSourceFile.cmake @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. diff --git a/interfaces/python/CMakeLists.txt b/interfaces/python/CMakeLists.txt index 400778682d..de3c3b9058 100644 --- a/interfaces/python/CMakeLists.txt +++ b/interfaces/python/CMakeLists.txt @@ -15,9 +15,10 @@ get_directory_property(hasParent PARENT_DIRECTORY) if(NOT hasParent) message(STATUS "Standalone Python interface build") - # find_package() searches prefixes given in _ROOT CMake variable - if(POLICY CMP0074) - cmake_policy(SET CMP0074 NEW) + if(CMAKE_VERSION VERSION_LESS 3.16) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) + else() + cmake_policy(VERSION 3.16) endif() # Setup options @@ -80,12 +81,6 @@ endif() if(HELICS_ENABLE_SWIG OR HELICS_SWIG_GENERATE_INTERFACE_FILES_ONLY) # Find SWIG if(NOT DEFINED SWIG_FOUND OR SWIG_VERSION VERSION_LESS 3) - if(POLICY CMP0078) - cmake_policy(SET CMP0078 OLD) - endif() - if(POLICY CMP0086) - cmake_policy(SET CMP0086 OLD) - endif() find_package(SWIG 3 REQUIRED) include(${SWIG_USE_FILE}) endif() @@ -229,28 +224,30 @@ if(HELICS_ENABLE_SWIG AND SWIG_EXECUTABLE) endif() if(USE_MODERNIZED_SWIG) - target_include_directories(_helics PRIVATE ${HELICS_Python_INCLUDE_DIRS}) + target_include_directories(${SWIG_MODULE_helics_REAL_NAME} PRIVATE ${HELICS_Python_INCLUDE_DIRS}) message(STATUS "Using new swig target_include_directories") endif() if(MSVC) - target_compile_options(_helics PRIVATE "/wd4100") + target_compile_options(${SWIG_MODULE_helics_REAL_NAME} PRIVATE "/wd4100") else(MSVC) - target_compile_options(_helics PRIVATE "-Wno-long-long") + target_compile_options(${SWIG_MODULE_helics_REAL_NAME} PRIVATE "-Wno-long-long") endif(MSVC) - set_target_properties(_helics PROPERTIES FOLDER interfaces) + message(STATUS "swig target is ${SWIG_MODULE_helics_REAL_NAME}") + + set_target_properties(${SWIG_MODULE_helics_REAL_NAME} PROPERTIES FOLDER interfaces) install( TARGETS - _helics + ${SWIG_MODULE_helics_REAL_NAME} DESTINATION python COMPONENT python ) - set(HELICS_PYTHON_TARGET_NAME _helics) + set(HELICS_PYTHON_TARGET_NAME ${SWIG_MODULE_helics_REAL_NAME}) else() message(STATUS "Building without swig") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index eedecbb323..3a9d97c984 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. @@ -12,6 +12,12 @@ if(hasParent) add_subdirectory(helics) else() cmake_minimum_required(VERSION 3.4) + if(CMAKE_VERSION VERSION_LESS 3.16) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) + else() + cmake_policy(VERSION 3.16) + endif() + set(HELICS_BUILD_TESTS OFF CACHE INTERNAL "" diff --git a/src/helics/CMakeLists.txt b/src/helics/CMakeLists.txt index 652c8c4677..ceaab1c6b2 100644 --- a/src/helics/CMakeLists.txt +++ b/src/helics/CMakeLists.txt @@ -1,5 +1,5 @@ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Copyright (c) 2017-2019, Battelle Memorial Institute; Lawrence Livermore +# Copyright (c) 2017-2020, Battelle Memorial Institute; Lawrence Livermore # National Security, LLC; Alliance for Sustainable Energy, LLC. # See the top-level NOTICE for additional details. # All rights reserved. @@ -32,7 +32,6 @@ target_include_directories( # Add the main HELICS libraries # ------------------------------------------------------------- - add_subdirectory(common) add_subdirectory(core) add_subdirectory(application_api) diff --git a/src/helics/common/configFileHelpers.cpp b/src/helics/common/configFileHelpers.cpp index a9ed2025e3..5f53a7517f 100644 --- a/src/helics/common/configFileHelpers.cpp +++ b/src/helics/common/configFileHelpers.cpp @@ -4,7 +4,6 @@ Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#pragma once #include "configFileHelpers.hpp" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7fc293e5f3..2f31a9d56d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -37,6 +37,11 @@ if(hasParent) else() cmake_minimum_required(VERSION 3.4) + if(CMAKE_VERSION VERSION_LESS 3.16) + cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) + else() + cmake_policy(VERSION 3.16) + endif() set(HELICS_BUILD_TESTS ON CACHE INTERNAL "" diff --git a/tests/java/CMakeLists.txt b/tests/java/CMakeLists.txt index 58c71a7428..6b69cd80c0 100644 --- a/tests/java/CMakeLists.txt +++ b/tests/java/CMakeLists.txt @@ -23,7 +23,7 @@ add_custom_target( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/HelloWorld.java DEPENDS - JNIhelics + helics::java ${CMAKE_BINARY_DIR}/interfaces/java/buildjar/helics-${HELICS_VERSION}.jar COMMENT "Building HelloWorld.java" VERBATIM @@ -39,7 +39,7 @@ add_custom_target( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/JavaHelicsApiTests.java DEPENDS - JNIhelics + helics::java ${CMAKE_BINARY_DIR}/interfaces/java/buildjar/helics-${HELICS_VERSION}.jar COMMENT "Building JavaHelicsApiTests.java" VERBATIM @@ -60,7 +60,7 @@ add_test( NAME Java_hello_world_test COMMAND ${Java_JAVA_EXECUTABLE} - -Djava.library.path=$ + -Djava.library.path=$ -classpath "${java_test_classpath}" HelloWorld @@ -70,7 +70,7 @@ add_test( NAME Java_Helics_Api_tests COMMAND ${Java_JAVA_EXECUTABLE} - -Djava.library.path=$ + -Djava.library.path=$ -classpath "${java_test_classpath}" JavaHelicsApiTests diff --git a/tests/java/HelloWorld.java b/tests/java/HelloWorld.java index d92d74d663..efa8823244 100644 --- a/tests/java/HelloWorld.java +++ b/tests/java/HelloWorld.java @@ -3,7 +3,7 @@ public class HelloWorld { public static void main(String[] args) { - System.loadLibrary("JNIhelics"); + System.loadLibrary("helicsJava"); System.out.println("HELICS Version: " + helics.helicsGetVersion()); } From 79e614f2df278c18419c97eaa8af6c9329de6bad Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Tue, 25 Feb 2020 13:01:48 -0800 Subject: [PATCH 09/32] Add multinode support to benchmark federates using a common base federate (#1091) * Convert benchmark federates to a shared base federate to enable easier multinode support * Cleanup codacy warnings * Convert timing benchmark to multinode capable federate * Update CHANGELOG.md * Comment the BenchmarkFederate class functions and member variables * Add const ref to BenchmarkFederate construct argument - suggestion from codacy * Automated formatting of source files (#1092) * Make a few more params const ref - codacy * Delete testVirtVar.cpp * Changes based on PR comments and Codacy * Add an optional override for benchmarks to setup custom output results * Switch to brace initialization * Switch to two templated BenchmarkFederate initialize methods * Combine standalone benchmark federates into a single executable * Update BenchmarkMain.cpp * Automated formatting of source files (#1094) * Allow underscores in subcommand names and switch to add_flag_callback for printing system info * Automated formatting of source files (#1096) * Move member variables in BenchmarkFederate around for alignment * Remove extraneous comment Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 2 + benchmarks/helics/BenchmarkFederate.hpp | 318 ++++++++++++++++++ benchmarks/helics/BenchmarkMain.cpp | 88 +++++ benchmarks/helics/CMakeLists.txt | 26 +- benchmarks/helics/EchoHubFederate.hpp | 58 ++++ benchmarks/helics/EchoLeafFederate.hpp | 54 +++ benchmarks/helics/EchoMessage.hpp | 140 -------- benchmarks/helics/EchoMessageHubFederate.hpp | 45 +++ benchmarks/helics/EchoMessageLeafFederate.hpp | 53 +++ benchmarks/helics/MessageExchangeFederate.hpp | 67 ++++ benchmarks/helics/PholdFederate.hpp | 148 ++++---- benchmarks/helics/PholdFederateMain.cpp | 115 ------- benchmarks/helics/RingTransmitFederate.hpp | 71 ++++ .../helics/RingTransmitMessageFederate.hpp | 69 ++++ benchmarks/helics/TimingHubFederate.hpp | 53 +++ benchmarks/helics/TimingLeafFederate.hpp | 44 +++ benchmarks/helics/echoBenchmarks.cpp | 156 +-------- benchmarks/helics/echoMessageBenchmarks.cpp | 13 +- benchmarks/helics/filterBenchmarks.cpp | 13 +- benchmarks/helics/helics_benchmark_util.h | 2 + benchmarks/helics/messageSendBenchmarks.cpp | 92 +---- benchmarks/helics/pholdBenchmarks.cpp | 23 +- benchmarks/helics/ringBenchmarks.cpp | 94 +----- benchmarks/helics/ringMessageBenchmarks.cpp | 90 +---- benchmarks/helics/timingBenchmarks.cpp | 141 +------- 25 files changed, 1070 insertions(+), 905 deletions(-) create mode 100644 benchmarks/helics/BenchmarkFederate.hpp create mode 100644 benchmarks/helics/BenchmarkMain.cpp create mode 100644 benchmarks/helics/EchoHubFederate.hpp create mode 100644 benchmarks/helics/EchoLeafFederate.hpp delete mode 100644 benchmarks/helics/EchoMessage.hpp create mode 100644 benchmarks/helics/EchoMessageHubFederate.hpp create mode 100644 benchmarks/helics/EchoMessageLeafFederate.hpp create mode 100644 benchmarks/helics/MessageExchangeFederate.hpp delete mode 100644 benchmarks/helics/PholdFederateMain.cpp create mode 100644 benchmarks/helics/RingTransmitFederate.hpp create mode 100644 benchmarks/helics/RingTransmitMessageFederate.hpp create mode 100644 benchmarks/helics/TimingHubFederate.hpp create mode 100644 benchmarks/helics/TimingLeafFederate.hpp diff --git a/CHANGELOG.md b/CHANGELOG.md index 452298cde4..337c98e354 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ Increased code coverage and additional bug fixes. - Update filesystem library to [v1.3.0](https://github.com/gulrak/filesystem/releases/tag/v1.3.0) - The behavior of the Federate *Complete operations to be uniform and consistent - Configuration of flags and targets for interfaces in json and toml files can be done in multiple sections +- The benchmark federates have been changed to use a common base benchmark federate class for more consistent behavior ### Fixed - Issue with iterative requests that were not being honored if the federate was acting in isolation @@ -27,6 +28,7 @@ Increased code coverage and additional bug fixes. - A series of test for Federate.cpp to increase coverage on that file to 100% - A series of tests for ValueFederate.*pp to increase coverage on that file to 100% - Docker image for a helics builder which includes build tools and the helics installation +- Standalone benchmark federates for use in multinode benchmark runs ### Deprecated diff --git a/benchmarks/helics/BenchmarkFederate.hpp b/benchmarks/helics/BenchmarkFederate.hpp new file mode 100644 index 0000000000..3d903eb1c3 --- /dev/null +++ b/benchmarks/helics/BenchmarkFederate.hpp @@ -0,0 +1,318 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ +#pragma once + +#include "helics/application_api/CombinationFederate.hpp" +#include "helics/core/ActionMessage.hpp" +#include "helics/core/helicsCLI11.hpp" +#include "helics/helics-config.h" +#include "helics_benchmark_util.h" + +#include +#include +#include +#include + +using namespace helics; +/** class implementing common functionality for benchmarks */ +class BenchmarkFederate { + public: + enum class OutputFormat { + PLAIN_TEXT, + // JSON + }; + + public: + // getters and setters for parameters + /** sets the delta time parameter + * @param dt the delta time to set + */ + void setDeltaTime(helics::Time dt) { deltaTime = dt; } + /** gets the delta time parameter*/ + helics::Time getDeltaTime() { return deltaTime; } + /** sets the final time parameter + * @param t the final/stop time*/ + void setFinalTime(helics::Time t) { finalTime = t; } + /** gets the final time parameter*/ + helics::Time getFinalTime() { return finalTime; } + + /** sets the index parameter + * @param i the index + */ + void setIndex(int i) { index = i; } + /** gets the index parameter*/ + int getIndex() { return index; } + /** sets the max index parameter + * @param i the max index + */ + void setMaxIndex(int i) { maxIndex = i; } + /** gets the max index parameter*/ + int getMaxIndex() { return maxIndex; } + + // functions for setting callbacks + /** sets a callback function to call immediately after doMainLoop() returns, but before + * the helics finalize() call + * @param cb a function that takes no arguments and returns void + */ + void setBeforeFinalizeCallback(std::function cb = {}) + { + callBeforeFinalize = std::move(cb); + } + /** sets a callback function to all after the helics finalize() call completes + * @param cb a function that takes no arguments and returns void + */ + void setAfterFinalizeCallback(std::function cb = {}) + { + callAfterFinalize = std::move(cb); + } + + /** sets the output format to use when printing results + * @param f format to print results in + */ + void setOutputFormat(OutputFormat f) { result_format = f; } + + // protected to give derived classes more control + protected: + class Result { + public: + std::string name; + std::string key; + std::string value; + }; + std::vector results; //!< a vector of output results to print + + OutputFormat result_format{OutputFormat::PLAIN_TEXT}; //!< output format for printing results + + // variables to track current state, mainly for gbenchmark piecewise setup + bool initialized{false}; + bool readyToRun{false}; + + // parameters most benchmark federates need + std::string benchmarkName; // + fed; // callBeforeFinalize{ + nullptr}; // callAfterFinalize{ + nullptr}; // app; //(name + " Benchmark Federate")) + { + addResult("BENCHMARK FEDERATE TYPE", "benchmark_federate_type", name); + app->allow_extras(); + + // add common time options (optional) + opt_delta_time = + app->add_option("--delta_time", deltaTime, "the sampling rate/timestep size"); + opt_final_time = + app->add_option("--final_time", finalTime, "final/stop time for the benchmark"); + opt_delta_time->ignore_underscore(); + opt_final_time->ignore_underscore(); + + // add common index options (optional) + opt_index = app->add_option("--index", index, "the index of this phold federate"); + opt_max_index = + app->add_option("--max_index", maxIndex, "the maximum index given to a phold federate"); + opt_max_index->ignore_underscore(); + + // add a flag for printing system info + app->add_flag_callback( + "--print_systeminfo", + []() { printHELICSsystemInfo(); }, + "prints the HELICS system info"); + } + + /** starts execution of the federation + * @param callOnReady a no argument, void return type function called after doMakeReady is run + * @param callOnEnd a no argument, void return type function called after helics finalize() + */ + void run(std::function callOnReady = {}, std::function callOnEnd = {}) + { + if (!readyToRun) { + makeReady(); + } + if (callOnReady) { + callOnReady(); + } + execute(); + finalize(); + if (callOnEnd) { + callOnEnd(); + } + } + + /** initialize function parses options and sets up parameters + * @param coreName the name of the core to connect to + * @param args command line argument format supported by CLI11 (argc/argv, string, or vector of strings) + * @return 0 on success, non-zero indicates failure + */ + template + int initialize(const std::string& coreName, Args... args) + { + helics::FederateInfo fi; + fi.coreName = coreName; + return initialize(fi, args...); + } + + /** initialize function parses options and sets up parameters + * @param fi a helics::FederateInfo object + * @param args command line argument format supported by CLI11 (argc/argv, string, or vector of strings) + * @return 0 on success, non-zero indicates failure + */ + template + int initialize(const helics::FederateInfo fi, Args... args) + { + setupArgumentParsing(); + return internalInitialize(fi, parseArgs(args...)); + } + + /** make the federate ready to run; enter execution mode and setup initial state*/ + void makeReady() + { + if (!initialized) { + throw("must initialize first"); + } + fed->enterExecutingMode(); + doMakeReady(); + readyToRun = true; + } + + /** print formatted results from the simulation*/ + void printResults() + { + doAddBenchmarkResults(); + for (auto r : results) { + if (result_format == OutputFormat::PLAIN_TEXT) { + std::cout << r.name << ": " << r.value << std::endl; + } + } + } + + /** add a named result to the list of results to output + * @param name the name of the result + * @param key the short key name of the result + * @param value the value of the result (must support printing with iostream) + */ + template + void addResult(const std::string& name, const std::string& key, T value) + { + std::ostringstream s; + s << value; + addResult(name, key, s.str()); + } + + /** add a named string result to the list of results to show + * @param name the name of the result + * @param key the short key name of the result + * @param value a string representation of the result + */ + void addResult(const std::string& name, const std::string& key, const std::string& value) + { + Result r; + r.name = name; + r.key = key; + r.value = value; + results.push_back(r); + } + + private: + /** call federate finalize() and handle before/after callbacks*/ + void finalize() + { + if (callBeforeFinalize) { + callBeforeFinalize(); + } + fed->finalize(); + if (callAfterFinalize) { + callAfterFinalize(); + } + } + + /** do the main loop for the benchmark -- callbacks for extra timing info could be added here*/ + void execute() { doMainLoop(); } + + /** internal initialization function that handles federate info arguments and calling derived class virtual functions*/ + int internalInitialize(helics::FederateInfo fi, int parseArgsResult) + { + if (parseArgsResult != 0) { + initialized = false; + return parseArgsResult; + } + fi.loadInfoFromArgs(app->remainArgs()); + + doParamInit(fi); + std::string name = getName(); + fed = std::make_unique(name, fi); + doFedInit(); + initialized = true; + return 0; + } + + /** parse arguments with CLI11 and handle standard help and version arguments*/ + template + int parseArgs(Args... args) + { + auto res = app->helics_parse(args...); + + helics::FederateInfo fi; + if (res != helics::helicsCLI11App::parse_output::ok) { + switch (res) { + case helics::helicsCLI11App::parse_output::help_call: + case helics::helicsCLI11App::parse_output::help_all_call: + fi.loadInfoFromArgs("--help"); + // FALLTHRU + case helics::helicsCLI11App::parse_output::version_call: + default: + // Nothing to do, send result higher up to decide what should happen + break; + } + } + return static_cast(res); + } +}; diff --git a/benchmarks/helics/BenchmarkMain.cpp b/benchmarks/helics/BenchmarkMain.cpp new file mode 100644 index 0000000000..d1cde2e82e --- /dev/null +++ b/benchmarks/helics/BenchmarkMain.cpp @@ -0,0 +1,88 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "EchoHubFederate.hpp" +#include "EchoLeafFederate.hpp" +#include "EchoMessageHubFederate.hpp" +#include "EchoMessageLeafFederate.hpp" +#include "MessageExchangeFederate.hpp" +#include "PholdFederate.hpp" +#include "RingTransmitFederate.hpp" +#include "RingTransmitMessageFederate.hpp" +#include "TimingHubFederate.hpp" +#include "TimingLeafFederate.hpp" +#include "helics/core/helicsCLI11.hpp" + +#include +#include + +std::shared_ptr fed; + +template +void addBM(helics::helicsCLI11App& app, std::string name, std::string description) +{ + app.add_subcommand(name, description) + ->callback([]() { fed = std::make_shared(); }) + ->footer([] { + T().initialize("", "--help"); + return std::string{}; + }); +} + +int main(int argc, char* argv[]) +{ + helics::helicsCLI11App app( + "HELICS benchmark federates for use in multinode benchmark setups", "helics_benchmarks"); + app.ignore_case()->prefix_command()->ignore_underscore(); + addBM(app, "echohub", "Echo Hub benchmark federate"); + addBM(app, "echoleaf", "Echo Leaf benchmark federate"); + addBM(app, "echomessagehub", "Echo Message Hub benchmark federate"); + addBM(app, "echomessageleaf", "Echo Message Leaf benchmark federate"); + + addBM(app, "messageexchange", "Message Exchange benchmark federate"); + + addBM(app, "phold", "PHOLD benchmark federate"); + + addBM(app, "ringtransmit", "Ring Transmit benchmark federate"); + addBM( + app, "ringtransmitmessage", "Ring Transmit Message benchmark federate"); + + addBM(app, "timinghub", "Timing Hub benchmark federate"); + addBM(app, "timingleaf", "Timing Leaf benchmark federate"); + + auto ret = app.helics_parse(argc, argv); + if (ret != helics::helicsCLI11App::parse_output::ok) { + switch (ret) { + case helics::helicsCLI11App::parse_output::help_call: + case helics::helicsCLI11App::parse_output::help_all_call: + case helics::helicsCLI11App::parse_output::version_call: + return 0; + default: + return static_cast(ret); + } + } + + helics::FederateInfo fi; + int rc = fed->initialize(fi, app.remaining_for_passthrough(true)); + if (rc != 0) { + exit(rc); + } + + // setup benchmark timing + std::chrono::time_point start_time, end_time; + fed->setBeforeFinalizeCallback([&end_time]() { end_time = std::chrono::steady_clock::now(); }); + + // run the benchmark + fed->run([&start_time]() { start_time = std::chrono::steady_clock::now(); }); + + // print duration + auto elapsed = + std::chrono::duration_cast(end_time - start_time).count(); + fed->addResult("ELAPSED TIME (ns)", "real_time", elapsed); + fed->printResults(); +} diff --git a/benchmarks/helics/CMakeLists.txt b/benchmarks/helics/CMakeLists.txt index da5f781090..3149584991 100644 --- a/benchmarks/helics/CMakeLists.txt +++ b/benchmarks/helics/CMakeLists.txt @@ -21,6 +21,18 @@ set(HELICS_BENCHMARKS timingBenchmarks ) +set(HELICS_MULTINODE_BENCHMARKS + PholdFederate + MessageExchangeFederate + RingTransmitFederate + EchoHubFederate + EchoLeafFederate + EchoMessageHubFederate + EchoMessageLeafFederate + TimingHubFederate + TimingLeafFederate +) + # Only affects current directory, so safe include_directories(${CMAKE_CURRENT_SOURCE_DIR}) @@ -33,10 +45,12 @@ foreach(T ${HELICS_BENCHMARKS}) endforeach() -add_executable(PholdFederate PholdFederateMain.cpp) -target_link_libraries(PholdFederate PUBLIC helics_application_api) -set_target_properties(PholdFederate PROPERTIES FOLDER benchmarks_multimachine) - +add_executable(helics_benchmarks BenchmarkMain.cpp) +target_link_libraries(helics_benchmarks PUBLIC helics_application_api) +set_target_properties(helics_benchmarks PROPERTIES FOLDER benchmarks_multimachine) +foreach(T ${HELICS_MULTINODE_BENCHMARKS}) + target_sources(helics_benchmarks PUBLIC ${T}.hpp) +endforeach() if (NOT HELICS_DISABLE_C_SHARED_LIB) add_executable(echoBenchmarks_c echoBenchmarks_c.cpp) @@ -50,10 +64,6 @@ if (NOT HELICS_DISABLE_C_SHARED_LIB) copy_shared_target(echoBenchmarks_c helicsSharedLib) endif() -target_sources(filterBenchmarks PUBLIC EchoMessage.hpp) -target_sources(echoMessageBenchmarks PUBLIC EchoMessage.hpp) -target_sources(pholdBenchmarks PUBLIC PholdFederate.hpp) - copy_key_files_to_target_location(ActionMessageBenchmarks) string(TIMESTAMP current_date "%Y-%m-%d") diff --git a/benchmarks/helics/EchoHubFederate.hpp b/benchmarks/helics/EchoHubFederate.hpp new file mode 100644 index 0000000000..049f9f624a --- /dev/null +++ b/benchmarks/helics/EchoHubFederate.hpp @@ -0,0 +1,58 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Inputs.hpp" +#include "helics/application_api/Publications.hpp" +#include "helics/application_api/Subscriptions.hpp" + +using helics::operator"" _t; +/** class implementing the hub for an echo test*/ +class EchoHub: public BenchmarkFederate { + private: + std::vector pubs; + std::vector subs; + int num_leafs{10}; + + public: + EchoHub(): BenchmarkFederate("EchoHub") {} + + void setupArgumentParsing() override + { + // default final time for this benchmark + finalTime = helics::Time(100, time_units::ms); + + app->add_option( + "--num_leafs", num_leafs, "the number of echoleaf federates to expect", true); + } + + std::string getName() override { return "echohub"; } + + void doFedInit() override + { + pubs.reserve(num_leafs); + subs.reserve(num_leafs); + for (int ii = 0; ii < num_leafs; ++ii) { + pubs.push_back(fed->registerIndexedPublication("leafrx", ii)); + subs.push_back(fed->registerIndexedSubscription("leafsend", ii)); + } + } + + void doMainLoop() override + { + auto cTime = 0.0_t; + while (cTime <= finalTime) { + for (int ii = 0; ii < num_leafs; ++ii) { + if (fed->isUpdated(subs[ii])) { + auto& val = fed->getString(subs[ii]); + pubs[ii].publish(val); + } + } + cTime = fed->requestTime(finalTime + 0.05); + } + } +}; diff --git a/benchmarks/helics/EchoLeafFederate.hpp b/benchmarks/helics/EchoLeafFederate.hpp new file mode 100644 index 0000000000..3098713d72 --- /dev/null +++ b/benchmarks/helics/EchoLeafFederate.hpp @@ -0,0 +1,54 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Inputs.hpp" +#include "helics/application_api/Publications.hpp" +#include "helics/application_api/Subscriptions.hpp" + +using helics::operator"" _t; +/* class implementing a leaf for the echo message benchmark*/ +class EchoLeaf: public BenchmarkFederate { + private: + helics::Publication pub; + helics::Input sub; + + public: + EchoLeaf(): BenchmarkFederate("EchoLeaf") {} + + void setupArgumentParsing() override { opt_index->required(); } + + std::string getName() override { return "echoleaf_" + std::to_string(index); } + + void doFedInit() override + { + pub = fed->registerIndexedPublication("leafsend", index); + sub = fed->registerIndexedSubscription("leafrx", index); + } + + void doMainLoop() override + { + int cnt = 0; + // this is to make a fixed size string that is different for each federate but has sufficient length to + // get beyond SSO + const std::string txstring = std::to_string(100000 + index) + std::string(100, '1'); + const int iter = 5000; + while (cnt <= iter + 1) { + fed->requestNextStep(); + ++cnt; + if (cnt <= iter) { + fed->publish(pub, txstring); + } + while (fed->isUpdated(sub)) { + auto& nstring = fed->getString(sub); + if (nstring != txstring) { + throw("incorrect string"); + } + } + } + } +}; diff --git a/benchmarks/helics/EchoMessage.hpp b/benchmarks/helics/EchoMessage.hpp deleted file mode 100644 index f091218462..0000000000 --- a/benchmarks/helics/EchoMessage.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright (c) 2017-2020, -Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See -the top-level NOTICE for additional details. All rights reserved. -SPDX-License-Identifier: BSD-3-Clause -*/ - -#include "helics/application_api/Endpoints.hpp" -#include "helics/application_api/MessageFederate.hpp" -#include "helics/core/ActionMessage.hpp" - -using helics::operator"" _t; -// static constexpr helics::Time tend = 3600.0_t; // simulation end time -/** class implementing the hub for an echo test*/ -class EchoMessageHub { - public: - helics::Time finalTime = helics::Time(100, time_units::ms); // final time - private: - std::unique_ptr mFed; - helics::Endpoint ept; - bool initialized = false; - bool readyToRun = false; - - public: - EchoMessageHub() = default; - - void run(std::function callOnReady = {}) - { - if (!readyToRun) { - makeReady(); - } - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - - void initialize(const std::string& coreName) - { - std::string name = "echohub"; - helics::FederateInfo fi; - fi.coreName = coreName; - mFed = std::make_unique(name, fi); - ept = mFed->registerGlobalEndpoint("echo"); - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - mFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - auto cTime = 0.0_t; - while (cTime <= finalTime) { - while (ept.hasMessage()) { - auto m = ept.getMessage(); - std::swap(m->source, m->dest); - std::swap(m->original_source, m->original_dest); - ept.send(std::move(m)); - } - - cTime = mFed->requestTime(finalTime + 0.05); - } - mFed->finalize(); - } -}; - -class EchoMessageLeaf { - private: - std::unique_ptr mFed; - helics::Endpoint ept; - - int index_ = 0; - bool initialized = false; - bool readyToRun = false; - - public: - EchoMessageLeaf() = default; - - void run(std::function callOnReady = {}) - { - if (!readyToRun) { - makeReady(); - } - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - void initialize(const std::string& coreName, int index) - { - std::string name = "echoleaf_" + std::to_string(index); - index_ = index; - helics::FederateInfo fi; - fi.coreName = coreName; - mFed = std::make_unique(name, fi); - // this is a local endpoint - ept = mFed->registerEndpoint("leaf"); - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - mFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - int cnt = 0; - // this is to make a fixed size string that is different for each federate but has sufficient length to - // get beyond SSO - const std::string txstring = std::to_string(100000 + index_) + std::string(100, '1'); - const int iter = 5000; - while (cnt <= iter + 1) { - mFed->requestNextStep(); - ++cnt; - if (cnt <= iter) { - ept.send("echo", txstring); - } - while (ept.hasMessage()) { - auto m = ept.getMessage(); - auto& nstring = m->data.to_string(); - if (nstring != txstring) { - throw("incorrect string"); - } - } - } - mFed->finalize(); - } -}; \ No newline at end of file diff --git a/benchmarks/helics/EchoMessageHubFederate.hpp b/benchmarks/helics/EchoMessageHubFederate.hpp new file mode 100644 index 0000000000..624536246b --- /dev/null +++ b/benchmarks/helics/EchoMessageHubFederate.hpp @@ -0,0 +1,45 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Endpoints.hpp" +#include "helics/core/ActionMessage.hpp" + +using helics::operator"" _t; +/** class implementing the hub for an echo test*/ +class EchoMessageHub: public BenchmarkFederate { + private: + helics::Endpoint ept; + + public: + EchoMessageHub(): BenchmarkFederate("EchoMessageHub") {} + + void setupArgumentParsing() override + { + // default final time for this benchmark + finalTime = helics::Time(100, time_units::ms); + } + + std::string getName() override { return "echohub"; } + + void doFedInit() override { ept = fed->registerGlobalEndpoint("echo"); } + + void doMainLoop() override + { + auto cTime = 0.0_t; + while (cTime <= finalTime) { + while (ept.hasMessage()) { + auto m = ept.getMessage(); + std::swap(m->source, m->dest); + std::swap(m->original_source, m->original_dest); + ept.send(std::move(m)); + } + + cTime = fed->requestTime(finalTime + 0.05); + } + } +}; diff --git a/benchmarks/helics/EchoMessageLeafFederate.hpp b/benchmarks/helics/EchoMessageLeafFederate.hpp new file mode 100644 index 0000000000..dec21cab96 --- /dev/null +++ b/benchmarks/helics/EchoMessageLeafFederate.hpp @@ -0,0 +1,53 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Endpoints.hpp" +#include "helics/core/ActionMessage.hpp" + +using helics::operator"" _t; +/* class implementing a leaf for the echo message benchmark*/ +class EchoMessageLeaf: public BenchmarkFederate { + private: + helics::Endpoint ept; + + public: + EchoMessageLeaf(): BenchmarkFederate("EchoMessageLeaf") {} + + void setupArgumentParsing() override { opt_index->required(); } + + std::string getName() override { return "echoleaf_" + std::to_string(index); } + + void doFedInit() override + { + // this is a local endpoint + ept = fed->registerEndpoint("leaf"); + } + + void doMainLoop() override + { + int cnt = 0; + // this is to make a fixed size string that is different for each federate but has sufficient length to + // get beyond SSO + const std::string txstring = std::to_string(100000 + index) + std::string(100, '1'); + const int iter = 5000; + while (cnt <= iter + 1) { + fed->requestNextStep(); + ++cnt; + if (cnt <= iter) { + ept.send("echo", txstring); + } + while (ept.hasMessage()) { + auto m = ept.getMessage(); + auto& nstring = m->data.to_string(); + if (nstring != txstring) { + throw("incorrect string"); + } + } + } + } +}; diff --git a/benchmarks/helics/MessageExchangeFederate.hpp b/benchmarks/helics/MessageExchangeFederate.hpp new file mode 100644 index 0000000000..d50163631b --- /dev/null +++ b/benchmarks/helics/MessageExchangeFederate.hpp @@ -0,0 +1,67 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Endpoints.hpp" +#include "helics/application_api/MessageFederate.hpp" +#include "helics/core/ActionMessage.hpp" +#include "helics/helics-config.h" + +using helics::operator"" _t; +/** class implementing a federate that sends messages to another (and vice versa)*/ +class MessageExchangeFederate: public BenchmarkFederate { + private: + helics::Endpoint ept; + + int msgCount{0}; + int msgSize{0}; + std::string msg; + std::string dest; + + public: + MessageExchangeFederate(): BenchmarkFederate("MessageExchange") {} + + std::string getName() override { return "msgExchange_" + std::to_string(index); } + + void setupArgumentParsing() override + { + // set custom defaults for the time parameters + deltaTime = helics::Time(10, time_units::ns); + finalTime = helics::Time(10, time_units::ns); + + opt_index->required(); + app->add_option("--msg_count", msgCount, "the number of messages to send")->required(); + app->add_option("--msg_size", msgSize, "the size of the messages to send")->required(); + } + + void doParamInit(helics::FederateInfo& /*fi*/) override + { + // set the destination to the other federate in the pair + dest = "msgExchange_" + std::to_string((index + 1) % 2) + "/ept"; + + // create a message string to send + msg = std::string(msgSize, '0'); + } + + void doFedInit() override { ept = fed->registerEndpoint("ept"); } + + void doMainLoop() override + { + auto cTime = 0.0_t; + while (cTime < finalTime) { + while (ept.hasMessage()) { + ept.getMessage(); + } + + for (int i = 0; i < msgCount; i++) { + ept.send(dest, msg); + } + + cTime = fed->requestTimeAdvance(deltaTime); + } + } +}; diff --git a/benchmarks/helics/PholdFederate.hpp b/benchmarks/helics/PholdFederate.hpp index 7aa13f80f7..ff9c51d107 100644 --- a/benchmarks/helics/PholdFederate.hpp +++ b/benchmarks/helics/PholdFederate.hpp @@ -5,6 +5,7 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ +#include "BenchmarkFederate.hpp" #include "helics/application_api/Endpoints.hpp" #include "helics/application_api/MessageFederate.hpp" #include "helics/core/ActionMessage.hpp" @@ -14,48 +15,36 @@ SPDX-License-Identifier: BSD-3-Clause using namespace helics; /** class implementing a federate for the PHOLD benchmark*/ -class PholdFederate { +class PholdFederate: public BenchmarkFederate { public: - helics::Time deltaTime = helics::Time(10, time_units::ns); // sampling rate - helics::Time finalTime = helics::Time(10000, time_units::ns); // final time - int evCount = 0; // number of events handled by this federate + int evCount{0}; // number of events handled by this federate private: - std::unique_ptr mFed; - helics::Endpoint* ept; - - int index_ = 0; - int maxIndex_ = 0; + helics::Endpoint* ept{nullptr}; // values from paper "Warp Speed: Executing Time Warp on 1,966,080 Cores" // 16 circulating events per LP (also ran with 8 events per LP) // 10% remote communications (also ran with 25%, 50%, and 100% remote communications) // mean exponential distribution of 0.90 // optional lookahead of .1 (to prevent arbitrarily small increases in time with conservative simulators) - unsigned int initEvCount_ = 16; // starting number of events - double localProbability_ = .9; // probability of local events - double randTimeMean_ = - deltaTime * .9; // mean for the exponential distribution used when picking event times - double lookahead_ = deltaTime * .1; + unsigned int initEvCount_{16}; // starting number of events + double localProbability_{.9}; // probability of local events + double randTimeMean_{deltaTime * + .9}; // mean for the exponential distribution used when picking event times + double lookahead_{deltaTime * .1}; // classes related to the exponential and uniform distribution random number generator - bool generateRandomSeed = true; - unsigned int seed = - 0xABad5eed; // some suggestions for seed choice were that not having a majority of the bits as 0 is better + bool generateRandomSeed{false}; + unsigned int seed{ + 0xABad5eed}; // some suggestions for seed choice were that not having a majority of the bits as 0 is better std::mt19937 rand_gen; std::exponential_distribution rand_exp; std::uniform_real_distribution rand_uniform_double; std::uniform_int_distribution rand_uniform_int; - // callbacks for instrumenting the code - std::function callBeforeFinalize = nullptr; - std::function callAfterFinalize = nullptr; - - bool initialized{false}; - bool readyToRun{false}; - public: - PholdFederate() = default; + // TODO: output cluster name in a summary file, along with node count and feds per node + PholdFederate(): BenchmarkFederate("PHOLD") {} // functions for setting parameters void setGenerateRandomSeed(bool b) { generateRandomSeed = b; }; @@ -63,36 +52,45 @@ class PholdFederate { void setRandomTimeMean(double mean) { randTimeMean_ = mean; }; void setInitialEventCount(unsigned int count) { initEvCount_ = count; }; void setLocalProbability(double p) { localProbability_ = p; }; + void setLookahead(double v) { lookahead_ = v; }; // functions for setting callbacks void setBeforeFinalizeCallback(std::function cb = nullptr) { callBeforeFinalize = cb; }; void setAfterFinalizeCallback(std::function cb = nullptr) { callAfterFinalize = cb; }; - void run(std::function callOnReady = nullptr) - { - makeReady(); - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; + std::string getName() override { return "phold_" + std::to_string(index); } - void initialize(const std::string& coreName, int index, int maxIndex) + void setupArgumentParsing() override { - helics::FederateInfo fi; - fi.coreName = coreName; - initialize(fi, index, maxIndex); + app->add_option("--init_ev_count", initEvCount_, "the starting number of events"); + app->add_option( + "--local_probability", localProbability_, "the probability of local events"); + app->add_option( + "--rand_time_mean", + randTimeMean_, + "mean for the exponential distribution used when picking event times"); + app->add_flag("--gen_rand_seed", generateRandomSeed, "enable generating a random seed"); + app->add_option("--set_rand_seed", seed, "set the random seed"); + app->add_option("--set_phold_lookahead", lookahead_, "set the lookahead used by phold"); } - void initialize(const helics::FederateInfo fi, int index, int maxIndex) + void doAddBenchmarkResults() override { - std::string name = "phold_" + std::to_string(index); - index_ = index; - maxIndex_ = maxIndex; + addResult("EVENT COUNT", "EvCount", std::to_string(evCount)); + } - mFed = std::make_unique(name, fi); - ept = &mFed->registerEndpoint("ept"); + void doParamInit(helics::FederateInfo& /*fi*/) override + { + if (app->get_option("--set_rand_seed")->count() == 0) { + std::mt19937 rand_gen(0x600d5eed); + std::uniform_int_distribution rand_seed_uniform; + for (int i = 0; i < index; i++) { + rand_seed_uniform(rand_gen); + } + setRandomSeed(rand_seed_uniform(rand_gen)); + } + // set up based on given params // en.cppreference.com/w/cpp/numeric/random/exponential_distribution if (generateRandomSeed) { std::random_device rd; @@ -103,70 +101,52 @@ class PholdFederate { rand_exp = std::exponential_distribution(1.0 / randTimeMean_); rand_uniform_double = std::uniform_real_distribution(0.0, 1.0); // create random number distribution for picking a destination if there is more than 1 federate - if (maxIndex_ > 1) { - rand_uniform_int = std::uniform_int_distribution(0, maxIndex_ - 2); + if (maxIndex > 1) { + rand_uniform_int = std::uniform_int_distribution(0, maxIndex - 2); } - initialized = true; } - void finalize() - { - if (callBeforeFinalize) { - callBeforeFinalize(); - } - mFed->finalize(); - if (callAfterFinalize) { - callAfterFinalize(); - } - } + void doFedInit() override { ept = &fed->registerEndpoint("ept"); } - void makeReady() + void doMakeReady() override { - if (!initialized) { - throw("must initialize first"); - } - mFed->enterExecutingMode(); - // create initial events (not included in benchmark time) for (unsigned int i = 0; i < initEvCount_; i++) { createNewEvent(); } + } - readyToRun = true; + void doMainLoop() override + { + auto nextTime = deltaTime; + + while (nextTime < finalTime) { + nextTime = fed->requestTime(finalTime); + // for each event message received, create a new event + while (ept->hasMessage()) { + auto m = ept->getMessage(); + evCount++; + createNewEvent(); + } + } } void createNewEvent() { // decide if the event is local or remote - auto destIndex = index_; - if (maxIndex_ > 1 && rand_uniform_double(rand_gen) > localProbability_) { + auto destIndex = index; + if (maxIndex > 1 && rand_uniform_double(rand_gen) > localProbability_) { destIndex = rand_uniform_int(rand_gen); - if (destIndex == index_) { - destIndex = maxIndex_ - 1; + if (destIndex == index) { + destIndex = maxIndex - 1; } } // set the event time to current time + lookahead + rand exponential (mean >= lookahead or ~2x lookahead) helics::Time evTime = - mFed->getCurrentTime() + helics::Time(lookahead_) + helics::Time(rand_exp(rand_gen)); + fed->getCurrentTime() + helics::Time(lookahead_) + helics::Time(rand_exp(rand_gen)); std::string data = "ev"; std::string dest = "phold_" + std::to_string(destIndex) + "/ept"; ept->send(dest, data, evTime); } - - void mainLoop() - { - auto nextTime = deltaTime; - - while (nextTime < finalTime) { - nextTime = mFed->requestTime(finalTime); - // for each event message received, create a new event - while (ept->hasMessage()) { - auto m = ept->getMessage(); - evCount++; - createNewEvent(); - } - } - finalize(); - } }; diff --git a/benchmarks/helics/PholdFederateMain.cpp b/benchmarks/helics/PholdFederateMain.cpp deleted file mode 100644 index de59f98e80..0000000000 --- a/benchmarks/helics/PholdFederateMain.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* -Copyright (c) 2017-2020, -Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See -the top-level NOTICE for additional details. All rights reserved. -SPDX-License-Identifier: BSD-3-Clause -*/ - -#include "PholdFederate.hpp" -#include "helics/core/helicsCLI11.hpp" -#include "helics_benchmark_util.h" - -#include -#include -#include - -int main(int argc, char* argv[]) -{ - int index = 0; - int max_index = 0; - unsigned int init_ev_count = 16; // starting number of events - double local_prob = .9; // probability of local events - double rand_time_mean = - .9; // * deltaTime, mean for exponential distribution used when picking event times - bool gen_rand_seed; - unsigned int rand_seed; - - helics::helicsCLI11App app("phold benchmark federate"); - - auto opt_index = app.add_option("--index", index, "the index of this phold federate"); - auto opt_max_index = - app.add_option("--max_index", max_index, "the maximum index given to a phold federate"); - opt_index->required(); - opt_max_index->required(); - opt_max_index->ignore_underscore(); - - auto opt_init_ev_count = - app.add_option("--init_ev_count", init_ev_count, "the starting number of events"); - auto opt_local_prob = - app.add_option("--local_probability", local_prob, "the probability of local events"); - auto opt_rand_time_mean = app.add_option( - "--rand_time_mean", - rand_time_mean, - "mean for the exponential distribution used when picking event times"); - auto opt_gen_rand_seed = - app.add_flag("--gen_rand_seed", gen_rand_seed, "enable generating a random seed"); - auto opt_set_rand_seed = app.add_option("--set_rand_seed", rand_seed, "set the random seed"); - - app.allow_extras(); - - auto res = app.helics_parse(argc, argv); - helics::FederateInfo fi; - - if (res != helics::helicsCLI11App::parse_output::ok) { - switch (res) { - case helics::helicsCLI11App::parse_output::help_call: - case helics::helicsCLI11App::parse_output::help_all_call: - fi.loadInfoFromArgs("--help"); - // FALLTHRU - case helics::helicsCLI11App::parse_output::version_call: - return 0; - default: - return static_cast(res); - } - } - - fi.loadInfoFromArgs(app.remainArgs()); - - PholdFederate fed; - - if (*opt_init_ev_count) { - fed.setInitialEventCount(init_ev_count); - } - - if (*opt_local_prob) { - fed.setLocalProbability(local_prob); - } - - if (*opt_rand_time_mean) { - fed.setRandomTimeMean(rand_time_mean); - } - - if (*opt_gen_rand_seed) { - fed.setGenerateRandomSeed(gen_rand_seed); - } else { - fed.setGenerateRandomSeed(false); - } - - if (*opt_set_rand_seed) { - fed.setRandomSeed(rand_seed); - } else { - std::mt19937 rand_gen(0x600d5eed); - std::uniform_int_distribution rand_seed_uniform; - for (int i = 0; i < index; i++) { - rand_seed_uniform(rand_gen); - } - fed.setRandomSeed(rand_seed_uniform(rand_gen)); - } - - printHELICSsystemInfo(); - - fed.initialize(fi, index, max_index); - - // setup benchmark timing - std::chrono::time_point start_time, end_time; - fed.setBeforeFinalizeCallback([&end_time]() { end_time = std::chrono::steady_clock::now(); }); - - // run the benchmark - fed.run([&start_time]() { start_time = std::chrono::steady_clock::now(); }); - - // print duration - auto elapsed = - std::chrono::duration_cast(end_time - start_time).count(); - std::cout << "ELAPSED TIME (ns): " << elapsed << std::endl; - std::cout << "EVENT COUNT: " << fed.evCount << std::endl; -} diff --git a/benchmarks/helics/RingTransmitFederate.hpp b/benchmarks/helics/RingTransmitFederate.hpp new file mode 100644 index 0000000000..33010661c8 --- /dev/null +++ b/benchmarks/helics/RingTransmitFederate.hpp @@ -0,0 +1,71 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Inputs.hpp" +#include "helics/application_api/Publications.hpp" +#include "helics/application_api/Subscriptions.hpp" +#include "helics/application_api/ValueFederate.hpp" + +using helics::operator"" _t; +using namespace helics; +/** class implementing a token ring using a value being passed as the token*/ +class RingTransmit: public BenchmarkFederate { + public: + int loopCount = 0; + + private: + helics::Publication* pub = nullptr; + helics::Input* sub = nullptr; + + public: + RingTransmit(): BenchmarkFederate("RingTransmit") {} + + std::string getName() override { return "ringlink_" + std::to_string(index); } + + void setupArgumentParsing() override + { + deltaTime = helics::Time(10, time_units::ns); + finalTime = helics::Time(5000, time_units::ns); + + opt_index->required(); + opt_max_index->required(); + } + + void doParamInit(helics::FederateInfo& fi) override + { + fi.setFlagOption(helics_flag_restrictive_time_policy); + if (index == 0) { + // fi.setProperty(helics_property_int_log_level, helics_log_level_timing); + } + } + + void doFedInit() override + { + pub = &fed->registerIndexedPublication("pub", index); + sub = &fed->registerIndexedSubscription("pub", (index == 0) ? maxIndex - 1 : index - 1); + } + + void doMainLoop() override + { + if (index == 0) { + std::string txstring(100, '1'); + pub->publish(txstring); + ++loopCount; + } + auto nextTime = deltaTime; + + while (nextTime < finalTime) { + nextTime = fed->requestTime(finalTime); + if (fed->isUpdated(*sub)) { + auto& nstring = fed->getString(*sub); + fed->publish(*pub, nstring); + ++loopCount; + } + } + } +}; diff --git a/benchmarks/helics/RingTransmitMessageFederate.hpp b/benchmarks/helics/RingTransmitMessageFederate.hpp new file mode 100644 index 0000000000..dbc3c8de62 --- /dev/null +++ b/benchmarks/helics/RingTransmitMessageFederate.hpp @@ -0,0 +1,69 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Endpoints.hpp" +#include "helics/application_api/MessageFederate.hpp" +#include "helics/core/ActionMessage.hpp" + +using helics::operator"" _t; +using namespace helics; +/** class implementing a token ring using messages as the transmission mechanism*/ +class RingTransmitMessage: public BenchmarkFederate { + public: + int loopCount{0}; + + private: + helics::Endpoint* ept{nullptr}; + + public: + RingTransmitMessage(): BenchmarkFederate("RingTransmitMessage") {} + + std::string getName() override { return "ringlink_" + std::to_string(index); } + + void setupArgumentParsing() override + { + deltaTime = helics::Time(10, time_units::ns); + finalTime = helics::Time(5000, time_units::ns); + + opt_index->required(); + opt_max_index->required(); + } + + void doParamInit(helics::FederateInfo& fi) override + { + fi.setFlagOption(helics_flag_restrictive_time_policy); + } + + void doFedInit() override + { + ept = &fed->registerIndexedEndpoint("ept", index); + ept->setDefaultDestination( + "ept_" + std::to_string((index == maxIndex - 1) ? 0 : (index + 1))); + } + + void doMainLoop() override + { + if (index == 0) { + std::string txstring(100, '1'); + ept->send(txstring); + ++loopCount; + } + auto nextTime = deltaTime; + + while (nextTime < finalTime) { + nextTime = fed->requestTime(finalTime); + if (ept->hasMessage()) { + auto m = fed->getMessage(*ept); + m->dest = ept->getDefaultDestination(); + m->source = ept->getName(); + ept->send(std::move(m)); + ++loopCount; + } + } + } +}; diff --git a/benchmarks/helics/TimingHubFederate.hpp b/benchmarks/helics/TimingHubFederate.hpp new file mode 100644 index 0000000000..9392d2ba2e --- /dev/null +++ b/benchmarks/helics/TimingHubFederate.hpp @@ -0,0 +1,53 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Inputs.hpp" +#include "helics/application_api/Publications.hpp" +#include "helics/application_api/Subscriptions.hpp" +#include "helics/core/ActionMessage.hpp" + +using helics::operator"" _t; +using namespace helics; +/** class implementing the hub for a timing test*/ +class TimingHub: public BenchmarkFederate { + private: + std::vector pubs; + std::vector subs; + int num_leafs = 10; + + public: + TimingHub(): BenchmarkFederate("TimingHub") {} + + std::string getName() override { return "echohub"; } + + void setupArgumentParsing() override + { + finalTime = helics::Time(100, time_units::ms); + + app->add_option( + "--num_leafs", num_leafs, "the number of timingleaf federates to expect", true); + } + + void doFedInit() override + { + pubs.reserve(num_leafs); + subs.reserve(num_leafs); + for (int ii = 0; ii < num_leafs; ++ii) { + pubs.push_back(fed->registerPublicationIndexed("leafrx", ii)); + subs.push_back(fed->registerSubscriptionIndexed("leafsend", ii)); + } + } + + void doMainLoop() override + { + auto cTime = 0.0_t; + while (cTime <= finalTime) { + cTime = fed->requestTime(finalTime + 0.05); + } + } +}; diff --git a/benchmarks/helics/TimingLeafFederate.hpp b/benchmarks/helics/TimingLeafFederate.hpp new file mode 100644 index 0000000000..241cfe6390 --- /dev/null +++ b/benchmarks/helics/TimingLeafFederate.hpp @@ -0,0 +1,44 @@ +/* +Copyright (c) 2017-2020, +Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable Energy, LLC. See +the top-level NOTICE for additional details. All rights reserved. +SPDX-License-Identifier: BSD-3-Clause +*/ + +#include "BenchmarkFederate.hpp" +#include "helics/application_api/Inputs.hpp" +#include "helics/application_api/Publications.hpp" +#include "helics/application_api/Subscriptions.hpp" +#include "helics/core/ActionMessage.hpp" + +using helics::operator"" _t; +using namespace helics; +/** class implementing the leaf for a timing test*/ +class TimingLeaf: public BenchmarkFederate { + private: + helics::Publication pub; + helics::Input sub; + + public: + TimingLeaf(): BenchmarkFederate("TimingLeaf") {} + + std::string getName() override { return "echoleaf_" + std::to_string(index); } + + void setupArgumentParsing() override { opt_index->required(); } + + void doFedInit() override + { + pub = fed->registerPublicationIndexed("leafsend", index); + sub = fed->registerSubscriptionIndexed("leafrx", index); + } + + void doMainLoop() override + { + int cnt = 0; + const int iter = 5000; + while (cnt <= iter + 1) { + fed->requestNextStep(); + ++cnt; + } + } +}; diff --git a/benchmarks/helics/echoBenchmarks.cpp b/benchmarks/helics/echoBenchmarks.cpp index e8b22867f8..404269638d 100644 --- a/benchmarks/helics/echoBenchmarks.cpp +++ b/benchmarks/helics/echoBenchmarks.cpp @@ -5,11 +5,8 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#include "helics/application_api/Inputs.hpp" -#include "helics/application_api/Publications.hpp" -#include "helics/application_api/Subscriptions.hpp" -#include "helics/application_api/ValueFederate.hpp" -#include "helics/core/ActionMessage.hpp" +#include "EchoHubFederate.hpp" +#include "EchoLeafFederate.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" #include "helics/helics-config.h" @@ -22,145 +19,6 @@ SPDX-License-Identifier: BSD-3-Clause #include #include -using helics::operator"" _t; -// static constexpr helics::Time tend = 3600.0_t; // simulation end time -using namespace helics; -/** class implementing the hub for an echo test*/ -class EchoHub { - public: - helics::Time finalTime = helics::Time(100, time_units::ms); // final time - private: - std::unique_ptr vFed; - std::vector pubs; - std::vector subs; - int cnt_ = 10; - bool initialized = false; - bool readyToRun = false; - - public: - EchoHub() = default; - - void run(std::function callOnReady = {}) - { - if (!readyToRun) { - makeReady(); - } - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - - void initialize(const std::string& coreName, int cnt) - { - cnt_ = cnt; - std::string name = "echohub"; - helics::FederateInfo fi; - fi.coreName = coreName; - vFed = std::make_unique(name, fi); - pubs.reserve(cnt_); - subs.reserve(cnt_); - for (int ii = 0; ii < cnt_; ++ii) { - pubs.push_back(vFed->registerIndexedPublication("leafrx", ii)); - subs.push_back(vFed->registerIndexedSubscription("leafsend", ii)); - } - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - vFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - auto cTime = 0.0_t; - while (cTime <= finalTime) { - for (int ii = 0; ii < cnt_; ++ii) { - if (vFed->isUpdated(subs[ii])) { - auto& val = vFed->getString(subs[ii]); - pubs[ii].publish(val); - } - } - cTime = vFed->requestTime(finalTime + 0.05); - } - vFed->finalize(); - } -}; - -class EchoLeaf { - private: - std::unique_ptr vFed; - helics::Publication pub; - helics::Input sub; - - int index_ = 0; - bool initialized = false; - bool readyToRun = false; - - public: - EchoLeaf() = default; - - void run(std::function callOnReady = {}) - { - if (!readyToRun) { - makeReady(); - } - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - void initialize(const std::string& coreName, int index) - { - std::string name = "echoleaf_" + std::to_string(index); - index_ = index; - helics::FederateInfo fi; - fi.coreName = coreName; - vFed = std::make_unique(name, fi); - pub = vFed->registerIndexedPublication("leafsend", index_); - sub = vFed->registerIndexedSubscription("leafrx", index_); - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - vFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - int cnt = 0; - // this is to make a fixed size string that is different for each federate but has sufficient length to - // get beyond SSO - const std::string txstring = std::to_string(100000 + index_) + std::string(100, '1'); - const int iter = 5000; - while (cnt <= iter + 1) { - vFed->requestNextStep(); - ++cnt; - if (cnt <= iter) { - vFed->publish(pub, txstring); - } - if (vFed->isUpdated(sub)) { - auto& nstring = vFed->getString(sub); - if (nstring != txstring) { - std::cout << "incorrect string\n"; - break; - } - } - } - vFed->finalize(); - } -}; - static void BMecho_singleCore(benchmark::State& state) { for (auto _ : state) { @@ -171,10 +29,11 @@ static void BMecho_singleCore(benchmark::State& state) auto wcore = helics::CoreFactory::create( core_type::INPROC, std::string("--autobroker --federates=") + std::to_string(feds + 1)); EchoHub hub; - hub.initialize(wcore->getIdentifier(), feds); + hub.initialize(wcore->getIdentifier(), "--num_leafs=" + std::to_string(feds)); std::vector leafs(feds); for (int ii = 0; ii < feds; ++ii) { - leafs[ii].initialize(wcore->getIdentifier(), ii); + std::string bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(wcore->getIdentifier(), bmInit); } std::vector threadlist(static_cast(feds)); @@ -218,13 +77,14 @@ static void BMecho_multiCore(benchmark::State& state, core_type cType) helics::CoreFactory::create(cType, std::string("--federates=1 --log_level=no_print")); // this is to delay until the threads are ready EchoHub hub; - hub.initialize(wcore->getIdentifier(), feds); + hub.initialize(wcore->getIdentifier(), "--num_leafs=" + std::to_string(feds)); std::vector leafs(feds); std::vector> cores(feds); for (int ii = 0; ii < feds; ++ii) { cores[ii] = helics::CoreFactory::create(cType, "-f 1 --log_level=no_print"); cores[ii]->connect(); - leafs[ii].initialize(cores[ii]->getIdentifier(), ii); + std::string bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(cores[ii]->getIdentifier(), bmInit); } std::vector threadlist(static_cast(feds)); diff --git a/benchmarks/helics/echoMessageBenchmarks.cpp b/benchmarks/helics/echoMessageBenchmarks.cpp index 5a0c275275..30393d0625 100644 --- a/benchmarks/helics/echoMessageBenchmarks.cpp +++ b/benchmarks/helics/echoMessageBenchmarks.cpp @@ -5,7 +5,8 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#include "EchoMessage.hpp" +#include "EchoMessageHubFederate.hpp" +#include "EchoMessageLeafFederate.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" #include "helics/helics-config.h" @@ -31,10 +32,11 @@ static void BMecho_singleCore(benchmark::State& state) auto wcore = helics::CoreFactory::create( core_type::INPROC, std::string("--autobroker --federates=") + std::to_string(feds + 1)); EchoMessageHub hub; - hub.initialize(wcore->getIdentifier()); + hub.initialize(wcore->getIdentifier(), ""); std::vector leafs(feds); for (int ii = 0; ii < feds; ++ii) { - leafs[ii].initialize(wcore->getIdentifier(), ii); + std::string bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(wcore->getIdentifier(), bmInit); } std::vector threadlist(static_cast(feds)); @@ -79,13 +81,14 @@ static void BMecho_multiCore(benchmark::State& state, core_type cType) helics::CoreFactory::create(cType, std::string("--federates=1 --log_level=no_print")); // this is to delay until the threads are ready EchoMessageHub hub; - hub.initialize(wcore->getIdentifier()); + hub.initialize(wcore->getIdentifier(), ""); std::vector leafs(feds); std::vector> cores(feds); for (int ii = 0; ii < feds; ++ii) { cores[ii] = helics::CoreFactory::create(cType, "-f 1 --log_level=no_print"); cores[ii]->connect(); - leafs[ii].initialize(cores[ii]->getIdentifier(), ii); + std::string bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(cores[ii]->getIdentifier(), bmInit); } std::vector threadlist(static_cast(feds)); diff --git a/benchmarks/helics/filterBenchmarks.cpp b/benchmarks/helics/filterBenchmarks.cpp index 2152e09927..21eff0a439 100644 --- a/benchmarks/helics/filterBenchmarks.cpp +++ b/benchmarks/helics/filterBenchmarks.cpp @@ -5,7 +5,8 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#include "EchoMessage.hpp" +#include "EchoMessageHubFederate.hpp" +#include "EchoMessageLeafFederate.hpp" #include "helics/application_api/Filters.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" @@ -32,10 +33,11 @@ static void BMfilter_singleCore(benchmark::State& state) auto wcore = helics::CoreFactory::create( core_type::INPROC, std::string("--autobroker --federates=") + std::to_string(feds + 1)); EchoMessageHub hub; - hub.initialize(wcore->getIdentifier()); + hub.initialize(wcore->getIdentifier(), ""); std::vector leafs(feds); for (int ii = 0; ii < feds; ++ii) { - leafs[ii].initialize(wcore->getIdentifier(), ii); + std::string bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(wcore->getIdentifier(), bmInit); } auto filt1 = make_filter(helics::filter_types::delay, wcore.get()); // either add a source filter on Echo or a destination Filter on Echo @@ -91,13 +93,14 @@ static void BMfilter_multiCore(benchmark::State& state, core_type cType) helics::CoreFactory::create(cType, std::string{"--federates=0 --log_level=no_print"}); // this is to delay until the threads are ready EchoMessageHub hub; - hub.initialize(wcore->getIdentifier()); + hub.initialize(wcore->getIdentifier(), ""); std::vector leafs(feds); std::vector> cores(feds); for (int ii = 0; ii < feds; ++ii) { cores[ii] = helics::CoreFactory::create(cType, "-f 1 --log_level=no_print"); cores[ii]->connect(); - leafs[ii].initialize(cores[ii]->getIdentifier(), ii); + std::string bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(cores[ii]->getIdentifier(), bmInit); } filtcore->connect(); auto filt1 = make_filter(helics::filter_types::delay, filtcore.get()); diff --git a/benchmarks/helics/helics_benchmark_util.h b/benchmarks/helics/helics_benchmark_util.h index 72aec98dd4..b3080e9026 100644 --- a/benchmarks/helics/helics_benchmark_util.h +++ b/benchmarks/helics/helics_benchmark_util.h @@ -10,6 +10,7 @@ SPDX-License-Identifier: BSD-3-Clause #include #include +#include #if defined(ENABLE_ZMQ_CORE) && !defined(USING_HELICS_C_SHARED_LIB) # include "helics/core/zmq/ZmqCommsCommon.h" @@ -111,5 +112,6 @@ inline void printHELICSsystemInfo() if (!cpumodel.empty()) { std::cout << "CPU MODEL: " << cpumodel << '\n'; } + std::cout << "NUM CPU:" << std::thread::hardware_concurrency() << '\n'; std::cout << "-------------------------------------------" << std::endl; } diff --git a/benchmarks/helics/messageSendBenchmarks.cpp b/benchmarks/helics/messageSendBenchmarks.cpp index c81af8d677..1275c4948c 100644 --- a/benchmarks/helics/messageSendBenchmarks.cpp +++ b/benchmarks/helics/messageSendBenchmarks.cpp @@ -5,6 +5,7 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ +#include "MessageExchangeFederate.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" #include "helics/helics-config.h" @@ -20,90 +21,6 @@ SPDX-License-Identifier: BSD-3-Clause using namespace helics; -// headers used by the MessageExchangeFederate class -#include "helics/application_api/Endpoints.hpp" -#include "helics/application_api/MessageFederate.hpp" -#include "helics/core/ActionMessage.hpp" - -using helics::operator"" _t; -// static constexpr helics::Time tend = 3600.0_t; // simulation end time -/** class implementing a federate that sends messages to another (and vice versa)*/ -class MessageExchangeFederate { - public: - helics::Time deltaTime = helics::Time(10, time_units::ns); // sampling rate - helics::Time finalTime = helics::Time(10, time_units::ns); // final time - private: - std::unique_ptr mFed; - helics::Endpoint ept; - bool initialized = false; - bool readyToRun = false; - - int msgCount; - std::string msg; - std::string dest; - - public: - MessageExchangeFederate() = default; - - void run(std::function callOnReady = {}, std::function callOnEnd = {}) - { - if (!readyToRun) { - makeReady(); - } - if (callOnReady) { - callOnReady(); - } - mainLoop(); - if (callOnEnd) { - callOnEnd(); - } - }; - - void initialize(const std::string& coreName, int i, int msg_size, int msg_count) - { - std::string name = "msgExchange_" + std::to_string(i); - helics::FederateInfo fi; - fi.coreName = coreName; - mFed = std::make_unique(name, fi); - ept = mFed->registerEndpoint("ept"); - - // set the destination to the other federate in the pair - dest = "msgExchange_" + std::to_string((i + 1) % 2) + "/ept"; - - // create a message string to send - msg = std::string(msg_size, '0'); - msgCount = msg_count; - - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - mFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - auto cTime = 0.0_t; - while (cTime < finalTime) { - while (ept.hasMessage()) { - ept.getMessage(); - } - - for (int i = 0; i < msgCount; i++) { - ept.send(dest, msg); - } - - cTime = mFed->requestTimeAdvance(deltaTime); - } - mFed->finalize(); - } -}; - static void BMsendMessage(benchmark::State& state, core_type cType, bool singleCore = false) { for (auto _ : state) { @@ -133,12 +50,15 @@ static void BMsendMessage(benchmark::State& state, core_type cType, bool singleC std::string("--log_level=no_print --federates=") + std::to_string(wcore_fed_count)); } for (int ii = 0; ii < fed_count; ++ii) { + std::string bmInit = "--index=" + std::to_string(ii) + + " --msg_size=" + std::to_string(msg_size) + + " --msg_count=" + std::to_string(msg_count); if (!singleCore) { cores[ii] = helics::CoreFactory::create(cType, "-f 1 --log_level=no_print"); cores[ii]->connect(); - feds[ii].initialize(cores[ii]->getIdentifier(), ii, msg_size, msg_count); + feds[ii].initialize(cores[ii]->getIdentifier(), bmInit); } else { - feds[ii].initialize(wcore->getIdentifier(), ii, msg_size, msg_count); + feds[ii].initialize(wcore->getIdentifier(), bmInit); } } diff --git a/benchmarks/helics/pholdBenchmarks.cpp b/benchmarks/helics/pholdBenchmarks.cpp index f1db03cb83..4c77f67f65 100644 --- a/benchmarks/helics/pholdBenchmarks.cpp +++ b/benchmarks/helics/pholdBenchmarks.cpp @@ -16,7 +16,6 @@ SPDX-License-Identifier: BSD-3-Clause #include #include #include -#include #include // static constexpr helics::Time tend = 3600.0_t; // simulation end time @@ -33,13 +32,12 @@ static void BMphold_singleCore(benchmark::State& state) core_type::INPROC, std::string("--autobroker --federates=") + std::to_string(fed_count)); std::vector feds(fed_count); - std::mt19937 rand_gen(0x600d5eed); - std::uniform_int_distribution rand_seed; for (int ii = 0; ii < fed_count; ++ii) { - // set seeds for federates to deterministic values, but not all the same + // phold federate default seed values are deterministic, based on index feds[ii].setGenerateRandomSeed(false); - feds[ii].setRandomSeed(rand_seed(rand_gen)); - feds[ii].initialize(wcore->getIdentifier(), ii, fed_count); + std::string bmInit = + "--index=" + std::to_string(ii) + " --max_index=" + std::to_string(fed_count); + feds[ii].initialize(wcore->getIdentifier(), bmInit); } std::vector threadlist(static_cast(fed_count - 1)); @@ -50,7 +48,7 @@ static void BMphold_singleCore(benchmark::State& state) feds[0].makeReady(); brr.wait(); state.ResumeTiming(); - feds[0].run([]() {}); + feds[0].run(); state.PauseTiming(); for (auto& thrd : threadlist) { thrd.join(); @@ -91,16 +89,15 @@ static void BMphold_multiCore(benchmark::State& state, core_type cType) std::vector feds(fed_count); std::vector> cores(fed_count); - std::mt19937 rand_gen(0x600d5eed); - std::uniform_int_distribution rand_seed; for (int ii = 0; ii < fed_count; ++ii) { cores[ii] = helics::CoreFactory::create(cType, "-f 1 --log_level=no_print"); cores[ii]->connect(); - // set seeds for federates to deterministic values, but not all the same + // phold federate default seed values are deterministic, based on index feds[ii].setGenerateRandomSeed(false); - feds[ii].setRandomSeed(rand_seed(rand_gen)); - feds[ii].initialize(cores[ii]->getIdentifier(), ii, fed_count); + std::string bmInit = + "--index=" + std::to_string(ii) + " --max_index=" + std::to_string(fed_count); + feds[ii].initialize(cores[ii]->getIdentifier(), bmInit); } std::vector threadlist(static_cast(fed_count - 1)); @@ -111,7 +108,7 @@ static void BMphold_multiCore(benchmark::State& state, core_type cType) feds[0].makeReady(); brr.wait(); state.ResumeTiming(); - feds[0].run([]() {}); + feds[0].run(); state.PauseTiming(); for (auto& thrd : threadlist) { thrd.join(); diff --git a/benchmarks/helics/ringBenchmarks.cpp b/benchmarks/helics/ringBenchmarks.cpp index a1d2a0dff8..f2431f09ee 100644 --- a/benchmarks/helics/ringBenchmarks.cpp +++ b/benchmarks/helics/ringBenchmarks.cpp @@ -5,11 +5,7 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#include "helics/application_api/Inputs.hpp" -#include "helics/application_api/Publications.hpp" -#include "helics/application_api/Subscriptions.hpp" -#include "helics/application_api/ValueFederate.hpp" -#include "helics/core/ActionMessage.hpp" +#include "RingTransmitFederate.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" #include "helics/helics-config.h" @@ -21,86 +17,6 @@ SPDX-License-Identifier: BSD-3-Clause #include #include -using helics::operator"" _t; -// static constexpr helics::Time tend = 3600.0_t; // simulation end time -using namespace helics; -/** class implementing a token ring using a value being passed as the token*/ -class RingTransmit { - public: - helics::Time deltaTime = helics::Time(10, time_units::ns); // sampling rate - helics::Time finalTime = helics::Time(5000, time_units::ns); // final time - int loopCount = 0; - - private: - std::unique_ptr vFed; - helics::Publication* pub = nullptr; - helics::Input* sub = nullptr; - - int index_ = 0; - int maxIndex_ = 0; - bool initialized{false}; - bool readyToRun{false}; - - public: - RingTransmit() = default; - - void run(std::function callOnReady = nullptr) - { - makeReady(); - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - - void initialize(const std::string& coreName, int index, int maxIndex) - { - std::string name = "ringlink_" + std::to_string(index); - index_ = index; - maxIndex_ = maxIndex; - helics::FederateInfo fi; - fi.coreName = coreName; - fi.setFlagOption(helics_flag_restrictive_time_policy); - if (index == 0) { - // fi.setProperty (helics_property_int_log_level, helics_log_level_timing); - } - vFed = std::make_unique(name, fi); - pub = &vFed->registerIndexedPublication("pub", index_); - sub = &vFed->registerIndexedSubscription("pub", (index_ == 0) ? maxIndex_ - 1 : index_ - 1); - - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - vFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - if (index_ == 0) { - std::string txstring(100, '1'); - pub->publish(txstring); - ++loopCount; - } - auto nextTime = deltaTime; - - while (nextTime < finalTime) { - nextTime = vFed->requestTime(finalTime); - if (vFed->isUpdated(*sub)) { - auto& nstring = vFed->getString(*sub); - vFed->publish(*pub, nstring); - ++loopCount; - } - } - vFed->finalize(); - } -}; - static void BMring2_singleCore(benchmark::State& state) { for (auto _ : state) { @@ -112,7 +28,9 @@ static void BMring2_singleCore(benchmark::State& state) std::vector links(feds); for (int ii = 0; ii < feds; ++ii) { - links[ii].initialize(wcore->getIdentifier(), ii, feds); + std::string bmInit = + "--index=" + std::to_string(ii) + " --max_index=" + std::to_string(feds); + links[ii].initialize(wcore->getIdentifier(), bmInit); } std::thread rthread( @@ -159,7 +77,9 @@ static void BMring_multiCore(benchmark::State& state, core_type cType) std::string( "--log_level=no_print --federates=1 --broker=" + broker->getIdentifier())); cores[ii]->connect(); - links[ii].initialize(cores[ii]->getIdentifier(), ii, feds); + std::string bmInit = + "--index=" + std::to_string(ii) + " --max_index=" + std::to_string(feds); + links[ii].initialize(cores[ii]->getIdentifier(), bmInit); } std::vector threadlist(feds - 1); for (int ii = 0; ii < feds - 1; ++ii) { diff --git a/benchmarks/helics/ringMessageBenchmarks.cpp b/benchmarks/helics/ringMessageBenchmarks.cpp index 94f9243fab..373b4fd498 100644 --- a/benchmarks/helics/ringMessageBenchmarks.cpp +++ b/benchmarks/helics/ringMessageBenchmarks.cpp @@ -5,9 +5,7 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#include "helics/application_api/Endpoints.hpp" -#include "helics/application_api/MessageFederate.hpp" -#include "helics/core/ActionMessage.hpp" +#include "RingTransmitMessageFederate.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" #include "helics_benchmark_main.h" @@ -19,84 +17,6 @@ SPDX-License-Identifier: BSD-3-Clause #include #include -using helics::operator"" _t; -// static constexpr helics::Time tend = 3600.0_t; // simulation end time -using namespace helics; -/** class implementing a token ring using messages as the transmission mechanism*/ -class RingTransmitMessage { - public: - helics::Time deltaTime = helics::Time(10, time_units::ns); // sampling rate - helics::Time finalTime = helics::Time(5000, time_units::ns); // final time - int loopCount = 0; - - private: - std::unique_ptr mFed; - helics::Endpoint* ept = nullptr; - - int index_ = 0; - int maxIndex_ = 0; - bool initialized{false}; - bool readyToRun{false}; - - public: - RingTransmitMessage() = default; - - void run(std::function callOnReady = nullptr) - { - makeReady(); - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - - void initialize(const std::string& coreName, int index, int maxIndex) - { - std::string name = "ringlink_" + std::to_string(index); - index_ = index; - maxIndex_ = maxIndex; - helics::FederateInfo fi; - fi.coreName = coreName; - fi.setFlagOption(helics_flag_restrictive_time_policy); - mFed = std::make_unique(name, fi); - ept = &mFed->registerIndexedEndpoint("ept", index_); - ept->setDefaultDestination( - "ept_" + std::to_string((index_ == maxIndex_ - 1) ? 0 : (index_ + 1))); - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - mFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - if (index_ == 0) { - std::string txstring(100, '1'); - ept->send(txstring); - ++loopCount; - } - auto nextTime = deltaTime; - - while (nextTime < finalTime) { - nextTime = mFed->requestTime(finalTime); - if (ept->hasMessage()) { - auto m = mFed->getMessage(*ept); - m->dest = ept->getDefaultDestination(); - m->source = ept->getName(); - ept->send(std::move(m)); - ++loopCount; - } - } - mFed->finalize(); - } -}; - static void BM_ringMessage2_singleCore(benchmark::State& state) { for (auto _ : state) { @@ -110,7 +30,9 @@ static void BM_ringMessage2_singleCore(benchmark::State& state) std::vector links(feds); for (int ii = 0; ii < feds; ++ii) { - links[ii].initialize(wcore->getIdentifier(), ii, feds); + std::string bmInit = + "--index=" + std::to_string(ii) + " --max_index=" + std::to_string(feds); + links[ii].initialize(wcore->getIdentifier(), bmInit); } std::thread rthread( @@ -158,7 +80,9 @@ static void BM_ringMessage_multiCore(benchmark::State& state, core_type cType) std::string( "--restrictive_time_policy --federates=1 --broker=" + broker->getIdentifier())); cores[ii]->connect(); - links[ii].initialize(cores[ii]->getIdentifier(), ii, feds); + std::string bmInit = + "--index=" + std::to_string(ii) + " --max_index=" + std::to_string(feds); + links[ii].initialize(cores[ii]->getIdentifier(), bmInit); } std::vector threadlist(feds - 1); for (int ii = 0; ii < feds - 1; ++ii) { diff --git a/benchmarks/helics/timingBenchmarks.cpp b/benchmarks/helics/timingBenchmarks.cpp index 93d943b879..78e3396bbf 100644 --- a/benchmarks/helics/timingBenchmarks.cpp +++ b/benchmarks/helics/timingBenchmarks.cpp @@ -5,11 +5,8 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-Identifier: BSD-3-Clause */ -#include "helics/application_api/Inputs.hpp" -#include "helics/application_api/Publications.hpp" -#include "helics/application_api/Subscriptions.hpp" -#include "helics/application_api/ValueFederate.hpp" -#include "helics/core/ActionMessage.hpp" +#include "TimingHubFederate.hpp" +#include "TimingLeafFederate.hpp" #include "helics/core/BrokerFactory.hpp" #include "helics/core/CoreFactory.hpp" #include "helics/helics-config.h" @@ -22,128 +19,6 @@ SPDX-License-Identifier: BSD-3-Clause #include #include -using helics::operator"" _t; -// static constexpr helics::Time tend = 3600.0_t; // simulation end time -using namespace helics; -/** class implementing the hub for an echo test*/ -class TimingHub { - public: - helics::Time finalTime = helics::Time(100, time_units::ms); // final time - private: - std::unique_ptr vFed; - std::vector pubs; - std::vector subs; - int cnt_ = 10; - bool initialized = false; - bool readyToRun = false; - - public: - TimingHub() = default; - - void run(std::function callOnReady = {}) - { - if (!readyToRun) { - makeReady(); - } - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - - void initialize(const std::string& coreName, int cnt) - { - cnt_ = cnt; - std::string name = "echohub"; - helics::FederateInfo fi; - fi.coreName = coreName; - vFed = std::make_unique(name, fi); - pubs.reserve(cnt_); - subs.reserve(cnt_); - for (int ii = 0; ii < cnt_; ++ii) { - pubs.push_back(vFed->registerPublicationIndexed("leafrx", ii)); - subs.push_back(vFed->registerSubscriptionIndexed("leafsend", ii)); - } - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - vFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - auto cTime = 0.0_t; - while (cTime <= finalTime) { - cTime = vFed->requestTime(finalTime + 0.05); - } - vFed->finalize(); - } -}; - -class TimingLeaf { - private: - std::unique_ptr vFed; - helics::Publication pub; - helics::Input sub; - - int index_ = 0; - bool initialized = false; - bool readyToRun = false; - - public: - TimingLeaf() = default; - - void run(std::function callOnReady = {}) - { - if (!readyToRun) { - makeReady(); - } - if (callOnReady) { - callOnReady(); - } - mainLoop(); - }; - void initialize(const std::string& coreName, int index) - { - std::string name = "echoleaf_" + std::to_string(index); - index_ = index; - helics::FederateInfo fi; - fi.coreName = coreName; - vFed = std::make_unique(name, fi); - pub = vFed->registerPublicationIndexed("leafsend", index_); - sub = vFed->registerSubscriptionIndexed("leafrx", index_); - initialized = true; - } - - void makeReady() - { - if (!initialized) { - throw("must initialize first"); - } - vFed->enterExecutingMode(); - readyToRun = true; - } - - void mainLoop() - { - int cnt = 0; - // this is to make a fixed size string that is different for each federate but has sufficient length to - // get beyond SSO - const int iter = 5000; - while (cnt <= iter + 1) { - vFed->requestNextStep(); - ++cnt; - } - vFed->finalize(); - } -}; - static void BMtiming_singleCore(benchmark::State& state) { for (auto _ : state) { @@ -154,10 +29,12 @@ static void BMtiming_singleCore(benchmark::State& state) auto wcore = helics::CoreFactory::create( core_type::INPROC, std::string("--autobroker --federates=") + std::to_string(feds + 1)); TimingHub hub; - hub.initialize(wcore->getIdentifier(), feds); + std::string bmInit = "--num_leafs=" + std::to_string(feds); + hub.initialize(wcore->getIdentifier(), bmInit); std::vector leafs(feds); for (int ii = 0; ii < feds; ++ii) { - leafs[ii].initialize(wcore->getIdentifier(), ii); + bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(wcore->getIdentifier(), bmInit); } std::vector threadlist(static_cast(feds)); @@ -201,13 +78,15 @@ static void BMtiming_multiCore(benchmark::State& state, core_type cType) helics::CoreFactory::create(cType, std::string("--federates=1 --log_level=no_print")); // this is to delay until the threads are ready TimingHub hub; - hub.initialize(wcore->getIdentifier(), feds); + std::string bmInit = "--num_leafs=" + std::to_string(feds); + hub.initialize(wcore->getIdentifier(), bmInit); std::vector leafs(feds); std::vector> cores(feds); for (int ii = 0; ii < feds; ++ii) { cores[ii] = helics::CoreFactory::create(cType, "-f 1 --log_level=no_print"); cores[ii]->connect(); - leafs[ii].initialize(cores[ii]->getIdentifier(), ii); + bmInit = "--index=" + std::to_string(ii); + leafs[ii].initialize(cores[ii]->getIdentifier(), bmInit); } std::vector threadlist(static_cast(feds)); From bf6cc482d3af560605b86b59688e8d34009d7f1a Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Tue, 25 Feb 2020 15:35:56 -0800 Subject: [PATCH 10/32] Always set HELICS_ENABLE_SWIG when building an interface requiring swig (#1097) --- interfaces/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/CMakeLists.txt b/interfaces/CMakeLists.txt index d548de63cb..d9b8b53909 100644 --- a/interfaces/CMakeLists.txt +++ b/interfaces/CMakeLists.txt @@ -84,15 +84,15 @@ cmake_dependent_advanced_option( "CMAKE_VERSION VERSION_GREATER 3.12;NOT HELICS_SWIG_GENERATE_INTERFACE_FILES_ONLY;BUILD_PYTHON_INTERFACE OR BUILD_PYTHON2_INTERFACE" OFF ) -# cmake-format: on cmake_dependent_option( HELICS_ENABLE_SWIG "use swig to generate the interface files" OFF - "BUILD_PYTHON_INTERFACE OR BUILD_MATLAB_INTERFACE OR BUILD_JAVA_INTERFACE" - OFF + "BUILD_PYTHON_INTERFACE OR BUILD_MATLAB_INTERFACE OR BUILD_JAVA_INTERFACE;NOT swig_required" + ${swig_required} ) +# cmake-format: on if(HELICS_ENABLE_SWIG OR swig_required) if(WIN32 AND NOT MSYS) From 9d9fd97d94039f3012f0fca36c3c92b140f204f5 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Wed, 26 Feb 2020 09:20:28 -0800 Subject: [PATCH 11/32] Add instructions for installing helics on Windows for MSYS2 using pacman. (#1102) --- CHANGELOG.md | 7 +- config/packaging/mingw-w64-helics/PKGBUILD | 14 +- docs/installation/windows.md | 541 +++++++++++---------- 3 files changed, 299 insertions(+), 263 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 337c98e354..c88bc74ec1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,12 +25,13 @@ Increased code coverage and additional bug fixes. ### Added - `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is disabled. -- A series of test for Federate.cpp to increase coverage on that file to 100% +- A series of test for Federate.cpp to increase coverage on that file to 100% - A series of tests for ValueFederate.*pp to increase coverage on that file to 100% -- Docker image for a helics builder which includes build tools and the helics installation +- Docker image for a helics builder which includes build tools and the helics installation +- helics can be installed on [MSYS2](https://helics.readthedocs.io/en/latest/installation/windows.html#msys2) using pacman. - Standalone benchmark federates for use in multinode benchmark runs -### Deprecated +### Deprecated ### Removed - `HELICS_ENABLE_WEBSERVER` option to enable the webserver. This option was added as experimental in 2.4.0 diff --git a/config/packaging/mingw-w64-helics/PKGBUILD b/config/packaging/mingw-w64-helics/PKGBUILD index 28bc0cfd56..e7c9d66673 100644 --- a/config/packaging/mingw-w64-helics/PKGBUILD +++ b/config/packaging/mingw-w64-helics/PKGBUILD @@ -5,21 +5,19 @@ pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.4.0 pkgrel=1 -pkgdesc="Hiearchical Engine for Large-scale Infrastructure Co-Simulation (mingw-w64)" +pkgdesc="Hierarchical Engine for Large-scale Infrastructure Co-Simulation (mingw-w64)" arch=('any') url="https://github.com/GMLC-TDC/HELICS" -license=('BSD-3-clause') +license=('BSD') depends=("${MINGW_PACKAGE_PREFIX}-zeromq" - "${MINGW_PACKAGE_PREFIX}-python3") + ) makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-zeromq" - make - "${MINGW_PACKAGE_PREFIX}-boost" - "${MINGW_PACKAGE_PREFIX}-python3") + "${MINGW_PACKAGE_PREFIX}-boost") options=('!staticlibs' '!strip') source=("${_realname}-${pkgver}.tar.gz"::"https://github.com/GMLC-TDC/HELICS/releases/download/v${pkgver}/HELICS-v${pkgver}-source.tar.gz") -sha256sums=('ffc4c8fa8fa593186a64288849a69c707ed91820448ff965947e32cdd54f9308') +sha256sums=('8de39728c7bb03be0bde0d506acc827bea732eddb7bb46892027b777b10dab27') #prepare() { # mkdir -p test @@ -41,7 +39,7 @@ build() { -G"MSYS Makefiles" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DBUILD_SHARED_LIBS=ON \ - -DBUILD_PYTHON_INTERFACE=ON\ + -DHELICS_ENABLE_SUBMODULE_UPDATE=OFF\ ${extra_config} \ .. diff --git a/docs/installation/windows.md b/docs/installation/windows.md index 2593394dd7..f90c6d9a2e 100644 --- a/docs/installation/windows.md +++ b/docs/installation/windows.md @@ -1,252 +1,289 @@ -# Windows Installation # - -## Requirements ## - -- Microsoft Visual C++ 2015 or newer (MS Build Tools also works) -- CMake 3.4 or newer(CMake should be newer than the Visual Studio and Boost version you are using) -- git -- Boost 1.58 or newer -- MS-MPI v8 or newer (if MPI support is needed) - -## Setup for Visual Studio ## - -*Note*: Keep in mind that your CMake version should be newer than the boost version and your visual studio version. If you have an older CMake, you may want an older boost version. Alternatively, you can choose to upgrade your version of CMake. - -To set up your environment: - -1. Install Microsoft Visual C++ 2015 or newer (2017 or later is recommended)[MSVC](https://visualstudio.microsoft.com/) -2. Install - [Boost](https://www.boost.org/doc/libs/1_70_0/more/getting_started/windows.html) - [Windows downloads](https://dl.bintray.com/boostorg/release/1.70.0/binaries/) - 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.58 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. Visual studio 2019 will require CMake 3.14 or later. - Boost 1.70 with CMake 3.14+ is the current recommended configuration. -3. *Optional* Only if you need a global Install of ZeroMQ [ZeroMQ](http://zeromq.org/build:_start). - We **highly recommend skipping** this step and running CMake with the - `HELICS_ZMQ_SUBPROJECT=ON` option enabled(which is default on windows) to automatically set up a project-only - copy of ZeroMQ. The ZeroMQ Windows installer is **very** - outdated and will not work with new versions of Visual Studio. The CMake generator from ZeroMQ on windows is also functional and can be used to store ZMQ in another location that will need to be specified for HELICS. -4. *Optional* Install - [MS-MPI](https://msdn.microsoft.com/en-us/library/bb524831(v=vs.85).aspx) - 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 included in the repository so it shouldn't be necessary to regenerate unless the libraries are modified. If you want to generate the MATLAB interface a modified version of swig is necessary see [MATLAB Swig](../introduction/matlab). For Matlab, Python 3, and Java swig is not necessary. For Octave, Python2, and C\# swig install is necessary. The simplest way to install swig is to use [chocolatey](https://chocolatey.org/) and use - ``` - choco install swig - ``` - from windows power shell. -6. Open a Visual Studio Command Prompt, and go to your working - directory. -7. Make sure *CMake* and *git* are available in the Command Prompt. - If they aren't, add them to the system PATH variable. - -Getting and building from source: - -1. Set up your environment. -2. Open a command prompt. Use git clone to check out a copy of - HELICS. - - ```bash - git clone https://github.com/GMLC-TDC/HELICS.git - ``` - -3. Go to the checked out HELICS project folder (the default folder - name is HELICS). Create a build folder and open the build - folder. Alternatively, cmake-gui can be used. - - ```bash - cd HELICS - mkdir build - cd build - ``` - -4. Run CMake. It should automatically detect where MPI is installed - if the system path variables are set up correctly, otherwise you - will have to set the CMake path manually. ZMQ_LOCAL_BUILD is set to ON - so ZeroMQ will automatically be built unless the option is changed. - - ```bash - CMake .. - ``` - - If you need CMake to use a generator other than the default (ex: - selecting between a 32-bit or 64-bit project), the -G option can be - used to specify one of the generators listed by CMake --help. For - Visual Studio 2017, the generator name would be - `Visual Studio 15 2017 [arch]`, where \[arch\] is optional and can be - either Win64 for a 64-bit project, or left out to generate a 32-bit - project. To avoid problems when building later, this should match the - version of the Boost libraries you are using. - - If you installed boost into the root of the C or D drives with the - default location (or the BOOST\_INSTALL\_PATH environment variable has been set), - CMake should automatically detect their location. Otherwise the - location will need to be manually given to CMake. - NOTE: CMake 3.14 and later separate the architecture into a separate field for the generator - -5. Open the Visual Studio solution generated by CMake. Under the - *Build* menu, select *Build the Solution*. Alternatively, in the - MSBuild command prompt, run the command msbuild HELICS.sln from - the build folder to compile the entire solution. HELICS.sln can be - replaced with the name of one of the projects to build only that - part of HELICS. - -## Windows Installers ## - -Windows installers are available with the different [releases](https://github.com/GMLC-TDC/HELICS/releases). The release includes zip archives with static libraries containing both the Debug version and Release version for several versions of Visual Studio. There is also an installer and zip file for getting the HELICS apps and shared library along with pre-built Python 3.6 and Java 1.8 interfaces. There is also an archive with just the C shared library and headers, intended for use with 3rd party interfaces. - -## Testing ## - -A quick test is to double check the versions of the HELICS player and -recorder (located in the 'build/src/helics/apps/player/Debug' folder): - -```bash -> cd C:/Path/To/build/src/helics/apps/Debug - -> helics_player.exe --version -x.x.x 20XX-XX-XX - -> helics_recorder.exe --version -x.x.x 20XX-XX-XX -``` -there may be additional build information if a non tagged version is built. - -## 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 -path then the appropriate libraries and flags will be automatically found. If SWIG is available and you wish to regenerate the interface, `ENABLE_SWIG` can be set to ON to use swig -to generate the interface files. `SWIG_EXECUTABLE` can be set to the path of the swig.exe if -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) - - -```bash -CMake -DCMake_BUILD_TYPE=Release -DCMake_INSTALL_PREFIX="C:\local\helics-X.X.X" -DBUILD_PYTHON_INTERFACE=ON -G "Visual Studio 14 2015 Win64" .. -CMake --build . --config Release --target install -``` -otherwise they can be set through CMake flags -```bash -CMake -DCMake_BUILD_TYPE=Release -DCMake_INSTALL_PREFIX="C:\local\helics-X.X.X" -DBUILD_PYTHON_INTERFACE=ON -G "Visual Studio 14 2015 Win64" .. -CMake --build . --config Release --target install -``` - -![](../img/windows-command-line-success.png) - -Add the following to the Windows PYTHONPATH environment variable or run the following in the command line. - -```bash -set PYTHONPATH=C:\local\helics-X.X.X\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. - -```bash -$ ipython -Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33) -Type 'copyright', 'credits' or 'license' for more information -IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help. - -In [1]: import helics - -In [2]: helics.helicsGetVersion() -Out[2]: 'x.x.x (20XX-XX-XX)' - -``` - -![](../img/windows-python-success.png) - -## Building HELICS From Source on Windows with MSYS2 ## - -### Overview ### - -This section will layout the setting up of MSYS2 to compile and install HELICS. This guide will describe all the packages and install instructions for a 64bit build. - -### Setting up MSYS2 ### - -MSYS2 provides a Linux like terminal environment on your Windows system. MSYS2 can be installed from [here](https://www.msys2.org/). Once MSYS2 has been installed start up msys2.exe. Follow first time updates as described on the MSYS2 website. After MSYS2 has been successfully updated Some packages need to be installed in order to configure and build HELICS. The following packages need to be installed: -- base-devel -- mingw-w64-x86_64-toolchain -- git -- mingw-w64-x86_64-CMake -- mingw-w64-x86_64-boost -- mingw-w64-x86_64-qt5 (only if you want to be able to run cmake-gui which this guide recommends.) -- mingw-w64-x86_64-zeromq - -All packages can be installed by typing the following: -```bash -$ pacman -Sy base-devel mingw-w64-x86_64-toolchain git mingw-w64-x86_64-CMake mingw-w64-x86_64-boost mingw-w64-x86_64-qt5 mingw-w64-x86_64-zeromq -``` -For base-devel and mingw-w64-x86_64-toolchain you may have to hit enter for installing all packages that are part of the group package. The qt5 package is quite large, if you are only using it once it might be faster to use ccmake which is a text based interface to CMake. After all the packages have been installed has been done /mingw64/bin must be in the PATH environment variable. If it isn't then it must be added. Please note that this is only necessary if you are compiling in MSYS2 shell. If you are compiling in the MSYS2 MINGW-64bit shell then /mingw64/bin will be automatically added to the PATH environment variable. If not -```bash -$ export PATH=$PATH:/mingw64/bin -``` - -### Download HELICS Source Code ### - -Now that the MSYS2 environment has been setup and all prerequisite packages have been installed the source code can be compiled and installed. The HELICS source code can be cloned from GitHub by performing the following: -```bash -$ git clone https://github.com/GMLC-TDC/HELICS.git -``` -git will clone the source code into a folder in the current working directory called HELICS. This path will be referred to by this guide as HELICS_ROOT_DIR. - -### Compiling HELICS From Source ### - -Change directories to HELICS_ROOT_DIR. Create a directory called helics-build. This can be accomplished by using the mkdir command. cd into this directory. Now type the following: -```bash -$ CMake-gui ../ -``` -If this fails that is because mingw-w64-x86_64-qt5 was not installed. If you did install it the CMake gui window should pop up. click the Advanced check box next to the search bar. Then click Configure. A window will pop up asking you to specify the generator for this project. Select "MSYS Makefiles" from the dropdown menu. The native compilers can be used and will most likely default to gcc. The compilers can also be specified manually. Select Finish; once the configure process completes finished several variables will show up highlighted in red. Since this is the first time setup the Boost and ZeroMQ library. Below are the following CMake variables that could to be verified. - -* `HELICS_ENABLE_CXX_SHARED_LIB` should be checked if you are using HELICS with GridLAB-D, GridLAB-D dynamically links with the shared c++ library of HELICS, the default is off so you would need to change it - -For others the advanced checkbox can be selected to see some other variables - -* Boost_INCLUDE_DIR C:/msys64/mingw64/include -* Boost_LIBRARY_DIR_DEBUG/RELEASE C:/msys64/mingw64/bin -* CMake_INSTALL_PREFIX /usr/local or location of your choice -* ZeroMQ_INCLUDE_DIR C:/msys64/mingw64/include -* ZeroMQ_INSTALL_PATH C:/msys64/mingw64 -* ZeroMQ_LIBRARY C:/msys64/mingw64/bin/libzmq.dll.a -* ZeroMQ_ROOT_DIR C:/msys64/mingw64 - -Once these CMake variables have been correctly verified click Configure if anything was changed. Once that is complete click Generate then once that is complete the CMake-gui can be closed. - -Back in the MSYS2 command window\[ make sure you are in the build directory\] type: -```bash -$ make -j x -``` -where x is the number of threads you can give the make process to speed up the build. Then once that is complete type: `make -j` will just use the number of cores you have available -```bash -$ make install -``` -unless you changed the value of CMake_INSTALL_PREFIX everything the default install location /usr/local/helics_2_1_0. This install path will be referred to as HELICS_INSTALL for the sections related to GridLab-D. -If you want to build Gridlab-d on Windows with HELICS see [Building with HELICS](http://gridlab-d.shoutwiki.com/wiki/Building_GridLAB-D_on_Windows_with_MSYS2#Building_with_the_HELICS_Library). Please use branch feature/1179 to build with HELICS 2.1 or later instead of the branch listed. - -### Compiling with clang -Clang does not work to compile on MSYS2 at this time. It has in the past but there are various issues with the clang standard library on MSYS yet so this will be updated if the situation changes. It is getting closer as of (10/12/2019) Mostly it compiles when linked with Libc++ and libc++abi, but there seems to be some missing functions as of yet, so cannot be used other than for some warning checks. - -## Building with mingw -HELICS can also be built with the standalone MinGW - -- We assume you have MinGW installed or know how to install it. -- [Boost](https://www.boost.org/doc/libs/1_70_0/more/getting_started/windows.html); you can use the [Windows installer](https://dl.bintray.com/boostorg/release/1.70.0/binaries/) for Boost installed in the default location -- Run CMake to configure and generate build files, using "MinGW Makefiles" as the generator, -- Run mingw32-make -j to build - -## Building with cygwin - -Cygwin is another unix like environment on Windows. It has some peculiarities. -HELICS will only build on the 32 bit version due to incompatibilities with ASIO and the 64 bit build. But it does build on the 32 bit versions. -Also the helics-config utility does not get built due to an incompatibility with the filesystem header. - -- required packages include CMake, libboost-devel, make, gcc, g++, libzmq(if using zmq) -- use the unix makefiles generator +# Windows Installation # + +## Windows Installers ## + +Windows installers are available with the different [releases](https://github.com/GMLC-TDC/HELICS/releases). The release includes zip archives with static libraries containing both the Debug version and Release version for several versions of Visual Studio. There is also an installer and zip file for getting the HELICS apps and shared library along with pre-built Python 3.6 and Java 1.8 interfaces. There is also an archive with just the C shared library and headers, intended for use with 3rd party interfaces. + +## Build Requirements ## + +- Microsoft Visual C++ 2015 or newer (MS Build Tools also works) +- CMake 3.4 or newer(CMake should be newer than the Visual Studio and Boost version you are using) +- git +- Boost 1.58 or newer +- MS-MPI v8 or newer (if MPI support is needed) + +## Setup for Visual Studio ## + +*Note*: Keep in mind that your CMake version should be newer than the boost version and your visual studio version. If you have an older CMake, you may want an older boost version. Alternatively, you can choose to upgrade your version of CMake. + +To set up your environment: + +1. Install Microsoft Visual C++ 2015 or newer (2017 or later is recommended)[MSVC](https://visualstudio.microsoft.com/) +2. Install + [Boost](https://www.boost.org/doc/libs/1_70_0/more/getting_started/windows.html) + [Windows downloads](https://dl.bintray.com/boostorg/release/1.70.0/binaries/) + 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.58 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. Visual studio 2019 will require CMake 3.14 or later. + Boost 1.70 with CMake 3.14+ is the current recommended configuration. +3. *Optional* Only if you need a global Install of ZeroMQ [ZeroMQ](http://zeromq.org/build:_start). + We **highly recommend skipping** this step and running CMake with the + `HELICS_ZMQ_SUBPROJECT=ON` option enabled(which is default on windows) to automatically set up a project-only + copy of ZeroMQ. The ZeroMQ Windows installer is **very** + outdated and will not work with new versions of Visual Studio. The CMake generator from ZeroMQ on windows is also functional and can be used to store ZMQ in another location that will need to be specified for HELICS. +4. *Optional* Install + [MS-MPI](https://msdn.microsoft.com/en-us/library/bb524831(v=vs.85).aspx) + 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 included in the repository so it shouldn't be necessary to regenerate unless the libraries are modified. If you want to generate the MATLAB interface a modified version of swig is necessary see [MATLAB Swig](../introduction/matlab). For Matlab, Python 3, and Java swig is not necessary. For Octave, Python2, and C\# swig install is necessary. The simplest way to install swig is to use [chocolatey](https://chocolatey.org/) and use +```shell + choco install swig +``` + from windows power shell. +6. Open a Visual Studio Command Prompt, and go to your working + directory. +7. Make sure *CMake* and *git* are available in the Command Prompt. + If they aren't, add them to the system PATH variable. + +Getting and building from source: + +1. Set up your environment. +2. Open a command prompt. Use git clone to check out a copy of + HELICS. + + ```bash + git clone https://github.com/GMLC-TDC/HELICS.git + ``` + +3. Go to the checked out HELICS project folder (the default folder + name is HELICS). Create a build folder and open the build + folder. Alternatively, cmake-gui can be used. + + ```bash + cd HELICS + mkdir build + cd build + ``` + +4. Run CMake. It should automatically detect where MPI is installed + if the system path variables are set up correctly, otherwise you + will have to set the CMake path manually. ZMQ_LOCAL_BUILD is set to ON + so ZeroMQ will automatically be built unless the option is changed. + + ```bash + CMake .. + ``` + + If you need CMake to use a generator other than the default (ex: + selecting between a 32-bit or 64-bit project), the -G option can be + used to specify one of the generators listed by CMake --help. For + Visual Studio 2017, the generator name would be + `Visual Studio 15 2017 [arch]`, where \[arch\] is optional and can be + either Win64 for a 64-bit project, or left out to generate a 32-bit + project. To avoid problems when building later, this should match the + version of the Boost libraries you are using. + + If you installed boost into the root of the C or D drives with the + default location (or the BOOST\_INSTALL\_PATH environment variable has been set), + CMake should automatically detect their location. Otherwise the + location will need to be manually given to CMake. + NOTE: CMake 3.14 and later separate the architecture into a separate field for the generator + +5. Open the Visual Studio solution generated by CMake. Under the + *Build* menu, select *Build the Solution*. Alternatively, in the + MSBuild command prompt, run the command msbuild HELICS.sln from + the build folder to compile the entire solution. HELICS.sln can be + replaced with the name of one of the projects to build only that + part of HELICS. + +## Testing ## + +A quick test is to double check the versions of the HELICS player and +recorder (located in the 'build/src/helics/apps/player/Debug' folder): + +```bash +> cd C:/Path/To/build/src/helics/apps/Debug + +> helics_player.exe --version +x.x.x 20XX-XX-XX + +> helics_recorder.exe --version +x.x.x 20XX-XX-XX +``` +there may be additional build information if a non tagged version is built. + +## 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 +path then the appropriate libraries and flags will be automatically found. If SWIG is available and you wish to regenerate the interface, `ENABLE_SWIG` can be set to ON to use swig +to generate the interface files. `SWIG_EXECUTABLE` can be set to the path of the swig.exe if +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) + + +```bash +CMake -DCMake_BUILD_TYPE=Release -DCMake_INSTALL_PREFIX="C:\local\helics-X.X.X" -DBUILD_PYTHON_INTERFACE=ON -G "Visual Studio 14 2015 Win64" .. +CMake --build . --config Release --target install +``` +otherwise they can be set through CMake flags +```bash +CMake -DCMake_BUILD_TYPE=Release -DCMake_INSTALL_PREFIX="C:\local\helics-X.X.X" -DBUILD_PYTHON_INTERFACE=ON -G "Visual Studio 14 2015 Win64" .. +CMake --build . --config Release --target install +``` + +![](../img/windows-command-line-success.png) + +Add the following to the Windows PYTHONPATH environment variable or run the following in the command line. + +```bash +set PYTHONPATH=C:\local\helics-X.X.X\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. + +```bash +$ ipython +Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33) +Type 'copyright', 'credits' or 'license' for more information +IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help. + +In [1]: import helics + +In [2]: helics.helicsGetVersion() +Out[2]: 'x.x.x (20XX-XX-XX)' + +``` + +![](../img/windows-python-success.png) + +## MSYS2 ## + +MSYS2 provides a Linux like terminal environment on your Windows system. MSYS2 can be installed from [here](https://www.msys2.org/). Once MSYS2 has been installed start up msys2.exe. Follow first time updates as described on the MSYS2 website. + +### Using pacman package manager ### +HELICS is available on the Mingw-32 and Mingw-64 environments through the MSYS2 repositories. From the MINGW64 shell +```bash +$ pacman -Sy mingw64/mingw-w64-x86_64-helics +:: Synchronizing package databases... + mingw32 453.3 KiB 2.86 MiB/s 00:00 [#####################] 100% + mingw32.sig 119.0 B 0.00 B/s 00:00 [#####################] 100% + mingw64 456.0 KiB 2.77 MiB/s 00:00 [#####################] 100% + mingw64.sig 119.0 B 0.00 B/s 00:00 [#####################] 100% + msys 185.9 KiB 1804 KiB/s 00:00 [#####################] 100% + msys.sig 119.0 B 0.00 B/s 00:00 [#####################] 100% +resolving dependencies... +looking for conflicting packages... + +Packages (8) mingw-w64-x86_64-gcc-libs-9.2.0-2 mingw-w64-x86_64-gmp-6.2.0-1 + mingw-w64-x86_64-libsodium-1.0.18-1 + mingw-w64-x86_64-libwinpthread-git-8.0.0.5574.33e5a2ac-1 + mingw-w64-x86_64-mpc-1.1.0-1 mingw-w64-x86_64-mpfr-4.0.2-2 + mingw-w64-x86_64-zeromq-4.3.2-1 mingw-w64-x86_64-helics-2.4.0-1 + +Total Download Size: 9.17 MiB +Total Installed Size: 65.78 MiB + +:: Proceed with installation? [Y/n] y + +``` +you will be asked to proceed with installation, answering `y` will install helics and the required dependencies. + +```bash +$ helics_broker --version +2.4.0-master-dirty (2020-02-16) + +``` +The helics apps and libraries are now installed, and can be updated when HELICS gets an update. For the MINGw32 use + +```bash +$ pacman -Sy mingw32/mingw-w64-i686-helics +``` + +### Building HELICS From Source on Windows with MSYS2 ### + +After MSYS2 has been successfully updated Some packages need to be installed in order to configure and build HELICS. The following packages need to be installed: +- base-devel +- mingw-w64-x86_64-toolchain +- git +- mingw-w64-x86_64-CMake +- mingw-w64-x86_64-boost +- mingw-w64-x86_64-qt5 (only if you want to be able to run cmake-gui which this guide recommends.) +- mingw-w64-x86_64-zeromq + +All packages can be installed by typing the following: +```bash +$ pacman -Sy base-devel mingw-w64-x86_64-toolchain git mingw-w64-x86_64-CMake mingw-w64-x86_64-boost mingw-w64-x86_64-qt5 mingw-w64-x86_64-zeromq +``` +For base-devel and mingw-w64-x86_64-toolchain you may have to hit enter for installing all packages that are part of the group package. The qt5 package is quite large, if you are only using it once it might be faster to use ccmake which is a text based interface to CMake. After all the packages have been installed has been done /mingw64/bin must be in the PATH environment variable. If it isn't then it must be added. Please note that this is only necessary if you are compiling in MSYS2 shell. If you are compiling in the MSYS2 MINGW-64bit shell then /mingw64/bin will be automatically added to the PATH environment variable. If not +```bash +$ export PATH=$PATH:/mingw64/bin +``` + +#### Download HELICS Source Code #### + +Now that the MSYS2 environment has been setup and all prerequisite packages have been installed the source code can be compiled and installed. The HELICS source code can be cloned from GitHub by performing the following: +```bash +$ git clone https://github.com/GMLC-TDC/HELICS.git +``` +git will clone the source code into a folder in the current working directory called HELICS. This path will be referred to by this guide as HELICS_ROOT_DIR. + +#### Compiling HELICS From Source #### + +Change directories to HELICS_ROOT_DIR. Create a directory called helics-build. This can be accomplished by using the mkdir command. cd into this directory. Now type the following: +```bash +$ CMake-gui ../ +``` +If this fails that is because mingw-w64-x86_64-qt5 was not installed. If you did install it the CMake gui window should pop up. click the Advanced check box next to the search bar. Then click Configure. A window will pop up asking you to specify the generator for this project. Select "MSYS Makefiles" from the dropdown menu. The native compilers can be used and will most likely default to gcc. The compilers can also be specified manually. Select Finish; once the configure process completes finished several variables will show up highlighted in red. Since this is the first time setup the Boost and ZeroMQ library. Below are the following CMake variables that could to be verified. + +* `HELICS_ENABLE_CXX_SHARED_LIB` should be checked if you are using HELICS with GridLAB-D, GridLAB-D dynamically links with the shared c++ library of HELICS, the default is off so you would need to change it + +For others the advanced checkbox can be selected to see some other variables + +* Boost_INCLUDE_DIR C:/msys64/mingw64/include +* Boost_LIBRARY_DIR_DEBUG/RELEASE C:/msys64/mingw64/bin +* CMake_INSTALL_PREFIX /usr/local or location of your choice +* ZeroMQ_INCLUDE_DIR C:/msys64/mingw64/include +* ZeroMQ_INSTALL_PATH C:/msys64/mingw64 +* ZeroMQ_LIBRARY C:/msys64/mingw64/bin/libzmq.dll.a +* ZeroMQ_ROOT_DIR C:/msys64/mingw64 + +Once these CMake variables have been correctly verified click Configure if anything was changed. Once that is complete click Generate then once that is complete the CMake-gui can be closed. + +Back in the MSYS2 command window\[ make sure you are in the build directory\] type: +```bash +$ make -j x +``` +where x is the number of threads you can give the make process to speed up the build. Then once that is complete type: `make -j` will just use the number of cores you have available +```bash +$ make install +``` +unless you changed the value of CMake_INSTALL_PREFIX everything the default install location /usr/local/helics_2_1_0. This install path will be referred to as HELICS_INSTALL for the sections related to GridLab-D. +If you want to build Gridlab-d on Windows with HELICS see [Building with HELICS](http://gridlab-d.shoutwiki.com/wiki/Building_GridLAB-D_on_Windows_with_MSYS2#Building_with_the_HELICS_Library). Please use branch feature/1179 to build with HELICS 2.1 or later instead of the branch listed. + +#### Compiling with clang #### +Clang does not work to compile on MSYS2 at this time. It has in the past but there are various issues with the clang standard library on MSYS yet so this will be updated if the situation changes. It is getting closer as of (1/30/2020) Mostly it compiles when linked with Libc++ and libc++abi, but there seems to be some missing functions as of yet, so cannot be used other than for some warning checks. + +## Building with mingw ## +HELICS can also be built with the standalone MinGW + +- We assume you have MinGW installed or know how to install it. +- [Boost](https://www.boost.org/doc/libs/1_70_0/more/getting_started/windows.html); you can use the [Windows installer](https://dl.bintray.com/boostorg/release/1.70.0/binaries/) for Boost installed in the default location +- Run CMake to configure and generate build files, using "MinGW Makefiles" as the generator, +- Run mingw32-make -j to build + +## Building with cygwin ## + +Cygwin is another UNIX like environment on Windows. It has some peculiarities. +HELICS will only build on the 32 bit version due to incompatibilities with ASIO and the 64 bit build. But it does build on the 32 bit versions completely and on the 64 bit version if `HELICS_DISABLE_ASIO=ON` is set +Also the helics-config utility does not get built due to an incompatibility with the filesystem header. + +- required packages include CMake, libboost-devel, make, gcc, g++, libzmq(if using zmq) +- use the unix makefiles generator From d5587cfffb7df2d3c734414545b31bea61599157 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Wed, 26 Feb 2020 23:19:35 -0800 Subject: [PATCH 12/32] Fix swig interface file generation handling of added/removed files (#1100) * Move generated Python interface swig files to an interface subfolder * Change matlab interface generated swig files to interface subfolder * Change the swig interface generating action to use the interface subfolders * Ensure that the non-generated *.m files are still included in installs * Move generated matlab files to the interface subfolder * Fix matlab interface mex compilation on Linux * fix multiple else conditions in matlab test CMake file Co-authored-by: Philip Top --- .github/workflows/swig-interface-gen.yml | 9 ++------ interfaces/matlab/CMakeLists.txt | 22 ++++++++++++++----- ...licsBrokerAddDestinationFilterToEndpoint.m | 0 .../helicsBrokerAddSourceFilterToEndpoint.m | 0 .../+helics/helicsBrokerClone.m | 0 .../+helics/helicsBrokerDataLink.m | 0 .../+helics/helicsBrokerDestroy.m | 0 .../+helics/helicsBrokerDisconnect.m | 0 .../+helics/helicsBrokerFree.m | 0 .../+helics/helicsBrokerGetAddress.m | 0 .../+helics/helicsBrokerGetIdentifier.m | 0 .../+helics/helicsBrokerIsConnected.m | 0 .../+helics/helicsBrokerIsValid.m | 0 .../+helics/helicsBrokerMakeConnections.m | 0 .../+helics/helicsBrokerSetGlobal.m | 0 .../+helics/helicsBrokerSetLogFile.m | 0 .../+helics/helicsBrokerWaitForDisconnect.m | 0 .../+helics/helicsCleanupLibrary.m | 0 .../+helics/helicsCloseLibrary.m | 0 ...helicsCoreAddDestinationFilterToEndpoint.m | 0 .../helicsCoreAddSourceFilterToEndpoint.m | 0 .../{ => interface}/+helics/helicsCoreClone.m | 0 .../+helics/helicsCoreConnect.m | 0 .../+helics/helicsCoreDataLink.m | 0 .../+helics/helicsCoreDestroy.m | 0 .../+helics/helicsCoreDisconnect.m | 0 .../{ => interface}/+helics/helicsCoreFree.m | 0 .../+helics/helicsCoreGetAddress.m | 0 .../+helics/helicsCoreGetIdentifier.m | 0 .../+helics/helicsCoreIsConnected.m | 0 .../+helics/helicsCoreIsValid.m | 0 .../+helics/helicsCoreMakeConnections.m | 0 .../+helics/helicsCoreRegisterCloningFilter.m | 0 .../+helics/helicsCoreRegisterFilter.m | 0 .../+helics/helicsCoreSetGlobal.m | 0 .../+helics/helicsCoreSetLogFile.m | 0 .../+helics/helicsCoreSetReadyToInit.m | 0 .../+helics/helicsCoreWaitForDisconnect.m | 0 .../+helics/helicsCreateBroker.m | 0 .../+helics/helicsCreateBrokerFromArgs.m | 0 .../+helics/helicsCreateCombinationFederate.m | 0 ...elicsCreateCombinationFederateFromConfig.m | 0 .../+helics/helicsCreateCore.m | 0 .../+helics/helicsCreateCoreFromArgs.m | 0 .../+helics/helicsCreateFederateInfo.m | 0 .../+helics/helicsCreateMessageFederate.m | 0 .../helicsCreateMessageFederateFromConfig.m | 0 .../+helics/helicsCreateQuery.m | 0 .../+helics/helicsCreateValueFederate.m | 0 .../helicsCreateValueFederateFromConfig.m | 0 .../+helics/helicsEndpointClearMessages.m | 0 .../helicsEndpointGetDefaultDestination.m | 0 .../+helics/helicsEndpointGetInfo.m | 0 .../+helics/helicsEndpointGetMessage.m | 0 .../+helics/helicsEndpointGetMessageObject.m | 0 .../+helics/helicsEndpointGetName.m | 0 .../+helics/helicsEndpointGetOption.m | 0 .../+helics/helicsEndpointGetType.m | 0 .../+helics/helicsEndpointHasMessage.m | 0 .../+helics/helicsEndpointPendingMessages.m | 0 .../+helics/helicsEndpointSendEventRaw.m | 0 .../+helics/helicsEndpointSendMessage.m | 0 .../+helics/helicsEndpointSendMessageObject.m | 0 .../+helics/helicsEndpointSendMessageRaw.m | 0 .../helicsEndpointSetDefaultDestination.m | 0 .../+helics/helicsEndpointSetInfo.m | 0 .../+helics/helicsEndpointSetOption.m | 0 .../+helics/helicsEndpointSubscribe.m | 0 .../+helics/helicsFederateClearMessages.m | 0 .../+helics/helicsFederateClearUpdates.m | 0 .../+helics/helicsFederateClone.m | 0 .../helicsFederateCreateMessageObject.m | 0 .../+helics/helicsFederateDestroy.m | 0 .../helicsFederateEnterExecutingMode.m | 0 .../helicsFederateEnterExecutingModeAsync.m | 0 ...helicsFederateEnterExecutingModeComplete.m | 0 ...elicsFederateEnterExecutingModeIterative.m | 0 ...FederateEnterExecutingModeIterativeAsync.m | 0 ...erateEnterExecutingModeIterativeComplete.m | 0 .../helicsFederateEnterInitializingMode.m | 0 ...helicsFederateEnterInitializingModeAsync.m | 0 ...icsFederateEnterInitializingModeComplete.m | 0 .../+helics/helicsFederateFinalize.m | 0 .../+helics/helicsFederateFinalizeAsync.m | 0 .../+helics/helicsFederateFinalizeComplete.m | 0 .../+helics/helicsFederateFree.m | 0 .../+helics/helicsFederateGetCoreObject.m | 0 .../+helics/helicsFederateGetCurrentTime.m | 0 .../+helics/helicsFederateGetEndpoint.m | 0 .../helicsFederateGetEndpointByIndex.m | 0 .../+helics/helicsFederateGetEndpointCount.m | 0 .../+helics/helicsFederateGetFilter.m | 0 .../+helics/helicsFederateGetFilterByIndex.m | 0 .../+helics/helicsFederateGetFilterCount.m | 0 .../+helics/helicsFederateGetFlagOption.m | 0 .../+helics/helicsFederateGetInput.m | 0 .../+helics/helicsFederateGetInputByIndex.m | 0 .../+helics/helicsFederateGetInputCount.m | 0 .../helicsFederateGetIntegerProperty.m | 0 .../+helics/helicsFederateGetMessage.m | 0 .../+helics/helicsFederateGetMessageObject.m | 0 .../+helics/helicsFederateGetName.m | 0 .../+helics/helicsFederateGetPublication.m | 0 .../helicsFederateGetPublicationByIndex.m | 0 .../helicsFederateGetPublicationCount.m | 0 .../+helics/helicsFederateGetState.m | 0 .../+helics/helicsFederateGetSubscription.m | 0 .../+helics/helicsFederateGetTimeProperty.m | 0 .../+helics/helicsFederateHasMessage.m | 0 .../+helics/helicsFederateInfoClone.m | 0 .../+helics/helicsFederateInfoFree.m | 0 .../+helics/helicsFederateInfoLoadFromArgs.m | 0 .../+helics/helicsFederateInfoSetBroker.m | 0 .../helicsFederateInfoSetBrokerInitString.m | 0 .../+helics/helicsFederateInfoSetBrokerKey.m | 0 .../+helics/helicsFederateInfoSetBrokerPort.m | 0 .../helicsFederateInfoSetCoreInitString.m | 0 .../+helics/helicsFederateInfoSetCoreName.m | 0 .../+helics/helicsFederateInfoSetCoreType.m | 0 .../helicsFederateInfoSetCoreTypeFromString.m | 0 .../+helics/helicsFederateInfoSetFlagOption.m | 0 .../helicsFederateInfoSetIntegerProperty.m | 0 .../+helics/helicsFederateInfoSetLocalPort.m | 0 .../+helics/helicsFederateInfoSetSeparator.m | 0 .../helicsFederateInfoSetTimeProperty.m | 0 .../helicsFederateIsAsyncOperationCompleted.m | 0 .../+helics/helicsFederateIsValid.m | 0 .../+helics/helicsFederateLogDebugMessage.m | 0 .../+helics/helicsFederateLogErrorMessage.m | 0 .../+helics/helicsFederateLogInfoMessage.m | 0 .../+helics/helicsFederateLogLevelMessage.m | 0 .../+helics/helicsFederateLogWarningMessage.m | 0 .../+helics/helicsFederatePendingMessages.m | 0 .../+helics/helicsFederatePublishJSON.m | 0 .../helicsFederateRegisterCloningFilter.m | 0 .../+helics/helicsFederateRegisterEndpoint.m | 0 .../+helics/helicsFederateRegisterFilter.m | 0 ...elicsFederateRegisterFromPublicationJSON.m | 0 ...elicsFederateRegisterGlobalCloningFilter.m | 0 .../helicsFederateRegisterGlobalEndpoint.m | 0 .../helicsFederateRegisterGlobalFilter.m | 0 .../helicsFederateRegisterGlobalInput.m | 0 .../helicsFederateRegisterGlobalPublication.m | 0 .../helicsFederateRegisterGlobalTypeInput.m | 0 ...icsFederateRegisterGlobalTypePublication.m | 0 .../+helics/helicsFederateRegisterInput.m | 0 .../helicsFederateRegisterInterfaces.m | 0 .../helicsFederateRegisterPublication.m | 0 .../helicsFederateRegisterSubscription.m | 0 .../+helics/helicsFederateRegisterTypeInput.m | 0 .../helicsFederateRegisterTypePublication.m | 0 .../+helics/helicsFederateRequestNextStep.m | 0 .../+helics/helicsFederateRequestTime.m | 0 .../helicsFederateRequestTimeAdvance.m | 0 .../+helics/helicsFederateRequestTimeAsync.m | 0 .../helicsFederateRequestTimeComplete.m | 0 .../helicsFederateRequestTimeIterative.m | 0 .../helicsFederateRequestTimeIterativeAsync.m | 0 ...licsFederateRequestTimeIterativeComplete.m | 0 .../+helics/helicsFederateSetFlagOption.m | 0 .../+helics/helicsFederateSetGlobal.m | 0 .../helicsFederateSetIntegerProperty.m | 0 .../+helics/helicsFederateSetLogFile.m | 0 .../+helics/helicsFederateSetSeparator.m | 0 .../+helics/helicsFederateSetTimeProperty.m | 0 .../+helics/helicsFilterAddDeliveryEndpoint.m | 0 .../helicsFilterAddDestinationTarget.m | 0 .../+helics/helicsFilterAddSourceTarget.m | 0 .../+helics/helicsFilterGetInfo.m | 0 .../+helics/helicsFilterGetName.m | 0 .../+helics/helicsFilterGetOption.m | 0 .../helicsFilterRemoveDeliveryEndpoint.m | 0 .../+helics/helicsFilterRemoveTarget.m | 0 .../{ => interface}/+helics/helicsFilterSet.m | 0 .../+helics/helicsFilterSetInfo.m | 0 .../+helics/helicsFilterSetOption.m | 0 .../+helics/helicsFilterSetString.m | 0 .../+helics/helicsGetFederateByName.m | 0 .../+helics/helicsGetOptionIndex.m | 0 .../+helics/helicsGetPropertyIndex.m | 0 .../+helics/helicsGetVersion.m | 0 .../+helics/helicsInputAddTarget.m | 0 .../+helics/helicsInputClearUpdate.m | 0 .../+helics/helicsInputGetBoolean.m | 0 .../+helics/helicsInputGetChar.m | 0 .../+helics/helicsInputGetComplex.m | 0 .../+helics/helicsInputGetDouble.m | 0 .../+helics/helicsInputGetExtractionUnits.m | 0 .../+helics/helicsInputGetInfo.m | 0 .../+helics/helicsInputGetInjectionUnits.m | 0 .../+helics/helicsInputGetInteger.m | 0 .../+helics/helicsInputGetKey.m | 0 .../+helics/helicsInputGetNamedPoint.m | 0 .../+helics/helicsInputGetOption.m | 0 .../+helics/helicsInputGetPublicationType.m | 0 .../+helics/helicsInputGetRawValue.m | 0 .../+helics/helicsInputGetRawValueSize.m | 0 .../+helics/helicsInputGetString.m | 0 .../+helics/helicsInputGetStringSize.m | 0 .../+helics/helicsInputGetTime.m | 0 .../+helics/helicsInputGetType.m | 0 .../+helics/helicsInputGetUnits.m | 0 .../+helics/helicsInputGetVector.m | 0 .../+helics/helicsInputGetVectorSize.m | 0 .../+helics/helicsInputIsUpdated.m | 0 .../+helics/helicsInputLastUpdateTime.m | 0 .../+helics/helicsInputSetDefaultBoolean.m | 0 .../+helics/helicsInputSetDefaultChar.m | 0 .../+helics/helicsInputSetDefaultComplex.m | 0 .../+helics/helicsInputSetDefaultDouble.m | 0 .../+helics/helicsInputSetDefaultInteger.m | 0 .../+helics/helicsInputSetDefaultNamedPoint.m | 0 .../+helics/helicsInputSetDefaultRaw.m | 0 .../+helics/helicsInputSetDefaultString.m | 0 .../+helics/helicsInputSetDefaultTime.m | 0 .../+helics/helicsInputSetDefaultVector.m | 0 .../+helics/helicsInputSetInfo.m | 0 .../+helics/helicsInputSetMinimumChange.m | 0 .../+helics/helicsInputSetOption.m | 0 .../+helics/helicsIsCoreTypeAvailable.m | 0 .../+helics/helicsMessageAppendData.m | 0 .../+helics/helicsMessageCheckFlag.m | 0 .../+helics/helicsMessageClearFlags.m | 0 .../+helics/helicsMessageGetDestination.m | 0 .../+helics/helicsMessageGetMessageID.m | 0 .../helicsMessageGetOriginalDestination.m | 0 .../+helics/helicsMessageGetOriginalSource.m | 0 .../+helics/helicsMessageGetRawData.m | 0 .../+helics/helicsMessageGetRawDataSize.m | 0 .../+helics/helicsMessageGetSource.m | 0 .../+helics/helicsMessageGetString.m | 0 .../+helics/helicsMessageGetTime.m | 0 .../+helics/helicsMessageIsValid.m | 0 .../+helics/helicsMessageReserve.m | 0 .../+helics/helicsMessageSetData.m | 0 .../+helics/helicsMessageSetDestination.m | 0 .../+helics/helicsMessageSetFlagOption.m | 0 .../+helics/helicsMessageSetMessageID.m | 0 .../helicsMessageSetOriginalDestination.m | 0 .../+helics/helicsMessageSetOriginalSource.m | 0 .../+helics/helicsMessageSetSource.m | 0 .../+helics/helicsMessageSetString.m | 0 .../+helics/helicsMessageSetTime.m | 0 .../+helics/helicsPublicationAddTarget.m | 0 .../+helics/helicsPublicationGetInfo.m | 0 .../+helics/helicsPublicationGetKey.m | 0 .../+helics/helicsPublicationGetOption.m | 0 .../+helics/helicsPublicationGetType.m | 0 .../+helics/helicsPublicationGetUnits.m | 0 .../+helics/helicsPublicationPublishBoolean.m | 0 .../+helics/helicsPublicationPublishChar.m | 0 .../+helics/helicsPublicationPublishComplex.m | 0 .../+helics/helicsPublicationPublishDouble.m | 0 .../+helics/helicsPublicationPublishInteger.m | 0 .../helicsPublicationPublishNamedPoint.m | 0 .../+helics/helicsPublicationPublishRaw.m | 0 .../+helics/helicsPublicationPublishString.m | 0 .../+helics/helicsPublicationPublishTime.m | 0 .../+helics/helicsPublicationPublishVector.m | 0 .../+helics/helicsPublicationSetInfo.m | 0 .../helicsPublicationSetMinimumChange.m | 0 .../+helics/helicsPublicationSetOption.m | 0 .../+helics/helicsQueryBrokerExecute.m | 0 .../+helics/helicsQueryCoreExecute.m | 0 .../+helics/helicsQueryExecute.m | 0 .../+helics/helicsQueryExecuteAsync.m | 0 .../+helics/helicsQueryExecuteComplete.m | 0 .../{ => interface}/+helics/helicsQueryFree.m | 0 .../+helics/helicsQueryIsCompleted.m | 0 .../+helics/helicsSubscriptionGetKey.m | 0 .../+helics/helics_core_type_default.m | 0 .../+helics/helics_core_type_http.m | 0 .../+helics/helics_core_type_inproc.m | 0 .../+helics/helics_core_type_interprocess.m | 0 .../+helics/helics_core_type_ipc.m | 0 .../+helics/helics_core_type_mpi.m | 0 .../+helics/helics_core_type_nng.m | 0 .../+helics/helics_core_type_null.m | 0 .../+helics/helics_core_type_tcp.m | 0 .../+helics/helics_core_type_tcp_ss.m | 0 .../+helics/helics_core_type_test.m | 0 .../+helics/helics_core_type_udp.m | 0 .../+helics/helics_core_type_websocket.m | 0 .../+helics/helics_core_type_zmq.m | 0 .../+helics/helics_core_type_zmq_test.m | 0 .../+helics/helics_data_type_any.m | 0 .../+helics/helics_data_type_boolean.m | 0 .../+helics/helics_data_type_complex.m | 0 .../+helics/helics_data_type_complex_vector.m | 0 .../+helics/helics_data_type_double.m | 0 .../+helics/helics_data_type_int.m | 0 .../+helics/helics_data_type_named_point.m | 0 .../+helics/helics_data_type_raw.m | 0 .../+helics/helics_data_type_string.m | 0 .../+helics/helics_data_type_time.m | 0 .../+helics/helics_data_type_vector.m | 0 .../+helics/helics_error_connection_failure.m | 0 .../+helics/helics_error_discard.m | 0 .../+helics/helics_error_execution_failure.m | 0 .../+helics/helics_error_external_type.m | 0 .../+helics/helics_error_insufficient_space.m | 0 .../+helics/helics_error_invalid_argument.m | 0 .../helics_error_invalid_function_call.m | 0 .../+helics/helics_error_invalid_object.m | 0 .../helics_error_invalid_state_transition.m | 0 .../+helics/helics_error_other.m | 0 .../helics_error_registration_failure.m | 0 .../+helics/helics_error_system_failure.m | 0 .../{ => interface}/+helics/helics_false.m | 0 .../+helics/helics_filter_type_clone.m | 0 .../+helics/helics_filter_type_custom.m | 0 .../+helics/helics_filter_type_delay.m | 0 .../+helics/helics_filter_type_firewall.m | 0 .../+helics/helics_filter_type_random_delay.m | 0 .../+helics/helics_filter_type_random_drop.m | 0 .../+helics/helics_filter_type_reroute.m | 0 .../+helics/helics_flag_delay_init_entry.m | 0 .../+helics/helics_flag_enable_init_entry.m | 0 .../+helics/helics_flag_forward_compute.m | 0 ...elics_flag_ignore_time_mismatch_warnings.m | 0 .../+helics/helics_flag_interruptible.m | 0 .../+helics/helics_flag_observer.m | 0 .../helics_flag_only_transmit_on_change.m | 0 .../helics_flag_only_update_on_change.m | 0 .../+helics/helics_flag_realtime.m | 0 .../helics_flag_restrictive_time_policy.m | 0 .../+helics/helics_flag_rollback.m | 0 .../helics_flag_single_thread_federate.m | 0 .../+helics/helics_flag_slow_responding.m | 0 .../+helics/helics_flag_source_only.m | 0 .../+helics/helics_flag_uninterruptible.m | 0 ...helics_flag_wait_for_current_time_update.m | 0 .../helics_handle_option_buffer_data.m | 0 ...helics_handle_option_connection_optional.m | 0 ...helics_handle_option_connection_required.m | 0 .../helics_handle_option_ignore_interrupts.m | 0 ...elics_handle_option_ignore_unit_mismatch.m | 0 ...ndle_option_multiple_connections_allowed.m | 0 ...cs_handle_option_only_transmit_on_change.m | 0 ...lics_handle_option_only_update_on_change.m | 0 ...ics_handle_option_single_connection_only.m | 0 ...elics_handle_option_strict_type_checking.m | 0 ...helics_iteration_request_force_iteration.m | 0 ...lics_iteration_request_iterate_if_needed.m | 0 .../helics_iteration_request_no_iteration.m | 0 .../+helics/helics_iteration_result_error.m | 0 .../+helics/helics_iteration_result_halted.m | 0 .../helics_iteration_result_iterating.m | 0 .../helics_iteration_result_next_step.m | 0 .../+helics/helics_log_level_connections.m | 0 .../+helics/helics_log_level_data.m | 0 .../+helics/helics_log_level_error.m | 0 .../+helics/helics_log_level_interfaces.m | 0 .../+helics/helics_log_level_no_print.m | 0 .../+helics/helics_log_level_summary.m | 0 .../+helics/helics_log_level_timing.m | 0 .../+helics/helics_log_level_trace.m | 0 .../+helics/helics_log_level_warning.m | 0 .../{ => interface}/+helics/helics_message.m | 0 .../{ => interface}/+helics/helics_ok.m | 0 .../helics_property_int_console_log_level.m | 0 .../helics_property_int_file_log_level.m | 0 .../+helics/helics_property_int_log_level.m | 0 .../helics_property_int_max_iterations.m | 0 .../+helics/helics_property_time_delta.m | 0 .../helics_property_time_input_delay.m | 0 .../+helics/helics_property_time_offset.m | 0 .../helics_property_time_output_delay.m | 0 .../+helics/helics_property_time_period.m | 0 .../+helics/helics_property_time_rt_lag.m | 0 .../+helics/helics_property_time_rt_lead.m | 0 .../helics_property_time_rt_tolerance.m | 0 .../+helics/helics_state_error.m | 0 .../+helics/helics_state_execution.m | 0 .../+helics/helics_state_finalize.m | 0 .../+helics/helics_state_initialization.m | 0 .../+helics/helics_state_pending_exec.m | 0 .../+helics/helics_state_pending_finalize.m | 0 .../+helics/helics_state_pending_init.m | 0 .../helics_state_pending_iterative_time.m | 0 .../+helics/helics_state_pending_time.m | 0 .../+helics/helics_state_startup.m | 0 .../+helics/helics_time_epsilon.m | 0 .../+helics/helics_time_invalid.m | 0 .../+helics/helics_time_maxtime.m | 0 .../+helics/helics_time_zero.m | 0 .../{ => interface}/+helics/helics_true.m | 0 .../{ => interface}/+helics/helics_warning.m | 0 interfaces/matlab/{ => interface}/SwigGet.m | 0 interfaces/matlab/{ => interface}/SwigMem.m | 0 interfaces/matlab/{ => interface}/SwigRef.m | 0 .../matlab/{ => interface}/helicsMEX.cpp | 0 .../matlab/matlabSwigGenerateOnly.cmake | 2 +- interfaces/matlab/mkhelicsMEXFile.m.in | 2 +- interfaces/python/CMakeLists.txt | 11 ++++++---- interfaces/python/{ => interface}/helics.py | 0 .../python/{ => interface}/helicsPython.c | 0 .../python/pythonSwigGenerateOnly.cmake | 2 +- tests/matlab/CMakeLists.txt | 2 -- 399 files changed, 29 insertions(+), 21 deletions(-) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerAddDestinationFilterToEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerAddSourceFilterToEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerClone.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerDataLink.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerDestroy.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerDisconnect.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerFree.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerGetAddress.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerGetIdentifier.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerIsConnected.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerIsValid.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerMakeConnections.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerSetGlobal.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerSetLogFile.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsBrokerWaitForDisconnect.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCleanupLibrary.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCloseLibrary.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreAddDestinationFilterToEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreAddSourceFilterToEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreClone.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreConnect.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreDataLink.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreDestroy.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreDisconnect.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreFree.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreGetAddress.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreGetIdentifier.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreIsConnected.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreIsValid.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreMakeConnections.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreRegisterCloningFilter.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreRegisterFilter.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreSetGlobal.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreSetLogFile.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreSetReadyToInit.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCoreWaitForDisconnect.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateBroker.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateBrokerFromArgs.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateCombinationFederate.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateCombinationFederateFromConfig.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateCore.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateCoreFromArgs.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateFederateInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateMessageFederate.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateMessageFederateFromConfig.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateQuery.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateValueFederate.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsCreateValueFederateFromConfig.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointClearMessages.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointGetDefaultDestination.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointGetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointGetMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointGetMessageObject.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointGetName.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointGetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointGetType.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointHasMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointPendingMessages.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSendEventRaw.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSendMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSendMessageObject.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSendMessageRaw.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSetDefaultDestination.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsEndpointSubscribe.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateClearMessages.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateClearUpdates.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateClone.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateCreateMessageObject.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateDestroy.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterExecutingMode.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterExecutingModeAsync.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterExecutingModeComplete.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterExecutingModeIterative.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterExecutingModeIterativeAsync.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterExecutingModeIterativeComplete.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterInitializingMode.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterInitializingModeAsync.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateEnterInitializingModeComplete.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateFinalize.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateFinalizeAsync.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateFinalizeComplete.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateFree.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetCoreObject.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetCurrentTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetEndpointByIndex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetEndpointCount.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetFilter.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetFilterByIndex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetFilterCount.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetFlagOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetInput.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetInputByIndex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetInputCount.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetIntegerProperty.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetMessageObject.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetName.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetPublication.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetPublicationByIndex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetPublicationCount.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetState.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetSubscription.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateGetTimeProperty.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateHasMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoClone.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoFree.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoLoadFromArgs.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetBroker.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetBrokerInitString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetBrokerKey.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetBrokerPort.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetCoreInitString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetCoreName.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetCoreType.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetCoreTypeFromString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetFlagOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetIntegerProperty.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetLocalPort.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetSeparator.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateInfoSetTimeProperty.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateIsAsyncOperationCompleted.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateIsValid.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateLogDebugMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateLogErrorMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateLogInfoMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateLogLevelMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateLogWarningMessage.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederatePendingMessages.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederatePublishJSON.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterCloningFilter.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterFilter.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterFromPublicationJSON.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterGlobalCloningFilter.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterGlobalEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterGlobalFilter.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterGlobalInput.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterGlobalPublication.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterGlobalTypeInput.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterGlobalTypePublication.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterInput.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterInterfaces.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterPublication.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterSubscription.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterTypeInput.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRegisterTypePublication.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestNextStep.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestTimeAdvance.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestTimeAsync.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestTimeComplete.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestTimeIterative.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestTimeIterativeAsync.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateRequestTimeIterativeComplete.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateSetFlagOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateSetGlobal.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateSetIntegerProperty.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateSetLogFile.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateSetSeparator.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFederateSetTimeProperty.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterAddDeliveryEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterAddDestinationTarget.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterAddSourceTarget.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterGetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterGetName.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterGetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterRemoveDeliveryEndpoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterRemoveTarget.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterSet.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterSetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterSetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsFilterSetString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsGetFederateByName.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsGetOptionIndex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsGetPropertyIndex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsGetVersion.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputAddTarget.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputClearUpdate.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetBoolean.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetChar.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetComplex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetDouble.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetExtractionUnits.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetInjectionUnits.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetInteger.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetKey.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetNamedPoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetPublicationType.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetRawValue.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetRawValueSize.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetStringSize.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetType.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetUnits.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetVector.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputGetVectorSize.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputIsUpdated.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputLastUpdateTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultBoolean.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultChar.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultComplex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultDouble.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultInteger.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultNamedPoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultRaw.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetDefaultVector.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetMinimumChange.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsInputSetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsIsCoreTypeAvailable.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageAppendData.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageCheckFlag.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageClearFlags.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetDestination.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetMessageID.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetOriginalDestination.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetOriginalSource.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetRawData.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetRawDataSize.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetSource.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageGetTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageIsValid.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageReserve.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetData.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetDestination.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetFlagOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetMessageID.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetOriginalDestination.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetOriginalSource.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetSource.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsMessageSetTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationAddTarget.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationGetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationGetKey.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationGetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationGetType.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationGetUnits.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishBoolean.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishChar.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishComplex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishDouble.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishInteger.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishNamedPoint.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishRaw.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishString.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishTime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationPublishVector.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationSetInfo.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationSetMinimumChange.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsPublicationSetOption.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsQueryBrokerExecute.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsQueryCoreExecute.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsQueryExecute.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsQueryExecuteAsync.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsQueryExecuteComplete.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsQueryFree.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsQueryIsCompleted.m (100%) rename interfaces/matlab/{ => interface}/+helics/helicsSubscriptionGetKey.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_default.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_http.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_inproc.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_interprocess.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_ipc.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_mpi.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_nng.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_null.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_tcp.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_tcp_ss.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_test.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_udp.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_websocket.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_zmq.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_core_type_zmq_test.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_any.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_boolean.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_complex.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_complex_vector.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_double.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_int.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_named_point.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_raw.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_string.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_time.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_data_type_vector.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_connection_failure.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_discard.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_execution_failure.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_external_type.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_insufficient_space.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_invalid_argument.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_invalid_function_call.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_invalid_object.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_invalid_state_transition.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_other.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_registration_failure.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_error_system_failure.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_false.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_filter_type_clone.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_filter_type_custom.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_filter_type_delay.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_filter_type_firewall.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_filter_type_random_delay.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_filter_type_random_drop.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_filter_type_reroute.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_delay_init_entry.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_enable_init_entry.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_forward_compute.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_ignore_time_mismatch_warnings.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_interruptible.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_observer.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_only_transmit_on_change.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_only_update_on_change.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_realtime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_restrictive_time_policy.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_rollback.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_single_thread_federate.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_slow_responding.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_source_only.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_uninterruptible.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_flag_wait_for_current_time_update.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_buffer_data.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_connection_optional.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_connection_required.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_ignore_interrupts.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_ignore_unit_mismatch.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_multiple_connections_allowed.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_only_transmit_on_change.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_only_update_on_change.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_single_connection_only.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_handle_option_strict_type_checking.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_iteration_request_force_iteration.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_iteration_request_iterate_if_needed.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_iteration_request_no_iteration.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_iteration_result_error.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_iteration_result_halted.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_iteration_result_iterating.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_iteration_result_next_step.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_connections.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_data.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_error.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_interfaces.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_no_print.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_summary.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_timing.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_trace.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_log_level_warning.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_message.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_ok.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_int_console_log_level.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_int_file_log_level.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_int_log_level.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_int_max_iterations.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_delta.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_input_delay.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_offset.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_output_delay.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_period.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_rt_lag.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_rt_lead.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_property_time_rt_tolerance.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_error.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_execution.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_finalize.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_initialization.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_pending_exec.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_pending_finalize.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_pending_init.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_pending_iterative_time.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_pending_time.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_state_startup.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_time_epsilon.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_time_invalid.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_time_maxtime.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_time_zero.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_true.m (100%) rename interfaces/matlab/{ => interface}/+helics/helics_warning.m (100%) rename interfaces/matlab/{ => interface}/SwigGet.m (100%) rename interfaces/matlab/{ => interface}/SwigMem.m (100%) rename interfaces/matlab/{ => interface}/SwigRef.m (100%) rename interfaces/matlab/{ => interface}/helicsMEX.cpp (100%) rename interfaces/python/{ => interface}/helics.py (100%) rename interfaces/python/{ => interface}/helicsPython.c (100%) diff --git a/.github/workflows/swig-interface-gen.yml b/.github/workflows/swig-interface-gen.yml index 7855c4b6b3..38f33df88a 100644 --- a/.github/workflows/swig-interface-gen.yml +++ b/.github/workflows/swig-interface-gen.yml @@ -17,6 +17,7 @@ jobs: - uses: actions/checkout@v1 - name: Run SWIG run: | + rm -rf interfaces/*/interface/* mkdir build_matlab pushd build_matlab cmake -DBUILD_MATLAB_INTERFACE=ON -DHELICS_SWIG_GENERATE_INTERFACE_FILES_ONLY=ON -DHELICS_OVERWRITE_INTERFACE_FILES=ON -DHELICS_BUILD_EXAMPLES=OFF -DENABLE_ZMQ_CORE=OFF -DHELICS_BUILD_TESTS=OFF -DHELICS_BUILD_APP_EXECUTABLES=OFF -DHELICS_DISABLE_BOOST=ON -DHELICS_ENABLE_SWIG=ON -DSWIG_EXECUTABLE=/root/swig-matlab/bin/swig .. @@ -30,13 +31,7 @@ jobs: popd - name: Stage changed interface files shell: bash --noprofile --norc {0} - run: | - git diff --name-only | grep -E 'interfaces/*' - if [[ "$?" == "0" ]]; - then - git add interfaces/ - fi - exit 0 + run: git add interfaces/ - uses: ./.github/actions/create-file-update-pr env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/interfaces/matlab/CMakeLists.txt b/interfaces/matlab/CMakeLists.txt index d9b9b8a840..37b6e49d46 100644 --- a/interfaces/matlab/CMakeLists.txt +++ b/interfaces/matlab/CMakeLists.txt @@ -38,23 +38,33 @@ else() "${CMAKE_COMMAND}" -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/helicsMEX.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/interface/helicsMEX.cpp ${CMAKE_CURRENT_BINARY_DIR}/helicsMEX.cpp - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/helicsMEX.cpp + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/interface/helicsMEX.cpp ) install( - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/+helics + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/interface/+helics DESTINATION matlab COMPONENT matlab ) file(GLOB MATLAB_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.m) + file(GLOB MATLAB_GENERATED_FILES ${CMAKE_CURRENT_SOURCE_DIR}/interface/*.m) + file( + COPY ${CMAKE_CURRENT_SOURCE_DIR}/interface/ + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + ) + file( + COPY ${MATLAB_FILES} + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + ) install( - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/+helics + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/interface/+helics DESTINATION matlab COMPONENT matlab ) install(FILES ${MATLAB_FILES} DESTINATION matlab COMPONENT matlab) + install(FILES ${MATLAB_GENERATED_FILES} DESTINATION matlab COMPONENT matlab) else() file(GLOB SHARED_LIB_HEADERS @@ -159,7 +169,9 @@ else() -nodisplay -nosplash -r - "\"run('${CMAKE_CURRENT_BINARY_DIR}/mkhelicsMEXFile.m');quit;\"" + mkhelicsMEXFile + WORKING_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mkhelicsMEXFile.m helicsSharedLib ${CMAKE_CURRENT_BINARY_DIR}/helicsMEX.cpp diff --git a/interfaces/matlab/+helics/helicsBrokerAddDestinationFilterToEndpoint.m b/interfaces/matlab/interface/+helics/helicsBrokerAddDestinationFilterToEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerAddDestinationFilterToEndpoint.m rename to interfaces/matlab/interface/+helics/helicsBrokerAddDestinationFilterToEndpoint.m diff --git a/interfaces/matlab/+helics/helicsBrokerAddSourceFilterToEndpoint.m b/interfaces/matlab/interface/+helics/helicsBrokerAddSourceFilterToEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerAddSourceFilterToEndpoint.m rename to interfaces/matlab/interface/+helics/helicsBrokerAddSourceFilterToEndpoint.m diff --git a/interfaces/matlab/+helics/helicsBrokerClone.m b/interfaces/matlab/interface/+helics/helicsBrokerClone.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerClone.m rename to interfaces/matlab/interface/+helics/helicsBrokerClone.m diff --git a/interfaces/matlab/+helics/helicsBrokerDataLink.m b/interfaces/matlab/interface/+helics/helicsBrokerDataLink.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerDataLink.m rename to interfaces/matlab/interface/+helics/helicsBrokerDataLink.m diff --git a/interfaces/matlab/+helics/helicsBrokerDestroy.m b/interfaces/matlab/interface/+helics/helicsBrokerDestroy.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerDestroy.m rename to interfaces/matlab/interface/+helics/helicsBrokerDestroy.m diff --git a/interfaces/matlab/+helics/helicsBrokerDisconnect.m b/interfaces/matlab/interface/+helics/helicsBrokerDisconnect.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerDisconnect.m rename to interfaces/matlab/interface/+helics/helicsBrokerDisconnect.m diff --git a/interfaces/matlab/+helics/helicsBrokerFree.m b/interfaces/matlab/interface/+helics/helicsBrokerFree.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerFree.m rename to interfaces/matlab/interface/+helics/helicsBrokerFree.m diff --git a/interfaces/matlab/+helics/helicsBrokerGetAddress.m b/interfaces/matlab/interface/+helics/helicsBrokerGetAddress.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerGetAddress.m rename to interfaces/matlab/interface/+helics/helicsBrokerGetAddress.m diff --git a/interfaces/matlab/+helics/helicsBrokerGetIdentifier.m b/interfaces/matlab/interface/+helics/helicsBrokerGetIdentifier.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerGetIdentifier.m rename to interfaces/matlab/interface/+helics/helicsBrokerGetIdentifier.m diff --git a/interfaces/matlab/+helics/helicsBrokerIsConnected.m b/interfaces/matlab/interface/+helics/helicsBrokerIsConnected.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerIsConnected.m rename to interfaces/matlab/interface/+helics/helicsBrokerIsConnected.m diff --git a/interfaces/matlab/+helics/helicsBrokerIsValid.m b/interfaces/matlab/interface/+helics/helicsBrokerIsValid.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerIsValid.m rename to interfaces/matlab/interface/+helics/helicsBrokerIsValid.m diff --git a/interfaces/matlab/+helics/helicsBrokerMakeConnections.m b/interfaces/matlab/interface/+helics/helicsBrokerMakeConnections.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerMakeConnections.m rename to interfaces/matlab/interface/+helics/helicsBrokerMakeConnections.m diff --git a/interfaces/matlab/+helics/helicsBrokerSetGlobal.m b/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerSetGlobal.m rename to interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m diff --git a/interfaces/matlab/+helics/helicsBrokerSetLogFile.m b/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerSetLogFile.m rename to interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m diff --git a/interfaces/matlab/+helics/helicsBrokerWaitForDisconnect.m b/interfaces/matlab/interface/+helics/helicsBrokerWaitForDisconnect.m similarity index 100% rename from interfaces/matlab/+helics/helicsBrokerWaitForDisconnect.m rename to interfaces/matlab/interface/+helics/helicsBrokerWaitForDisconnect.m diff --git a/interfaces/matlab/+helics/helicsCleanupLibrary.m b/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m similarity index 100% rename from interfaces/matlab/+helics/helicsCleanupLibrary.m rename to interfaces/matlab/interface/+helics/helicsCleanupLibrary.m diff --git a/interfaces/matlab/+helics/helicsCloseLibrary.m b/interfaces/matlab/interface/+helics/helicsCloseLibrary.m similarity index 100% rename from interfaces/matlab/+helics/helicsCloseLibrary.m rename to interfaces/matlab/interface/+helics/helicsCloseLibrary.m diff --git a/interfaces/matlab/+helics/helicsCoreAddDestinationFilterToEndpoint.m b/interfaces/matlab/interface/+helics/helicsCoreAddDestinationFilterToEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreAddDestinationFilterToEndpoint.m rename to interfaces/matlab/interface/+helics/helicsCoreAddDestinationFilterToEndpoint.m diff --git a/interfaces/matlab/+helics/helicsCoreAddSourceFilterToEndpoint.m b/interfaces/matlab/interface/+helics/helicsCoreAddSourceFilterToEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreAddSourceFilterToEndpoint.m rename to interfaces/matlab/interface/+helics/helicsCoreAddSourceFilterToEndpoint.m diff --git a/interfaces/matlab/+helics/helicsCoreClone.m b/interfaces/matlab/interface/+helics/helicsCoreClone.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreClone.m rename to interfaces/matlab/interface/+helics/helicsCoreClone.m diff --git a/interfaces/matlab/+helics/helicsCoreConnect.m b/interfaces/matlab/interface/+helics/helicsCoreConnect.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreConnect.m rename to interfaces/matlab/interface/+helics/helicsCoreConnect.m diff --git a/interfaces/matlab/+helics/helicsCoreDataLink.m b/interfaces/matlab/interface/+helics/helicsCoreDataLink.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreDataLink.m rename to interfaces/matlab/interface/+helics/helicsCoreDataLink.m diff --git a/interfaces/matlab/+helics/helicsCoreDestroy.m b/interfaces/matlab/interface/+helics/helicsCoreDestroy.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreDestroy.m rename to interfaces/matlab/interface/+helics/helicsCoreDestroy.m diff --git a/interfaces/matlab/+helics/helicsCoreDisconnect.m b/interfaces/matlab/interface/+helics/helicsCoreDisconnect.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreDisconnect.m rename to interfaces/matlab/interface/+helics/helicsCoreDisconnect.m diff --git a/interfaces/matlab/+helics/helicsCoreFree.m b/interfaces/matlab/interface/+helics/helicsCoreFree.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreFree.m rename to interfaces/matlab/interface/+helics/helicsCoreFree.m diff --git a/interfaces/matlab/+helics/helicsCoreGetAddress.m b/interfaces/matlab/interface/+helics/helicsCoreGetAddress.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreGetAddress.m rename to interfaces/matlab/interface/+helics/helicsCoreGetAddress.m diff --git a/interfaces/matlab/+helics/helicsCoreGetIdentifier.m b/interfaces/matlab/interface/+helics/helicsCoreGetIdentifier.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreGetIdentifier.m rename to interfaces/matlab/interface/+helics/helicsCoreGetIdentifier.m diff --git a/interfaces/matlab/+helics/helicsCoreIsConnected.m b/interfaces/matlab/interface/+helics/helicsCoreIsConnected.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreIsConnected.m rename to interfaces/matlab/interface/+helics/helicsCoreIsConnected.m diff --git a/interfaces/matlab/+helics/helicsCoreIsValid.m b/interfaces/matlab/interface/+helics/helicsCoreIsValid.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreIsValid.m rename to interfaces/matlab/interface/+helics/helicsCoreIsValid.m diff --git a/interfaces/matlab/+helics/helicsCoreMakeConnections.m b/interfaces/matlab/interface/+helics/helicsCoreMakeConnections.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreMakeConnections.m rename to interfaces/matlab/interface/+helics/helicsCoreMakeConnections.m diff --git a/interfaces/matlab/+helics/helicsCoreRegisterCloningFilter.m b/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreRegisterCloningFilter.m rename to interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m diff --git a/interfaces/matlab/+helics/helicsCoreRegisterFilter.m b/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreRegisterFilter.m rename to interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m diff --git a/interfaces/matlab/+helics/helicsCoreSetGlobal.m b/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreSetGlobal.m rename to interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m diff --git a/interfaces/matlab/+helics/helicsCoreSetLogFile.m b/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreSetLogFile.m rename to interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m diff --git a/interfaces/matlab/+helics/helicsCoreSetReadyToInit.m b/interfaces/matlab/interface/+helics/helicsCoreSetReadyToInit.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreSetReadyToInit.m rename to interfaces/matlab/interface/+helics/helicsCoreSetReadyToInit.m diff --git a/interfaces/matlab/+helics/helicsCoreWaitForDisconnect.m b/interfaces/matlab/interface/+helics/helicsCoreWaitForDisconnect.m similarity index 100% rename from interfaces/matlab/+helics/helicsCoreWaitForDisconnect.m rename to interfaces/matlab/interface/+helics/helicsCoreWaitForDisconnect.m diff --git a/interfaces/matlab/+helics/helicsCreateBroker.m b/interfaces/matlab/interface/+helics/helicsCreateBroker.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateBroker.m rename to interfaces/matlab/interface/+helics/helicsCreateBroker.m diff --git a/interfaces/matlab/+helics/helicsCreateBrokerFromArgs.m b/interfaces/matlab/interface/+helics/helicsCreateBrokerFromArgs.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateBrokerFromArgs.m rename to interfaces/matlab/interface/+helics/helicsCreateBrokerFromArgs.m diff --git a/interfaces/matlab/+helics/helicsCreateCombinationFederate.m b/interfaces/matlab/interface/+helics/helicsCreateCombinationFederate.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateCombinationFederate.m rename to interfaces/matlab/interface/+helics/helicsCreateCombinationFederate.m diff --git a/interfaces/matlab/+helics/helicsCreateCombinationFederateFromConfig.m b/interfaces/matlab/interface/+helics/helicsCreateCombinationFederateFromConfig.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateCombinationFederateFromConfig.m rename to interfaces/matlab/interface/+helics/helicsCreateCombinationFederateFromConfig.m diff --git a/interfaces/matlab/+helics/helicsCreateCore.m b/interfaces/matlab/interface/+helics/helicsCreateCore.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateCore.m rename to interfaces/matlab/interface/+helics/helicsCreateCore.m diff --git a/interfaces/matlab/+helics/helicsCreateCoreFromArgs.m b/interfaces/matlab/interface/+helics/helicsCreateCoreFromArgs.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateCoreFromArgs.m rename to interfaces/matlab/interface/+helics/helicsCreateCoreFromArgs.m diff --git a/interfaces/matlab/+helics/helicsCreateFederateInfo.m b/interfaces/matlab/interface/+helics/helicsCreateFederateInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateFederateInfo.m rename to interfaces/matlab/interface/+helics/helicsCreateFederateInfo.m diff --git a/interfaces/matlab/+helics/helicsCreateMessageFederate.m b/interfaces/matlab/interface/+helics/helicsCreateMessageFederate.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateMessageFederate.m rename to interfaces/matlab/interface/+helics/helicsCreateMessageFederate.m diff --git a/interfaces/matlab/+helics/helicsCreateMessageFederateFromConfig.m b/interfaces/matlab/interface/+helics/helicsCreateMessageFederateFromConfig.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateMessageFederateFromConfig.m rename to interfaces/matlab/interface/+helics/helicsCreateMessageFederateFromConfig.m diff --git a/interfaces/matlab/+helics/helicsCreateQuery.m b/interfaces/matlab/interface/+helics/helicsCreateQuery.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateQuery.m rename to interfaces/matlab/interface/+helics/helicsCreateQuery.m diff --git a/interfaces/matlab/+helics/helicsCreateValueFederate.m b/interfaces/matlab/interface/+helics/helicsCreateValueFederate.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateValueFederate.m rename to interfaces/matlab/interface/+helics/helicsCreateValueFederate.m diff --git a/interfaces/matlab/+helics/helicsCreateValueFederateFromConfig.m b/interfaces/matlab/interface/+helics/helicsCreateValueFederateFromConfig.m similarity index 100% rename from interfaces/matlab/+helics/helicsCreateValueFederateFromConfig.m rename to interfaces/matlab/interface/+helics/helicsCreateValueFederateFromConfig.m diff --git a/interfaces/matlab/+helics/helicsEndpointClearMessages.m b/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointClearMessages.m rename to interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m diff --git a/interfaces/matlab/+helics/helicsEndpointGetDefaultDestination.m b/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointGetDefaultDestination.m rename to interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m diff --git a/interfaces/matlab/+helics/helicsEndpointGetInfo.m b/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointGetInfo.m rename to interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m diff --git a/interfaces/matlab/+helics/helicsEndpointGetMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointGetMessage.m rename to interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m diff --git a/interfaces/matlab/+helics/helicsEndpointGetMessageObject.m b/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointGetMessageObject.m rename to interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m diff --git a/interfaces/matlab/+helics/helicsEndpointGetName.m b/interfaces/matlab/interface/+helics/helicsEndpointGetName.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointGetName.m rename to interfaces/matlab/interface/+helics/helicsEndpointGetName.m diff --git a/interfaces/matlab/+helics/helicsEndpointGetOption.m b/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointGetOption.m rename to interfaces/matlab/interface/+helics/helicsEndpointGetOption.m diff --git a/interfaces/matlab/+helics/helicsEndpointGetType.m b/interfaces/matlab/interface/+helics/helicsEndpointGetType.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointGetType.m rename to interfaces/matlab/interface/+helics/helicsEndpointGetType.m diff --git a/interfaces/matlab/+helics/helicsEndpointHasMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointHasMessage.m rename to interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m diff --git a/interfaces/matlab/+helics/helicsEndpointPendingMessages.m b/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointPendingMessages.m rename to interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m diff --git a/interfaces/matlab/+helics/helicsEndpointSendEventRaw.m b/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSendEventRaw.m rename to interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m diff --git a/interfaces/matlab/+helics/helicsEndpointSendMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSendMessage.m rename to interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m diff --git a/interfaces/matlab/+helics/helicsEndpointSendMessageObject.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSendMessageObject.m rename to interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m diff --git a/interfaces/matlab/+helics/helicsEndpointSendMessageRaw.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSendMessageRaw.m rename to interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m diff --git a/interfaces/matlab/+helics/helicsEndpointSetDefaultDestination.m b/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSetDefaultDestination.m rename to interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m diff --git a/interfaces/matlab/+helics/helicsEndpointSetInfo.m b/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSetInfo.m rename to interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m diff --git a/interfaces/matlab/+helics/helicsEndpointSetOption.m b/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSetOption.m rename to interfaces/matlab/interface/+helics/helicsEndpointSetOption.m diff --git a/interfaces/matlab/+helics/helicsEndpointSubscribe.m b/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m similarity index 100% rename from interfaces/matlab/+helics/helicsEndpointSubscribe.m rename to interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m diff --git a/interfaces/matlab/+helics/helicsFederateClearMessages.m b/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateClearMessages.m rename to interfaces/matlab/interface/+helics/helicsFederateClearMessages.m diff --git a/interfaces/matlab/+helics/helicsFederateClearUpdates.m b/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateClearUpdates.m rename to interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m diff --git a/interfaces/matlab/+helics/helicsFederateClone.m b/interfaces/matlab/interface/+helics/helicsFederateClone.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateClone.m rename to interfaces/matlab/interface/+helics/helicsFederateClone.m diff --git a/interfaces/matlab/+helics/helicsFederateCreateMessageObject.m b/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateCreateMessageObject.m rename to interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m diff --git a/interfaces/matlab/+helics/helicsFederateDestroy.m b/interfaces/matlab/interface/+helics/helicsFederateDestroy.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateDestroy.m rename to interfaces/matlab/interface/+helics/helicsFederateDestroy.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterExecutingMode.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingMode.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterExecutingMode.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterExecutingMode.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterExecutingModeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeAsync.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterExecutingModeAsync.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeAsync.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterExecutingModeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeComplete.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterExecutingModeComplete.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeComplete.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterExecutingModeIterative.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterative.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterExecutingModeIterative.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterative.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterExecutingModeIterativeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeAsync.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterExecutingModeIterativeAsync.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeAsync.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterExecutingModeIterativeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeComplete.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterExecutingModeIterativeComplete.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeComplete.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterInitializingMode.m b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingMode.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterInitializingMode.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterInitializingMode.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterInitializingModeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeAsync.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterInitializingModeAsync.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeAsync.m diff --git a/interfaces/matlab/+helics/helicsFederateEnterInitializingModeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeComplete.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateEnterInitializingModeComplete.m rename to interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeComplete.m diff --git a/interfaces/matlab/+helics/helicsFederateFinalize.m b/interfaces/matlab/interface/+helics/helicsFederateFinalize.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateFinalize.m rename to interfaces/matlab/interface/+helics/helicsFederateFinalize.m diff --git a/interfaces/matlab/+helics/helicsFederateFinalizeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateFinalizeAsync.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateFinalizeAsync.m rename to interfaces/matlab/interface/+helics/helicsFederateFinalizeAsync.m diff --git a/interfaces/matlab/+helics/helicsFederateFinalizeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateFinalizeComplete.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateFinalizeComplete.m rename to interfaces/matlab/interface/+helics/helicsFederateFinalizeComplete.m diff --git a/interfaces/matlab/+helics/helicsFederateFree.m b/interfaces/matlab/interface/+helics/helicsFederateFree.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateFree.m rename to interfaces/matlab/interface/+helics/helicsFederateFree.m diff --git a/interfaces/matlab/+helics/helicsFederateGetCoreObject.m b/interfaces/matlab/interface/+helics/helicsFederateGetCoreObject.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetCoreObject.m rename to interfaces/matlab/interface/+helics/helicsFederateGetCoreObject.m diff --git a/interfaces/matlab/+helics/helicsFederateGetCurrentTime.m b/interfaces/matlab/interface/+helics/helicsFederateGetCurrentTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetCurrentTime.m rename to interfaces/matlab/interface/+helics/helicsFederateGetCurrentTime.m diff --git a/interfaces/matlab/+helics/helicsFederateGetEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetEndpoint.m rename to interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m diff --git a/interfaces/matlab/+helics/helicsFederateGetEndpointByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetEndpointByIndex.m rename to interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m diff --git a/interfaces/matlab/+helics/helicsFederateGetEndpointCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetEndpointCount.m rename to interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m diff --git a/interfaces/matlab/+helics/helicsFederateGetFilter.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetFilter.m rename to interfaces/matlab/interface/+helics/helicsFederateGetFilter.m diff --git a/interfaces/matlab/+helics/helicsFederateGetFilterByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetFilterByIndex.m rename to interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m diff --git a/interfaces/matlab/+helics/helicsFederateGetFilterCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetFilterCount.m rename to interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m diff --git a/interfaces/matlab/+helics/helicsFederateGetFlagOption.m b/interfaces/matlab/interface/+helics/helicsFederateGetFlagOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetFlagOption.m rename to interfaces/matlab/interface/+helics/helicsFederateGetFlagOption.m diff --git a/interfaces/matlab/+helics/helicsFederateGetInput.m b/interfaces/matlab/interface/+helics/helicsFederateGetInput.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetInput.m rename to interfaces/matlab/interface/+helics/helicsFederateGetInput.m diff --git a/interfaces/matlab/+helics/helicsFederateGetInputByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetInputByIndex.m rename to interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m diff --git a/interfaces/matlab/+helics/helicsFederateGetInputCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetInputCount.m rename to interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m diff --git a/interfaces/matlab/+helics/helicsFederateGetIntegerProperty.m b/interfaces/matlab/interface/+helics/helicsFederateGetIntegerProperty.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetIntegerProperty.m rename to interfaces/matlab/interface/+helics/helicsFederateGetIntegerProperty.m diff --git a/interfaces/matlab/+helics/helicsFederateGetMessage.m b/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetMessage.m rename to interfaces/matlab/interface/+helics/helicsFederateGetMessage.m diff --git a/interfaces/matlab/+helics/helicsFederateGetMessageObject.m b/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetMessageObject.m rename to interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m diff --git a/interfaces/matlab/+helics/helicsFederateGetName.m b/interfaces/matlab/interface/+helics/helicsFederateGetName.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetName.m rename to interfaces/matlab/interface/+helics/helicsFederateGetName.m diff --git a/interfaces/matlab/+helics/helicsFederateGetPublication.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetPublication.m rename to interfaces/matlab/interface/+helics/helicsFederateGetPublication.m diff --git a/interfaces/matlab/+helics/helicsFederateGetPublicationByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetPublicationByIndex.m rename to interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m diff --git a/interfaces/matlab/+helics/helicsFederateGetPublicationCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetPublicationCount.m rename to interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m diff --git a/interfaces/matlab/+helics/helicsFederateGetState.m b/interfaces/matlab/interface/+helics/helicsFederateGetState.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetState.m rename to interfaces/matlab/interface/+helics/helicsFederateGetState.m diff --git a/interfaces/matlab/+helics/helicsFederateGetSubscription.m b/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetSubscription.m rename to interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m diff --git a/interfaces/matlab/+helics/helicsFederateGetTimeProperty.m b/interfaces/matlab/interface/+helics/helicsFederateGetTimeProperty.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateGetTimeProperty.m rename to interfaces/matlab/interface/+helics/helicsFederateGetTimeProperty.m diff --git a/interfaces/matlab/+helics/helicsFederateHasMessage.m b/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateHasMessage.m rename to interfaces/matlab/interface/+helics/helicsFederateHasMessage.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoClone.m b/interfaces/matlab/interface/+helics/helicsFederateInfoClone.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoClone.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoClone.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoFree.m b/interfaces/matlab/interface/+helics/helicsFederateInfoFree.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoFree.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoFree.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoLoadFromArgs.m b/interfaces/matlab/interface/+helics/helicsFederateInfoLoadFromArgs.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoLoadFromArgs.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoLoadFromArgs.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetBroker.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetBroker.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetBroker.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetBroker.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetBrokerInitString.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetBrokerInitString.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetBrokerInitString.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetBrokerInitString.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetBrokerKey.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetBrokerKey.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetBrokerKey.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetBrokerKey.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetBrokerPort.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetBrokerPort.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetBrokerPort.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetBrokerPort.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetCoreInitString.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreInitString.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetCoreInitString.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreInitString.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetCoreName.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreName.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetCoreName.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreName.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetCoreType.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreType.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetCoreType.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreType.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetCoreTypeFromString.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreTypeFromString.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetCoreTypeFromString.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetCoreTypeFromString.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetFlagOption.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetFlagOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetFlagOption.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetFlagOption.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetIntegerProperty.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetIntegerProperty.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetIntegerProperty.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetIntegerProperty.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetLocalPort.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetLocalPort.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetLocalPort.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetLocalPort.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetSeparator.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetSeparator.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetSeparator.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetSeparator.m diff --git a/interfaces/matlab/+helics/helicsFederateInfoSetTimeProperty.m b/interfaces/matlab/interface/+helics/helicsFederateInfoSetTimeProperty.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateInfoSetTimeProperty.m rename to interfaces/matlab/interface/+helics/helicsFederateInfoSetTimeProperty.m diff --git a/interfaces/matlab/+helics/helicsFederateIsAsyncOperationCompleted.m b/interfaces/matlab/interface/+helics/helicsFederateIsAsyncOperationCompleted.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateIsAsyncOperationCompleted.m rename to interfaces/matlab/interface/+helics/helicsFederateIsAsyncOperationCompleted.m diff --git a/interfaces/matlab/+helics/helicsFederateIsValid.m b/interfaces/matlab/interface/+helics/helicsFederateIsValid.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateIsValid.m rename to interfaces/matlab/interface/+helics/helicsFederateIsValid.m diff --git a/interfaces/matlab/+helics/helicsFederateLogDebugMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateLogDebugMessage.m rename to interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m diff --git a/interfaces/matlab/+helics/helicsFederateLogErrorMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateLogErrorMessage.m rename to interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m diff --git a/interfaces/matlab/+helics/helicsFederateLogInfoMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateLogInfoMessage.m rename to interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m diff --git a/interfaces/matlab/+helics/helicsFederateLogLevelMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateLogLevelMessage.m rename to interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m diff --git a/interfaces/matlab/+helics/helicsFederateLogWarningMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateLogWarningMessage.m rename to interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m diff --git a/interfaces/matlab/+helics/helicsFederatePendingMessages.m b/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederatePendingMessages.m rename to interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m diff --git a/interfaces/matlab/+helics/helicsFederatePublishJSON.m b/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederatePublishJSON.m rename to interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterCloningFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterCloningFilter.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterEndpoint.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterFilter.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterFromPublicationJSON.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterFromPublicationJSON.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterGlobalCloningFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterGlobalCloningFilter.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterGlobalEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterGlobalEndpoint.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterGlobalFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterGlobalFilter.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterGlobalInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterGlobalInput.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterGlobalPublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterGlobalPublication.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterGlobalTypeInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterGlobalTypeInput.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterGlobalTypePublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterGlobalTypePublication.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterInput.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterInterfaces.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterInterfaces.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterInterfaces.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterInterfaces.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterPublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterPublication.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterSubscription.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterSubscription.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterTypeInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterTypeInput.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m diff --git a/interfaces/matlab/+helics/helicsFederateRegisterTypePublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRegisterTypePublication.m rename to interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestNextStep.m b/interfaces/matlab/interface/+helics/helicsFederateRequestNextStep.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestNextStep.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestNextStep.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestTime.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestTime.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestTime.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestTimeAdvance.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAdvance.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestTimeAdvance.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestTimeAdvance.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestTimeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAsync.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestTimeAsync.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestTimeAsync.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestTimeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeComplete.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestTimeComplete.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestTimeComplete.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestTimeIterative.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterative.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestTimeIterative.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterative.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestTimeIterativeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeAsync.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestTimeIterativeAsync.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeAsync.m diff --git a/interfaces/matlab/+helics/helicsFederateRequestTimeIterativeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeComplete.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateRequestTimeIterativeComplete.m rename to interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeComplete.m diff --git a/interfaces/matlab/+helics/helicsFederateSetFlagOption.m b/interfaces/matlab/interface/+helics/helicsFederateSetFlagOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateSetFlagOption.m rename to interfaces/matlab/interface/+helics/helicsFederateSetFlagOption.m diff --git a/interfaces/matlab/+helics/helicsFederateSetGlobal.m b/interfaces/matlab/interface/+helics/helicsFederateSetGlobal.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateSetGlobal.m rename to interfaces/matlab/interface/+helics/helicsFederateSetGlobal.m diff --git a/interfaces/matlab/+helics/helicsFederateSetIntegerProperty.m b/interfaces/matlab/interface/+helics/helicsFederateSetIntegerProperty.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateSetIntegerProperty.m rename to interfaces/matlab/interface/+helics/helicsFederateSetIntegerProperty.m diff --git a/interfaces/matlab/+helics/helicsFederateSetLogFile.m b/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateSetLogFile.m rename to interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m diff --git a/interfaces/matlab/+helics/helicsFederateSetSeparator.m b/interfaces/matlab/interface/+helics/helicsFederateSetSeparator.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateSetSeparator.m rename to interfaces/matlab/interface/+helics/helicsFederateSetSeparator.m diff --git a/interfaces/matlab/+helics/helicsFederateSetTimeProperty.m b/interfaces/matlab/interface/+helics/helicsFederateSetTimeProperty.m similarity index 100% rename from interfaces/matlab/+helics/helicsFederateSetTimeProperty.m rename to interfaces/matlab/interface/+helics/helicsFederateSetTimeProperty.m diff --git a/interfaces/matlab/+helics/helicsFilterAddDeliveryEndpoint.m b/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterAddDeliveryEndpoint.m rename to interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m diff --git a/interfaces/matlab/+helics/helicsFilterAddDestinationTarget.m b/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterAddDestinationTarget.m rename to interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m diff --git a/interfaces/matlab/+helics/helicsFilterAddSourceTarget.m b/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterAddSourceTarget.m rename to interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m diff --git a/interfaces/matlab/+helics/helicsFilterGetInfo.m b/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterGetInfo.m rename to interfaces/matlab/interface/+helics/helicsFilterGetInfo.m diff --git a/interfaces/matlab/+helics/helicsFilterGetName.m b/interfaces/matlab/interface/+helics/helicsFilterGetName.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterGetName.m rename to interfaces/matlab/interface/+helics/helicsFilterGetName.m diff --git a/interfaces/matlab/+helics/helicsFilterGetOption.m b/interfaces/matlab/interface/+helics/helicsFilterGetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterGetOption.m rename to interfaces/matlab/interface/+helics/helicsFilterGetOption.m diff --git a/interfaces/matlab/+helics/helicsFilterRemoveDeliveryEndpoint.m b/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterRemoveDeliveryEndpoint.m rename to interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m diff --git a/interfaces/matlab/+helics/helicsFilterRemoveTarget.m b/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterRemoveTarget.m rename to interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m diff --git a/interfaces/matlab/+helics/helicsFilterSet.m b/interfaces/matlab/interface/+helics/helicsFilterSet.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterSet.m rename to interfaces/matlab/interface/+helics/helicsFilterSet.m diff --git a/interfaces/matlab/+helics/helicsFilterSetInfo.m b/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterSetInfo.m rename to interfaces/matlab/interface/+helics/helicsFilterSetInfo.m diff --git a/interfaces/matlab/+helics/helicsFilterSetOption.m b/interfaces/matlab/interface/+helics/helicsFilterSetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterSetOption.m rename to interfaces/matlab/interface/+helics/helicsFilterSetOption.m diff --git a/interfaces/matlab/+helics/helicsFilterSetString.m b/interfaces/matlab/interface/+helics/helicsFilterSetString.m similarity index 100% rename from interfaces/matlab/+helics/helicsFilterSetString.m rename to interfaces/matlab/interface/+helics/helicsFilterSetString.m diff --git a/interfaces/matlab/+helics/helicsGetFederateByName.m b/interfaces/matlab/interface/+helics/helicsGetFederateByName.m similarity index 100% rename from interfaces/matlab/+helics/helicsGetFederateByName.m rename to interfaces/matlab/interface/+helics/helicsGetFederateByName.m diff --git a/interfaces/matlab/+helics/helicsGetOptionIndex.m b/interfaces/matlab/interface/+helics/helicsGetOptionIndex.m similarity index 100% rename from interfaces/matlab/+helics/helicsGetOptionIndex.m rename to interfaces/matlab/interface/+helics/helicsGetOptionIndex.m diff --git a/interfaces/matlab/+helics/helicsGetPropertyIndex.m b/interfaces/matlab/interface/+helics/helicsGetPropertyIndex.m similarity index 100% rename from interfaces/matlab/+helics/helicsGetPropertyIndex.m rename to interfaces/matlab/interface/+helics/helicsGetPropertyIndex.m diff --git a/interfaces/matlab/+helics/helicsGetVersion.m b/interfaces/matlab/interface/+helics/helicsGetVersion.m similarity index 100% rename from interfaces/matlab/+helics/helicsGetVersion.m rename to interfaces/matlab/interface/+helics/helicsGetVersion.m diff --git a/interfaces/matlab/+helics/helicsInputAddTarget.m b/interfaces/matlab/interface/+helics/helicsInputAddTarget.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputAddTarget.m rename to interfaces/matlab/interface/+helics/helicsInputAddTarget.m diff --git a/interfaces/matlab/+helics/helicsInputClearUpdate.m b/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputClearUpdate.m rename to interfaces/matlab/interface/+helics/helicsInputClearUpdate.m diff --git a/interfaces/matlab/+helics/helicsInputGetBoolean.m b/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetBoolean.m rename to interfaces/matlab/interface/+helics/helicsInputGetBoolean.m diff --git a/interfaces/matlab/+helics/helicsInputGetChar.m b/interfaces/matlab/interface/+helics/helicsInputGetChar.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetChar.m rename to interfaces/matlab/interface/+helics/helicsInputGetChar.m diff --git a/interfaces/matlab/+helics/helicsInputGetComplex.m b/interfaces/matlab/interface/+helics/helicsInputGetComplex.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetComplex.m rename to interfaces/matlab/interface/+helics/helicsInputGetComplex.m diff --git a/interfaces/matlab/+helics/helicsInputGetDouble.m b/interfaces/matlab/interface/+helics/helicsInputGetDouble.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetDouble.m rename to interfaces/matlab/interface/+helics/helicsInputGetDouble.m diff --git a/interfaces/matlab/+helics/helicsInputGetExtractionUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetExtractionUnits.m rename to interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m diff --git a/interfaces/matlab/+helics/helicsInputGetInfo.m b/interfaces/matlab/interface/+helics/helicsInputGetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetInfo.m rename to interfaces/matlab/interface/+helics/helicsInputGetInfo.m diff --git a/interfaces/matlab/+helics/helicsInputGetInjectionUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetInjectionUnits.m rename to interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m diff --git a/interfaces/matlab/+helics/helicsInputGetInteger.m b/interfaces/matlab/interface/+helics/helicsInputGetInteger.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetInteger.m rename to interfaces/matlab/interface/+helics/helicsInputGetInteger.m diff --git a/interfaces/matlab/+helics/helicsInputGetKey.m b/interfaces/matlab/interface/+helics/helicsInputGetKey.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetKey.m rename to interfaces/matlab/interface/+helics/helicsInputGetKey.m diff --git a/interfaces/matlab/+helics/helicsInputGetNamedPoint.m b/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetNamedPoint.m rename to interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m diff --git a/interfaces/matlab/+helics/helicsInputGetOption.m b/interfaces/matlab/interface/+helics/helicsInputGetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetOption.m rename to interfaces/matlab/interface/+helics/helicsInputGetOption.m diff --git a/interfaces/matlab/+helics/helicsInputGetPublicationType.m b/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetPublicationType.m rename to interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m diff --git a/interfaces/matlab/+helics/helicsInputGetRawValue.m b/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetRawValue.m rename to interfaces/matlab/interface/+helics/helicsInputGetRawValue.m diff --git a/interfaces/matlab/+helics/helicsInputGetRawValueSize.m b/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetRawValueSize.m rename to interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m diff --git a/interfaces/matlab/+helics/helicsInputGetString.m b/interfaces/matlab/interface/+helics/helicsInputGetString.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetString.m rename to interfaces/matlab/interface/+helics/helicsInputGetString.m diff --git a/interfaces/matlab/+helics/helicsInputGetStringSize.m b/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetStringSize.m rename to interfaces/matlab/interface/+helics/helicsInputGetStringSize.m diff --git a/interfaces/matlab/+helics/helicsInputGetTime.m b/interfaces/matlab/interface/+helics/helicsInputGetTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetTime.m rename to interfaces/matlab/interface/+helics/helicsInputGetTime.m diff --git a/interfaces/matlab/+helics/helicsInputGetType.m b/interfaces/matlab/interface/+helics/helicsInputGetType.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetType.m rename to interfaces/matlab/interface/+helics/helicsInputGetType.m diff --git a/interfaces/matlab/+helics/helicsInputGetUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetUnits.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetUnits.m rename to interfaces/matlab/interface/+helics/helicsInputGetUnits.m diff --git a/interfaces/matlab/+helics/helicsInputGetVector.m b/interfaces/matlab/interface/+helics/helicsInputGetVector.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetVector.m rename to interfaces/matlab/interface/+helics/helicsInputGetVector.m diff --git a/interfaces/matlab/+helics/helicsInputGetVectorSize.m b/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputGetVectorSize.m rename to interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m diff --git a/interfaces/matlab/+helics/helicsInputIsUpdated.m b/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputIsUpdated.m rename to interfaces/matlab/interface/+helics/helicsInputIsUpdated.m diff --git a/interfaces/matlab/+helics/helicsInputLastUpdateTime.m b/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputLastUpdateTime.m rename to interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultBoolean.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultBoolean.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultChar.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultChar.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultComplex.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultComplex.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultDouble.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultDouble.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultInteger.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultInteger.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultNamedPoint.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultNamedPoint.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultRaw.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultRaw.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultString.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultString.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultTime.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultTime.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m diff --git a/interfaces/matlab/+helics/helicsInputSetDefaultVector.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetDefaultVector.m rename to interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m diff --git a/interfaces/matlab/+helics/helicsInputSetInfo.m b/interfaces/matlab/interface/+helics/helicsInputSetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetInfo.m rename to interfaces/matlab/interface/+helics/helicsInputSetInfo.m diff --git a/interfaces/matlab/+helics/helicsInputSetMinimumChange.m b/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetMinimumChange.m rename to interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m diff --git a/interfaces/matlab/+helics/helicsInputSetOption.m b/interfaces/matlab/interface/+helics/helicsInputSetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsInputSetOption.m rename to interfaces/matlab/interface/+helics/helicsInputSetOption.m diff --git a/interfaces/matlab/+helics/helicsIsCoreTypeAvailable.m b/interfaces/matlab/interface/+helics/helicsIsCoreTypeAvailable.m similarity index 100% rename from interfaces/matlab/+helics/helicsIsCoreTypeAvailable.m rename to interfaces/matlab/interface/+helics/helicsIsCoreTypeAvailable.m diff --git a/interfaces/matlab/+helics/helicsMessageAppendData.m b/interfaces/matlab/interface/+helics/helicsMessageAppendData.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageAppendData.m rename to interfaces/matlab/interface/+helics/helicsMessageAppendData.m diff --git a/interfaces/matlab/+helics/helicsMessageCheckFlag.m b/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageCheckFlag.m rename to interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m diff --git a/interfaces/matlab/+helics/helicsMessageClearFlags.m b/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageClearFlags.m rename to interfaces/matlab/interface/+helics/helicsMessageClearFlags.m diff --git a/interfaces/matlab/+helics/helicsMessageGetDestination.m b/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetDestination.m rename to interfaces/matlab/interface/+helics/helicsMessageGetDestination.m diff --git a/interfaces/matlab/+helics/helicsMessageGetMessageID.m b/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetMessageID.m rename to interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m diff --git a/interfaces/matlab/+helics/helicsMessageGetOriginalDestination.m b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetOriginalDestination.m rename to interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m diff --git a/interfaces/matlab/+helics/helicsMessageGetOriginalSource.m b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetOriginalSource.m rename to interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m diff --git a/interfaces/matlab/+helics/helicsMessageGetRawData.m b/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetRawData.m rename to interfaces/matlab/interface/+helics/helicsMessageGetRawData.m diff --git a/interfaces/matlab/+helics/helicsMessageGetRawDataSize.m b/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetRawDataSize.m rename to interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m diff --git a/interfaces/matlab/+helics/helicsMessageGetSource.m b/interfaces/matlab/interface/+helics/helicsMessageGetSource.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetSource.m rename to interfaces/matlab/interface/+helics/helicsMessageGetSource.m diff --git a/interfaces/matlab/+helics/helicsMessageGetString.m b/interfaces/matlab/interface/+helics/helicsMessageGetString.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetString.m rename to interfaces/matlab/interface/+helics/helicsMessageGetString.m diff --git a/interfaces/matlab/+helics/helicsMessageGetTime.m b/interfaces/matlab/interface/+helics/helicsMessageGetTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageGetTime.m rename to interfaces/matlab/interface/+helics/helicsMessageGetTime.m diff --git a/interfaces/matlab/+helics/helicsMessageIsValid.m b/interfaces/matlab/interface/+helics/helicsMessageIsValid.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageIsValid.m rename to interfaces/matlab/interface/+helics/helicsMessageIsValid.m diff --git a/interfaces/matlab/+helics/helicsMessageReserve.m b/interfaces/matlab/interface/+helics/helicsMessageReserve.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageReserve.m rename to interfaces/matlab/interface/+helics/helicsMessageReserve.m diff --git a/interfaces/matlab/+helics/helicsMessageSetData.m b/interfaces/matlab/interface/+helics/helicsMessageSetData.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetData.m rename to interfaces/matlab/interface/+helics/helicsMessageSetData.m diff --git a/interfaces/matlab/+helics/helicsMessageSetDestination.m b/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetDestination.m rename to interfaces/matlab/interface/+helics/helicsMessageSetDestination.m diff --git a/interfaces/matlab/+helics/helicsMessageSetFlagOption.m b/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetFlagOption.m rename to interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m diff --git a/interfaces/matlab/+helics/helicsMessageSetMessageID.m b/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetMessageID.m rename to interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m diff --git a/interfaces/matlab/+helics/helicsMessageSetOriginalDestination.m b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetOriginalDestination.m rename to interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m diff --git a/interfaces/matlab/+helics/helicsMessageSetOriginalSource.m b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetOriginalSource.m rename to interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m diff --git a/interfaces/matlab/+helics/helicsMessageSetSource.m b/interfaces/matlab/interface/+helics/helicsMessageSetSource.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetSource.m rename to interfaces/matlab/interface/+helics/helicsMessageSetSource.m diff --git a/interfaces/matlab/+helics/helicsMessageSetString.m b/interfaces/matlab/interface/+helics/helicsMessageSetString.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetString.m rename to interfaces/matlab/interface/+helics/helicsMessageSetString.m diff --git a/interfaces/matlab/+helics/helicsMessageSetTime.m b/interfaces/matlab/interface/+helics/helicsMessageSetTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsMessageSetTime.m rename to interfaces/matlab/interface/+helics/helicsMessageSetTime.m diff --git a/interfaces/matlab/+helics/helicsPublicationAddTarget.m b/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationAddTarget.m rename to interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m diff --git a/interfaces/matlab/+helics/helicsPublicationGetInfo.m b/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationGetInfo.m rename to interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m diff --git a/interfaces/matlab/+helics/helicsPublicationGetKey.m b/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationGetKey.m rename to interfaces/matlab/interface/+helics/helicsPublicationGetKey.m diff --git a/interfaces/matlab/+helics/helicsPublicationGetOption.m b/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationGetOption.m rename to interfaces/matlab/interface/+helics/helicsPublicationGetOption.m diff --git a/interfaces/matlab/+helics/helicsPublicationGetType.m b/interfaces/matlab/interface/+helics/helicsPublicationGetType.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationGetType.m rename to interfaces/matlab/interface/+helics/helicsPublicationGetType.m diff --git a/interfaces/matlab/+helics/helicsPublicationGetUnits.m b/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationGetUnits.m rename to interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishBoolean.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishBoolean.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishChar.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishChar.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishComplex.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishComplex.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishDouble.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishDouble.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishInteger.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishInteger.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishNamedPoint.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishNamedPoint.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishRaw.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishRaw.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishString.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishString.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishString.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishTime.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishTime.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m diff --git a/interfaces/matlab/+helics/helicsPublicationPublishVector.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationPublishVector.m rename to interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m diff --git a/interfaces/matlab/+helics/helicsPublicationSetInfo.m b/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationSetInfo.m rename to interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m diff --git a/interfaces/matlab/+helics/helicsPublicationSetMinimumChange.m b/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationSetMinimumChange.m rename to interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m diff --git a/interfaces/matlab/+helics/helicsPublicationSetOption.m b/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m similarity index 100% rename from interfaces/matlab/+helics/helicsPublicationSetOption.m rename to interfaces/matlab/interface/+helics/helicsPublicationSetOption.m diff --git a/interfaces/matlab/+helics/helicsQueryBrokerExecute.m b/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m similarity index 100% rename from interfaces/matlab/+helics/helicsQueryBrokerExecute.m rename to interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m diff --git a/interfaces/matlab/+helics/helicsQueryCoreExecute.m b/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m similarity index 100% rename from interfaces/matlab/+helics/helicsQueryCoreExecute.m rename to interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m diff --git a/interfaces/matlab/+helics/helicsQueryExecute.m b/interfaces/matlab/interface/+helics/helicsQueryExecute.m similarity index 100% rename from interfaces/matlab/+helics/helicsQueryExecute.m rename to interfaces/matlab/interface/+helics/helicsQueryExecute.m diff --git a/interfaces/matlab/+helics/helicsQueryExecuteAsync.m b/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m similarity index 100% rename from interfaces/matlab/+helics/helicsQueryExecuteAsync.m rename to interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m diff --git a/interfaces/matlab/+helics/helicsQueryExecuteComplete.m b/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m similarity index 100% rename from interfaces/matlab/+helics/helicsQueryExecuteComplete.m rename to interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m diff --git a/interfaces/matlab/+helics/helicsQueryFree.m b/interfaces/matlab/interface/+helics/helicsQueryFree.m similarity index 100% rename from interfaces/matlab/+helics/helicsQueryFree.m rename to interfaces/matlab/interface/+helics/helicsQueryFree.m diff --git a/interfaces/matlab/+helics/helicsQueryIsCompleted.m b/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m similarity index 100% rename from interfaces/matlab/+helics/helicsQueryIsCompleted.m rename to interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m diff --git a/interfaces/matlab/+helics/helicsSubscriptionGetKey.m b/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m similarity index 100% rename from interfaces/matlab/+helics/helicsSubscriptionGetKey.m rename to interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m diff --git a/interfaces/matlab/+helics/helics_core_type_default.m b/interfaces/matlab/interface/+helics/helics_core_type_default.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_default.m rename to interfaces/matlab/interface/+helics/helics_core_type_default.m diff --git a/interfaces/matlab/+helics/helics_core_type_http.m b/interfaces/matlab/interface/+helics/helics_core_type_http.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_http.m rename to interfaces/matlab/interface/+helics/helics_core_type_http.m diff --git a/interfaces/matlab/+helics/helics_core_type_inproc.m b/interfaces/matlab/interface/+helics/helics_core_type_inproc.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_inproc.m rename to interfaces/matlab/interface/+helics/helics_core_type_inproc.m diff --git a/interfaces/matlab/+helics/helics_core_type_interprocess.m b/interfaces/matlab/interface/+helics/helics_core_type_interprocess.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_interprocess.m rename to interfaces/matlab/interface/+helics/helics_core_type_interprocess.m diff --git a/interfaces/matlab/+helics/helics_core_type_ipc.m b/interfaces/matlab/interface/+helics/helics_core_type_ipc.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_ipc.m rename to interfaces/matlab/interface/+helics/helics_core_type_ipc.m diff --git a/interfaces/matlab/+helics/helics_core_type_mpi.m b/interfaces/matlab/interface/+helics/helics_core_type_mpi.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_mpi.m rename to interfaces/matlab/interface/+helics/helics_core_type_mpi.m diff --git a/interfaces/matlab/+helics/helics_core_type_nng.m b/interfaces/matlab/interface/+helics/helics_core_type_nng.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_nng.m rename to interfaces/matlab/interface/+helics/helics_core_type_nng.m diff --git a/interfaces/matlab/+helics/helics_core_type_null.m b/interfaces/matlab/interface/+helics/helics_core_type_null.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_null.m rename to interfaces/matlab/interface/+helics/helics_core_type_null.m diff --git a/interfaces/matlab/+helics/helics_core_type_tcp.m b/interfaces/matlab/interface/+helics/helics_core_type_tcp.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_tcp.m rename to interfaces/matlab/interface/+helics/helics_core_type_tcp.m diff --git a/interfaces/matlab/+helics/helics_core_type_tcp_ss.m b/interfaces/matlab/interface/+helics/helics_core_type_tcp_ss.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_tcp_ss.m rename to interfaces/matlab/interface/+helics/helics_core_type_tcp_ss.m diff --git a/interfaces/matlab/+helics/helics_core_type_test.m b/interfaces/matlab/interface/+helics/helics_core_type_test.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_test.m rename to interfaces/matlab/interface/+helics/helics_core_type_test.m diff --git a/interfaces/matlab/+helics/helics_core_type_udp.m b/interfaces/matlab/interface/+helics/helics_core_type_udp.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_udp.m rename to interfaces/matlab/interface/+helics/helics_core_type_udp.m diff --git a/interfaces/matlab/+helics/helics_core_type_websocket.m b/interfaces/matlab/interface/+helics/helics_core_type_websocket.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_websocket.m rename to interfaces/matlab/interface/+helics/helics_core_type_websocket.m diff --git a/interfaces/matlab/+helics/helics_core_type_zmq.m b/interfaces/matlab/interface/+helics/helics_core_type_zmq.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_zmq.m rename to interfaces/matlab/interface/+helics/helics_core_type_zmq.m diff --git a/interfaces/matlab/+helics/helics_core_type_zmq_test.m b/interfaces/matlab/interface/+helics/helics_core_type_zmq_test.m similarity index 100% rename from interfaces/matlab/+helics/helics_core_type_zmq_test.m rename to interfaces/matlab/interface/+helics/helics_core_type_zmq_test.m diff --git a/interfaces/matlab/+helics/helics_data_type_any.m b/interfaces/matlab/interface/+helics/helics_data_type_any.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_any.m rename to interfaces/matlab/interface/+helics/helics_data_type_any.m diff --git a/interfaces/matlab/+helics/helics_data_type_boolean.m b/interfaces/matlab/interface/+helics/helics_data_type_boolean.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_boolean.m rename to interfaces/matlab/interface/+helics/helics_data_type_boolean.m diff --git a/interfaces/matlab/+helics/helics_data_type_complex.m b/interfaces/matlab/interface/+helics/helics_data_type_complex.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_complex.m rename to interfaces/matlab/interface/+helics/helics_data_type_complex.m diff --git a/interfaces/matlab/+helics/helics_data_type_complex_vector.m b/interfaces/matlab/interface/+helics/helics_data_type_complex_vector.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_complex_vector.m rename to interfaces/matlab/interface/+helics/helics_data_type_complex_vector.m diff --git a/interfaces/matlab/+helics/helics_data_type_double.m b/interfaces/matlab/interface/+helics/helics_data_type_double.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_double.m rename to interfaces/matlab/interface/+helics/helics_data_type_double.m diff --git a/interfaces/matlab/+helics/helics_data_type_int.m b/interfaces/matlab/interface/+helics/helics_data_type_int.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_int.m rename to interfaces/matlab/interface/+helics/helics_data_type_int.m diff --git a/interfaces/matlab/+helics/helics_data_type_named_point.m b/interfaces/matlab/interface/+helics/helics_data_type_named_point.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_named_point.m rename to interfaces/matlab/interface/+helics/helics_data_type_named_point.m diff --git a/interfaces/matlab/+helics/helics_data_type_raw.m b/interfaces/matlab/interface/+helics/helics_data_type_raw.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_raw.m rename to interfaces/matlab/interface/+helics/helics_data_type_raw.m diff --git a/interfaces/matlab/+helics/helics_data_type_string.m b/interfaces/matlab/interface/+helics/helics_data_type_string.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_string.m rename to interfaces/matlab/interface/+helics/helics_data_type_string.m diff --git a/interfaces/matlab/+helics/helics_data_type_time.m b/interfaces/matlab/interface/+helics/helics_data_type_time.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_time.m rename to interfaces/matlab/interface/+helics/helics_data_type_time.m diff --git a/interfaces/matlab/+helics/helics_data_type_vector.m b/interfaces/matlab/interface/+helics/helics_data_type_vector.m similarity index 100% rename from interfaces/matlab/+helics/helics_data_type_vector.m rename to interfaces/matlab/interface/+helics/helics_data_type_vector.m diff --git a/interfaces/matlab/+helics/helics_error_connection_failure.m b/interfaces/matlab/interface/+helics/helics_error_connection_failure.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_connection_failure.m rename to interfaces/matlab/interface/+helics/helics_error_connection_failure.m diff --git a/interfaces/matlab/+helics/helics_error_discard.m b/interfaces/matlab/interface/+helics/helics_error_discard.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_discard.m rename to interfaces/matlab/interface/+helics/helics_error_discard.m diff --git a/interfaces/matlab/+helics/helics_error_execution_failure.m b/interfaces/matlab/interface/+helics/helics_error_execution_failure.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_execution_failure.m rename to interfaces/matlab/interface/+helics/helics_error_execution_failure.m diff --git a/interfaces/matlab/+helics/helics_error_external_type.m b/interfaces/matlab/interface/+helics/helics_error_external_type.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_external_type.m rename to interfaces/matlab/interface/+helics/helics_error_external_type.m diff --git a/interfaces/matlab/+helics/helics_error_insufficient_space.m b/interfaces/matlab/interface/+helics/helics_error_insufficient_space.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_insufficient_space.m rename to interfaces/matlab/interface/+helics/helics_error_insufficient_space.m diff --git a/interfaces/matlab/+helics/helics_error_invalid_argument.m b/interfaces/matlab/interface/+helics/helics_error_invalid_argument.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_invalid_argument.m rename to interfaces/matlab/interface/+helics/helics_error_invalid_argument.m diff --git a/interfaces/matlab/+helics/helics_error_invalid_function_call.m b/interfaces/matlab/interface/+helics/helics_error_invalid_function_call.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_invalid_function_call.m rename to interfaces/matlab/interface/+helics/helics_error_invalid_function_call.m diff --git a/interfaces/matlab/+helics/helics_error_invalid_object.m b/interfaces/matlab/interface/+helics/helics_error_invalid_object.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_invalid_object.m rename to interfaces/matlab/interface/+helics/helics_error_invalid_object.m diff --git a/interfaces/matlab/+helics/helics_error_invalid_state_transition.m b/interfaces/matlab/interface/+helics/helics_error_invalid_state_transition.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_invalid_state_transition.m rename to interfaces/matlab/interface/+helics/helics_error_invalid_state_transition.m diff --git a/interfaces/matlab/+helics/helics_error_other.m b/interfaces/matlab/interface/+helics/helics_error_other.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_other.m rename to interfaces/matlab/interface/+helics/helics_error_other.m diff --git a/interfaces/matlab/+helics/helics_error_registration_failure.m b/interfaces/matlab/interface/+helics/helics_error_registration_failure.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_registration_failure.m rename to interfaces/matlab/interface/+helics/helics_error_registration_failure.m diff --git a/interfaces/matlab/+helics/helics_error_system_failure.m b/interfaces/matlab/interface/+helics/helics_error_system_failure.m similarity index 100% rename from interfaces/matlab/+helics/helics_error_system_failure.m rename to interfaces/matlab/interface/+helics/helics_error_system_failure.m diff --git a/interfaces/matlab/+helics/helics_false.m b/interfaces/matlab/interface/+helics/helics_false.m similarity index 100% rename from interfaces/matlab/+helics/helics_false.m rename to interfaces/matlab/interface/+helics/helics_false.m diff --git a/interfaces/matlab/+helics/helics_filter_type_clone.m b/interfaces/matlab/interface/+helics/helics_filter_type_clone.m similarity index 100% rename from interfaces/matlab/+helics/helics_filter_type_clone.m rename to interfaces/matlab/interface/+helics/helics_filter_type_clone.m diff --git a/interfaces/matlab/+helics/helics_filter_type_custom.m b/interfaces/matlab/interface/+helics/helics_filter_type_custom.m similarity index 100% rename from interfaces/matlab/+helics/helics_filter_type_custom.m rename to interfaces/matlab/interface/+helics/helics_filter_type_custom.m diff --git a/interfaces/matlab/+helics/helics_filter_type_delay.m b/interfaces/matlab/interface/+helics/helics_filter_type_delay.m similarity index 100% rename from interfaces/matlab/+helics/helics_filter_type_delay.m rename to interfaces/matlab/interface/+helics/helics_filter_type_delay.m diff --git a/interfaces/matlab/+helics/helics_filter_type_firewall.m b/interfaces/matlab/interface/+helics/helics_filter_type_firewall.m similarity index 100% rename from interfaces/matlab/+helics/helics_filter_type_firewall.m rename to interfaces/matlab/interface/+helics/helics_filter_type_firewall.m diff --git a/interfaces/matlab/+helics/helics_filter_type_random_delay.m b/interfaces/matlab/interface/+helics/helics_filter_type_random_delay.m similarity index 100% rename from interfaces/matlab/+helics/helics_filter_type_random_delay.m rename to interfaces/matlab/interface/+helics/helics_filter_type_random_delay.m diff --git a/interfaces/matlab/+helics/helics_filter_type_random_drop.m b/interfaces/matlab/interface/+helics/helics_filter_type_random_drop.m similarity index 100% rename from interfaces/matlab/+helics/helics_filter_type_random_drop.m rename to interfaces/matlab/interface/+helics/helics_filter_type_random_drop.m diff --git a/interfaces/matlab/+helics/helics_filter_type_reroute.m b/interfaces/matlab/interface/+helics/helics_filter_type_reroute.m similarity index 100% rename from interfaces/matlab/+helics/helics_filter_type_reroute.m rename to interfaces/matlab/interface/+helics/helics_filter_type_reroute.m diff --git a/interfaces/matlab/+helics/helics_flag_delay_init_entry.m b/interfaces/matlab/interface/+helics/helics_flag_delay_init_entry.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_delay_init_entry.m rename to interfaces/matlab/interface/+helics/helics_flag_delay_init_entry.m diff --git a/interfaces/matlab/+helics/helics_flag_enable_init_entry.m b/interfaces/matlab/interface/+helics/helics_flag_enable_init_entry.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_enable_init_entry.m rename to interfaces/matlab/interface/+helics/helics_flag_enable_init_entry.m diff --git a/interfaces/matlab/+helics/helics_flag_forward_compute.m b/interfaces/matlab/interface/+helics/helics_flag_forward_compute.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_forward_compute.m rename to interfaces/matlab/interface/+helics/helics_flag_forward_compute.m diff --git a/interfaces/matlab/+helics/helics_flag_ignore_time_mismatch_warnings.m b/interfaces/matlab/interface/+helics/helics_flag_ignore_time_mismatch_warnings.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_ignore_time_mismatch_warnings.m rename to interfaces/matlab/interface/+helics/helics_flag_ignore_time_mismatch_warnings.m diff --git a/interfaces/matlab/+helics/helics_flag_interruptible.m b/interfaces/matlab/interface/+helics/helics_flag_interruptible.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_interruptible.m rename to interfaces/matlab/interface/+helics/helics_flag_interruptible.m diff --git a/interfaces/matlab/+helics/helics_flag_observer.m b/interfaces/matlab/interface/+helics/helics_flag_observer.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_observer.m rename to interfaces/matlab/interface/+helics/helics_flag_observer.m diff --git a/interfaces/matlab/+helics/helics_flag_only_transmit_on_change.m b/interfaces/matlab/interface/+helics/helics_flag_only_transmit_on_change.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_only_transmit_on_change.m rename to interfaces/matlab/interface/+helics/helics_flag_only_transmit_on_change.m diff --git a/interfaces/matlab/+helics/helics_flag_only_update_on_change.m b/interfaces/matlab/interface/+helics/helics_flag_only_update_on_change.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_only_update_on_change.m rename to interfaces/matlab/interface/+helics/helics_flag_only_update_on_change.m diff --git a/interfaces/matlab/+helics/helics_flag_realtime.m b/interfaces/matlab/interface/+helics/helics_flag_realtime.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_realtime.m rename to interfaces/matlab/interface/+helics/helics_flag_realtime.m diff --git a/interfaces/matlab/+helics/helics_flag_restrictive_time_policy.m b/interfaces/matlab/interface/+helics/helics_flag_restrictive_time_policy.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_restrictive_time_policy.m rename to interfaces/matlab/interface/+helics/helics_flag_restrictive_time_policy.m diff --git a/interfaces/matlab/+helics/helics_flag_rollback.m b/interfaces/matlab/interface/+helics/helics_flag_rollback.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_rollback.m rename to interfaces/matlab/interface/+helics/helics_flag_rollback.m diff --git a/interfaces/matlab/+helics/helics_flag_single_thread_federate.m b/interfaces/matlab/interface/+helics/helics_flag_single_thread_federate.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_single_thread_federate.m rename to interfaces/matlab/interface/+helics/helics_flag_single_thread_federate.m diff --git a/interfaces/matlab/+helics/helics_flag_slow_responding.m b/interfaces/matlab/interface/+helics/helics_flag_slow_responding.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_slow_responding.m rename to interfaces/matlab/interface/+helics/helics_flag_slow_responding.m diff --git a/interfaces/matlab/+helics/helics_flag_source_only.m b/interfaces/matlab/interface/+helics/helics_flag_source_only.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_source_only.m rename to interfaces/matlab/interface/+helics/helics_flag_source_only.m diff --git a/interfaces/matlab/+helics/helics_flag_uninterruptible.m b/interfaces/matlab/interface/+helics/helics_flag_uninterruptible.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_uninterruptible.m rename to interfaces/matlab/interface/+helics/helics_flag_uninterruptible.m diff --git a/interfaces/matlab/+helics/helics_flag_wait_for_current_time_update.m b/interfaces/matlab/interface/+helics/helics_flag_wait_for_current_time_update.m similarity index 100% rename from interfaces/matlab/+helics/helics_flag_wait_for_current_time_update.m rename to interfaces/matlab/interface/+helics/helics_flag_wait_for_current_time_update.m diff --git a/interfaces/matlab/+helics/helics_handle_option_buffer_data.m b/interfaces/matlab/interface/+helics/helics_handle_option_buffer_data.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_buffer_data.m rename to interfaces/matlab/interface/+helics/helics_handle_option_buffer_data.m diff --git a/interfaces/matlab/+helics/helics_handle_option_connection_optional.m b/interfaces/matlab/interface/+helics/helics_handle_option_connection_optional.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_connection_optional.m rename to interfaces/matlab/interface/+helics/helics_handle_option_connection_optional.m diff --git a/interfaces/matlab/+helics/helics_handle_option_connection_required.m b/interfaces/matlab/interface/+helics/helics_handle_option_connection_required.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_connection_required.m rename to interfaces/matlab/interface/+helics/helics_handle_option_connection_required.m diff --git a/interfaces/matlab/+helics/helics_handle_option_ignore_interrupts.m b/interfaces/matlab/interface/+helics/helics_handle_option_ignore_interrupts.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_ignore_interrupts.m rename to interfaces/matlab/interface/+helics/helics_handle_option_ignore_interrupts.m diff --git a/interfaces/matlab/+helics/helics_handle_option_ignore_unit_mismatch.m b/interfaces/matlab/interface/+helics/helics_handle_option_ignore_unit_mismatch.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_ignore_unit_mismatch.m rename to interfaces/matlab/interface/+helics/helics_handle_option_ignore_unit_mismatch.m diff --git a/interfaces/matlab/+helics/helics_handle_option_multiple_connections_allowed.m b/interfaces/matlab/interface/+helics/helics_handle_option_multiple_connections_allowed.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_multiple_connections_allowed.m rename to interfaces/matlab/interface/+helics/helics_handle_option_multiple_connections_allowed.m diff --git a/interfaces/matlab/+helics/helics_handle_option_only_transmit_on_change.m b/interfaces/matlab/interface/+helics/helics_handle_option_only_transmit_on_change.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_only_transmit_on_change.m rename to interfaces/matlab/interface/+helics/helics_handle_option_only_transmit_on_change.m diff --git a/interfaces/matlab/+helics/helics_handle_option_only_update_on_change.m b/interfaces/matlab/interface/+helics/helics_handle_option_only_update_on_change.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_only_update_on_change.m rename to interfaces/matlab/interface/+helics/helics_handle_option_only_update_on_change.m diff --git a/interfaces/matlab/+helics/helics_handle_option_single_connection_only.m b/interfaces/matlab/interface/+helics/helics_handle_option_single_connection_only.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_single_connection_only.m rename to interfaces/matlab/interface/+helics/helics_handle_option_single_connection_only.m diff --git a/interfaces/matlab/+helics/helics_handle_option_strict_type_checking.m b/interfaces/matlab/interface/+helics/helics_handle_option_strict_type_checking.m similarity index 100% rename from interfaces/matlab/+helics/helics_handle_option_strict_type_checking.m rename to interfaces/matlab/interface/+helics/helics_handle_option_strict_type_checking.m diff --git a/interfaces/matlab/+helics/helics_iteration_request_force_iteration.m b/interfaces/matlab/interface/+helics/helics_iteration_request_force_iteration.m similarity index 100% rename from interfaces/matlab/+helics/helics_iteration_request_force_iteration.m rename to interfaces/matlab/interface/+helics/helics_iteration_request_force_iteration.m diff --git a/interfaces/matlab/+helics/helics_iteration_request_iterate_if_needed.m b/interfaces/matlab/interface/+helics/helics_iteration_request_iterate_if_needed.m similarity index 100% rename from interfaces/matlab/+helics/helics_iteration_request_iterate_if_needed.m rename to interfaces/matlab/interface/+helics/helics_iteration_request_iterate_if_needed.m diff --git a/interfaces/matlab/+helics/helics_iteration_request_no_iteration.m b/interfaces/matlab/interface/+helics/helics_iteration_request_no_iteration.m similarity index 100% rename from interfaces/matlab/+helics/helics_iteration_request_no_iteration.m rename to interfaces/matlab/interface/+helics/helics_iteration_request_no_iteration.m diff --git a/interfaces/matlab/+helics/helics_iteration_result_error.m b/interfaces/matlab/interface/+helics/helics_iteration_result_error.m similarity index 100% rename from interfaces/matlab/+helics/helics_iteration_result_error.m rename to interfaces/matlab/interface/+helics/helics_iteration_result_error.m diff --git a/interfaces/matlab/+helics/helics_iteration_result_halted.m b/interfaces/matlab/interface/+helics/helics_iteration_result_halted.m similarity index 100% rename from interfaces/matlab/+helics/helics_iteration_result_halted.m rename to interfaces/matlab/interface/+helics/helics_iteration_result_halted.m diff --git a/interfaces/matlab/+helics/helics_iteration_result_iterating.m b/interfaces/matlab/interface/+helics/helics_iteration_result_iterating.m similarity index 100% rename from interfaces/matlab/+helics/helics_iteration_result_iterating.m rename to interfaces/matlab/interface/+helics/helics_iteration_result_iterating.m diff --git a/interfaces/matlab/+helics/helics_iteration_result_next_step.m b/interfaces/matlab/interface/+helics/helics_iteration_result_next_step.m similarity index 100% rename from interfaces/matlab/+helics/helics_iteration_result_next_step.m rename to interfaces/matlab/interface/+helics/helics_iteration_result_next_step.m diff --git a/interfaces/matlab/+helics/helics_log_level_connections.m b/interfaces/matlab/interface/+helics/helics_log_level_connections.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_connections.m rename to interfaces/matlab/interface/+helics/helics_log_level_connections.m diff --git a/interfaces/matlab/+helics/helics_log_level_data.m b/interfaces/matlab/interface/+helics/helics_log_level_data.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_data.m rename to interfaces/matlab/interface/+helics/helics_log_level_data.m diff --git a/interfaces/matlab/+helics/helics_log_level_error.m b/interfaces/matlab/interface/+helics/helics_log_level_error.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_error.m rename to interfaces/matlab/interface/+helics/helics_log_level_error.m diff --git a/interfaces/matlab/+helics/helics_log_level_interfaces.m b/interfaces/matlab/interface/+helics/helics_log_level_interfaces.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_interfaces.m rename to interfaces/matlab/interface/+helics/helics_log_level_interfaces.m diff --git a/interfaces/matlab/+helics/helics_log_level_no_print.m b/interfaces/matlab/interface/+helics/helics_log_level_no_print.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_no_print.m rename to interfaces/matlab/interface/+helics/helics_log_level_no_print.m diff --git a/interfaces/matlab/+helics/helics_log_level_summary.m b/interfaces/matlab/interface/+helics/helics_log_level_summary.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_summary.m rename to interfaces/matlab/interface/+helics/helics_log_level_summary.m diff --git a/interfaces/matlab/+helics/helics_log_level_timing.m b/interfaces/matlab/interface/+helics/helics_log_level_timing.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_timing.m rename to interfaces/matlab/interface/+helics/helics_log_level_timing.m diff --git a/interfaces/matlab/+helics/helics_log_level_trace.m b/interfaces/matlab/interface/+helics/helics_log_level_trace.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_trace.m rename to interfaces/matlab/interface/+helics/helics_log_level_trace.m diff --git a/interfaces/matlab/+helics/helics_log_level_warning.m b/interfaces/matlab/interface/+helics/helics_log_level_warning.m similarity index 100% rename from interfaces/matlab/+helics/helics_log_level_warning.m rename to interfaces/matlab/interface/+helics/helics_log_level_warning.m diff --git a/interfaces/matlab/+helics/helics_message.m b/interfaces/matlab/interface/+helics/helics_message.m similarity index 100% rename from interfaces/matlab/+helics/helics_message.m rename to interfaces/matlab/interface/+helics/helics_message.m diff --git a/interfaces/matlab/+helics/helics_ok.m b/interfaces/matlab/interface/+helics/helics_ok.m similarity index 100% rename from interfaces/matlab/+helics/helics_ok.m rename to interfaces/matlab/interface/+helics/helics_ok.m diff --git a/interfaces/matlab/+helics/helics_property_int_console_log_level.m b/interfaces/matlab/interface/+helics/helics_property_int_console_log_level.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_int_console_log_level.m rename to interfaces/matlab/interface/+helics/helics_property_int_console_log_level.m diff --git a/interfaces/matlab/+helics/helics_property_int_file_log_level.m b/interfaces/matlab/interface/+helics/helics_property_int_file_log_level.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_int_file_log_level.m rename to interfaces/matlab/interface/+helics/helics_property_int_file_log_level.m diff --git a/interfaces/matlab/+helics/helics_property_int_log_level.m b/interfaces/matlab/interface/+helics/helics_property_int_log_level.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_int_log_level.m rename to interfaces/matlab/interface/+helics/helics_property_int_log_level.m diff --git a/interfaces/matlab/+helics/helics_property_int_max_iterations.m b/interfaces/matlab/interface/+helics/helics_property_int_max_iterations.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_int_max_iterations.m rename to interfaces/matlab/interface/+helics/helics_property_int_max_iterations.m diff --git a/interfaces/matlab/+helics/helics_property_time_delta.m b/interfaces/matlab/interface/+helics/helics_property_time_delta.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_delta.m rename to interfaces/matlab/interface/+helics/helics_property_time_delta.m diff --git a/interfaces/matlab/+helics/helics_property_time_input_delay.m b/interfaces/matlab/interface/+helics/helics_property_time_input_delay.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_input_delay.m rename to interfaces/matlab/interface/+helics/helics_property_time_input_delay.m diff --git a/interfaces/matlab/+helics/helics_property_time_offset.m b/interfaces/matlab/interface/+helics/helics_property_time_offset.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_offset.m rename to interfaces/matlab/interface/+helics/helics_property_time_offset.m diff --git a/interfaces/matlab/+helics/helics_property_time_output_delay.m b/interfaces/matlab/interface/+helics/helics_property_time_output_delay.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_output_delay.m rename to interfaces/matlab/interface/+helics/helics_property_time_output_delay.m diff --git a/interfaces/matlab/+helics/helics_property_time_period.m b/interfaces/matlab/interface/+helics/helics_property_time_period.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_period.m rename to interfaces/matlab/interface/+helics/helics_property_time_period.m diff --git a/interfaces/matlab/+helics/helics_property_time_rt_lag.m b/interfaces/matlab/interface/+helics/helics_property_time_rt_lag.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_rt_lag.m rename to interfaces/matlab/interface/+helics/helics_property_time_rt_lag.m diff --git a/interfaces/matlab/+helics/helics_property_time_rt_lead.m b/interfaces/matlab/interface/+helics/helics_property_time_rt_lead.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_rt_lead.m rename to interfaces/matlab/interface/+helics/helics_property_time_rt_lead.m diff --git a/interfaces/matlab/+helics/helics_property_time_rt_tolerance.m b/interfaces/matlab/interface/+helics/helics_property_time_rt_tolerance.m similarity index 100% rename from interfaces/matlab/+helics/helics_property_time_rt_tolerance.m rename to interfaces/matlab/interface/+helics/helics_property_time_rt_tolerance.m diff --git a/interfaces/matlab/+helics/helics_state_error.m b/interfaces/matlab/interface/+helics/helics_state_error.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_error.m rename to interfaces/matlab/interface/+helics/helics_state_error.m diff --git a/interfaces/matlab/+helics/helics_state_execution.m b/interfaces/matlab/interface/+helics/helics_state_execution.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_execution.m rename to interfaces/matlab/interface/+helics/helics_state_execution.m diff --git a/interfaces/matlab/+helics/helics_state_finalize.m b/interfaces/matlab/interface/+helics/helics_state_finalize.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_finalize.m rename to interfaces/matlab/interface/+helics/helics_state_finalize.m diff --git a/interfaces/matlab/+helics/helics_state_initialization.m b/interfaces/matlab/interface/+helics/helics_state_initialization.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_initialization.m rename to interfaces/matlab/interface/+helics/helics_state_initialization.m diff --git a/interfaces/matlab/+helics/helics_state_pending_exec.m b/interfaces/matlab/interface/+helics/helics_state_pending_exec.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_pending_exec.m rename to interfaces/matlab/interface/+helics/helics_state_pending_exec.m diff --git a/interfaces/matlab/+helics/helics_state_pending_finalize.m b/interfaces/matlab/interface/+helics/helics_state_pending_finalize.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_pending_finalize.m rename to interfaces/matlab/interface/+helics/helics_state_pending_finalize.m diff --git a/interfaces/matlab/+helics/helics_state_pending_init.m b/interfaces/matlab/interface/+helics/helics_state_pending_init.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_pending_init.m rename to interfaces/matlab/interface/+helics/helics_state_pending_init.m diff --git a/interfaces/matlab/+helics/helics_state_pending_iterative_time.m b/interfaces/matlab/interface/+helics/helics_state_pending_iterative_time.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_pending_iterative_time.m rename to interfaces/matlab/interface/+helics/helics_state_pending_iterative_time.m diff --git a/interfaces/matlab/+helics/helics_state_pending_time.m b/interfaces/matlab/interface/+helics/helics_state_pending_time.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_pending_time.m rename to interfaces/matlab/interface/+helics/helics_state_pending_time.m diff --git a/interfaces/matlab/+helics/helics_state_startup.m b/interfaces/matlab/interface/+helics/helics_state_startup.m similarity index 100% rename from interfaces/matlab/+helics/helics_state_startup.m rename to interfaces/matlab/interface/+helics/helics_state_startup.m diff --git a/interfaces/matlab/+helics/helics_time_epsilon.m b/interfaces/matlab/interface/+helics/helics_time_epsilon.m similarity index 100% rename from interfaces/matlab/+helics/helics_time_epsilon.m rename to interfaces/matlab/interface/+helics/helics_time_epsilon.m diff --git a/interfaces/matlab/+helics/helics_time_invalid.m b/interfaces/matlab/interface/+helics/helics_time_invalid.m similarity index 100% rename from interfaces/matlab/+helics/helics_time_invalid.m rename to interfaces/matlab/interface/+helics/helics_time_invalid.m diff --git a/interfaces/matlab/+helics/helics_time_maxtime.m b/interfaces/matlab/interface/+helics/helics_time_maxtime.m similarity index 100% rename from interfaces/matlab/+helics/helics_time_maxtime.m rename to interfaces/matlab/interface/+helics/helics_time_maxtime.m diff --git a/interfaces/matlab/+helics/helics_time_zero.m b/interfaces/matlab/interface/+helics/helics_time_zero.m similarity index 100% rename from interfaces/matlab/+helics/helics_time_zero.m rename to interfaces/matlab/interface/+helics/helics_time_zero.m diff --git a/interfaces/matlab/+helics/helics_true.m b/interfaces/matlab/interface/+helics/helics_true.m similarity index 100% rename from interfaces/matlab/+helics/helics_true.m rename to interfaces/matlab/interface/+helics/helics_true.m diff --git a/interfaces/matlab/+helics/helics_warning.m b/interfaces/matlab/interface/+helics/helics_warning.m similarity index 100% rename from interfaces/matlab/+helics/helics_warning.m rename to interfaces/matlab/interface/+helics/helics_warning.m diff --git a/interfaces/matlab/SwigGet.m b/interfaces/matlab/interface/SwigGet.m similarity index 100% rename from interfaces/matlab/SwigGet.m rename to interfaces/matlab/interface/SwigGet.m diff --git a/interfaces/matlab/SwigMem.m b/interfaces/matlab/interface/SwigMem.m similarity index 100% rename from interfaces/matlab/SwigMem.m rename to interfaces/matlab/interface/SwigMem.m diff --git a/interfaces/matlab/SwigRef.m b/interfaces/matlab/interface/SwigRef.m similarity index 100% rename from interfaces/matlab/SwigRef.m rename to interfaces/matlab/interface/SwigRef.m diff --git a/interfaces/matlab/helicsMEX.cpp b/interfaces/matlab/interface/helicsMEX.cpp similarity index 100% rename from interfaces/matlab/helicsMEX.cpp rename to interfaces/matlab/interface/helicsMEX.cpp diff --git a/interfaces/matlab/matlabSwigGenerateOnly.cmake b/interfaces/matlab/matlabSwigGenerateOnly.cmake index 811da4fb14..3f4db7653a 100644 --- a/interfaces/matlab/matlabSwigGenerateOnly.cmake +++ b/interfaces/matlab/matlabSwigGenerateOnly.cmake @@ -29,7 +29,7 @@ file(GLOB SHARED_LIB_HEADERS ${CMAKE_SOURCE_DIR}/src/helics/shared_api_library/* add_custom_target( mfile_overwrite ALL COMMAND - ${CMAKE_COMMAND} -D TARGET_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P + ${CMAKE_COMMAND} -D TARGET_DIR=${CMAKE_CURRENT_SOURCE_DIR}/interface -P ${CMAKE_CURRENT_SOURCE_DIR}/overwriteMatlabFiles.cmake DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/helicsMEX.cpp ) diff --git a/interfaces/matlab/mkhelicsMEXFile.m.in b/interfaces/matlab/mkhelicsMEXFile.m.in index 433022b5ae..3af1878bcc 100644 --- a/interfaces/matlab/mkhelicsMEXFile.m.in +++ b/interfaces/matlab/mkhelicsMEXFile.m.in @@ -1 +1 @@ -mex('-I${LIBRARY_INCLUDE_LOCATION}','-I${OTHER_INCLUDE_LOCATION}', '-L${LIBRARY_BUILD_LOCATION}','-l${LIBRARY_NAME}', '-largeArrayDims','${BUILD_FILE}') \ No newline at end of file +mex('-I${LIBRARY_INCLUDE_LOCATION}','-I${OTHER_INCLUDE_LOCATION}', '-L${LIBRARY_BUILD_LOCATION}','-l${LIBRARY_NAME}', '-largeArrayDims','${BUILD_FILE}') quit() \ No newline at end of file diff --git a/interfaces/python/CMakeLists.txt b/interfaces/python/CMakeLists.txt index de3c3b9058..009cd06ba8 100644 --- a/interfaces/python/CMakeLists.txt +++ b/interfaces/python/CMakeLists.txt @@ -251,12 +251,17 @@ if(HELICS_ENABLE_SWIG AND SWIG_EXECUTABLE) else() message(STATUS "Building without swig") + file( + COPY ${CMAKE_CURRENT_SOURCE_DIR}/interface/ + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + ) + if(HELICS_USE_NEW_PYTHON_FIND) - python3_add_library(helicsPYTHON MODULE helicsPython.c) + python3_add_library(helicsPYTHON MODULE interface/helicsPython.c) else() # Remove in HELICS 3 include(${CMAKE_CURRENT_SOURCE_DIR}/addHelicsPy3Lib.cmake) - helics_python3_add_library(helicsPYTHON helicsPython.c) + helics_python3_add_library(helicsPYTHON interface/helicsPython.c) endif() # Set the output library name to _helics @@ -282,8 +287,6 @@ else() # TODO: check for when setup.py is used configure_file(${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/helics.py - ${CMAKE_CURRENT_BINARY_DIR}/helics.py COPYONLY) endif() diff --git a/interfaces/python/helics.py b/interfaces/python/interface/helics.py similarity index 100% rename from interfaces/python/helics.py rename to interfaces/python/interface/helics.py diff --git a/interfaces/python/helicsPython.c b/interfaces/python/interface/helicsPython.c similarity index 100% rename from interfaces/python/helicsPython.c rename to interfaces/python/interface/helicsPython.c diff --git a/interfaces/python/pythonSwigGenerateOnly.cmake b/interfaces/python/pythonSwigGenerateOnly.cmake index 267b01a73a..9375e38604 100644 --- a/interfaces/python/pythonSwigGenerateOnly.cmake +++ b/interfaces/python/pythonSwigGenerateOnly.cmake @@ -36,7 +36,7 @@ endif() add_custom_target( pyfile_overwrite ALL COMMAND - ${CMAKE_COMMAND} -D TARGET_DIR=${CMAKE_CURRENT_SOURCE_DIR} -P + ${CMAKE_COMMAND} -D TARGET_DIR=${CMAKE_CURRENT_SOURCE_DIR}/interface -P ${CMAKE_CURRENT_SOURCE_DIR}/overwritePythonFiles.cmake DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/helicsPython.c ) diff --git a/tests/matlab/CMakeLists.txt b/tests/matlab/CMakeLists.txt index abf1054320..d401eac808 100644 --- a/tests/matlab/CMakeLists.txt +++ b/tests/matlab/CMakeLists.txt @@ -31,8 +31,6 @@ elseif(APPLE) -r "\"run('${CMAKE_CURRENT_BINARY_DIR}/runTests.m');quit;\"" ) -else() - else() configure_file(runTestsUNIX.m.in runTests.m) add_test( From a64508a7dc57f13eb3cd8478e2fe8b0e4e7abc76 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Sat, 29 Feb 2020 12:44:02 -0800 Subject: [PATCH 13/32] Update ThirdParty ghc::filesystem library (#1104) --- ThirdParty/helics/external/filesystem.hpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ThirdParty/helics/external/filesystem.hpp b/ThirdParty/helics/external/filesystem.hpp index 56b2f7180d..ba4302c961 100644 --- a/ThirdParty/helics/external/filesystem.hpp +++ b/ThirdParty/helics/external/filesystem.hpp @@ -1,6 +1,6 @@ //--------------------------------------------------------------------------------------- // -// ghc::filesystem - A C++17-like filesystem implementation for C++11/C++147/C++17 +// ghc::filesystem - A C++17-like filesystem implementation for C++11/C++14/C++17 // //--------------------------------------------------------------------------------------- // @@ -40,6 +40,12 @@ #ifndef GHC_FILESYSTEM_H #define GHC_FILESYSTEM_H +// #define BSD manifest constant only in +// sys/param.h +#ifndef _WIN32 +#include +#endif + #ifndef GHC_OS_DETECTED #if defined(__APPLE__) && defined(__MACH__) #define GHC_OS_MACOS @@ -54,6 +60,10 @@ #elif defined(_WIN32) #define GHC_OS_WINDOWS #define GHC_OS_WIN32 +#elif defined(__svr4__) +#define GHC_OS_SYS5R4 +#elif defined(BSD) +#define GHC_OS_BSD #else #error "Operating system currently not supported!" #endif @@ -106,6 +116,7 @@ #include #include #include +#include #ifdef GHC_OS_ANDROID #include #endif From 175d0021900efb37edfbfde101d34c3b78221106 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Sat, 29 Feb 2020 14:53:17 -0800 Subject: [PATCH 14/32] Switch to netif git submodule (#1103) * Switch to netif git submodule * Update CHANGELOG.md and CONTRIBUTORS.md --- .gitmodules | 3 + CHANGELOG.md | 1 + CMakeLists.txt | 6 + CONTRIBUTORS.md | 3 + ThirdParty/netif | 1 + ThirdParty/netif/gmlc/netif/NetIF.hpp | 294 -------------------------- 6 files changed, 14 insertions(+), 294 deletions(-) create mode 160000 ThirdParty/netif delete mode 100644 ThirdParty/netif/gmlc/netif/NetIF.hpp diff --git a/.gitmodules b/.gitmodules index d2a8c23a76..33928fdd9f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -24,3 +24,6 @@ [submodule "ThirdParty/toml11"] path = ThirdParty/toml11 url = https://github.com/GMLC-TDC/toml11.git +[submodule "ThirdParty/netif"] + path = ThirdParty/netif + url = https://github.com/GMLC-TDC/netif.git diff --git a/CHANGELOG.md b/CHANGELOG.md index c88bc74ec1..3909ce6d68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Increased code coverage and additional bug fixes. - The behavior of the Federate *Complete operations to be uniform and consistent - Configuration of flags and targets for interfaces in json and toml files can be done in multiple sections - The benchmark federates have been changed to use a common base benchmark federate class for more consistent behavior +- Switched to including netif as a git submodule ### Fixed - Issue with iterative requests that were not being honored if the federate was acting in isolation diff --git a/CMakeLists.txt b/CMakeLists.txt index eb21fddd9f..25b839b67e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -377,6 +377,10 @@ if(NOT EXISTS "${PROJECT_SOURCE_DIR}/ThirdParty/toml11/toml/value.hpp") submod_update(ThirdParty/toml11) endif() +if(NOT EXISTS "${PROJECT_SOURCE_DIR}/ThirdParty/netif/gmlc/netif/NetIF.hpp") + submod_update(ThirdParty/netif) +endif() + check_submodule_status() include(GNUInstallDirs) @@ -824,6 +828,8 @@ set(LICENSE_LIST "${PROJECT_SOURCE_DIR}/ThirdParty/toml11/LICENSE" "GMLC Utilities" "${PROJECT_SOURCE_DIR}/ThirdParty/utilities/LICENSE" + "netif" + "${PROJECT_SOURCE_DIR}/ThirdParty/netif/LICENSE" ) if(NOT CMAKE_VERSION VERSION_LESS 3.11) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 6d27fefa1c..c988223246 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -88,6 +88,9 @@ This variant was chosen for compatibility with C++17 over boost variant and bett ### [gulrak/filesystem](https://github.com/gulrak/filesystem) A single-header standalone variant of the filesystem library(v1.3.0) is used to avoid compiled libraries in boost. The single header version is included with the source and is released with a [MIT](https://github.com/gulrak/filesystem/blob/master/LICENSE) license (used as of HELICS 2.4.1) prior versions had a BSD-3-Clause license. +### [gmlc/netif](https://github.com/GMLC-TDC/netif) +A header-only library for getting a list of network interfaces in a cross-platform way. It is included in HELICS as a submodule and is released under a [BSD-3 clause](https://github.com/GMLC-TDC/netif/blob/master/LICENSE) license. + ### CMake scripts Several CMake scripts came from other sources and were either used or modified for use in HELICS. - Lars Bilke [CodeCoverage.cmake](https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake) diff --git a/ThirdParty/netif b/ThirdParty/netif new file mode 160000 index 0000000000..72de54d70f --- /dev/null +++ b/ThirdParty/netif @@ -0,0 +1 @@ +Subproject commit 72de54d70f026d2ed7bfd5f1227f175e3d2879e0 diff --git a/ThirdParty/netif/gmlc/netif/NetIF.hpp b/ThirdParty/netif/gmlc/netif/NetIF.hpp deleted file mode 100644 index a4ba4c3c75..0000000000 --- a/ThirdParty/netif/gmlc/netif/NetIF.hpp +++ /dev/null @@ -1,294 +0,0 @@ -/* -Copyright (c) 2019, -Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance -for Sustainable Energy, LLC. See the top-level NOTICE for additional details. -All rights reserved. SPDX-License-Identifier: BSD-3-Clause -*/ - -#pragma once - -#include -#include -#include -#include - -// other platforms might need different headers -- detecting with macros: -// https://sourceforge.net/p/predef/wiki/OperatingSystems/ -// https://stackoverflow.com/questions/142508/how-do-i-check-os-with-a-preprocessor-directive -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) -#include -#include -#include -#ifdef _MSC_VER -#pragma comment(lib, "IPHLPAPI.lib") -#pragma comment(lib, "Ws2_32.lib") -#endif -#else -#include -#include -#endif - -namespace gmlc -{ -namespace netif -{ -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) -using IF_ADDRS = PIP_ADAPTER_ADDRESSES; -#else -using IF_ADDRS = struct ifaddrs *; -#endif - -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) -using IF_ADDRS_UNICAST = PIP_ADAPTER_UNICAST_ADDRESS; -#else -using IF_ADDRS_UNICAST = struct ifaddrs *; -#endif - -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wstrict-aliasing" -#endif - -/** - * a helper function to convert the IP address in a sockaddr struct to text - * @param addr a pointer to a sockaddr struct - * @param sa_len the length of the sockaddr (primarily for systems that don't support inet_ntop) - * @return an IP address in text form, or an empty string if conversion to text failed - */ -inline std::string addressToString (struct sockaddr *addr, int sa_len) -{ -#if defined(__MINGW32__) - char addr_str[NI_MAXHOST]; - if (getnameinfo (addr, sa_len, addr_str, NI_MAXHOST, 0, 0, NI_NUMERICHOST) != 0) - { - return std::string (); - } -#else - (void)sa_len; - int family = addr->sa_family; - char addr_str[INET6_ADDRSTRLEN]; - void *src_addr = nullptr; - switch (family) - { - case AF_INET: - src_addr = &(reinterpret_cast (addr)->sin_addr); - break; - case AF_INET6: - src_addr = &(reinterpret_cast (addr)->sin6_addr); - break; - default: // Invalid address type for conversion to text - return std::string (); - } - inet_ntop (family, src_addr, addr_str, INET6_ADDRSTRLEN); -#endif - - return std::string (addr_str); -} - -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif - -/** - * a helper function to free the memory allocated to store a set of interface addresses - * @param addrs a pointer to the allocated address structure (type depends on OS) - */ -inline void freeAddresses (IF_ADDRS addrs) -{ -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) - HeapFree (GetProcessHeap (), 0, addrs); -#else - freeifaddrs (addrs); -#endif -} - -/** - * a helper function to get a list of all interface adapters using OS system calls. the returned pointer from addrs - * must be freed with a call to freeAddresses. - * @param family type of adapter addresses to get on Windows; one of AF_INET (IPv4), AF_INET6 (IPv6), or AF_UNSPEC - * (both) - * @param[out] addrs pointer to a pointer to be filled in with the address of the allocated address structure; must - * be freed when done by calling freeAddresses - * @return 0 on success, or -1 if an error occurred - */ -inline auto getAddresses (int family, IF_ADDRS *addrs) -{ -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) - // Windows API: https://docs.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses - DWORD rv = 0; - ULONG bufLen = 15000; // recommended size from Windows API docs to avoid error - ULONG iter = 0; - do - { - *addrs = (IP_ADAPTER_ADDRESSES *)HeapAlloc (GetProcessHeap (), 0, bufLen); - if (*addrs == NULL) - { - return -1; - } - - rv = GetAdaptersAddresses (family, GAA_FLAG_INCLUDE_PREFIX, NULL, *addrs, &bufLen); - if (rv == ERROR_BUFFER_OVERFLOW) - { - freeAddresses (*addrs); - *addrs = NULL; - bufLen = bufLen * 2; // Double buffer length for the next attempt - } - else - { - break; - } - iter++; - } while ((rv == ERROR_BUFFER_OVERFLOW) && (iter < 3)); - if (rv != NO_ERROR) - { - // May want to change this depending on the type of error - return -1; - } - return 0; -#else - (void)family; - return getifaddrs (addrs); -#endif -} - -/** - * a helper function to get the underlying socket address structure based on OS - * @param addr a pointer to an address structure for an (unicast) interface/adapter - * @return a socket address structure containing the IP address information for an interface - */ -inline auto getSockAddr (IF_ADDRS_UNICAST addr) -{ -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) - return addr->Address.lpSockaddr; -#else - return addr->ifa_addr; -#endif -} - -/** - * a helper function to get the underlying socket address length on systems where it is needed - * @param addr a pointer to an address structure for an (unicast) interface/adapter - * @return the socket address length - */ -inline int getSockAddrLen (IF_ADDRS_UNICAST addr) -{ -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) - return addr->Address.iSockaddrLength; -#else - return sizeof (*addr->ifa_addr); -#endif -} - -/** - * a helper function to get the next interface/adapter address based on OS - * @param family specify the type of address desired on non-Windows systems; one of AF_INET (IPv4), AF_INET6 - * (IPv6), or AF_UNSPEC (both) - * @param addrs a pointer to an addresses structure for an interface/adapter list - * @return the next interface/adapter in the addresses list (that matches the family given for non-Windows - * systems), or nullptr if there is no next address - */ -inline IF_ADDRS_UNICAST getNextAddress (int family, IF_ADDRS_UNICAST addrs) -{ -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) - (void)family; - return addrs->Next; -#else - auto next = addrs->ifa_next; - while (next != NULL) - { - // Skip entries with a null sockaddr - auto next_sockaddr = getSockAddr (next); - if (next_sockaddr == NULL) - { - next = next->ifa_next; - continue; - } - - int next_family = next_sockaddr->sa_family; - // Skip if the family is not IPv4 or IPv6 - if (next_family != AF_INET && next_family != AF_INET6) - { - next = next->ifa_next; - continue; - } - // Skip if a specific IP family was requested and the family doesn't match - if ((family == AF_INET || family == AF_INET6) && family != next_family) - { - next = next->ifa_next; - continue; - } - // An address entry meeting the requirements was found, return it - return next; - } - return nullptr; -#endif -} - -/** - * get all addresses associated with network interfaces on the system of the address family given. - * @param family the type of IP address to return; one of AF_INET (IPv4), AF_INET6 (IPv6), or AF_UNSPEC (both) - * @return a list of addresses as text - */ -std::vector getInterfaceAddresses (int family) -{ - std::vector result_list; - - IF_ADDRS allAddrs = NULL; - - getAddresses (family, &allAddrs); - -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) - WSADATA wsaData; - if (WSAStartup (0x202, &wsaData) != 0) - { - return result_list; - } - auto winAddrs = allAddrs; - while (winAddrs) - { - auto addrs = winAddrs->FirstUnicastAddress; -#else - auto addrs = allAddrs; -#endif - - for (auto a = addrs; a != NULL; a = getNextAddress (family, a)) - { - std::string ipAddr = addressToString (getSockAddr (a), getSockAddrLen (a)); - if (!ipAddr.empty ()) - { - result_list.push_back (ipAddr); - } - } - -#if defined(_WIN32) || defined(__USE_W32_SOCKETS) - winAddrs = winAddrs->Next; - } - WSACleanup (); -#endif - - if (allAddrs) - { - freeAddresses (allAddrs); - } - return result_list; -} - -/** - * returns a list of all IPv4 addresses associated with network interfaces on the system. - * @return a list of IPv4 addresses as text - */ -std::vector getInterfaceAddressesV4 () { return getInterfaceAddresses (AF_INET); } - -/** - * returns a list of all IPv6 addresses associated with network interfaces on the system. - * @return a list of IPv6 addresses as text - */ -std::vector getInterfaceAddressesV6 () { return getInterfaceAddresses (AF_INET6); } - -/** - * returns a list of all IPv4 and IPv6 addresses associated with network interfaces on the system. - * @return a list of IPv4 and IPv6 addresses as text - */ -std::vector getInterfaceAddressesAll () { return getInterfaceAddresses (AF_UNSPEC); } -} // namespace netif -} // namespace gmlc From c225988eeabfde5de9232155824209c05d1b942c Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Sun, 1 Mar 2020 07:19:46 -0800 Subject: [PATCH 15/32] Add FreeBSD CI build (#1105) * Add a FreeBSD build on Cirrus CI * Update the git submodules * Install a copy of git * Use the copy of Boost already on the FreeBSD VM * Disable the IPC core on FreeBSD CI * Add FreeBSD CI build to CHANGELOG and docs * Try to guess if the system is BSD and disable the IPC core if it is --- .cirrus.yml | 13 +++++++++++++ CHANGELOG.md | 1 + CMakeLists.txt | 6 +++++- docs/developer-guide/continuous-integration.md | 3 +++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .cirrus.yml diff --git a/.cirrus.yml b/.cirrus.yml new file mode 100644 index 0000000000..dfbfe961c4 --- /dev/null +++ b/.cirrus.yml @@ -0,0 +1,13 @@ +freebsd_instance: + image_family: freebsd-12-1 + +task: + install_script: | + pkg install -y cmake libzmq4 ninja git + build_script: | + mkdir build && cd build + cmake -GNinja -DHELICS_BUILD_TESTS=ON -DHELICS_BUILD_EXAMPLES=ON .. + cmake --build . + test_script: | + cd build + ctest --output-on-failure --timeout 480 -C Release -L "SystemCI" diff --git a/CHANGELOG.md b/CHANGELOG.md index 3909ce6d68..532f39f74f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Increased code coverage and additional bug fixes. - Docker image for a helics builder which includes build tools and the helics installation - helics can be installed on [MSYS2](https://helics.readthedocs.io/en/latest/installation/windows.html#msys2) using pacman. - Standalone benchmark federates for use in multinode benchmark runs +- A FreeBSD 12.1 CI build using Cirrus CI ### Deprecated diff --git a/CMakeLists.txt b/CMakeLists.txt index 25b839b67e..ab7b1cf9ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -413,9 +413,13 @@ cmake_dependent_advanced_option( cmake_dependent_advanced_option( ENABLE_UDP_CORE "Enable UDP core types" ON "NOT HELICS_DISABLE_ASIO" OFF ) +if("${CMAKE_SYSTEM_NAME}" MATCHES ".*BSD") + set(SYSTEM_IS_BSD ON) +endif() + cmake_dependent_advanced_option( ENABLE_IPC_CORE "Enable Interprocess communication types" ON - "NOT HELICS_DISABLE_BOOST" OFF + "NOT HELICS_DISABLE_BOOST;NOT SYSTEM_IS_BSD" OFF ) cmake_dependent_advanced_option( ENABLE_TEST_CORE "Enable test inprocess core type" OFF "NOT HELICS_BUILD_TESTS" ON diff --git a/docs/developer-guide/continuous-integration.md b/docs/developer-guide/continuous-integration.md index ab0b8b9a5c..7ba7cbc97d 100644 --- a/docs/developer-guide/continuous-integration.md +++ b/docs/developer-guide/continuous-integration.md @@ -55,6 +55,9 @@ All PR's and branches trigger a set of builds using Docker images on Circle-CI. ## Drone - 64 bit and 32 bit builds on ARM processors +## Cirrus CI +- FreeBSD 12.1 build + ## Read the docs - Build the docs for the website and test on every commit From 69f5256d253bfe9d1909bd8c4fca4fd05278e2e8 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Mon, 2 Mar 2020 14:21:58 -0800 Subject: [PATCH 16/32] update the instructions for MSYS2 installation to include the pip install instructions (#1106) --- docs/installation/windows.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/installation/windows.md b/docs/installation/windows.md index f90c6d9a2e..66cf21c255 100644 --- a/docs/installation/windows.md +++ b/docs/installation/windows.md @@ -194,7 +194,7 @@ Total Installed Size: 65.78 MiB :: Proceed with installation? [Y/n] y ``` -you will be asked to proceed with installation, answering `y` will install helics and the required dependencies. +you will be asked to proceed with installation, answering `y` will install HELICS and the required dependencies. ```bash $ helics_broker --version @@ -207,6 +207,18 @@ The helics apps and libraries are now installed, and can be updated when HELICS $ pacman -Sy mingw32/mingw-w64-i686-helics ``` +if you are installing both the 32 and 64 bit versions or just want a simpler command to type +```bash +$ pacboy -Sy helics +``` + +if the python interface is needed on MSYS2 it can be installed through pip but requires some setup first. +```bash +$export CMAKE_GENERATOR="MSYS Makefiles" +$pip install helics +``` +This will install the HELICS python extension in the correct location. The pacman package should be installed first + ### Building HELICS From Source on Windows with MSYS2 ### After MSYS2 has been successfully updated Some packages need to be installed in order to configure and build HELICS. The following packages need to be installed: From 5533ad9a8959041de03f38699c003e002a676653 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Mon, 2 Mar 2020 14:47:21 -0800 Subject: [PATCH 17/32] Set git line endings for md and json files to lf --- .gitattributes | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitattributes b/.gitattributes index 75c1502744..0118f1f490 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,8 @@ * text=input +*.md eol=lf +*.json eol=lf + *.jpg binary *.png binary *.mat binary From b0dab371d6e5c2c5424b97ee9e40f0037bf8d7a7 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Tue, 3 Mar 2020 12:11:23 -0800 Subject: [PATCH 18/32] Renormalize line endings for md, json, player, and bat files (#1107) * Set line endings for player and bat files * Renormalize line endings * Add bat eol=crlf to editorconfig --- .editorconfig | 5 +- .gitattributes | 6 +- docs/make.bat | 72 +- .../include/players/load_shape_player.player | 2880 ++++++++--------- .../Transmission/Transmission_json.json | 36 +- .../include/players/load_shape_player.player | 2880 ++++++++--------- .../Example_1b/EV_Controller/Control.json | 152 +- .../Transmission/Transmission_json.json | 36 +- .../include/players/load_shape_player.player | 2880 ++++++++--------- .../Example_1c/EV_Controller/Control.json | 276 +- .../Transmission/Transmission_json.json | 36 +- 11 files changed, 4632 insertions(+), 4627 deletions(-) diff --git a/.editorconfig b/.editorconfig index eaf4499dd6..fc33fa38cd 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,6 +3,9 @@ root = true [*] end_of_line = lf +[*.bat] +end_of_line = crlf + # HELICS C/C++ source files [{benchmarks,examples,src,tests}/**.{cpp,hpp,c,h}] indent_style = space @@ -24,4 +27,4 @@ indent_size = 4 # HELICS Root CMakeLists.txt file (avoid matching inside ThirdParty folder) [./CMakeLists.txt] indent_style = space -indent_size = 4 \ No newline at end of file +indent_size = 4 diff --git a/.gitattributes b/.gitattributes index 0118f1f490..7ee96bbf2a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,7 +1,9 @@ * text=input -*.md eol=lf -*.json eol=lf +*.bat text eol=crlf +*.md text eol=lf +*.json text eol=lf +*.player text eol=lf *.jpg binary *.png binary diff --git a/docs/make.bat b/docs/make.bat index 2dcd2ace84..f6940f3acc 100644 --- a/docs/make.bat +++ b/docs/make.bat @@ -1,36 +1,36 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=python -msphinx -) -set SOURCEDIR=. -set BUILDDIR=_build -set SPHINXPROJ=HELICS - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The Sphinx module was not found. Make sure you have Sphinx installed, - echo.then set the SPHINXBUILD environment variable to point to the full - echo.path of the 'sphinx-build' executable. Alternatively you may add the - echo.Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% - -:end -popd +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=python -msphinx +) +set SOURCEDIR=. +set BUILDDIR=_build +set SPHINXPROJ=HELICS + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The Sphinx module was not found. Make sure you have Sphinx installed, + echo.then set the SPHINXBUILD environment variable to point to the full + echo.path of the 'sphinx-build' executable. Alternatively you may add the + echo.Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/examples/user_guide_examples/Example_1a/Distribution/include/players/load_shape_player.player b/examples/user_guide_examples/Example_1a/Distribution/include/players/load_shape_player.player index cac3aa6197..089fa4c2ce 100644 --- a/examples/user_guide_examples/Example_1a/Distribution/include/players/load_shape_player.player +++ b/examples/user_guide_examples/Example_1a/Distribution/include/players/load_shape_player.player @@ -1,1440 +1,1440 @@ -2013-08-28 00:00:00, 0.241766 -+1m, 0.243147 -+1m, 0.244528 -+1m, 0.245908 -+1m, 0.247289 -+1m, 0.248670 -+1m, 0.245771 -+1m, 0.242811 -+1m, 0.239852 -+1m, 0.236892 -+1m, 0.233933 -+1m, 0.235427 -+1m, 0.237050 -+1m, 0.238672 -+1m, 0.240294 -+1m, 0.241916 -+1m, 0.241126 -+1m, 0.240231 -+1m, 0.239335 -+1m, 0.238440 -+1m, 0.237544 -+1m, 0.236195 -+1m, 0.234818 -+1m, 0.233442 -+1m, 0.232065 -+1m, 0.230689 -+1m, 0.231470 -+1m, 0.232412 -+1m, 0.233354 -+1m, 0.234297 -+1m, 0.235239 -+1m, 0.234936 -+1m, 0.234520 -+1m, 0.234103 -+1m, 0.233686 -+1m, 0.233270 -+1m, 0.233278 -+1m, 0.233332 -+1m, 0.233387 -+1m, 0.233441 -+1m, 0.233495 -+1m, 0.231224 -+1m, 0.228660 -+1m, 0.226096 -+1m, 0.223533 -+1m, 0.220969 -+1m, 0.220822 -+1m, 0.221021 -+1m, 0.221220 -+1m, 0.221419 -+1m, 0.221618 -+1m, 0.221828 -+1m, 0.222040 -+1m, 0.222253 -+1m, 0.222465 -+1m, 0.222677 -+1m, 0.222844 -+1m, 0.223003 -+1m, 0.223162 -+1m, 0.223321 -+1m, 0.223480 -+1m, 0.223259 -+1m, 0.222961 -+1m, 0.222663 -+1m, 0.222365 -+1m, 0.222067 -+1m, 0.222466 -+1m, 0.223019 -+1m, 0.223573 -+1m, 0.224126 -+1m, 0.224679 -+1m, 0.224661 -+1m, 0.224503 -+1m, 0.224346 -+1m, 0.224189 -+1m, 0.224032 -+1m, 0.222787 -+1m, 0.221254 -+1m, 0.219722 -+1m, 0.218189 -+1m, 0.216657 -+1m, 0.217125 -+1m, 0.218167 -+1m, 0.219209 -+1m, 0.220252 -+1m, 0.221294 -+1m, 0.219722 -+1m, 0.217338 -+1m, 0.214954 -+1m, 0.212570 -+1m, 0.210186 -+1m, 0.209746 -+1m, 0.209956 -+1m, 0.210167 -+1m, 0.210377 -+1m, 0.210587 -+1m, 0.211425 -+1m, 0.212488 -+1m, 0.213551 -+1m, 0.214614 -+1m, 0.215677 -+1m, 0.215553 -+1m, 0.214970 -+1m, 0.214387 -+1m, 0.213805 -+1m, 0.213222 -+1m, 0.212366 -+1m, 0.211397 -+1m, 0.210428 -+1m, 0.209460 -+1m, 0.208491 -+1m, 0.208696 -+1m, 0.209420 -+1m, 0.210144 -+1m, 0.210868 -+1m, 0.211592 -+1m, 0.211443 -+1m, 0.210881 -+1m, 0.210320 -+1m, 0.209758 -+1m, 0.209197 -+1m, 0.209802 -+1m, 0.210993 -+1m, 0.212184 -+1m, 0.213375 -+1m, 0.214567 -+1m, 0.213534 -+1m, 0.211313 -+1m, 0.209092 -+1m, 0.206871 -+1m, 0.204649 -+1m, 0.204855 -+1m, 0.206439 -+1m, 0.208024 -+1m, 0.209608 -+1m, 0.211193 -+1m, 0.211206 -+1m, 0.210271 -+1m, 0.209335 -+1m, 0.208400 -+1m, 0.207465 -+1m, 0.207536 -+1m, 0.208251 -+1m, 0.208965 -+1m, 0.209680 -+1m, 0.210395 -+1m, 0.209883 -+1m, 0.208540 -+1m, 0.207197 -+1m, 0.205854 -+1m, 0.204511 -+1m, 0.204859 -+1m, 0.206422 -+1m, 0.207986 -+1m, 0.209549 -+1m, 0.211112 -+1m, 0.211285 -+1m, 0.210400 -+1m, 0.209514 -+1m, 0.208629 -+1m, 0.207743 -+1m, 0.207328 -+1m, 0.207292 -+1m, 0.207255 -+1m, 0.207218 -+1m, 0.207181 -+1m, 0.206490 -+1m, 0.205241 -+1m, 0.203991 -+1m, 0.202742 -+1m, 0.201493 -+1m, 0.200902 -+1m, 0.200905 -+1m, 0.200908 -+1m, 0.200911 -+1m, 0.200913 -+1m, 0.201755 -+1m, 0.203396 -+1m, 0.205037 -+1m, 0.206677 -+1m, 0.208318 -+1m, 0.208488 -+1m, 0.207176 -+1m, 0.205864 -+1m, 0.204552 -+1m, 0.203240 -+1m, 0.203157 -+1m, 0.204383 -+1m, 0.205609 -+1m, 0.206835 -+1m, 0.208061 -+1m, 0.208520 -+1m, 0.208115 -+1m, 0.207711 -+1m, 0.207306 -+1m, 0.206902 -+1m, 0.206871 -+1m, 0.207284 -+1m, 0.207697 -+1m, 0.208111 -+1m, 0.208524 -+1m, 0.208938 -+1m, 0.209353 -+1m, 0.209767 -+1m, 0.210182 -+1m, 0.210596 -+1m, 0.210134 -+1m, 0.208504 -+1m, 0.206874 -+1m, 0.205244 -+1m, 0.203614 -+1m, 0.203002 -+1m, 0.203827 -+1m, 0.204651 -+1m, 0.205476 -+1m, 0.206300 -+1m, 0.206306 -+1m, 0.205088 -+1m, 0.203870 -+1m, 0.202651 -+1m, 0.201433 -+1m, 0.201004 -+1m, 0.201826 -+1m, 0.202647 -+1m, 0.203469 -+1m, 0.204291 -+1m, 0.205265 -+1m, 0.206494 -+1m, 0.207724 -+1m, 0.208954 -+1m, 0.210184 -+1m, 0.210839 -+1m, 0.210470 -+1m, 0.210100 -+1m, 0.209731 -+1m, 0.209361 -+1m, 0.209352 -+1m, 0.210030 -+1m, 0.210707 -+1m, 0.211384 -+1m, 0.212061 -+1m, 0.212521 -+1m, 0.212541 -+1m, 0.212561 -+1m, 0.212581 -+1m, 0.212601 -+1m, 0.212622 -+1m, 0.212645 -+1m, 0.212668 -+1m, 0.212691 -+1m, 0.212714 -+1m, 0.212479 -+1m, 0.211649 -+1m, 0.210820 -+1m, 0.209991 -+1m, 0.209161 -+1m, 0.208221 -+1m, 0.207009 -+1m, 0.205797 -+1m, 0.204585 -+1m, 0.203372 -+1m, 0.203256 -+1m, 0.206026 -+1m, 0.208795 -+1m, 0.211565 -+1m, 0.214334 -+1m, 0.216212 -+1m, 0.215571 -+1m, 0.214930 -+1m, 0.214289 -+1m, 0.213648 -+1m, 0.213303 -+1m, 0.213858 -+1m, 0.214413 -+1m, 0.214968 -+1m, 0.215523 -+1m, 0.215765 -+1m, 0.214978 -+1m, 0.214191 -+1m, 0.213404 -+1m, 0.212617 -+1m, 0.211708 -+1m, 0.210363 -+1m, 0.209019 -+1m, 0.207675 -+1m, 0.206331 -+1m, 0.205699 -+1m, 0.207819 -+1m, 0.209940 -+1m, 0.212060 -+1m, 0.214181 -+1m, 0.216173 -+1m, 0.217625 -+1m, 0.219077 -+1m, 0.220529 -+1m, 0.221981 -+1m, 0.223073 -+1m, 0.222496 -+1m, 0.221919 -+1m, 0.221342 -+1m, 0.220765 -+1m, 0.220006 -+1m, 0.218311 -+1m, 0.216616 -+1m, 0.214921 -+1m, 0.213227 -+1m, 0.212057 -+1m, 0.213867 -+1m, 0.215678 -+1m, 0.217488 -+1m, 0.219298 -+1m, 0.220788 -+1m, 0.220244 -+1m, 0.219699 -+1m, 0.219155 -+1m, 0.218610 -+1m, 0.218166 -+1m, 0.218442 -+1m, 0.218717 -+1m, 0.218993 -+1m, 0.219269 -+1m, 0.219649 -+1m, 0.220885 -+1m, 0.222122 -+1m, 0.223358 -+1m, 0.224595 -+1m, 0.225782 -+1m, 0.226493 -+1m, 0.227204 -+1m, 0.227916 -+1m, 0.228627 -+1m, 0.229355 -+1m, 0.230269 -+1m, 0.231183 -+1m, 0.232097 -+1m, 0.233012 -+1m, 0.233676 -+1m, 0.230818 -+1m, 0.227959 -+1m, 0.225101 -+1m, 0.222242 -+1m, 0.219612 -+1m, 0.221107 -+1m, 0.222603 -+1m, 0.224099 -+1m, 0.225595 -+1m, 0.227055 -+1m, 0.227601 -+1m, 0.228148 -+1m, 0.228694 -+1m, 0.229241 -+1m, 0.229809 -+1m, 0.231278 -+1m, 0.232747 -+1m, 0.234216 -+1m, 0.235685 -+1m, 0.237150 -+1m, 0.238281 -+1m, 0.239412 -+1m, 0.240543 -+1m, 0.241674 -+1m, 0.242805 -+1m, 0.244551 -+1m, 0.246299 -+1m, 0.248047 -+1m, 0.249795 -+1m, 0.251543 -+1m, 0.251748 -+1m, 0.251926 -+1m, 0.252103 -+1m, 0.252281 -+1m, 0.252458 -+1m, 0.253655 -+1m, 0.254885 -+1m, 0.256115 -+1m, 0.257345 -+1m, 0.258576 -+1m, 0.259165 -+1m, 0.259723 -+1m, 0.260282 -+1m, 0.260840 -+1m, 0.261399 -+1m, 0.262141 -+1m, 0.262894 -+1m, 0.263648 -+1m, 0.264401 -+1m, 0.265154 -+1m, 0.262487 -+1m, 0.259549 -+1m, 0.256611 -+1m, 0.253673 -+1m, 0.250735 -+1m, 0.254199 -+1m, 0.258274 -+1m, 0.262349 -+1m, 0.266425 -+1m, 0.270500 -+1m, 0.270185 -+1m, 0.269377 -+1m, 0.268569 -+1m, 0.267761 -+1m, 0.266953 -+1m, 0.268050 -+1m, 0.269395 -+1m, 0.270740 -+1m, 0.272084 -+1m, 0.273429 -+1m, 0.276155 -+1m, 0.279085 -+1m, 0.282016 -+1m, 0.284946 -+1m, 0.287877 -+1m, 0.286309 -+1m, 0.283992 -+1m, 0.281675 -+1m, 0.279358 -+1m, 0.277041 -+1m, 0.279466 -+1m, 0.282774 -+1m, 0.286082 -+1m, 0.289390 -+1m, 0.292698 -+1m, 0.298190 -+1m, 0.304131 -+1m, 0.310073 -+1m, 0.316015 -+1m, 0.321957 -+1m, 0.320661 -+1m, 0.317725 -+1m, 0.314790 -+1m, 0.311854 -+1m, 0.308919 -+1m, 0.308506 -+1m, 0.308717 -+1m, 0.308929 -+1m, 0.309141 -+1m, 0.309353 -+1m, 0.310369 -+1m, 0.311602 -+1m, 0.312835 -+1m, 0.314068 -+1m, 0.315301 -+1m, 0.318650 -+1m, 0.322618 -+1m, 0.326586 -+1m, 0.330555 -+1m, 0.334523 -+1m, 0.336308 -+1m, 0.337402 -+1m, 0.338495 -+1m, 0.339589 -+1m, 0.340682 -+1m, 0.338936 -+1m, 0.336222 -+1m, 0.333508 -+1m, 0.330794 -+1m, 0.328080 -+1m, 0.332903 -+1m, 0.340490 -+1m, 0.348078 -+1m, 0.355665 -+1m, 0.363253 -+1m, 0.363248 -+1m, 0.360258 -+1m, 0.357268 -+1m, 0.354278 -+1m, 0.351288 -+1m, 0.353795 -+1m, 0.358615 -+1m, 0.363434 -+1m, 0.368254 -+1m, 0.373073 -+1m, 0.373912 -+1m, 0.372961 -+1m, 0.372011 -+1m, 0.371060 -+1m, 0.370109 -+1m, 0.371173 -+1m, 0.373202 -+1m, 0.375231 -+1m, 0.377261 -+1m, 0.379290 -+1m, 0.382262 -+1m, 0.385715 -+1m, 0.389168 -+1m, 0.392620 -+1m, 0.396073 -+1m, 0.396396 -+1m, 0.395018 -+1m, 0.393640 -+1m, 0.392263 -+1m, 0.390885 -+1m, 0.393387 -+1m, 0.398127 -+1m, 0.402867 -+1m, 0.407608 -+1m, 0.412348 -+1m, 0.417306 -+1m, 0.422398 -+1m, 0.427490 -+1m, 0.432582 -+1m, 0.437674 -+1m, 0.441531 -+1m, 0.444584 -+1m, 0.447638 -+1m, 0.450692 -+1m, 0.453745 -+1m, 0.453973 -+1m, 0.452256 -+1m, 0.450538 -+1m, 0.448821 -+1m, 0.447103 -+1m, 0.448788 -+1m, 0.452952 -+1m, 0.457116 -+1m, 0.461280 -+1m, 0.465445 -+1m, 0.466463 -+1m, 0.465055 -+1m, 0.463646 -+1m, 0.462237 -+1m, 0.460829 -+1m, 0.460724 -+1m, 0.461683 -+1m, 0.462642 -+1m, 0.463602 -+1m, 0.464561 -+1m, 0.469697 -+1m, 0.478441 -+1m, 0.487185 -+1m, 0.495929 -+1m, 0.504672 -+1m, 0.505769 -+1m, 0.499882 -+1m, 0.493995 -+1m, 0.488108 -+1m, 0.482221 -+1m, 0.484360 -+1m, 0.494251 -+1m, 0.504142 -+1m, 0.514034 -+1m, 0.523925 -+1m, 0.527751 -+1m, 0.525384 -+1m, 0.523017 -+1m, 0.520650 -+1m, 0.518283 -+1m, 0.515893 -+1m, 0.513478 -+1m, 0.511063 -+1m, 0.508648 -+1m, 0.506234 -+1m, 0.507668 -+1m, 0.513498 -+1m, 0.519328 -+1m, 0.525158 -+1m, 0.530988 -+1m, 0.534626 -+1m, 0.535616 -+1m, 0.536607 -+1m, 0.537598 -+1m, 0.538588 -+1m, 0.538230 -+1m, 0.536148 -+1m, 0.534066 -+1m, 0.531984 -+1m, 0.529903 -+1m, 0.534551 -+1m, 0.548302 -+1m, 0.562054 -+1m, 0.575805 -+1m, 0.589556 -+1m, 0.593174 -+1m, 0.582280 -+1m, 0.571385 -+1m, 0.560490 -+1m, 0.549595 -+1m, 0.542154 -+1m, 0.539953 -+1m, 0.537752 -+1m, 0.535551 -+1m, 0.533350 -+1m, 0.536895 -+1m, 0.549684 -+1m, 0.562473 -+1m, 0.575262 -+1m, 0.588050 -+1m, 0.595417 -+1m, 0.593523 -+1m, 0.591629 -+1m, 0.589736 -+1m, 0.587842 -+1m, 0.589211 -+1m, 0.596496 -+1m, 0.603782 -+1m, 0.611067 -+1m, 0.618353 -+1m, 0.620227 -+1m, 0.611663 -+1m, 0.603099 -+1m, 0.594536 -+1m, 0.585972 -+1m, 0.582125 -+1m, 0.587964 -+1m, 0.593802 -+1m, 0.599640 -+1m, 0.605479 -+1m, 0.608268 -+1m, 0.604384 -+1m, 0.600499 -+1m, 0.596615 -+1m, 0.592730 -+1m, 0.593972 -+1m, 0.607196 -+1m, 0.620419 -+1m, 0.633643 -+1m, 0.646866 -+1m, 0.653312 -+1m, 0.642814 -+1m, 0.632316 -+1m, 0.621818 -+1m, 0.611321 -+1m, 0.607301 -+1m, 0.620639 -+1m, 0.633977 -+1m, 0.647315 -+1m, 0.660653 -+1m, 0.666440 -+1m, 0.650491 -+1m, 0.634542 -+1m, 0.618592 -+1m, 0.602643 -+1m, 0.594820 -+1m, 0.612190 -+1m, 0.629560 -+1m, 0.646930 -+1m, 0.664300 -+1m, 0.678658 -+1m, 0.682934 -+1m, 0.687209 -+1m, 0.691485 -+1m, 0.695760 -+1m, 0.697681 -+1m, 0.691057 -+1m, 0.684433 -+1m, 0.677809 -+1m, 0.671184 -+1m, 0.666186 -+1m, 0.667608 -+1m, 0.669030 -+1m, 0.670451 -+1m, 0.671873 -+1m, 0.673889 -+1m, 0.678470 -+1m, 0.683052 -+1m, 0.687633 -+1m, 0.692214 -+1m, 0.695887 -+1m, 0.695250 -+1m, 0.694612 -+1m, 0.693975 -+1m, 0.693338 -+1m, 0.692939 -+1m, 0.693785 -+1m, 0.694631 -+1m, 0.695478 -+1m, 0.696324 -+1m, 0.696526 -+1m, 0.692966 -+1m, 0.689406 -+1m, 0.685847 -+1m, 0.682287 -+1m, 0.680534 -+1m, 0.690622 -+1m, 0.700710 -+1m, 0.710798 -+1m, 0.720886 -+1m, 0.730881 -+1m, 0.740180 -+1m, 0.749479 -+1m, 0.758778 -+1m, 0.768077 -+1m, 0.775691 -+1m, 0.768869 -+1m, 0.762047 -+1m, 0.755225 -+1m, 0.748403 -+1m, 0.742472 -+1m, 0.745481 -+1m, 0.748491 -+1m, 0.751500 -+1m, 0.754509 -+1m, 0.757045 -+1m, 0.753876 -+1m, 0.750707 -+1m, 0.747537 -+1m, 0.744368 -+1m, 0.741265 -+1m, 0.739151 -+1m, 0.737038 -+1m, 0.734924 -+1m, 0.732811 -+1m, 0.731415 -+1m, 0.744002 -+1m, 0.756590 -+1m, 0.769178 -+1m, 0.781766 -+1m, 0.793928 -+1m, 0.794283 -+1m, 0.794639 -+1m, 0.794994 -+1m, 0.795350 -+1m, 0.795739 -+1m, 0.797678 -+1m, 0.799617 -+1m, 0.801557 -+1m, 0.803496 -+1m, 0.805386 -+1m, 0.800178 -+1m, 0.794970 -+1m, 0.789762 -+1m, 0.784554 -+1m, 0.779346 -+1m, 0.787739 -+1m, 0.796227 -+1m, 0.804716 -+1m, 0.813204 -+1m, 0.821693 -+1m, 0.813917 -+1m, 0.805794 -+1m, 0.797672 -+1m, 0.789549 -+1m, 0.781426 -+1m, 0.799239 -+1m, 0.817988 -+1m, 0.836736 -+1m, 0.855485 -+1m, 0.874234 -+1m, 0.864736 -+1m, 0.853789 -+1m, 0.842843 -+1m, 0.831896 -+1m, 0.820950 -+1m, 0.829602 -+1m, 0.839567 -+1m, 0.849531 -+1m, 0.859495 -+1m, 0.869459 -+1m, 0.870771 -+1m, 0.871363 -+1m, 0.871956 -+1m, 0.872549 -+1m, 0.873142 -+1m, 0.871804 -+1m, 0.870274 -+1m, 0.868744 -+1m, 0.867214 -+1m, 0.865684 -+1m, 0.866654 -+1m, 0.867916 -+1m, 0.869177 -+1m, 0.870439 -+1m, 0.871700 -+1m, 0.874678 -+1m, 0.877886 -+1m, 0.881094 -+1m, 0.884302 -+1m, 0.887510 -+1m, 0.891387 -+1m, 0.895366 -+1m, 0.899346 -+1m, 0.903325 -+1m, 0.907305 -+1m, 0.912080 -+1m, 0.916992 -+1m, 0.921904 -+1m, 0.926816 -+1m, 0.931728 -+1m, 0.927894 -+1m, 0.922392 -+1m, 0.916890 -+1m, 0.911387 -+1m, 0.905885 -+1m, 0.910907 -+1m, 0.918149 -+1m, 0.925391 -+1m, 0.932633 -+1m, 0.939875 -+1m, 0.941082 -+1m, 0.940889 -+1m, 0.940697 -+1m, 0.940505 -+1m, 0.940312 -+1m, 0.932065 -+1m, 0.921778 -+1m, 0.911491 -+1m, 0.901204 -+1m, 0.890917 -+1m, 0.898610 -+1m, 0.911256 -+1m, 0.923903 -+1m, 0.936550 -+1m, 0.949196 -+1m, 0.949972 -+1m, 0.947202 -+1m, 0.944433 -+1m, 0.941663 -+1m, 0.938893 -+1m, 0.928625 -+1m, 0.915938 -+1m, 0.903251 -+1m, 0.890564 -+1m, 0.877877 -+1m, 0.880108 -+1m, 0.887521 -+1m, 0.894935 -+1m, 0.902349 -+1m, 0.909762 -+1m, 0.920595 -+1m, 0.932703 -+1m, 0.944811 -+1m, 0.956919 -+1m, 0.969027 -+1m, 0.969230 -+1m, 0.964672 -+1m, 0.960113 -+1m, 0.955555 -+1m, 0.950997 -+1m, 0.948776 -+1m, 0.947556 -+1m, 0.946335 -+1m, 0.945115 -+1m, 0.943895 -+1m, 0.935305 -+1m, 0.923349 -+1m, 0.911393 -+1m, 0.899437 -+1m, 0.887480 -+1m, 0.895984 -+1m, 0.914452 -+1m, 0.932920 -+1m, 0.951387 -+1m, 0.969855 -+1m, 0.970176 -+1m, 0.961087 -+1m, 0.951997 -+1m, 0.942908 -+1m, 0.933819 -+1m, 0.935361 -+1m, 0.942764 -+1m, 0.950167 -+1m, 0.957570 -+1m, 0.964973 -+1m, 0.961336 -+1m, 0.951233 -+1m, 0.941131 -+1m, 0.931028 -+1m, 0.920925 -+1m, 0.924638 -+1m, 0.936935 -+1m, 0.949233 -+1m, 0.961531 -+1m, 0.973829 -+1m, 0.977238 -+1m, 0.974790 -+1m, 0.972341 -+1m, 0.969893 -+1m, 0.967445 -+1m, 0.962175 -+1m, 0.954936 -+1m, 0.947697 -+1m, 0.940457 -+1m, 0.933218 -+1m, 0.935485 -+1m, 0.944783 -+1m, 0.954080 -+1m, 0.963377 -+1m, 0.972675 -+1m, 0.974409 -+1m, 0.970224 -+1m, 0.966039 -+1m, 0.961855 -+1m, 0.957670 -+1m, 0.960599 -+1m, 0.969420 -+1m, 0.978241 -+1m, 0.987061 -+1m, 0.995882 -+1m, 0.996670 -+1m, 0.990424 -+1m, 0.984178 -+1m, 0.977931 -+1m, 0.971685 -+1m, 0.970768 -+1m, 0.974788 -+1m, 0.978808 -+1m, 0.982827 -+1m, 0.986847 -+1m, 0.984968 -+1m, 0.977313 -+1m, 0.969659 -+1m, 0.962004 -+1m, 0.954350 -+1m, 0.942768 -+1m, 0.927120 -+1m, 0.911472 -+1m, 0.895823 -+1m, 0.880175 -+1m, 0.875845 -+1m, 0.883908 -+1m, 0.891970 -+1m, 0.900032 -+1m, 0.908095 -+1m, 0.911900 -+1m, 0.910778 -+1m, 0.909655 -+1m, 0.908533 -+1m, 0.907410 -+1m, 0.907281 -+1m, 0.908369 -+1m, 0.909457 -+1m, 0.910545 -+1m, 0.911633 -+1m, 0.918841 -+1m, 0.933980 -+1m, 0.949120 -+1m, 0.964259 -+1m, 0.979399 -+1m, 0.974267 -+1m, 0.941325 -+1m, 0.908383 -+1m, 0.875441 -+1m, 0.842499 -+1m, 0.833637 -+1m, 0.859762 -+1m, 0.885888 -+1m, 0.912014 -+1m, 0.938140 -+1m, 0.951700 -+1m, 0.945909 -+1m, 0.940118 -+1m, 0.934328 -+1m, 0.928537 -+1m, 0.924780 -+1m, 0.924342 -+1m, 0.923904 -+1m, 0.923466 -+1m, 0.923028 -+1m, 0.920917 -+1m, 0.915904 -+1m, 0.910891 -+1m, 0.905878 -+1m, 0.900865 -+1m, 0.898290 -+1m, 0.900201 -+1m, 0.902113 -+1m, 0.904025 -+1m, 0.905936 -+1m, 0.911819 -+1m, 0.925479 -+1m, 0.939139 -+1m, 0.952800 -+1m, 0.966460 -+1m, 0.969697 -+1m, 0.951190 -+1m, 0.932683 -+1m, 0.914175 -+1m, 0.895668 -+1m, 0.884981 -+1m, 0.891692 -+1m, 0.898402 -+1m, 0.905112 -+1m, 0.911823 -+1m, 0.920855 -+1m, 0.935407 -+1m, 0.949959 -+1m, 0.964511 -+1m, 0.979063 -+1m, 0.980515 -+1m, 0.948651 -+1m, 0.916786 -+1m, 0.884922 -+1m, 0.853058 -+1m, 0.836844 -+1m, 0.863312 -+1m, 0.889779 -+1m, 0.916247 -+1m, 0.942715 -+1m, 0.960603 -+1m, 0.953339 -+1m, 0.946074 -+1m, 0.938810 -+1m, 0.931545 -+1m, 0.925881 -+1m, 0.925271 -+1m, 0.924660 -+1m, 0.924050 -+1m, 0.923440 -+1m, 0.921274 -+1m, 0.913795 -+1m, 0.906315 -+1m, 0.898836 -+1m, 0.891356 -+1m, 0.885329 -+1m, 0.884684 -+1m, 0.884038 -+1m, 0.883392 -+1m, 0.882747 -+1m, 0.883440 -+1m, 0.889538 -+1m, 0.895635 -+1m, 0.901733 -+1m, 0.907830 -+1m, 0.910020 -+1m, 0.894957 -+1m, 0.879895 -+1m, 0.864832 -+1m, 0.849770 -+1m, 0.838421 -+1m, 0.845111 -+1m, 0.851801 -+1m, 0.858492 -+1m, 0.865182 -+1m, 0.869028 -+1m, 0.857582 -+1m, 0.846136 -+1m, 0.834690 -+1m, 0.823244 -+1m, 0.815736 -+1m, 0.831850 -+1m, 0.847965 -+1m, 0.864079 -+1m, 0.880194 -+1m, 0.891355 -+1m, 0.869047 -+1m, 0.846738 -+1m, 0.824430 -+1m, 0.802122 -+1m, 0.784734 -+1m, 0.805222 -+1m, 0.825710 -+1m, 0.846197 -+1m, 0.866685 -+1m, 0.882728 -+1m, 0.859226 -+1m, 0.835724 -+1m, 0.812222 -+1m, 0.788720 -+1m, 0.768770 -+1m, 0.786035 -+1m, 0.803300 -+1m, 0.820565 -+1m, 0.837831 -+1m, 0.852691 -+1m, 0.837086 -+1m, 0.821482 -+1m, 0.805878 -+1m, 0.790274 -+1m, 0.775340 -+1m, 0.771052 -+1m, 0.766764 -+1m, 0.762476 -+1m, 0.758188 -+1m, 0.754572 -+1m, 0.765126 -+1m, 0.775680 -+1m, 0.786234 -+1m, 0.796788 -+1m, 0.806623 -+1m, 0.794239 -+1m, 0.781855 -+1m, 0.769472 -+1m, 0.757088 -+1m, 0.744947 -+1m, 0.746503 -+1m, 0.748059 -+1m, 0.749615 -+1m, 0.751171 -+1m, 0.752778 -+1m, 0.769143 -+1m, 0.785509 -+1m, 0.801874 -+1m, 0.818239 -+1m, 0.834604 -+1m, 0.814432 -+1m, 0.793875 -+1m, 0.773318 -+1m, 0.752760 -+1m, 0.732203 -+1m, 0.729089 -+1m, 0.726412 -+1m, 0.723735 -+1m, 0.721057 -+1m, 0.718380 -+1m, 0.719477 -+1m, 0.720724 -+1m, 0.721971 -+1m, 0.723218 -+1m, 0.724466 -+1m, 0.718061 -+1m, 0.711234 -+1m, 0.704407 -+1m, 0.697580 -+1m, 0.690753 -+1m, 0.687737 -+1m, 0.684992 -+1m, 0.682247 -+1m, 0.679501 -+1m, 0.676756 -+1m, 0.682467 -+1m, 0.688916 -+1m, 0.695364 -+1m, 0.701812 -+1m, 0.708260 -+1m, 0.706360 -+1m, 0.703593 -+1m, 0.700826 -+1m, 0.698059 -+1m, 0.695292 -+1m, 0.677207 -+1m, 0.657268 -+1m, 0.637328 -+1m, 0.617389 -+1m, 0.597450 -+1m, 0.598484 -+1m, 0.602433 -+1m, 0.606381 -+1m, 0.610329 -+1m, 0.614277 -+1m, 0.612482 -+1m, 0.609784 -+1m, 0.607086 -+1m, 0.604388 -+1m, 0.601691 -+1m, 0.597593 -+1m, 0.593249 -+1m, 0.588905 -+1m, 0.584561 -+1m, 0.580217 -+1m, 0.578793 -+1m, 0.577941 -+1m, 0.577089 -+1m, 0.576237 -+1m, 0.575385 -+1m, 0.560604 -+1m, 0.542813 -+1m, 0.525022 -+1m, 0.507231 -+1m, 0.489440 -+1m, 0.489830 -+1m, 0.494530 -+1m, 0.499231 -+1m, 0.503931 -+1m, 0.508632 -+1m, 0.516498 -+1m, 0.525183 -+1m, 0.533869 -+1m, 0.542554 -+1m, 0.551240 -+1m, 0.547171 -+1m, 0.539514 -+1m, 0.531858 -+1m, 0.524202 -+1m, 0.516545 -+1m, 0.514296 -+1m, 0.513693 -+1m, 0.513091 -+1m, 0.512488 -+1m, 0.511885 -+1m, 0.510832 -+1m, 0.509631 -+1m, 0.508430 -+1m, 0.507229 -+1m, 0.506027 -+1m, 0.511588 -+1m, 0.519540 -+1m, 0.527492 -+1m, 0.535445 -+1m, 0.543397 -+1m, 0.536305 -+1m, 0.523498 -+1m, 0.510691 -+1m, 0.497884 -+1m, 0.485078 -+1m, 0.481098 -+1m, 0.480711 -+1m, 0.480323 -+1m, 0.479936 -+1m, 0.479548 -+1m, 0.485361 -+1m, 0.493872 -+1m, 0.502382 -+1m, 0.510893 -+1m, 0.519404 -+1m, 0.513479 -+1m, 0.500853 -+1m, 0.488227 -+1m, 0.475601 -+1m, 0.462975 -+1m, 0.463203 -+1m, 0.469793 -+1m, 0.476382 -+1m, 0.482971 -+1m, 0.489560 -+1m, 0.487922 -+1m, 0.481950 -+1m, 0.475978 -+1m, 0.470007 -+1m, 0.464035 -+1m, 0.462834 -+1m, 0.464304 -+1m, 0.465773 -+1m, 0.467243 -+1m, 0.468712 -+1m, 0.469174 -+1m, 0.469037 -+1m, 0.468900 -+1m, 0.468763 -+1m, 0.468626 -+1m, 0.465880 -+1m, 0.461490 -+1m, 0.457100 -+1m, 0.452710 -+1m, 0.448320 -+1m, 0.450580 -+1m, 0.457286 -+1m, 0.463993 -+1m, 0.470699 -+1m, 0.477405 -+1m, 0.477641 -+1m, 0.473294 -+1m, 0.468947 -+1m, 0.464600 -+1m, 0.460253 -+1m, 0.459227 -+1m, 0.460692 -+1m, 0.462158 -+1m, 0.463623 -+1m, 0.465088 -+1m, 0.466797 -+1m, 0.468698 -+1m, 0.470599 -+1m, 0.472501 -+1m, 0.474402 -+1m, 0.473397 -+1m, 0.469952 -+1m, 0.466507 -+1m, 0.463062 -+1m, 0.459617 -+1m, 0.459135 -+1m, 0.461284 -+1m, 0.463434 -+1m, 0.465584 -+1m, 0.467733 -+1m, 0.470190 -+1m, 0.472934 -+1m, 0.475678 -+1m, 0.478422 -+1m, 0.481166 -+1m, 0.478677 -+1m, 0.470991 -+1m, 0.463304 -+1m, 0.455618 -+1m, 0.447932 -+1m, 0.440665 -+1m, 0.433837 -+1m, 0.427010 -+1m, 0.420182 -+1m, 0.413355 -+1m, 0.411414 -+1m, 0.414900 -+1m, 0.418386 -+1m, 0.421872 -+1m, 0.425358 -+1m, 0.426210 -+1m, 0.423971 -+1m, 0.421731 -+1m, 0.419492 -+1m, 0.417252 -+1m, 0.417889 -+1m, 0.422098 -+1m, 0.426307 -+1m, 0.430516 -+1m, 0.434726 -+1m, 0.435469 -+1m, 0.431656 -+1m, 0.427843 -+1m, 0.424030 -+1m, 0.420217 -+1m, 0.416178 -+1m, 0.411823 -+1m, 0.407468 -+1m, 0.403113 -+1m, 0.398759 -+1m, 0.395928 -+1m, 0.395345 -+1m, 0.394761 -+1m, 0.394178 -+1m, 0.393594 -+1m, 0.392290 -+1m, 0.389858 -+1m, 0.387425 -+1m, 0.384993 -+1m, 0.382561 -+1m, 0.380948 -+1m, 0.380693 -+1m, 0.380438 -+1m, 0.380182 -+1m, 0.379927 -+1m, 0.380042 -+1m, 0.380811 -+1m, 0.381579 -+1m, 0.382347 -+1m, 0.383115 -+1m, 0.383209 -+1m, 0.382041 -+1m, 0.380873 -+1m, 0.379706 -+1m, 0.378538 -+1m, 0.378154 -+1m, 0.379328 -+1m, 0.380503 -+1m, 0.381677 -+1m, 0.382852 -+1m, 0.382500 -+1m, 0.378914 -+1m, 0.375327 -+1m, 0.371741 -+1m, 0.368154 -+1m, 0.365185 -+1m, 0.363611 -+1m, 0.362036 -+1m, 0.360462 -+1m, 0.358887 -+1m, 0.357566 -+1m, 0.356856 -+1m, 0.356146 -+1m, 0.355437 -+1m, 0.354727 -+1m, 0.352813 -+1m, 0.347783 -+1m, 0.342754 -+1m, 0.337724 -+1m, 0.332695 -+1m, 0.329010 -+1m, 0.329058 -+1m, 0.329105 -+1m, 0.329153 -+1m, 0.329201 -+1m, 0.328870 -+1m, 0.327407 -+1m, 0.325944 -+1m, 0.324482 -+1m, 0.323019 -+1m, 0.322511 -+1m, 0.325081 -+1m, 0.327650 -+1m, 0.330219 -+1m, 0.332788 -+1m, 0.334574 -+1m, 0.333631 -+1m, 0.332688 -+1m, 0.331746 -+1m, 0.330803 -+1m, 0.330921 -+1m, 0.335056 -+1m, 0.339191 -+1m, 0.343326 -+1m, 0.347461 -+1m, 0.350591 -+1m, 0.349574 -+1m, 0.348557 -+1m, 0.347539 -+1m, 0.346522 -+1m, 0.345681 -+1m, 0.345633 -+1m, 0.345586 -+1m, 0.345539 -+1m, 0.345492 -+1m, 0.346354 -+1m, 0.351745 -+1m, 0.357137 -+1m, 0.362528 -+1m, 0.367919 -+1m, 0.372796 -+1m, 0.374830 -+1m, 0.376865 -+1m, 0.378899 -+1m, 0.380934 -+1m, 0.382623 -+1m, 0.382179 -+1m, 0.381736 -+1m, 0.381293 -+1m, 0.380850 -+1m, 0.379902 -+1m, 0.375439 -+1m, 0.370975 -+1m, 0.366512 -+1m, 0.362048 -+1m, 0.359051 -+1m, 0.367737 -+1m, 0.376423 -+1m, 0.385109 -+1m, 0.393795 -+1m, 0.400725 -+1m, 0.391415 -+1m, 0.382106 -+1m, 0.372797 -+1m, 0.363487 -+1m, 0.355365 -+1m, 0.360246 -+1m, 0.365127 -+1m, 0.370008 -+1m, 0.374890 -+1m, 0.379203 -+1m, 0.375933 -+1m, 0.372664 -+1m, 0.369394 -+1m, 0.366125 -+1m, 0.362837 -+1m, 0.359245 -+1m, 0.355653 -+1m, 0.352061 -+1m, 0.348469 -+1m, 0.345012 -+1m, 0.344638 -+1m, 0.344263 -+1m, 0.343889 -+1m, 0.343515 -+1m, 0.343042 -+1m, 0.339145 -+1m, 0.335247 -+1m, 0.331349 -+1m, 0.327451 -+1m, 0.323546 -+1m, 0.319130 -+1m, 0.314714 -+1m, 0.310299 -+1m, 0.305883 -+1m, 0.301467 +2013-08-28 00:00:00, 0.241766 ++1m, 0.243147 ++1m, 0.244528 ++1m, 0.245908 ++1m, 0.247289 ++1m, 0.248670 ++1m, 0.245771 ++1m, 0.242811 ++1m, 0.239852 ++1m, 0.236892 ++1m, 0.233933 ++1m, 0.235427 ++1m, 0.237050 ++1m, 0.238672 ++1m, 0.240294 ++1m, 0.241916 ++1m, 0.241126 ++1m, 0.240231 ++1m, 0.239335 ++1m, 0.238440 ++1m, 0.237544 ++1m, 0.236195 ++1m, 0.234818 ++1m, 0.233442 ++1m, 0.232065 ++1m, 0.230689 ++1m, 0.231470 ++1m, 0.232412 ++1m, 0.233354 ++1m, 0.234297 ++1m, 0.235239 ++1m, 0.234936 ++1m, 0.234520 ++1m, 0.234103 ++1m, 0.233686 ++1m, 0.233270 ++1m, 0.233278 ++1m, 0.233332 ++1m, 0.233387 ++1m, 0.233441 ++1m, 0.233495 ++1m, 0.231224 ++1m, 0.228660 ++1m, 0.226096 ++1m, 0.223533 ++1m, 0.220969 ++1m, 0.220822 ++1m, 0.221021 ++1m, 0.221220 ++1m, 0.221419 ++1m, 0.221618 ++1m, 0.221828 ++1m, 0.222040 ++1m, 0.222253 ++1m, 0.222465 ++1m, 0.222677 ++1m, 0.222844 ++1m, 0.223003 ++1m, 0.223162 ++1m, 0.223321 ++1m, 0.223480 ++1m, 0.223259 ++1m, 0.222961 ++1m, 0.222663 ++1m, 0.222365 ++1m, 0.222067 ++1m, 0.222466 ++1m, 0.223019 ++1m, 0.223573 ++1m, 0.224126 ++1m, 0.224679 ++1m, 0.224661 ++1m, 0.224503 ++1m, 0.224346 ++1m, 0.224189 ++1m, 0.224032 ++1m, 0.222787 ++1m, 0.221254 ++1m, 0.219722 ++1m, 0.218189 ++1m, 0.216657 ++1m, 0.217125 ++1m, 0.218167 ++1m, 0.219209 ++1m, 0.220252 ++1m, 0.221294 ++1m, 0.219722 ++1m, 0.217338 ++1m, 0.214954 ++1m, 0.212570 ++1m, 0.210186 ++1m, 0.209746 ++1m, 0.209956 ++1m, 0.210167 ++1m, 0.210377 ++1m, 0.210587 ++1m, 0.211425 ++1m, 0.212488 ++1m, 0.213551 ++1m, 0.214614 ++1m, 0.215677 ++1m, 0.215553 ++1m, 0.214970 ++1m, 0.214387 ++1m, 0.213805 ++1m, 0.213222 ++1m, 0.212366 ++1m, 0.211397 ++1m, 0.210428 ++1m, 0.209460 ++1m, 0.208491 ++1m, 0.208696 ++1m, 0.209420 ++1m, 0.210144 ++1m, 0.210868 ++1m, 0.211592 ++1m, 0.211443 ++1m, 0.210881 ++1m, 0.210320 ++1m, 0.209758 ++1m, 0.209197 ++1m, 0.209802 ++1m, 0.210993 ++1m, 0.212184 ++1m, 0.213375 ++1m, 0.214567 ++1m, 0.213534 ++1m, 0.211313 ++1m, 0.209092 ++1m, 0.206871 ++1m, 0.204649 ++1m, 0.204855 ++1m, 0.206439 ++1m, 0.208024 ++1m, 0.209608 ++1m, 0.211193 ++1m, 0.211206 ++1m, 0.210271 ++1m, 0.209335 ++1m, 0.208400 ++1m, 0.207465 ++1m, 0.207536 ++1m, 0.208251 ++1m, 0.208965 ++1m, 0.209680 ++1m, 0.210395 ++1m, 0.209883 ++1m, 0.208540 ++1m, 0.207197 ++1m, 0.205854 ++1m, 0.204511 ++1m, 0.204859 ++1m, 0.206422 ++1m, 0.207986 ++1m, 0.209549 ++1m, 0.211112 ++1m, 0.211285 ++1m, 0.210400 ++1m, 0.209514 ++1m, 0.208629 ++1m, 0.207743 ++1m, 0.207328 ++1m, 0.207292 ++1m, 0.207255 ++1m, 0.207218 ++1m, 0.207181 ++1m, 0.206490 ++1m, 0.205241 ++1m, 0.203991 ++1m, 0.202742 ++1m, 0.201493 ++1m, 0.200902 ++1m, 0.200905 ++1m, 0.200908 ++1m, 0.200911 ++1m, 0.200913 ++1m, 0.201755 ++1m, 0.203396 ++1m, 0.205037 ++1m, 0.206677 ++1m, 0.208318 ++1m, 0.208488 ++1m, 0.207176 ++1m, 0.205864 ++1m, 0.204552 ++1m, 0.203240 ++1m, 0.203157 ++1m, 0.204383 ++1m, 0.205609 ++1m, 0.206835 ++1m, 0.208061 ++1m, 0.208520 ++1m, 0.208115 ++1m, 0.207711 ++1m, 0.207306 ++1m, 0.206902 ++1m, 0.206871 ++1m, 0.207284 ++1m, 0.207697 ++1m, 0.208111 ++1m, 0.208524 ++1m, 0.208938 ++1m, 0.209353 ++1m, 0.209767 ++1m, 0.210182 ++1m, 0.210596 ++1m, 0.210134 ++1m, 0.208504 ++1m, 0.206874 ++1m, 0.205244 ++1m, 0.203614 ++1m, 0.203002 ++1m, 0.203827 ++1m, 0.204651 ++1m, 0.205476 ++1m, 0.206300 ++1m, 0.206306 ++1m, 0.205088 ++1m, 0.203870 ++1m, 0.202651 ++1m, 0.201433 ++1m, 0.201004 ++1m, 0.201826 ++1m, 0.202647 ++1m, 0.203469 ++1m, 0.204291 ++1m, 0.205265 ++1m, 0.206494 ++1m, 0.207724 ++1m, 0.208954 ++1m, 0.210184 ++1m, 0.210839 ++1m, 0.210470 ++1m, 0.210100 ++1m, 0.209731 ++1m, 0.209361 ++1m, 0.209352 ++1m, 0.210030 ++1m, 0.210707 ++1m, 0.211384 ++1m, 0.212061 ++1m, 0.212521 ++1m, 0.212541 ++1m, 0.212561 ++1m, 0.212581 ++1m, 0.212601 ++1m, 0.212622 ++1m, 0.212645 ++1m, 0.212668 ++1m, 0.212691 ++1m, 0.212714 ++1m, 0.212479 ++1m, 0.211649 ++1m, 0.210820 ++1m, 0.209991 ++1m, 0.209161 ++1m, 0.208221 ++1m, 0.207009 ++1m, 0.205797 ++1m, 0.204585 ++1m, 0.203372 ++1m, 0.203256 ++1m, 0.206026 ++1m, 0.208795 ++1m, 0.211565 ++1m, 0.214334 ++1m, 0.216212 ++1m, 0.215571 ++1m, 0.214930 ++1m, 0.214289 ++1m, 0.213648 ++1m, 0.213303 ++1m, 0.213858 ++1m, 0.214413 ++1m, 0.214968 ++1m, 0.215523 ++1m, 0.215765 ++1m, 0.214978 ++1m, 0.214191 ++1m, 0.213404 ++1m, 0.212617 ++1m, 0.211708 ++1m, 0.210363 ++1m, 0.209019 ++1m, 0.207675 ++1m, 0.206331 ++1m, 0.205699 ++1m, 0.207819 ++1m, 0.209940 ++1m, 0.212060 ++1m, 0.214181 ++1m, 0.216173 ++1m, 0.217625 ++1m, 0.219077 ++1m, 0.220529 ++1m, 0.221981 ++1m, 0.223073 ++1m, 0.222496 ++1m, 0.221919 ++1m, 0.221342 ++1m, 0.220765 ++1m, 0.220006 ++1m, 0.218311 ++1m, 0.216616 ++1m, 0.214921 ++1m, 0.213227 ++1m, 0.212057 ++1m, 0.213867 ++1m, 0.215678 ++1m, 0.217488 ++1m, 0.219298 ++1m, 0.220788 ++1m, 0.220244 ++1m, 0.219699 ++1m, 0.219155 ++1m, 0.218610 ++1m, 0.218166 ++1m, 0.218442 ++1m, 0.218717 ++1m, 0.218993 ++1m, 0.219269 ++1m, 0.219649 ++1m, 0.220885 ++1m, 0.222122 ++1m, 0.223358 ++1m, 0.224595 ++1m, 0.225782 ++1m, 0.226493 ++1m, 0.227204 ++1m, 0.227916 ++1m, 0.228627 ++1m, 0.229355 ++1m, 0.230269 ++1m, 0.231183 ++1m, 0.232097 ++1m, 0.233012 ++1m, 0.233676 ++1m, 0.230818 ++1m, 0.227959 ++1m, 0.225101 ++1m, 0.222242 ++1m, 0.219612 ++1m, 0.221107 ++1m, 0.222603 ++1m, 0.224099 ++1m, 0.225595 ++1m, 0.227055 ++1m, 0.227601 ++1m, 0.228148 ++1m, 0.228694 ++1m, 0.229241 ++1m, 0.229809 ++1m, 0.231278 ++1m, 0.232747 ++1m, 0.234216 ++1m, 0.235685 ++1m, 0.237150 ++1m, 0.238281 ++1m, 0.239412 ++1m, 0.240543 ++1m, 0.241674 ++1m, 0.242805 ++1m, 0.244551 ++1m, 0.246299 ++1m, 0.248047 ++1m, 0.249795 ++1m, 0.251543 ++1m, 0.251748 ++1m, 0.251926 ++1m, 0.252103 ++1m, 0.252281 ++1m, 0.252458 ++1m, 0.253655 ++1m, 0.254885 ++1m, 0.256115 ++1m, 0.257345 ++1m, 0.258576 ++1m, 0.259165 ++1m, 0.259723 ++1m, 0.260282 ++1m, 0.260840 ++1m, 0.261399 ++1m, 0.262141 ++1m, 0.262894 ++1m, 0.263648 ++1m, 0.264401 ++1m, 0.265154 ++1m, 0.262487 ++1m, 0.259549 ++1m, 0.256611 ++1m, 0.253673 ++1m, 0.250735 ++1m, 0.254199 ++1m, 0.258274 ++1m, 0.262349 ++1m, 0.266425 ++1m, 0.270500 ++1m, 0.270185 ++1m, 0.269377 ++1m, 0.268569 ++1m, 0.267761 ++1m, 0.266953 ++1m, 0.268050 ++1m, 0.269395 ++1m, 0.270740 ++1m, 0.272084 ++1m, 0.273429 ++1m, 0.276155 ++1m, 0.279085 ++1m, 0.282016 ++1m, 0.284946 ++1m, 0.287877 ++1m, 0.286309 ++1m, 0.283992 ++1m, 0.281675 ++1m, 0.279358 ++1m, 0.277041 ++1m, 0.279466 ++1m, 0.282774 ++1m, 0.286082 ++1m, 0.289390 ++1m, 0.292698 ++1m, 0.298190 ++1m, 0.304131 ++1m, 0.310073 ++1m, 0.316015 ++1m, 0.321957 ++1m, 0.320661 ++1m, 0.317725 ++1m, 0.314790 ++1m, 0.311854 ++1m, 0.308919 ++1m, 0.308506 ++1m, 0.308717 ++1m, 0.308929 ++1m, 0.309141 ++1m, 0.309353 ++1m, 0.310369 ++1m, 0.311602 ++1m, 0.312835 ++1m, 0.314068 ++1m, 0.315301 ++1m, 0.318650 ++1m, 0.322618 ++1m, 0.326586 ++1m, 0.330555 ++1m, 0.334523 ++1m, 0.336308 ++1m, 0.337402 ++1m, 0.338495 ++1m, 0.339589 ++1m, 0.340682 ++1m, 0.338936 ++1m, 0.336222 ++1m, 0.333508 ++1m, 0.330794 ++1m, 0.328080 ++1m, 0.332903 ++1m, 0.340490 ++1m, 0.348078 ++1m, 0.355665 ++1m, 0.363253 ++1m, 0.363248 ++1m, 0.360258 ++1m, 0.357268 ++1m, 0.354278 ++1m, 0.351288 ++1m, 0.353795 ++1m, 0.358615 ++1m, 0.363434 ++1m, 0.368254 ++1m, 0.373073 ++1m, 0.373912 ++1m, 0.372961 ++1m, 0.372011 ++1m, 0.371060 ++1m, 0.370109 ++1m, 0.371173 ++1m, 0.373202 ++1m, 0.375231 ++1m, 0.377261 ++1m, 0.379290 ++1m, 0.382262 ++1m, 0.385715 ++1m, 0.389168 ++1m, 0.392620 ++1m, 0.396073 ++1m, 0.396396 ++1m, 0.395018 ++1m, 0.393640 ++1m, 0.392263 ++1m, 0.390885 ++1m, 0.393387 ++1m, 0.398127 ++1m, 0.402867 ++1m, 0.407608 ++1m, 0.412348 ++1m, 0.417306 ++1m, 0.422398 ++1m, 0.427490 ++1m, 0.432582 ++1m, 0.437674 ++1m, 0.441531 ++1m, 0.444584 ++1m, 0.447638 ++1m, 0.450692 ++1m, 0.453745 ++1m, 0.453973 ++1m, 0.452256 ++1m, 0.450538 ++1m, 0.448821 ++1m, 0.447103 ++1m, 0.448788 ++1m, 0.452952 ++1m, 0.457116 ++1m, 0.461280 ++1m, 0.465445 ++1m, 0.466463 ++1m, 0.465055 ++1m, 0.463646 ++1m, 0.462237 ++1m, 0.460829 ++1m, 0.460724 ++1m, 0.461683 ++1m, 0.462642 ++1m, 0.463602 ++1m, 0.464561 ++1m, 0.469697 ++1m, 0.478441 ++1m, 0.487185 ++1m, 0.495929 ++1m, 0.504672 ++1m, 0.505769 ++1m, 0.499882 ++1m, 0.493995 ++1m, 0.488108 ++1m, 0.482221 ++1m, 0.484360 ++1m, 0.494251 ++1m, 0.504142 ++1m, 0.514034 ++1m, 0.523925 ++1m, 0.527751 ++1m, 0.525384 ++1m, 0.523017 ++1m, 0.520650 ++1m, 0.518283 ++1m, 0.515893 ++1m, 0.513478 ++1m, 0.511063 ++1m, 0.508648 ++1m, 0.506234 ++1m, 0.507668 ++1m, 0.513498 ++1m, 0.519328 ++1m, 0.525158 ++1m, 0.530988 ++1m, 0.534626 ++1m, 0.535616 ++1m, 0.536607 ++1m, 0.537598 ++1m, 0.538588 ++1m, 0.538230 ++1m, 0.536148 ++1m, 0.534066 ++1m, 0.531984 ++1m, 0.529903 ++1m, 0.534551 ++1m, 0.548302 ++1m, 0.562054 ++1m, 0.575805 ++1m, 0.589556 ++1m, 0.593174 ++1m, 0.582280 ++1m, 0.571385 ++1m, 0.560490 ++1m, 0.549595 ++1m, 0.542154 ++1m, 0.539953 ++1m, 0.537752 ++1m, 0.535551 ++1m, 0.533350 ++1m, 0.536895 ++1m, 0.549684 ++1m, 0.562473 ++1m, 0.575262 ++1m, 0.588050 ++1m, 0.595417 ++1m, 0.593523 ++1m, 0.591629 ++1m, 0.589736 ++1m, 0.587842 ++1m, 0.589211 ++1m, 0.596496 ++1m, 0.603782 ++1m, 0.611067 ++1m, 0.618353 ++1m, 0.620227 ++1m, 0.611663 ++1m, 0.603099 ++1m, 0.594536 ++1m, 0.585972 ++1m, 0.582125 ++1m, 0.587964 ++1m, 0.593802 ++1m, 0.599640 ++1m, 0.605479 ++1m, 0.608268 ++1m, 0.604384 ++1m, 0.600499 ++1m, 0.596615 ++1m, 0.592730 ++1m, 0.593972 ++1m, 0.607196 ++1m, 0.620419 ++1m, 0.633643 ++1m, 0.646866 ++1m, 0.653312 ++1m, 0.642814 ++1m, 0.632316 ++1m, 0.621818 ++1m, 0.611321 ++1m, 0.607301 ++1m, 0.620639 ++1m, 0.633977 ++1m, 0.647315 ++1m, 0.660653 ++1m, 0.666440 ++1m, 0.650491 ++1m, 0.634542 ++1m, 0.618592 ++1m, 0.602643 ++1m, 0.594820 ++1m, 0.612190 ++1m, 0.629560 ++1m, 0.646930 ++1m, 0.664300 ++1m, 0.678658 ++1m, 0.682934 ++1m, 0.687209 ++1m, 0.691485 ++1m, 0.695760 ++1m, 0.697681 ++1m, 0.691057 ++1m, 0.684433 ++1m, 0.677809 ++1m, 0.671184 ++1m, 0.666186 ++1m, 0.667608 ++1m, 0.669030 ++1m, 0.670451 ++1m, 0.671873 ++1m, 0.673889 ++1m, 0.678470 ++1m, 0.683052 ++1m, 0.687633 ++1m, 0.692214 ++1m, 0.695887 ++1m, 0.695250 ++1m, 0.694612 ++1m, 0.693975 ++1m, 0.693338 ++1m, 0.692939 ++1m, 0.693785 ++1m, 0.694631 ++1m, 0.695478 ++1m, 0.696324 ++1m, 0.696526 ++1m, 0.692966 ++1m, 0.689406 ++1m, 0.685847 ++1m, 0.682287 ++1m, 0.680534 ++1m, 0.690622 ++1m, 0.700710 ++1m, 0.710798 ++1m, 0.720886 ++1m, 0.730881 ++1m, 0.740180 ++1m, 0.749479 ++1m, 0.758778 ++1m, 0.768077 ++1m, 0.775691 ++1m, 0.768869 ++1m, 0.762047 ++1m, 0.755225 ++1m, 0.748403 ++1m, 0.742472 ++1m, 0.745481 ++1m, 0.748491 ++1m, 0.751500 ++1m, 0.754509 ++1m, 0.757045 ++1m, 0.753876 ++1m, 0.750707 ++1m, 0.747537 ++1m, 0.744368 ++1m, 0.741265 ++1m, 0.739151 ++1m, 0.737038 ++1m, 0.734924 ++1m, 0.732811 ++1m, 0.731415 ++1m, 0.744002 ++1m, 0.756590 ++1m, 0.769178 ++1m, 0.781766 ++1m, 0.793928 ++1m, 0.794283 ++1m, 0.794639 ++1m, 0.794994 ++1m, 0.795350 ++1m, 0.795739 ++1m, 0.797678 ++1m, 0.799617 ++1m, 0.801557 ++1m, 0.803496 ++1m, 0.805386 ++1m, 0.800178 ++1m, 0.794970 ++1m, 0.789762 ++1m, 0.784554 ++1m, 0.779346 ++1m, 0.787739 ++1m, 0.796227 ++1m, 0.804716 ++1m, 0.813204 ++1m, 0.821693 ++1m, 0.813917 ++1m, 0.805794 ++1m, 0.797672 ++1m, 0.789549 ++1m, 0.781426 ++1m, 0.799239 ++1m, 0.817988 ++1m, 0.836736 ++1m, 0.855485 ++1m, 0.874234 ++1m, 0.864736 ++1m, 0.853789 ++1m, 0.842843 ++1m, 0.831896 ++1m, 0.820950 ++1m, 0.829602 ++1m, 0.839567 ++1m, 0.849531 ++1m, 0.859495 ++1m, 0.869459 ++1m, 0.870771 ++1m, 0.871363 ++1m, 0.871956 ++1m, 0.872549 ++1m, 0.873142 ++1m, 0.871804 ++1m, 0.870274 ++1m, 0.868744 ++1m, 0.867214 ++1m, 0.865684 ++1m, 0.866654 ++1m, 0.867916 ++1m, 0.869177 ++1m, 0.870439 ++1m, 0.871700 ++1m, 0.874678 ++1m, 0.877886 ++1m, 0.881094 ++1m, 0.884302 ++1m, 0.887510 ++1m, 0.891387 ++1m, 0.895366 ++1m, 0.899346 ++1m, 0.903325 ++1m, 0.907305 ++1m, 0.912080 ++1m, 0.916992 ++1m, 0.921904 ++1m, 0.926816 ++1m, 0.931728 ++1m, 0.927894 ++1m, 0.922392 ++1m, 0.916890 ++1m, 0.911387 ++1m, 0.905885 ++1m, 0.910907 ++1m, 0.918149 ++1m, 0.925391 ++1m, 0.932633 ++1m, 0.939875 ++1m, 0.941082 ++1m, 0.940889 ++1m, 0.940697 ++1m, 0.940505 ++1m, 0.940312 ++1m, 0.932065 ++1m, 0.921778 ++1m, 0.911491 ++1m, 0.901204 ++1m, 0.890917 ++1m, 0.898610 ++1m, 0.911256 ++1m, 0.923903 ++1m, 0.936550 ++1m, 0.949196 ++1m, 0.949972 ++1m, 0.947202 ++1m, 0.944433 ++1m, 0.941663 ++1m, 0.938893 ++1m, 0.928625 ++1m, 0.915938 ++1m, 0.903251 ++1m, 0.890564 ++1m, 0.877877 ++1m, 0.880108 ++1m, 0.887521 ++1m, 0.894935 ++1m, 0.902349 ++1m, 0.909762 ++1m, 0.920595 ++1m, 0.932703 ++1m, 0.944811 ++1m, 0.956919 ++1m, 0.969027 ++1m, 0.969230 ++1m, 0.964672 ++1m, 0.960113 ++1m, 0.955555 ++1m, 0.950997 ++1m, 0.948776 ++1m, 0.947556 ++1m, 0.946335 ++1m, 0.945115 ++1m, 0.943895 ++1m, 0.935305 ++1m, 0.923349 ++1m, 0.911393 ++1m, 0.899437 ++1m, 0.887480 ++1m, 0.895984 ++1m, 0.914452 ++1m, 0.932920 ++1m, 0.951387 ++1m, 0.969855 ++1m, 0.970176 ++1m, 0.961087 ++1m, 0.951997 ++1m, 0.942908 ++1m, 0.933819 ++1m, 0.935361 ++1m, 0.942764 ++1m, 0.950167 ++1m, 0.957570 ++1m, 0.964973 ++1m, 0.961336 ++1m, 0.951233 ++1m, 0.941131 ++1m, 0.931028 ++1m, 0.920925 ++1m, 0.924638 ++1m, 0.936935 ++1m, 0.949233 ++1m, 0.961531 ++1m, 0.973829 ++1m, 0.977238 ++1m, 0.974790 ++1m, 0.972341 ++1m, 0.969893 ++1m, 0.967445 ++1m, 0.962175 ++1m, 0.954936 ++1m, 0.947697 ++1m, 0.940457 ++1m, 0.933218 ++1m, 0.935485 ++1m, 0.944783 ++1m, 0.954080 ++1m, 0.963377 ++1m, 0.972675 ++1m, 0.974409 ++1m, 0.970224 ++1m, 0.966039 ++1m, 0.961855 ++1m, 0.957670 ++1m, 0.960599 ++1m, 0.969420 ++1m, 0.978241 ++1m, 0.987061 ++1m, 0.995882 ++1m, 0.996670 ++1m, 0.990424 ++1m, 0.984178 ++1m, 0.977931 ++1m, 0.971685 ++1m, 0.970768 ++1m, 0.974788 ++1m, 0.978808 ++1m, 0.982827 ++1m, 0.986847 ++1m, 0.984968 ++1m, 0.977313 ++1m, 0.969659 ++1m, 0.962004 ++1m, 0.954350 ++1m, 0.942768 ++1m, 0.927120 ++1m, 0.911472 ++1m, 0.895823 ++1m, 0.880175 ++1m, 0.875845 ++1m, 0.883908 ++1m, 0.891970 ++1m, 0.900032 ++1m, 0.908095 ++1m, 0.911900 ++1m, 0.910778 ++1m, 0.909655 ++1m, 0.908533 ++1m, 0.907410 ++1m, 0.907281 ++1m, 0.908369 ++1m, 0.909457 ++1m, 0.910545 ++1m, 0.911633 ++1m, 0.918841 ++1m, 0.933980 ++1m, 0.949120 ++1m, 0.964259 ++1m, 0.979399 ++1m, 0.974267 ++1m, 0.941325 ++1m, 0.908383 ++1m, 0.875441 ++1m, 0.842499 ++1m, 0.833637 ++1m, 0.859762 ++1m, 0.885888 ++1m, 0.912014 ++1m, 0.938140 ++1m, 0.951700 ++1m, 0.945909 ++1m, 0.940118 ++1m, 0.934328 ++1m, 0.928537 ++1m, 0.924780 ++1m, 0.924342 ++1m, 0.923904 ++1m, 0.923466 ++1m, 0.923028 ++1m, 0.920917 ++1m, 0.915904 ++1m, 0.910891 ++1m, 0.905878 ++1m, 0.900865 ++1m, 0.898290 ++1m, 0.900201 ++1m, 0.902113 ++1m, 0.904025 ++1m, 0.905936 ++1m, 0.911819 ++1m, 0.925479 ++1m, 0.939139 ++1m, 0.952800 ++1m, 0.966460 ++1m, 0.969697 ++1m, 0.951190 ++1m, 0.932683 ++1m, 0.914175 ++1m, 0.895668 ++1m, 0.884981 ++1m, 0.891692 ++1m, 0.898402 ++1m, 0.905112 ++1m, 0.911823 ++1m, 0.920855 ++1m, 0.935407 ++1m, 0.949959 ++1m, 0.964511 ++1m, 0.979063 ++1m, 0.980515 ++1m, 0.948651 ++1m, 0.916786 ++1m, 0.884922 ++1m, 0.853058 ++1m, 0.836844 ++1m, 0.863312 ++1m, 0.889779 ++1m, 0.916247 ++1m, 0.942715 ++1m, 0.960603 ++1m, 0.953339 ++1m, 0.946074 ++1m, 0.938810 ++1m, 0.931545 ++1m, 0.925881 ++1m, 0.925271 ++1m, 0.924660 ++1m, 0.924050 ++1m, 0.923440 ++1m, 0.921274 ++1m, 0.913795 ++1m, 0.906315 ++1m, 0.898836 ++1m, 0.891356 ++1m, 0.885329 ++1m, 0.884684 ++1m, 0.884038 ++1m, 0.883392 ++1m, 0.882747 ++1m, 0.883440 ++1m, 0.889538 ++1m, 0.895635 ++1m, 0.901733 ++1m, 0.907830 ++1m, 0.910020 ++1m, 0.894957 ++1m, 0.879895 ++1m, 0.864832 ++1m, 0.849770 ++1m, 0.838421 ++1m, 0.845111 ++1m, 0.851801 ++1m, 0.858492 ++1m, 0.865182 ++1m, 0.869028 ++1m, 0.857582 ++1m, 0.846136 ++1m, 0.834690 ++1m, 0.823244 ++1m, 0.815736 ++1m, 0.831850 ++1m, 0.847965 ++1m, 0.864079 ++1m, 0.880194 ++1m, 0.891355 ++1m, 0.869047 ++1m, 0.846738 ++1m, 0.824430 ++1m, 0.802122 ++1m, 0.784734 ++1m, 0.805222 ++1m, 0.825710 ++1m, 0.846197 ++1m, 0.866685 ++1m, 0.882728 ++1m, 0.859226 ++1m, 0.835724 ++1m, 0.812222 ++1m, 0.788720 ++1m, 0.768770 ++1m, 0.786035 ++1m, 0.803300 ++1m, 0.820565 ++1m, 0.837831 ++1m, 0.852691 ++1m, 0.837086 ++1m, 0.821482 ++1m, 0.805878 ++1m, 0.790274 ++1m, 0.775340 ++1m, 0.771052 ++1m, 0.766764 ++1m, 0.762476 ++1m, 0.758188 ++1m, 0.754572 ++1m, 0.765126 ++1m, 0.775680 ++1m, 0.786234 ++1m, 0.796788 ++1m, 0.806623 ++1m, 0.794239 ++1m, 0.781855 ++1m, 0.769472 ++1m, 0.757088 ++1m, 0.744947 ++1m, 0.746503 ++1m, 0.748059 ++1m, 0.749615 ++1m, 0.751171 ++1m, 0.752778 ++1m, 0.769143 ++1m, 0.785509 ++1m, 0.801874 ++1m, 0.818239 ++1m, 0.834604 ++1m, 0.814432 ++1m, 0.793875 ++1m, 0.773318 ++1m, 0.752760 ++1m, 0.732203 ++1m, 0.729089 ++1m, 0.726412 ++1m, 0.723735 ++1m, 0.721057 ++1m, 0.718380 ++1m, 0.719477 ++1m, 0.720724 ++1m, 0.721971 ++1m, 0.723218 ++1m, 0.724466 ++1m, 0.718061 ++1m, 0.711234 ++1m, 0.704407 ++1m, 0.697580 ++1m, 0.690753 ++1m, 0.687737 ++1m, 0.684992 ++1m, 0.682247 ++1m, 0.679501 ++1m, 0.676756 ++1m, 0.682467 ++1m, 0.688916 ++1m, 0.695364 ++1m, 0.701812 ++1m, 0.708260 ++1m, 0.706360 ++1m, 0.703593 ++1m, 0.700826 ++1m, 0.698059 ++1m, 0.695292 ++1m, 0.677207 ++1m, 0.657268 ++1m, 0.637328 ++1m, 0.617389 ++1m, 0.597450 ++1m, 0.598484 ++1m, 0.602433 ++1m, 0.606381 ++1m, 0.610329 ++1m, 0.614277 ++1m, 0.612482 ++1m, 0.609784 ++1m, 0.607086 ++1m, 0.604388 ++1m, 0.601691 ++1m, 0.597593 ++1m, 0.593249 ++1m, 0.588905 ++1m, 0.584561 ++1m, 0.580217 ++1m, 0.578793 ++1m, 0.577941 ++1m, 0.577089 ++1m, 0.576237 ++1m, 0.575385 ++1m, 0.560604 ++1m, 0.542813 ++1m, 0.525022 ++1m, 0.507231 ++1m, 0.489440 ++1m, 0.489830 ++1m, 0.494530 ++1m, 0.499231 ++1m, 0.503931 ++1m, 0.508632 ++1m, 0.516498 ++1m, 0.525183 ++1m, 0.533869 ++1m, 0.542554 ++1m, 0.551240 ++1m, 0.547171 ++1m, 0.539514 ++1m, 0.531858 ++1m, 0.524202 ++1m, 0.516545 ++1m, 0.514296 ++1m, 0.513693 ++1m, 0.513091 ++1m, 0.512488 ++1m, 0.511885 ++1m, 0.510832 ++1m, 0.509631 ++1m, 0.508430 ++1m, 0.507229 ++1m, 0.506027 ++1m, 0.511588 ++1m, 0.519540 ++1m, 0.527492 ++1m, 0.535445 ++1m, 0.543397 ++1m, 0.536305 ++1m, 0.523498 ++1m, 0.510691 ++1m, 0.497884 ++1m, 0.485078 ++1m, 0.481098 ++1m, 0.480711 ++1m, 0.480323 ++1m, 0.479936 ++1m, 0.479548 ++1m, 0.485361 ++1m, 0.493872 ++1m, 0.502382 ++1m, 0.510893 ++1m, 0.519404 ++1m, 0.513479 ++1m, 0.500853 ++1m, 0.488227 ++1m, 0.475601 ++1m, 0.462975 ++1m, 0.463203 ++1m, 0.469793 ++1m, 0.476382 ++1m, 0.482971 ++1m, 0.489560 ++1m, 0.487922 ++1m, 0.481950 ++1m, 0.475978 ++1m, 0.470007 ++1m, 0.464035 ++1m, 0.462834 ++1m, 0.464304 ++1m, 0.465773 ++1m, 0.467243 ++1m, 0.468712 ++1m, 0.469174 ++1m, 0.469037 ++1m, 0.468900 ++1m, 0.468763 ++1m, 0.468626 ++1m, 0.465880 ++1m, 0.461490 ++1m, 0.457100 ++1m, 0.452710 ++1m, 0.448320 ++1m, 0.450580 ++1m, 0.457286 ++1m, 0.463993 ++1m, 0.470699 ++1m, 0.477405 ++1m, 0.477641 ++1m, 0.473294 ++1m, 0.468947 ++1m, 0.464600 ++1m, 0.460253 ++1m, 0.459227 ++1m, 0.460692 ++1m, 0.462158 ++1m, 0.463623 ++1m, 0.465088 ++1m, 0.466797 ++1m, 0.468698 ++1m, 0.470599 ++1m, 0.472501 ++1m, 0.474402 ++1m, 0.473397 ++1m, 0.469952 ++1m, 0.466507 ++1m, 0.463062 ++1m, 0.459617 ++1m, 0.459135 ++1m, 0.461284 ++1m, 0.463434 ++1m, 0.465584 ++1m, 0.467733 ++1m, 0.470190 ++1m, 0.472934 ++1m, 0.475678 ++1m, 0.478422 ++1m, 0.481166 ++1m, 0.478677 ++1m, 0.470991 ++1m, 0.463304 ++1m, 0.455618 ++1m, 0.447932 ++1m, 0.440665 ++1m, 0.433837 ++1m, 0.427010 ++1m, 0.420182 ++1m, 0.413355 ++1m, 0.411414 ++1m, 0.414900 ++1m, 0.418386 ++1m, 0.421872 ++1m, 0.425358 ++1m, 0.426210 ++1m, 0.423971 ++1m, 0.421731 ++1m, 0.419492 ++1m, 0.417252 ++1m, 0.417889 ++1m, 0.422098 ++1m, 0.426307 ++1m, 0.430516 ++1m, 0.434726 ++1m, 0.435469 ++1m, 0.431656 ++1m, 0.427843 ++1m, 0.424030 ++1m, 0.420217 ++1m, 0.416178 ++1m, 0.411823 ++1m, 0.407468 ++1m, 0.403113 ++1m, 0.398759 ++1m, 0.395928 ++1m, 0.395345 ++1m, 0.394761 ++1m, 0.394178 ++1m, 0.393594 ++1m, 0.392290 ++1m, 0.389858 ++1m, 0.387425 ++1m, 0.384993 ++1m, 0.382561 ++1m, 0.380948 ++1m, 0.380693 ++1m, 0.380438 ++1m, 0.380182 ++1m, 0.379927 ++1m, 0.380042 ++1m, 0.380811 ++1m, 0.381579 ++1m, 0.382347 ++1m, 0.383115 ++1m, 0.383209 ++1m, 0.382041 ++1m, 0.380873 ++1m, 0.379706 ++1m, 0.378538 ++1m, 0.378154 ++1m, 0.379328 ++1m, 0.380503 ++1m, 0.381677 ++1m, 0.382852 ++1m, 0.382500 ++1m, 0.378914 ++1m, 0.375327 ++1m, 0.371741 ++1m, 0.368154 ++1m, 0.365185 ++1m, 0.363611 ++1m, 0.362036 ++1m, 0.360462 ++1m, 0.358887 ++1m, 0.357566 ++1m, 0.356856 ++1m, 0.356146 ++1m, 0.355437 ++1m, 0.354727 ++1m, 0.352813 ++1m, 0.347783 ++1m, 0.342754 ++1m, 0.337724 ++1m, 0.332695 ++1m, 0.329010 ++1m, 0.329058 ++1m, 0.329105 ++1m, 0.329153 ++1m, 0.329201 ++1m, 0.328870 ++1m, 0.327407 ++1m, 0.325944 ++1m, 0.324482 ++1m, 0.323019 ++1m, 0.322511 ++1m, 0.325081 ++1m, 0.327650 ++1m, 0.330219 ++1m, 0.332788 ++1m, 0.334574 ++1m, 0.333631 ++1m, 0.332688 ++1m, 0.331746 ++1m, 0.330803 ++1m, 0.330921 ++1m, 0.335056 ++1m, 0.339191 ++1m, 0.343326 ++1m, 0.347461 ++1m, 0.350591 ++1m, 0.349574 ++1m, 0.348557 ++1m, 0.347539 ++1m, 0.346522 ++1m, 0.345681 ++1m, 0.345633 ++1m, 0.345586 ++1m, 0.345539 ++1m, 0.345492 ++1m, 0.346354 ++1m, 0.351745 ++1m, 0.357137 ++1m, 0.362528 ++1m, 0.367919 ++1m, 0.372796 ++1m, 0.374830 ++1m, 0.376865 ++1m, 0.378899 ++1m, 0.380934 ++1m, 0.382623 ++1m, 0.382179 ++1m, 0.381736 ++1m, 0.381293 ++1m, 0.380850 ++1m, 0.379902 ++1m, 0.375439 ++1m, 0.370975 ++1m, 0.366512 ++1m, 0.362048 ++1m, 0.359051 ++1m, 0.367737 ++1m, 0.376423 ++1m, 0.385109 ++1m, 0.393795 ++1m, 0.400725 ++1m, 0.391415 ++1m, 0.382106 ++1m, 0.372797 ++1m, 0.363487 ++1m, 0.355365 ++1m, 0.360246 ++1m, 0.365127 ++1m, 0.370008 ++1m, 0.374890 ++1m, 0.379203 ++1m, 0.375933 ++1m, 0.372664 ++1m, 0.369394 ++1m, 0.366125 ++1m, 0.362837 ++1m, 0.359245 ++1m, 0.355653 ++1m, 0.352061 ++1m, 0.348469 ++1m, 0.345012 ++1m, 0.344638 ++1m, 0.344263 ++1m, 0.343889 ++1m, 0.343515 ++1m, 0.343042 ++1m, 0.339145 ++1m, 0.335247 ++1m, 0.331349 ++1m, 0.327451 ++1m, 0.323546 ++1m, 0.319130 ++1m, 0.314714 ++1m, 0.310299 ++1m, 0.305883 ++1m, 0.301467 diff --git a/examples/user_guide_examples/Example_1a/Transmission/Transmission_json.json b/examples/user_guide_examples/Example_1a/Transmission/Transmission_json.json index dececef2ba..d97b394ab8 100644 --- a/examples/user_guide_examples/Example_1a/Transmission/Transmission_json.json +++ b/examples/user_guide_examples/Example_1a/Transmission/Transmission_json.json @@ -1,19 +1,19 @@ -{ - "name": "TransmissionSim", - "loglevel": 5, - "coreType": "zmq", - "period": 1.0, - "uninterruptible": true, - - "publications": [{ - "key": "TransmissionSim/transmission_voltage", - "type": "complex", - "global": true - }], - - "subscriptions": [{ - "key": "IEEE_123_feeder_0/totalLoad", - "type": "complex", - "required": true - }] +{ + "name": "TransmissionSim", + "loglevel": 5, + "coreType": "zmq", + "period": 1.0, + "uninterruptible": true, + + "publications": [{ + "key": "TransmissionSim/transmission_voltage", + "type": "complex", + "global": true + }], + + "subscriptions": [{ + "key": "IEEE_123_feeder_0/totalLoad", + "type": "complex", + "required": true + }] } \ No newline at end of file diff --git a/examples/user_guide_examples/Example_1b/Distribution/include/players/load_shape_player.player b/examples/user_guide_examples/Example_1b/Distribution/include/players/load_shape_player.player index cac3aa6197..089fa4c2ce 100644 --- a/examples/user_guide_examples/Example_1b/Distribution/include/players/load_shape_player.player +++ b/examples/user_guide_examples/Example_1b/Distribution/include/players/load_shape_player.player @@ -1,1440 +1,1440 @@ -2013-08-28 00:00:00, 0.241766 -+1m, 0.243147 -+1m, 0.244528 -+1m, 0.245908 -+1m, 0.247289 -+1m, 0.248670 -+1m, 0.245771 -+1m, 0.242811 -+1m, 0.239852 -+1m, 0.236892 -+1m, 0.233933 -+1m, 0.235427 -+1m, 0.237050 -+1m, 0.238672 -+1m, 0.240294 -+1m, 0.241916 -+1m, 0.241126 -+1m, 0.240231 -+1m, 0.239335 -+1m, 0.238440 -+1m, 0.237544 -+1m, 0.236195 -+1m, 0.234818 -+1m, 0.233442 -+1m, 0.232065 -+1m, 0.230689 -+1m, 0.231470 -+1m, 0.232412 -+1m, 0.233354 -+1m, 0.234297 -+1m, 0.235239 -+1m, 0.234936 -+1m, 0.234520 -+1m, 0.234103 -+1m, 0.233686 -+1m, 0.233270 -+1m, 0.233278 -+1m, 0.233332 -+1m, 0.233387 -+1m, 0.233441 -+1m, 0.233495 -+1m, 0.231224 -+1m, 0.228660 -+1m, 0.226096 -+1m, 0.223533 -+1m, 0.220969 -+1m, 0.220822 -+1m, 0.221021 -+1m, 0.221220 -+1m, 0.221419 -+1m, 0.221618 -+1m, 0.221828 -+1m, 0.222040 -+1m, 0.222253 -+1m, 0.222465 -+1m, 0.222677 -+1m, 0.222844 -+1m, 0.223003 -+1m, 0.223162 -+1m, 0.223321 -+1m, 0.223480 -+1m, 0.223259 -+1m, 0.222961 -+1m, 0.222663 -+1m, 0.222365 -+1m, 0.222067 -+1m, 0.222466 -+1m, 0.223019 -+1m, 0.223573 -+1m, 0.224126 -+1m, 0.224679 -+1m, 0.224661 -+1m, 0.224503 -+1m, 0.224346 -+1m, 0.224189 -+1m, 0.224032 -+1m, 0.222787 -+1m, 0.221254 -+1m, 0.219722 -+1m, 0.218189 -+1m, 0.216657 -+1m, 0.217125 -+1m, 0.218167 -+1m, 0.219209 -+1m, 0.220252 -+1m, 0.221294 -+1m, 0.219722 -+1m, 0.217338 -+1m, 0.214954 -+1m, 0.212570 -+1m, 0.210186 -+1m, 0.209746 -+1m, 0.209956 -+1m, 0.210167 -+1m, 0.210377 -+1m, 0.210587 -+1m, 0.211425 -+1m, 0.212488 -+1m, 0.213551 -+1m, 0.214614 -+1m, 0.215677 -+1m, 0.215553 -+1m, 0.214970 -+1m, 0.214387 -+1m, 0.213805 -+1m, 0.213222 -+1m, 0.212366 -+1m, 0.211397 -+1m, 0.210428 -+1m, 0.209460 -+1m, 0.208491 -+1m, 0.208696 -+1m, 0.209420 -+1m, 0.210144 -+1m, 0.210868 -+1m, 0.211592 -+1m, 0.211443 -+1m, 0.210881 -+1m, 0.210320 -+1m, 0.209758 -+1m, 0.209197 -+1m, 0.209802 -+1m, 0.210993 -+1m, 0.212184 -+1m, 0.213375 -+1m, 0.214567 -+1m, 0.213534 -+1m, 0.211313 -+1m, 0.209092 -+1m, 0.206871 -+1m, 0.204649 -+1m, 0.204855 -+1m, 0.206439 -+1m, 0.208024 -+1m, 0.209608 -+1m, 0.211193 -+1m, 0.211206 -+1m, 0.210271 -+1m, 0.209335 -+1m, 0.208400 -+1m, 0.207465 -+1m, 0.207536 -+1m, 0.208251 -+1m, 0.208965 -+1m, 0.209680 -+1m, 0.210395 -+1m, 0.209883 -+1m, 0.208540 -+1m, 0.207197 -+1m, 0.205854 -+1m, 0.204511 -+1m, 0.204859 -+1m, 0.206422 -+1m, 0.207986 -+1m, 0.209549 -+1m, 0.211112 -+1m, 0.211285 -+1m, 0.210400 -+1m, 0.209514 -+1m, 0.208629 -+1m, 0.207743 -+1m, 0.207328 -+1m, 0.207292 -+1m, 0.207255 -+1m, 0.207218 -+1m, 0.207181 -+1m, 0.206490 -+1m, 0.205241 -+1m, 0.203991 -+1m, 0.202742 -+1m, 0.201493 -+1m, 0.200902 -+1m, 0.200905 -+1m, 0.200908 -+1m, 0.200911 -+1m, 0.200913 -+1m, 0.201755 -+1m, 0.203396 -+1m, 0.205037 -+1m, 0.206677 -+1m, 0.208318 -+1m, 0.208488 -+1m, 0.207176 -+1m, 0.205864 -+1m, 0.204552 -+1m, 0.203240 -+1m, 0.203157 -+1m, 0.204383 -+1m, 0.205609 -+1m, 0.206835 -+1m, 0.208061 -+1m, 0.208520 -+1m, 0.208115 -+1m, 0.207711 -+1m, 0.207306 -+1m, 0.206902 -+1m, 0.206871 -+1m, 0.207284 -+1m, 0.207697 -+1m, 0.208111 -+1m, 0.208524 -+1m, 0.208938 -+1m, 0.209353 -+1m, 0.209767 -+1m, 0.210182 -+1m, 0.210596 -+1m, 0.210134 -+1m, 0.208504 -+1m, 0.206874 -+1m, 0.205244 -+1m, 0.203614 -+1m, 0.203002 -+1m, 0.203827 -+1m, 0.204651 -+1m, 0.205476 -+1m, 0.206300 -+1m, 0.206306 -+1m, 0.205088 -+1m, 0.203870 -+1m, 0.202651 -+1m, 0.201433 -+1m, 0.201004 -+1m, 0.201826 -+1m, 0.202647 -+1m, 0.203469 -+1m, 0.204291 -+1m, 0.205265 -+1m, 0.206494 -+1m, 0.207724 -+1m, 0.208954 -+1m, 0.210184 -+1m, 0.210839 -+1m, 0.210470 -+1m, 0.210100 -+1m, 0.209731 -+1m, 0.209361 -+1m, 0.209352 -+1m, 0.210030 -+1m, 0.210707 -+1m, 0.211384 -+1m, 0.212061 -+1m, 0.212521 -+1m, 0.212541 -+1m, 0.212561 -+1m, 0.212581 -+1m, 0.212601 -+1m, 0.212622 -+1m, 0.212645 -+1m, 0.212668 -+1m, 0.212691 -+1m, 0.212714 -+1m, 0.212479 -+1m, 0.211649 -+1m, 0.210820 -+1m, 0.209991 -+1m, 0.209161 -+1m, 0.208221 -+1m, 0.207009 -+1m, 0.205797 -+1m, 0.204585 -+1m, 0.203372 -+1m, 0.203256 -+1m, 0.206026 -+1m, 0.208795 -+1m, 0.211565 -+1m, 0.214334 -+1m, 0.216212 -+1m, 0.215571 -+1m, 0.214930 -+1m, 0.214289 -+1m, 0.213648 -+1m, 0.213303 -+1m, 0.213858 -+1m, 0.214413 -+1m, 0.214968 -+1m, 0.215523 -+1m, 0.215765 -+1m, 0.214978 -+1m, 0.214191 -+1m, 0.213404 -+1m, 0.212617 -+1m, 0.211708 -+1m, 0.210363 -+1m, 0.209019 -+1m, 0.207675 -+1m, 0.206331 -+1m, 0.205699 -+1m, 0.207819 -+1m, 0.209940 -+1m, 0.212060 -+1m, 0.214181 -+1m, 0.216173 -+1m, 0.217625 -+1m, 0.219077 -+1m, 0.220529 -+1m, 0.221981 -+1m, 0.223073 -+1m, 0.222496 -+1m, 0.221919 -+1m, 0.221342 -+1m, 0.220765 -+1m, 0.220006 -+1m, 0.218311 -+1m, 0.216616 -+1m, 0.214921 -+1m, 0.213227 -+1m, 0.212057 -+1m, 0.213867 -+1m, 0.215678 -+1m, 0.217488 -+1m, 0.219298 -+1m, 0.220788 -+1m, 0.220244 -+1m, 0.219699 -+1m, 0.219155 -+1m, 0.218610 -+1m, 0.218166 -+1m, 0.218442 -+1m, 0.218717 -+1m, 0.218993 -+1m, 0.219269 -+1m, 0.219649 -+1m, 0.220885 -+1m, 0.222122 -+1m, 0.223358 -+1m, 0.224595 -+1m, 0.225782 -+1m, 0.226493 -+1m, 0.227204 -+1m, 0.227916 -+1m, 0.228627 -+1m, 0.229355 -+1m, 0.230269 -+1m, 0.231183 -+1m, 0.232097 -+1m, 0.233012 -+1m, 0.233676 -+1m, 0.230818 -+1m, 0.227959 -+1m, 0.225101 -+1m, 0.222242 -+1m, 0.219612 -+1m, 0.221107 -+1m, 0.222603 -+1m, 0.224099 -+1m, 0.225595 -+1m, 0.227055 -+1m, 0.227601 -+1m, 0.228148 -+1m, 0.228694 -+1m, 0.229241 -+1m, 0.229809 -+1m, 0.231278 -+1m, 0.232747 -+1m, 0.234216 -+1m, 0.235685 -+1m, 0.237150 -+1m, 0.238281 -+1m, 0.239412 -+1m, 0.240543 -+1m, 0.241674 -+1m, 0.242805 -+1m, 0.244551 -+1m, 0.246299 -+1m, 0.248047 -+1m, 0.249795 -+1m, 0.251543 -+1m, 0.251748 -+1m, 0.251926 -+1m, 0.252103 -+1m, 0.252281 -+1m, 0.252458 -+1m, 0.253655 -+1m, 0.254885 -+1m, 0.256115 -+1m, 0.257345 -+1m, 0.258576 -+1m, 0.259165 -+1m, 0.259723 -+1m, 0.260282 -+1m, 0.260840 -+1m, 0.261399 -+1m, 0.262141 -+1m, 0.262894 -+1m, 0.263648 -+1m, 0.264401 -+1m, 0.265154 -+1m, 0.262487 -+1m, 0.259549 -+1m, 0.256611 -+1m, 0.253673 -+1m, 0.250735 -+1m, 0.254199 -+1m, 0.258274 -+1m, 0.262349 -+1m, 0.266425 -+1m, 0.270500 -+1m, 0.270185 -+1m, 0.269377 -+1m, 0.268569 -+1m, 0.267761 -+1m, 0.266953 -+1m, 0.268050 -+1m, 0.269395 -+1m, 0.270740 -+1m, 0.272084 -+1m, 0.273429 -+1m, 0.276155 -+1m, 0.279085 -+1m, 0.282016 -+1m, 0.284946 -+1m, 0.287877 -+1m, 0.286309 -+1m, 0.283992 -+1m, 0.281675 -+1m, 0.279358 -+1m, 0.277041 -+1m, 0.279466 -+1m, 0.282774 -+1m, 0.286082 -+1m, 0.289390 -+1m, 0.292698 -+1m, 0.298190 -+1m, 0.304131 -+1m, 0.310073 -+1m, 0.316015 -+1m, 0.321957 -+1m, 0.320661 -+1m, 0.317725 -+1m, 0.314790 -+1m, 0.311854 -+1m, 0.308919 -+1m, 0.308506 -+1m, 0.308717 -+1m, 0.308929 -+1m, 0.309141 -+1m, 0.309353 -+1m, 0.310369 -+1m, 0.311602 -+1m, 0.312835 -+1m, 0.314068 -+1m, 0.315301 -+1m, 0.318650 -+1m, 0.322618 -+1m, 0.326586 -+1m, 0.330555 -+1m, 0.334523 -+1m, 0.336308 -+1m, 0.337402 -+1m, 0.338495 -+1m, 0.339589 -+1m, 0.340682 -+1m, 0.338936 -+1m, 0.336222 -+1m, 0.333508 -+1m, 0.330794 -+1m, 0.328080 -+1m, 0.332903 -+1m, 0.340490 -+1m, 0.348078 -+1m, 0.355665 -+1m, 0.363253 -+1m, 0.363248 -+1m, 0.360258 -+1m, 0.357268 -+1m, 0.354278 -+1m, 0.351288 -+1m, 0.353795 -+1m, 0.358615 -+1m, 0.363434 -+1m, 0.368254 -+1m, 0.373073 -+1m, 0.373912 -+1m, 0.372961 -+1m, 0.372011 -+1m, 0.371060 -+1m, 0.370109 -+1m, 0.371173 -+1m, 0.373202 -+1m, 0.375231 -+1m, 0.377261 -+1m, 0.379290 -+1m, 0.382262 -+1m, 0.385715 -+1m, 0.389168 -+1m, 0.392620 -+1m, 0.396073 -+1m, 0.396396 -+1m, 0.395018 -+1m, 0.393640 -+1m, 0.392263 -+1m, 0.390885 -+1m, 0.393387 -+1m, 0.398127 -+1m, 0.402867 -+1m, 0.407608 -+1m, 0.412348 -+1m, 0.417306 -+1m, 0.422398 -+1m, 0.427490 -+1m, 0.432582 -+1m, 0.437674 -+1m, 0.441531 -+1m, 0.444584 -+1m, 0.447638 -+1m, 0.450692 -+1m, 0.453745 -+1m, 0.453973 -+1m, 0.452256 -+1m, 0.450538 -+1m, 0.448821 -+1m, 0.447103 -+1m, 0.448788 -+1m, 0.452952 -+1m, 0.457116 -+1m, 0.461280 -+1m, 0.465445 -+1m, 0.466463 -+1m, 0.465055 -+1m, 0.463646 -+1m, 0.462237 -+1m, 0.460829 -+1m, 0.460724 -+1m, 0.461683 -+1m, 0.462642 -+1m, 0.463602 -+1m, 0.464561 -+1m, 0.469697 -+1m, 0.478441 -+1m, 0.487185 -+1m, 0.495929 -+1m, 0.504672 -+1m, 0.505769 -+1m, 0.499882 -+1m, 0.493995 -+1m, 0.488108 -+1m, 0.482221 -+1m, 0.484360 -+1m, 0.494251 -+1m, 0.504142 -+1m, 0.514034 -+1m, 0.523925 -+1m, 0.527751 -+1m, 0.525384 -+1m, 0.523017 -+1m, 0.520650 -+1m, 0.518283 -+1m, 0.515893 -+1m, 0.513478 -+1m, 0.511063 -+1m, 0.508648 -+1m, 0.506234 -+1m, 0.507668 -+1m, 0.513498 -+1m, 0.519328 -+1m, 0.525158 -+1m, 0.530988 -+1m, 0.534626 -+1m, 0.535616 -+1m, 0.536607 -+1m, 0.537598 -+1m, 0.538588 -+1m, 0.538230 -+1m, 0.536148 -+1m, 0.534066 -+1m, 0.531984 -+1m, 0.529903 -+1m, 0.534551 -+1m, 0.548302 -+1m, 0.562054 -+1m, 0.575805 -+1m, 0.589556 -+1m, 0.593174 -+1m, 0.582280 -+1m, 0.571385 -+1m, 0.560490 -+1m, 0.549595 -+1m, 0.542154 -+1m, 0.539953 -+1m, 0.537752 -+1m, 0.535551 -+1m, 0.533350 -+1m, 0.536895 -+1m, 0.549684 -+1m, 0.562473 -+1m, 0.575262 -+1m, 0.588050 -+1m, 0.595417 -+1m, 0.593523 -+1m, 0.591629 -+1m, 0.589736 -+1m, 0.587842 -+1m, 0.589211 -+1m, 0.596496 -+1m, 0.603782 -+1m, 0.611067 -+1m, 0.618353 -+1m, 0.620227 -+1m, 0.611663 -+1m, 0.603099 -+1m, 0.594536 -+1m, 0.585972 -+1m, 0.582125 -+1m, 0.587964 -+1m, 0.593802 -+1m, 0.599640 -+1m, 0.605479 -+1m, 0.608268 -+1m, 0.604384 -+1m, 0.600499 -+1m, 0.596615 -+1m, 0.592730 -+1m, 0.593972 -+1m, 0.607196 -+1m, 0.620419 -+1m, 0.633643 -+1m, 0.646866 -+1m, 0.653312 -+1m, 0.642814 -+1m, 0.632316 -+1m, 0.621818 -+1m, 0.611321 -+1m, 0.607301 -+1m, 0.620639 -+1m, 0.633977 -+1m, 0.647315 -+1m, 0.660653 -+1m, 0.666440 -+1m, 0.650491 -+1m, 0.634542 -+1m, 0.618592 -+1m, 0.602643 -+1m, 0.594820 -+1m, 0.612190 -+1m, 0.629560 -+1m, 0.646930 -+1m, 0.664300 -+1m, 0.678658 -+1m, 0.682934 -+1m, 0.687209 -+1m, 0.691485 -+1m, 0.695760 -+1m, 0.697681 -+1m, 0.691057 -+1m, 0.684433 -+1m, 0.677809 -+1m, 0.671184 -+1m, 0.666186 -+1m, 0.667608 -+1m, 0.669030 -+1m, 0.670451 -+1m, 0.671873 -+1m, 0.673889 -+1m, 0.678470 -+1m, 0.683052 -+1m, 0.687633 -+1m, 0.692214 -+1m, 0.695887 -+1m, 0.695250 -+1m, 0.694612 -+1m, 0.693975 -+1m, 0.693338 -+1m, 0.692939 -+1m, 0.693785 -+1m, 0.694631 -+1m, 0.695478 -+1m, 0.696324 -+1m, 0.696526 -+1m, 0.692966 -+1m, 0.689406 -+1m, 0.685847 -+1m, 0.682287 -+1m, 0.680534 -+1m, 0.690622 -+1m, 0.700710 -+1m, 0.710798 -+1m, 0.720886 -+1m, 0.730881 -+1m, 0.740180 -+1m, 0.749479 -+1m, 0.758778 -+1m, 0.768077 -+1m, 0.775691 -+1m, 0.768869 -+1m, 0.762047 -+1m, 0.755225 -+1m, 0.748403 -+1m, 0.742472 -+1m, 0.745481 -+1m, 0.748491 -+1m, 0.751500 -+1m, 0.754509 -+1m, 0.757045 -+1m, 0.753876 -+1m, 0.750707 -+1m, 0.747537 -+1m, 0.744368 -+1m, 0.741265 -+1m, 0.739151 -+1m, 0.737038 -+1m, 0.734924 -+1m, 0.732811 -+1m, 0.731415 -+1m, 0.744002 -+1m, 0.756590 -+1m, 0.769178 -+1m, 0.781766 -+1m, 0.793928 -+1m, 0.794283 -+1m, 0.794639 -+1m, 0.794994 -+1m, 0.795350 -+1m, 0.795739 -+1m, 0.797678 -+1m, 0.799617 -+1m, 0.801557 -+1m, 0.803496 -+1m, 0.805386 -+1m, 0.800178 -+1m, 0.794970 -+1m, 0.789762 -+1m, 0.784554 -+1m, 0.779346 -+1m, 0.787739 -+1m, 0.796227 -+1m, 0.804716 -+1m, 0.813204 -+1m, 0.821693 -+1m, 0.813917 -+1m, 0.805794 -+1m, 0.797672 -+1m, 0.789549 -+1m, 0.781426 -+1m, 0.799239 -+1m, 0.817988 -+1m, 0.836736 -+1m, 0.855485 -+1m, 0.874234 -+1m, 0.864736 -+1m, 0.853789 -+1m, 0.842843 -+1m, 0.831896 -+1m, 0.820950 -+1m, 0.829602 -+1m, 0.839567 -+1m, 0.849531 -+1m, 0.859495 -+1m, 0.869459 -+1m, 0.870771 -+1m, 0.871363 -+1m, 0.871956 -+1m, 0.872549 -+1m, 0.873142 -+1m, 0.871804 -+1m, 0.870274 -+1m, 0.868744 -+1m, 0.867214 -+1m, 0.865684 -+1m, 0.866654 -+1m, 0.867916 -+1m, 0.869177 -+1m, 0.870439 -+1m, 0.871700 -+1m, 0.874678 -+1m, 0.877886 -+1m, 0.881094 -+1m, 0.884302 -+1m, 0.887510 -+1m, 0.891387 -+1m, 0.895366 -+1m, 0.899346 -+1m, 0.903325 -+1m, 0.907305 -+1m, 0.912080 -+1m, 0.916992 -+1m, 0.921904 -+1m, 0.926816 -+1m, 0.931728 -+1m, 0.927894 -+1m, 0.922392 -+1m, 0.916890 -+1m, 0.911387 -+1m, 0.905885 -+1m, 0.910907 -+1m, 0.918149 -+1m, 0.925391 -+1m, 0.932633 -+1m, 0.939875 -+1m, 0.941082 -+1m, 0.940889 -+1m, 0.940697 -+1m, 0.940505 -+1m, 0.940312 -+1m, 0.932065 -+1m, 0.921778 -+1m, 0.911491 -+1m, 0.901204 -+1m, 0.890917 -+1m, 0.898610 -+1m, 0.911256 -+1m, 0.923903 -+1m, 0.936550 -+1m, 0.949196 -+1m, 0.949972 -+1m, 0.947202 -+1m, 0.944433 -+1m, 0.941663 -+1m, 0.938893 -+1m, 0.928625 -+1m, 0.915938 -+1m, 0.903251 -+1m, 0.890564 -+1m, 0.877877 -+1m, 0.880108 -+1m, 0.887521 -+1m, 0.894935 -+1m, 0.902349 -+1m, 0.909762 -+1m, 0.920595 -+1m, 0.932703 -+1m, 0.944811 -+1m, 0.956919 -+1m, 0.969027 -+1m, 0.969230 -+1m, 0.964672 -+1m, 0.960113 -+1m, 0.955555 -+1m, 0.950997 -+1m, 0.948776 -+1m, 0.947556 -+1m, 0.946335 -+1m, 0.945115 -+1m, 0.943895 -+1m, 0.935305 -+1m, 0.923349 -+1m, 0.911393 -+1m, 0.899437 -+1m, 0.887480 -+1m, 0.895984 -+1m, 0.914452 -+1m, 0.932920 -+1m, 0.951387 -+1m, 0.969855 -+1m, 0.970176 -+1m, 0.961087 -+1m, 0.951997 -+1m, 0.942908 -+1m, 0.933819 -+1m, 0.935361 -+1m, 0.942764 -+1m, 0.950167 -+1m, 0.957570 -+1m, 0.964973 -+1m, 0.961336 -+1m, 0.951233 -+1m, 0.941131 -+1m, 0.931028 -+1m, 0.920925 -+1m, 0.924638 -+1m, 0.936935 -+1m, 0.949233 -+1m, 0.961531 -+1m, 0.973829 -+1m, 0.977238 -+1m, 0.974790 -+1m, 0.972341 -+1m, 0.969893 -+1m, 0.967445 -+1m, 0.962175 -+1m, 0.954936 -+1m, 0.947697 -+1m, 0.940457 -+1m, 0.933218 -+1m, 0.935485 -+1m, 0.944783 -+1m, 0.954080 -+1m, 0.963377 -+1m, 0.972675 -+1m, 0.974409 -+1m, 0.970224 -+1m, 0.966039 -+1m, 0.961855 -+1m, 0.957670 -+1m, 0.960599 -+1m, 0.969420 -+1m, 0.978241 -+1m, 0.987061 -+1m, 0.995882 -+1m, 0.996670 -+1m, 0.990424 -+1m, 0.984178 -+1m, 0.977931 -+1m, 0.971685 -+1m, 0.970768 -+1m, 0.974788 -+1m, 0.978808 -+1m, 0.982827 -+1m, 0.986847 -+1m, 0.984968 -+1m, 0.977313 -+1m, 0.969659 -+1m, 0.962004 -+1m, 0.954350 -+1m, 0.942768 -+1m, 0.927120 -+1m, 0.911472 -+1m, 0.895823 -+1m, 0.880175 -+1m, 0.875845 -+1m, 0.883908 -+1m, 0.891970 -+1m, 0.900032 -+1m, 0.908095 -+1m, 0.911900 -+1m, 0.910778 -+1m, 0.909655 -+1m, 0.908533 -+1m, 0.907410 -+1m, 0.907281 -+1m, 0.908369 -+1m, 0.909457 -+1m, 0.910545 -+1m, 0.911633 -+1m, 0.918841 -+1m, 0.933980 -+1m, 0.949120 -+1m, 0.964259 -+1m, 0.979399 -+1m, 0.974267 -+1m, 0.941325 -+1m, 0.908383 -+1m, 0.875441 -+1m, 0.842499 -+1m, 0.833637 -+1m, 0.859762 -+1m, 0.885888 -+1m, 0.912014 -+1m, 0.938140 -+1m, 0.951700 -+1m, 0.945909 -+1m, 0.940118 -+1m, 0.934328 -+1m, 0.928537 -+1m, 0.924780 -+1m, 0.924342 -+1m, 0.923904 -+1m, 0.923466 -+1m, 0.923028 -+1m, 0.920917 -+1m, 0.915904 -+1m, 0.910891 -+1m, 0.905878 -+1m, 0.900865 -+1m, 0.898290 -+1m, 0.900201 -+1m, 0.902113 -+1m, 0.904025 -+1m, 0.905936 -+1m, 0.911819 -+1m, 0.925479 -+1m, 0.939139 -+1m, 0.952800 -+1m, 0.966460 -+1m, 0.969697 -+1m, 0.951190 -+1m, 0.932683 -+1m, 0.914175 -+1m, 0.895668 -+1m, 0.884981 -+1m, 0.891692 -+1m, 0.898402 -+1m, 0.905112 -+1m, 0.911823 -+1m, 0.920855 -+1m, 0.935407 -+1m, 0.949959 -+1m, 0.964511 -+1m, 0.979063 -+1m, 0.980515 -+1m, 0.948651 -+1m, 0.916786 -+1m, 0.884922 -+1m, 0.853058 -+1m, 0.836844 -+1m, 0.863312 -+1m, 0.889779 -+1m, 0.916247 -+1m, 0.942715 -+1m, 0.960603 -+1m, 0.953339 -+1m, 0.946074 -+1m, 0.938810 -+1m, 0.931545 -+1m, 0.925881 -+1m, 0.925271 -+1m, 0.924660 -+1m, 0.924050 -+1m, 0.923440 -+1m, 0.921274 -+1m, 0.913795 -+1m, 0.906315 -+1m, 0.898836 -+1m, 0.891356 -+1m, 0.885329 -+1m, 0.884684 -+1m, 0.884038 -+1m, 0.883392 -+1m, 0.882747 -+1m, 0.883440 -+1m, 0.889538 -+1m, 0.895635 -+1m, 0.901733 -+1m, 0.907830 -+1m, 0.910020 -+1m, 0.894957 -+1m, 0.879895 -+1m, 0.864832 -+1m, 0.849770 -+1m, 0.838421 -+1m, 0.845111 -+1m, 0.851801 -+1m, 0.858492 -+1m, 0.865182 -+1m, 0.869028 -+1m, 0.857582 -+1m, 0.846136 -+1m, 0.834690 -+1m, 0.823244 -+1m, 0.815736 -+1m, 0.831850 -+1m, 0.847965 -+1m, 0.864079 -+1m, 0.880194 -+1m, 0.891355 -+1m, 0.869047 -+1m, 0.846738 -+1m, 0.824430 -+1m, 0.802122 -+1m, 0.784734 -+1m, 0.805222 -+1m, 0.825710 -+1m, 0.846197 -+1m, 0.866685 -+1m, 0.882728 -+1m, 0.859226 -+1m, 0.835724 -+1m, 0.812222 -+1m, 0.788720 -+1m, 0.768770 -+1m, 0.786035 -+1m, 0.803300 -+1m, 0.820565 -+1m, 0.837831 -+1m, 0.852691 -+1m, 0.837086 -+1m, 0.821482 -+1m, 0.805878 -+1m, 0.790274 -+1m, 0.775340 -+1m, 0.771052 -+1m, 0.766764 -+1m, 0.762476 -+1m, 0.758188 -+1m, 0.754572 -+1m, 0.765126 -+1m, 0.775680 -+1m, 0.786234 -+1m, 0.796788 -+1m, 0.806623 -+1m, 0.794239 -+1m, 0.781855 -+1m, 0.769472 -+1m, 0.757088 -+1m, 0.744947 -+1m, 0.746503 -+1m, 0.748059 -+1m, 0.749615 -+1m, 0.751171 -+1m, 0.752778 -+1m, 0.769143 -+1m, 0.785509 -+1m, 0.801874 -+1m, 0.818239 -+1m, 0.834604 -+1m, 0.814432 -+1m, 0.793875 -+1m, 0.773318 -+1m, 0.752760 -+1m, 0.732203 -+1m, 0.729089 -+1m, 0.726412 -+1m, 0.723735 -+1m, 0.721057 -+1m, 0.718380 -+1m, 0.719477 -+1m, 0.720724 -+1m, 0.721971 -+1m, 0.723218 -+1m, 0.724466 -+1m, 0.718061 -+1m, 0.711234 -+1m, 0.704407 -+1m, 0.697580 -+1m, 0.690753 -+1m, 0.687737 -+1m, 0.684992 -+1m, 0.682247 -+1m, 0.679501 -+1m, 0.676756 -+1m, 0.682467 -+1m, 0.688916 -+1m, 0.695364 -+1m, 0.701812 -+1m, 0.708260 -+1m, 0.706360 -+1m, 0.703593 -+1m, 0.700826 -+1m, 0.698059 -+1m, 0.695292 -+1m, 0.677207 -+1m, 0.657268 -+1m, 0.637328 -+1m, 0.617389 -+1m, 0.597450 -+1m, 0.598484 -+1m, 0.602433 -+1m, 0.606381 -+1m, 0.610329 -+1m, 0.614277 -+1m, 0.612482 -+1m, 0.609784 -+1m, 0.607086 -+1m, 0.604388 -+1m, 0.601691 -+1m, 0.597593 -+1m, 0.593249 -+1m, 0.588905 -+1m, 0.584561 -+1m, 0.580217 -+1m, 0.578793 -+1m, 0.577941 -+1m, 0.577089 -+1m, 0.576237 -+1m, 0.575385 -+1m, 0.560604 -+1m, 0.542813 -+1m, 0.525022 -+1m, 0.507231 -+1m, 0.489440 -+1m, 0.489830 -+1m, 0.494530 -+1m, 0.499231 -+1m, 0.503931 -+1m, 0.508632 -+1m, 0.516498 -+1m, 0.525183 -+1m, 0.533869 -+1m, 0.542554 -+1m, 0.551240 -+1m, 0.547171 -+1m, 0.539514 -+1m, 0.531858 -+1m, 0.524202 -+1m, 0.516545 -+1m, 0.514296 -+1m, 0.513693 -+1m, 0.513091 -+1m, 0.512488 -+1m, 0.511885 -+1m, 0.510832 -+1m, 0.509631 -+1m, 0.508430 -+1m, 0.507229 -+1m, 0.506027 -+1m, 0.511588 -+1m, 0.519540 -+1m, 0.527492 -+1m, 0.535445 -+1m, 0.543397 -+1m, 0.536305 -+1m, 0.523498 -+1m, 0.510691 -+1m, 0.497884 -+1m, 0.485078 -+1m, 0.481098 -+1m, 0.480711 -+1m, 0.480323 -+1m, 0.479936 -+1m, 0.479548 -+1m, 0.485361 -+1m, 0.493872 -+1m, 0.502382 -+1m, 0.510893 -+1m, 0.519404 -+1m, 0.513479 -+1m, 0.500853 -+1m, 0.488227 -+1m, 0.475601 -+1m, 0.462975 -+1m, 0.463203 -+1m, 0.469793 -+1m, 0.476382 -+1m, 0.482971 -+1m, 0.489560 -+1m, 0.487922 -+1m, 0.481950 -+1m, 0.475978 -+1m, 0.470007 -+1m, 0.464035 -+1m, 0.462834 -+1m, 0.464304 -+1m, 0.465773 -+1m, 0.467243 -+1m, 0.468712 -+1m, 0.469174 -+1m, 0.469037 -+1m, 0.468900 -+1m, 0.468763 -+1m, 0.468626 -+1m, 0.465880 -+1m, 0.461490 -+1m, 0.457100 -+1m, 0.452710 -+1m, 0.448320 -+1m, 0.450580 -+1m, 0.457286 -+1m, 0.463993 -+1m, 0.470699 -+1m, 0.477405 -+1m, 0.477641 -+1m, 0.473294 -+1m, 0.468947 -+1m, 0.464600 -+1m, 0.460253 -+1m, 0.459227 -+1m, 0.460692 -+1m, 0.462158 -+1m, 0.463623 -+1m, 0.465088 -+1m, 0.466797 -+1m, 0.468698 -+1m, 0.470599 -+1m, 0.472501 -+1m, 0.474402 -+1m, 0.473397 -+1m, 0.469952 -+1m, 0.466507 -+1m, 0.463062 -+1m, 0.459617 -+1m, 0.459135 -+1m, 0.461284 -+1m, 0.463434 -+1m, 0.465584 -+1m, 0.467733 -+1m, 0.470190 -+1m, 0.472934 -+1m, 0.475678 -+1m, 0.478422 -+1m, 0.481166 -+1m, 0.478677 -+1m, 0.470991 -+1m, 0.463304 -+1m, 0.455618 -+1m, 0.447932 -+1m, 0.440665 -+1m, 0.433837 -+1m, 0.427010 -+1m, 0.420182 -+1m, 0.413355 -+1m, 0.411414 -+1m, 0.414900 -+1m, 0.418386 -+1m, 0.421872 -+1m, 0.425358 -+1m, 0.426210 -+1m, 0.423971 -+1m, 0.421731 -+1m, 0.419492 -+1m, 0.417252 -+1m, 0.417889 -+1m, 0.422098 -+1m, 0.426307 -+1m, 0.430516 -+1m, 0.434726 -+1m, 0.435469 -+1m, 0.431656 -+1m, 0.427843 -+1m, 0.424030 -+1m, 0.420217 -+1m, 0.416178 -+1m, 0.411823 -+1m, 0.407468 -+1m, 0.403113 -+1m, 0.398759 -+1m, 0.395928 -+1m, 0.395345 -+1m, 0.394761 -+1m, 0.394178 -+1m, 0.393594 -+1m, 0.392290 -+1m, 0.389858 -+1m, 0.387425 -+1m, 0.384993 -+1m, 0.382561 -+1m, 0.380948 -+1m, 0.380693 -+1m, 0.380438 -+1m, 0.380182 -+1m, 0.379927 -+1m, 0.380042 -+1m, 0.380811 -+1m, 0.381579 -+1m, 0.382347 -+1m, 0.383115 -+1m, 0.383209 -+1m, 0.382041 -+1m, 0.380873 -+1m, 0.379706 -+1m, 0.378538 -+1m, 0.378154 -+1m, 0.379328 -+1m, 0.380503 -+1m, 0.381677 -+1m, 0.382852 -+1m, 0.382500 -+1m, 0.378914 -+1m, 0.375327 -+1m, 0.371741 -+1m, 0.368154 -+1m, 0.365185 -+1m, 0.363611 -+1m, 0.362036 -+1m, 0.360462 -+1m, 0.358887 -+1m, 0.357566 -+1m, 0.356856 -+1m, 0.356146 -+1m, 0.355437 -+1m, 0.354727 -+1m, 0.352813 -+1m, 0.347783 -+1m, 0.342754 -+1m, 0.337724 -+1m, 0.332695 -+1m, 0.329010 -+1m, 0.329058 -+1m, 0.329105 -+1m, 0.329153 -+1m, 0.329201 -+1m, 0.328870 -+1m, 0.327407 -+1m, 0.325944 -+1m, 0.324482 -+1m, 0.323019 -+1m, 0.322511 -+1m, 0.325081 -+1m, 0.327650 -+1m, 0.330219 -+1m, 0.332788 -+1m, 0.334574 -+1m, 0.333631 -+1m, 0.332688 -+1m, 0.331746 -+1m, 0.330803 -+1m, 0.330921 -+1m, 0.335056 -+1m, 0.339191 -+1m, 0.343326 -+1m, 0.347461 -+1m, 0.350591 -+1m, 0.349574 -+1m, 0.348557 -+1m, 0.347539 -+1m, 0.346522 -+1m, 0.345681 -+1m, 0.345633 -+1m, 0.345586 -+1m, 0.345539 -+1m, 0.345492 -+1m, 0.346354 -+1m, 0.351745 -+1m, 0.357137 -+1m, 0.362528 -+1m, 0.367919 -+1m, 0.372796 -+1m, 0.374830 -+1m, 0.376865 -+1m, 0.378899 -+1m, 0.380934 -+1m, 0.382623 -+1m, 0.382179 -+1m, 0.381736 -+1m, 0.381293 -+1m, 0.380850 -+1m, 0.379902 -+1m, 0.375439 -+1m, 0.370975 -+1m, 0.366512 -+1m, 0.362048 -+1m, 0.359051 -+1m, 0.367737 -+1m, 0.376423 -+1m, 0.385109 -+1m, 0.393795 -+1m, 0.400725 -+1m, 0.391415 -+1m, 0.382106 -+1m, 0.372797 -+1m, 0.363487 -+1m, 0.355365 -+1m, 0.360246 -+1m, 0.365127 -+1m, 0.370008 -+1m, 0.374890 -+1m, 0.379203 -+1m, 0.375933 -+1m, 0.372664 -+1m, 0.369394 -+1m, 0.366125 -+1m, 0.362837 -+1m, 0.359245 -+1m, 0.355653 -+1m, 0.352061 -+1m, 0.348469 -+1m, 0.345012 -+1m, 0.344638 -+1m, 0.344263 -+1m, 0.343889 -+1m, 0.343515 -+1m, 0.343042 -+1m, 0.339145 -+1m, 0.335247 -+1m, 0.331349 -+1m, 0.327451 -+1m, 0.323546 -+1m, 0.319130 -+1m, 0.314714 -+1m, 0.310299 -+1m, 0.305883 -+1m, 0.301467 +2013-08-28 00:00:00, 0.241766 ++1m, 0.243147 ++1m, 0.244528 ++1m, 0.245908 ++1m, 0.247289 ++1m, 0.248670 ++1m, 0.245771 ++1m, 0.242811 ++1m, 0.239852 ++1m, 0.236892 ++1m, 0.233933 ++1m, 0.235427 ++1m, 0.237050 ++1m, 0.238672 ++1m, 0.240294 ++1m, 0.241916 ++1m, 0.241126 ++1m, 0.240231 ++1m, 0.239335 ++1m, 0.238440 ++1m, 0.237544 ++1m, 0.236195 ++1m, 0.234818 ++1m, 0.233442 ++1m, 0.232065 ++1m, 0.230689 ++1m, 0.231470 ++1m, 0.232412 ++1m, 0.233354 ++1m, 0.234297 ++1m, 0.235239 ++1m, 0.234936 ++1m, 0.234520 ++1m, 0.234103 ++1m, 0.233686 ++1m, 0.233270 ++1m, 0.233278 ++1m, 0.233332 ++1m, 0.233387 ++1m, 0.233441 ++1m, 0.233495 ++1m, 0.231224 ++1m, 0.228660 ++1m, 0.226096 ++1m, 0.223533 ++1m, 0.220969 ++1m, 0.220822 ++1m, 0.221021 ++1m, 0.221220 ++1m, 0.221419 ++1m, 0.221618 ++1m, 0.221828 ++1m, 0.222040 ++1m, 0.222253 ++1m, 0.222465 ++1m, 0.222677 ++1m, 0.222844 ++1m, 0.223003 ++1m, 0.223162 ++1m, 0.223321 ++1m, 0.223480 ++1m, 0.223259 ++1m, 0.222961 ++1m, 0.222663 ++1m, 0.222365 ++1m, 0.222067 ++1m, 0.222466 ++1m, 0.223019 ++1m, 0.223573 ++1m, 0.224126 ++1m, 0.224679 ++1m, 0.224661 ++1m, 0.224503 ++1m, 0.224346 ++1m, 0.224189 ++1m, 0.224032 ++1m, 0.222787 ++1m, 0.221254 ++1m, 0.219722 ++1m, 0.218189 ++1m, 0.216657 ++1m, 0.217125 ++1m, 0.218167 ++1m, 0.219209 ++1m, 0.220252 ++1m, 0.221294 ++1m, 0.219722 ++1m, 0.217338 ++1m, 0.214954 ++1m, 0.212570 ++1m, 0.210186 ++1m, 0.209746 ++1m, 0.209956 ++1m, 0.210167 ++1m, 0.210377 ++1m, 0.210587 ++1m, 0.211425 ++1m, 0.212488 ++1m, 0.213551 ++1m, 0.214614 ++1m, 0.215677 ++1m, 0.215553 ++1m, 0.214970 ++1m, 0.214387 ++1m, 0.213805 ++1m, 0.213222 ++1m, 0.212366 ++1m, 0.211397 ++1m, 0.210428 ++1m, 0.209460 ++1m, 0.208491 ++1m, 0.208696 ++1m, 0.209420 ++1m, 0.210144 ++1m, 0.210868 ++1m, 0.211592 ++1m, 0.211443 ++1m, 0.210881 ++1m, 0.210320 ++1m, 0.209758 ++1m, 0.209197 ++1m, 0.209802 ++1m, 0.210993 ++1m, 0.212184 ++1m, 0.213375 ++1m, 0.214567 ++1m, 0.213534 ++1m, 0.211313 ++1m, 0.209092 ++1m, 0.206871 ++1m, 0.204649 ++1m, 0.204855 ++1m, 0.206439 ++1m, 0.208024 ++1m, 0.209608 ++1m, 0.211193 ++1m, 0.211206 ++1m, 0.210271 ++1m, 0.209335 ++1m, 0.208400 ++1m, 0.207465 ++1m, 0.207536 ++1m, 0.208251 ++1m, 0.208965 ++1m, 0.209680 ++1m, 0.210395 ++1m, 0.209883 ++1m, 0.208540 ++1m, 0.207197 ++1m, 0.205854 ++1m, 0.204511 ++1m, 0.204859 ++1m, 0.206422 ++1m, 0.207986 ++1m, 0.209549 ++1m, 0.211112 ++1m, 0.211285 ++1m, 0.210400 ++1m, 0.209514 ++1m, 0.208629 ++1m, 0.207743 ++1m, 0.207328 ++1m, 0.207292 ++1m, 0.207255 ++1m, 0.207218 ++1m, 0.207181 ++1m, 0.206490 ++1m, 0.205241 ++1m, 0.203991 ++1m, 0.202742 ++1m, 0.201493 ++1m, 0.200902 ++1m, 0.200905 ++1m, 0.200908 ++1m, 0.200911 ++1m, 0.200913 ++1m, 0.201755 ++1m, 0.203396 ++1m, 0.205037 ++1m, 0.206677 ++1m, 0.208318 ++1m, 0.208488 ++1m, 0.207176 ++1m, 0.205864 ++1m, 0.204552 ++1m, 0.203240 ++1m, 0.203157 ++1m, 0.204383 ++1m, 0.205609 ++1m, 0.206835 ++1m, 0.208061 ++1m, 0.208520 ++1m, 0.208115 ++1m, 0.207711 ++1m, 0.207306 ++1m, 0.206902 ++1m, 0.206871 ++1m, 0.207284 ++1m, 0.207697 ++1m, 0.208111 ++1m, 0.208524 ++1m, 0.208938 ++1m, 0.209353 ++1m, 0.209767 ++1m, 0.210182 ++1m, 0.210596 ++1m, 0.210134 ++1m, 0.208504 ++1m, 0.206874 ++1m, 0.205244 ++1m, 0.203614 ++1m, 0.203002 ++1m, 0.203827 ++1m, 0.204651 ++1m, 0.205476 ++1m, 0.206300 ++1m, 0.206306 ++1m, 0.205088 ++1m, 0.203870 ++1m, 0.202651 ++1m, 0.201433 ++1m, 0.201004 ++1m, 0.201826 ++1m, 0.202647 ++1m, 0.203469 ++1m, 0.204291 ++1m, 0.205265 ++1m, 0.206494 ++1m, 0.207724 ++1m, 0.208954 ++1m, 0.210184 ++1m, 0.210839 ++1m, 0.210470 ++1m, 0.210100 ++1m, 0.209731 ++1m, 0.209361 ++1m, 0.209352 ++1m, 0.210030 ++1m, 0.210707 ++1m, 0.211384 ++1m, 0.212061 ++1m, 0.212521 ++1m, 0.212541 ++1m, 0.212561 ++1m, 0.212581 ++1m, 0.212601 ++1m, 0.212622 ++1m, 0.212645 ++1m, 0.212668 ++1m, 0.212691 ++1m, 0.212714 ++1m, 0.212479 ++1m, 0.211649 ++1m, 0.210820 ++1m, 0.209991 ++1m, 0.209161 ++1m, 0.208221 ++1m, 0.207009 ++1m, 0.205797 ++1m, 0.204585 ++1m, 0.203372 ++1m, 0.203256 ++1m, 0.206026 ++1m, 0.208795 ++1m, 0.211565 ++1m, 0.214334 ++1m, 0.216212 ++1m, 0.215571 ++1m, 0.214930 ++1m, 0.214289 ++1m, 0.213648 ++1m, 0.213303 ++1m, 0.213858 ++1m, 0.214413 ++1m, 0.214968 ++1m, 0.215523 ++1m, 0.215765 ++1m, 0.214978 ++1m, 0.214191 ++1m, 0.213404 ++1m, 0.212617 ++1m, 0.211708 ++1m, 0.210363 ++1m, 0.209019 ++1m, 0.207675 ++1m, 0.206331 ++1m, 0.205699 ++1m, 0.207819 ++1m, 0.209940 ++1m, 0.212060 ++1m, 0.214181 ++1m, 0.216173 ++1m, 0.217625 ++1m, 0.219077 ++1m, 0.220529 ++1m, 0.221981 ++1m, 0.223073 ++1m, 0.222496 ++1m, 0.221919 ++1m, 0.221342 ++1m, 0.220765 ++1m, 0.220006 ++1m, 0.218311 ++1m, 0.216616 ++1m, 0.214921 ++1m, 0.213227 ++1m, 0.212057 ++1m, 0.213867 ++1m, 0.215678 ++1m, 0.217488 ++1m, 0.219298 ++1m, 0.220788 ++1m, 0.220244 ++1m, 0.219699 ++1m, 0.219155 ++1m, 0.218610 ++1m, 0.218166 ++1m, 0.218442 ++1m, 0.218717 ++1m, 0.218993 ++1m, 0.219269 ++1m, 0.219649 ++1m, 0.220885 ++1m, 0.222122 ++1m, 0.223358 ++1m, 0.224595 ++1m, 0.225782 ++1m, 0.226493 ++1m, 0.227204 ++1m, 0.227916 ++1m, 0.228627 ++1m, 0.229355 ++1m, 0.230269 ++1m, 0.231183 ++1m, 0.232097 ++1m, 0.233012 ++1m, 0.233676 ++1m, 0.230818 ++1m, 0.227959 ++1m, 0.225101 ++1m, 0.222242 ++1m, 0.219612 ++1m, 0.221107 ++1m, 0.222603 ++1m, 0.224099 ++1m, 0.225595 ++1m, 0.227055 ++1m, 0.227601 ++1m, 0.228148 ++1m, 0.228694 ++1m, 0.229241 ++1m, 0.229809 ++1m, 0.231278 ++1m, 0.232747 ++1m, 0.234216 ++1m, 0.235685 ++1m, 0.237150 ++1m, 0.238281 ++1m, 0.239412 ++1m, 0.240543 ++1m, 0.241674 ++1m, 0.242805 ++1m, 0.244551 ++1m, 0.246299 ++1m, 0.248047 ++1m, 0.249795 ++1m, 0.251543 ++1m, 0.251748 ++1m, 0.251926 ++1m, 0.252103 ++1m, 0.252281 ++1m, 0.252458 ++1m, 0.253655 ++1m, 0.254885 ++1m, 0.256115 ++1m, 0.257345 ++1m, 0.258576 ++1m, 0.259165 ++1m, 0.259723 ++1m, 0.260282 ++1m, 0.260840 ++1m, 0.261399 ++1m, 0.262141 ++1m, 0.262894 ++1m, 0.263648 ++1m, 0.264401 ++1m, 0.265154 ++1m, 0.262487 ++1m, 0.259549 ++1m, 0.256611 ++1m, 0.253673 ++1m, 0.250735 ++1m, 0.254199 ++1m, 0.258274 ++1m, 0.262349 ++1m, 0.266425 ++1m, 0.270500 ++1m, 0.270185 ++1m, 0.269377 ++1m, 0.268569 ++1m, 0.267761 ++1m, 0.266953 ++1m, 0.268050 ++1m, 0.269395 ++1m, 0.270740 ++1m, 0.272084 ++1m, 0.273429 ++1m, 0.276155 ++1m, 0.279085 ++1m, 0.282016 ++1m, 0.284946 ++1m, 0.287877 ++1m, 0.286309 ++1m, 0.283992 ++1m, 0.281675 ++1m, 0.279358 ++1m, 0.277041 ++1m, 0.279466 ++1m, 0.282774 ++1m, 0.286082 ++1m, 0.289390 ++1m, 0.292698 ++1m, 0.298190 ++1m, 0.304131 ++1m, 0.310073 ++1m, 0.316015 ++1m, 0.321957 ++1m, 0.320661 ++1m, 0.317725 ++1m, 0.314790 ++1m, 0.311854 ++1m, 0.308919 ++1m, 0.308506 ++1m, 0.308717 ++1m, 0.308929 ++1m, 0.309141 ++1m, 0.309353 ++1m, 0.310369 ++1m, 0.311602 ++1m, 0.312835 ++1m, 0.314068 ++1m, 0.315301 ++1m, 0.318650 ++1m, 0.322618 ++1m, 0.326586 ++1m, 0.330555 ++1m, 0.334523 ++1m, 0.336308 ++1m, 0.337402 ++1m, 0.338495 ++1m, 0.339589 ++1m, 0.340682 ++1m, 0.338936 ++1m, 0.336222 ++1m, 0.333508 ++1m, 0.330794 ++1m, 0.328080 ++1m, 0.332903 ++1m, 0.340490 ++1m, 0.348078 ++1m, 0.355665 ++1m, 0.363253 ++1m, 0.363248 ++1m, 0.360258 ++1m, 0.357268 ++1m, 0.354278 ++1m, 0.351288 ++1m, 0.353795 ++1m, 0.358615 ++1m, 0.363434 ++1m, 0.368254 ++1m, 0.373073 ++1m, 0.373912 ++1m, 0.372961 ++1m, 0.372011 ++1m, 0.371060 ++1m, 0.370109 ++1m, 0.371173 ++1m, 0.373202 ++1m, 0.375231 ++1m, 0.377261 ++1m, 0.379290 ++1m, 0.382262 ++1m, 0.385715 ++1m, 0.389168 ++1m, 0.392620 ++1m, 0.396073 ++1m, 0.396396 ++1m, 0.395018 ++1m, 0.393640 ++1m, 0.392263 ++1m, 0.390885 ++1m, 0.393387 ++1m, 0.398127 ++1m, 0.402867 ++1m, 0.407608 ++1m, 0.412348 ++1m, 0.417306 ++1m, 0.422398 ++1m, 0.427490 ++1m, 0.432582 ++1m, 0.437674 ++1m, 0.441531 ++1m, 0.444584 ++1m, 0.447638 ++1m, 0.450692 ++1m, 0.453745 ++1m, 0.453973 ++1m, 0.452256 ++1m, 0.450538 ++1m, 0.448821 ++1m, 0.447103 ++1m, 0.448788 ++1m, 0.452952 ++1m, 0.457116 ++1m, 0.461280 ++1m, 0.465445 ++1m, 0.466463 ++1m, 0.465055 ++1m, 0.463646 ++1m, 0.462237 ++1m, 0.460829 ++1m, 0.460724 ++1m, 0.461683 ++1m, 0.462642 ++1m, 0.463602 ++1m, 0.464561 ++1m, 0.469697 ++1m, 0.478441 ++1m, 0.487185 ++1m, 0.495929 ++1m, 0.504672 ++1m, 0.505769 ++1m, 0.499882 ++1m, 0.493995 ++1m, 0.488108 ++1m, 0.482221 ++1m, 0.484360 ++1m, 0.494251 ++1m, 0.504142 ++1m, 0.514034 ++1m, 0.523925 ++1m, 0.527751 ++1m, 0.525384 ++1m, 0.523017 ++1m, 0.520650 ++1m, 0.518283 ++1m, 0.515893 ++1m, 0.513478 ++1m, 0.511063 ++1m, 0.508648 ++1m, 0.506234 ++1m, 0.507668 ++1m, 0.513498 ++1m, 0.519328 ++1m, 0.525158 ++1m, 0.530988 ++1m, 0.534626 ++1m, 0.535616 ++1m, 0.536607 ++1m, 0.537598 ++1m, 0.538588 ++1m, 0.538230 ++1m, 0.536148 ++1m, 0.534066 ++1m, 0.531984 ++1m, 0.529903 ++1m, 0.534551 ++1m, 0.548302 ++1m, 0.562054 ++1m, 0.575805 ++1m, 0.589556 ++1m, 0.593174 ++1m, 0.582280 ++1m, 0.571385 ++1m, 0.560490 ++1m, 0.549595 ++1m, 0.542154 ++1m, 0.539953 ++1m, 0.537752 ++1m, 0.535551 ++1m, 0.533350 ++1m, 0.536895 ++1m, 0.549684 ++1m, 0.562473 ++1m, 0.575262 ++1m, 0.588050 ++1m, 0.595417 ++1m, 0.593523 ++1m, 0.591629 ++1m, 0.589736 ++1m, 0.587842 ++1m, 0.589211 ++1m, 0.596496 ++1m, 0.603782 ++1m, 0.611067 ++1m, 0.618353 ++1m, 0.620227 ++1m, 0.611663 ++1m, 0.603099 ++1m, 0.594536 ++1m, 0.585972 ++1m, 0.582125 ++1m, 0.587964 ++1m, 0.593802 ++1m, 0.599640 ++1m, 0.605479 ++1m, 0.608268 ++1m, 0.604384 ++1m, 0.600499 ++1m, 0.596615 ++1m, 0.592730 ++1m, 0.593972 ++1m, 0.607196 ++1m, 0.620419 ++1m, 0.633643 ++1m, 0.646866 ++1m, 0.653312 ++1m, 0.642814 ++1m, 0.632316 ++1m, 0.621818 ++1m, 0.611321 ++1m, 0.607301 ++1m, 0.620639 ++1m, 0.633977 ++1m, 0.647315 ++1m, 0.660653 ++1m, 0.666440 ++1m, 0.650491 ++1m, 0.634542 ++1m, 0.618592 ++1m, 0.602643 ++1m, 0.594820 ++1m, 0.612190 ++1m, 0.629560 ++1m, 0.646930 ++1m, 0.664300 ++1m, 0.678658 ++1m, 0.682934 ++1m, 0.687209 ++1m, 0.691485 ++1m, 0.695760 ++1m, 0.697681 ++1m, 0.691057 ++1m, 0.684433 ++1m, 0.677809 ++1m, 0.671184 ++1m, 0.666186 ++1m, 0.667608 ++1m, 0.669030 ++1m, 0.670451 ++1m, 0.671873 ++1m, 0.673889 ++1m, 0.678470 ++1m, 0.683052 ++1m, 0.687633 ++1m, 0.692214 ++1m, 0.695887 ++1m, 0.695250 ++1m, 0.694612 ++1m, 0.693975 ++1m, 0.693338 ++1m, 0.692939 ++1m, 0.693785 ++1m, 0.694631 ++1m, 0.695478 ++1m, 0.696324 ++1m, 0.696526 ++1m, 0.692966 ++1m, 0.689406 ++1m, 0.685847 ++1m, 0.682287 ++1m, 0.680534 ++1m, 0.690622 ++1m, 0.700710 ++1m, 0.710798 ++1m, 0.720886 ++1m, 0.730881 ++1m, 0.740180 ++1m, 0.749479 ++1m, 0.758778 ++1m, 0.768077 ++1m, 0.775691 ++1m, 0.768869 ++1m, 0.762047 ++1m, 0.755225 ++1m, 0.748403 ++1m, 0.742472 ++1m, 0.745481 ++1m, 0.748491 ++1m, 0.751500 ++1m, 0.754509 ++1m, 0.757045 ++1m, 0.753876 ++1m, 0.750707 ++1m, 0.747537 ++1m, 0.744368 ++1m, 0.741265 ++1m, 0.739151 ++1m, 0.737038 ++1m, 0.734924 ++1m, 0.732811 ++1m, 0.731415 ++1m, 0.744002 ++1m, 0.756590 ++1m, 0.769178 ++1m, 0.781766 ++1m, 0.793928 ++1m, 0.794283 ++1m, 0.794639 ++1m, 0.794994 ++1m, 0.795350 ++1m, 0.795739 ++1m, 0.797678 ++1m, 0.799617 ++1m, 0.801557 ++1m, 0.803496 ++1m, 0.805386 ++1m, 0.800178 ++1m, 0.794970 ++1m, 0.789762 ++1m, 0.784554 ++1m, 0.779346 ++1m, 0.787739 ++1m, 0.796227 ++1m, 0.804716 ++1m, 0.813204 ++1m, 0.821693 ++1m, 0.813917 ++1m, 0.805794 ++1m, 0.797672 ++1m, 0.789549 ++1m, 0.781426 ++1m, 0.799239 ++1m, 0.817988 ++1m, 0.836736 ++1m, 0.855485 ++1m, 0.874234 ++1m, 0.864736 ++1m, 0.853789 ++1m, 0.842843 ++1m, 0.831896 ++1m, 0.820950 ++1m, 0.829602 ++1m, 0.839567 ++1m, 0.849531 ++1m, 0.859495 ++1m, 0.869459 ++1m, 0.870771 ++1m, 0.871363 ++1m, 0.871956 ++1m, 0.872549 ++1m, 0.873142 ++1m, 0.871804 ++1m, 0.870274 ++1m, 0.868744 ++1m, 0.867214 ++1m, 0.865684 ++1m, 0.866654 ++1m, 0.867916 ++1m, 0.869177 ++1m, 0.870439 ++1m, 0.871700 ++1m, 0.874678 ++1m, 0.877886 ++1m, 0.881094 ++1m, 0.884302 ++1m, 0.887510 ++1m, 0.891387 ++1m, 0.895366 ++1m, 0.899346 ++1m, 0.903325 ++1m, 0.907305 ++1m, 0.912080 ++1m, 0.916992 ++1m, 0.921904 ++1m, 0.926816 ++1m, 0.931728 ++1m, 0.927894 ++1m, 0.922392 ++1m, 0.916890 ++1m, 0.911387 ++1m, 0.905885 ++1m, 0.910907 ++1m, 0.918149 ++1m, 0.925391 ++1m, 0.932633 ++1m, 0.939875 ++1m, 0.941082 ++1m, 0.940889 ++1m, 0.940697 ++1m, 0.940505 ++1m, 0.940312 ++1m, 0.932065 ++1m, 0.921778 ++1m, 0.911491 ++1m, 0.901204 ++1m, 0.890917 ++1m, 0.898610 ++1m, 0.911256 ++1m, 0.923903 ++1m, 0.936550 ++1m, 0.949196 ++1m, 0.949972 ++1m, 0.947202 ++1m, 0.944433 ++1m, 0.941663 ++1m, 0.938893 ++1m, 0.928625 ++1m, 0.915938 ++1m, 0.903251 ++1m, 0.890564 ++1m, 0.877877 ++1m, 0.880108 ++1m, 0.887521 ++1m, 0.894935 ++1m, 0.902349 ++1m, 0.909762 ++1m, 0.920595 ++1m, 0.932703 ++1m, 0.944811 ++1m, 0.956919 ++1m, 0.969027 ++1m, 0.969230 ++1m, 0.964672 ++1m, 0.960113 ++1m, 0.955555 ++1m, 0.950997 ++1m, 0.948776 ++1m, 0.947556 ++1m, 0.946335 ++1m, 0.945115 ++1m, 0.943895 ++1m, 0.935305 ++1m, 0.923349 ++1m, 0.911393 ++1m, 0.899437 ++1m, 0.887480 ++1m, 0.895984 ++1m, 0.914452 ++1m, 0.932920 ++1m, 0.951387 ++1m, 0.969855 ++1m, 0.970176 ++1m, 0.961087 ++1m, 0.951997 ++1m, 0.942908 ++1m, 0.933819 ++1m, 0.935361 ++1m, 0.942764 ++1m, 0.950167 ++1m, 0.957570 ++1m, 0.964973 ++1m, 0.961336 ++1m, 0.951233 ++1m, 0.941131 ++1m, 0.931028 ++1m, 0.920925 ++1m, 0.924638 ++1m, 0.936935 ++1m, 0.949233 ++1m, 0.961531 ++1m, 0.973829 ++1m, 0.977238 ++1m, 0.974790 ++1m, 0.972341 ++1m, 0.969893 ++1m, 0.967445 ++1m, 0.962175 ++1m, 0.954936 ++1m, 0.947697 ++1m, 0.940457 ++1m, 0.933218 ++1m, 0.935485 ++1m, 0.944783 ++1m, 0.954080 ++1m, 0.963377 ++1m, 0.972675 ++1m, 0.974409 ++1m, 0.970224 ++1m, 0.966039 ++1m, 0.961855 ++1m, 0.957670 ++1m, 0.960599 ++1m, 0.969420 ++1m, 0.978241 ++1m, 0.987061 ++1m, 0.995882 ++1m, 0.996670 ++1m, 0.990424 ++1m, 0.984178 ++1m, 0.977931 ++1m, 0.971685 ++1m, 0.970768 ++1m, 0.974788 ++1m, 0.978808 ++1m, 0.982827 ++1m, 0.986847 ++1m, 0.984968 ++1m, 0.977313 ++1m, 0.969659 ++1m, 0.962004 ++1m, 0.954350 ++1m, 0.942768 ++1m, 0.927120 ++1m, 0.911472 ++1m, 0.895823 ++1m, 0.880175 ++1m, 0.875845 ++1m, 0.883908 ++1m, 0.891970 ++1m, 0.900032 ++1m, 0.908095 ++1m, 0.911900 ++1m, 0.910778 ++1m, 0.909655 ++1m, 0.908533 ++1m, 0.907410 ++1m, 0.907281 ++1m, 0.908369 ++1m, 0.909457 ++1m, 0.910545 ++1m, 0.911633 ++1m, 0.918841 ++1m, 0.933980 ++1m, 0.949120 ++1m, 0.964259 ++1m, 0.979399 ++1m, 0.974267 ++1m, 0.941325 ++1m, 0.908383 ++1m, 0.875441 ++1m, 0.842499 ++1m, 0.833637 ++1m, 0.859762 ++1m, 0.885888 ++1m, 0.912014 ++1m, 0.938140 ++1m, 0.951700 ++1m, 0.945909 ++1m, 0.940118 ++1m, 0.934328 ++1m, 0.928537 ++1m, 0.924780 ++1m, 0.924342 ++1m, 0.923904 ++1m, 0.923466 ++1m, 0.923028 ++1m, 0.920917 ++1m, 0.915904 ++1m, 0.910891 ++1m, 0.905878 ++1m, 0.900865 ++1m, 0.898290 ++1m, 0.900201 ++1m, 0.902113 ++1m, 0.904025 ++1m, 0.905936 ++1m, 0.911819 ++1m, 0.925479 ++1m, 0.939139 ++1m, 0.952800 ++1m, 0.966460 ++1m, 0.969697 ++1m, 0.951190 ++1m, 0.932683 ++1m, 0.914175 ++1m, 0.895668 ++1m, 0.884981 ++1m, 0.891692 ++1m, 0.898402 ++1m, 0.905112 ++1m, 0.911823 ++1m, 0.920855 ++1m, 0.935407 ++1m, 0.949959 ++1m, 0.964511 ++1m, 0.979063 ++1m, 0.980515 ++1m, 0.948651 ++1m, 0.916786 ++1m, 0.884922 ++1m, 0.853058 ++1m, 0.836844 ++1m, 0.863312 ++1m, 0.889779 ++1m, 0.916247 ++1m, 0.942715 ++1m, 0.960603 ++1m, 0.953339 ++1m, 0.946074 ++1m, 0.938810 ++1m, 0.931545 ++1m, 0.925881 ++1m, 0.925271 ++1m, 0.924660 ++1m, 0.924050 ++1m, 0.923440 ++1m, 0.921274 ++1m, 0.913795 ++1m, 0.906315 ++1m, 0.898836 ++1m, 0.891356 ++1m, 0.885329 ++1m, 0.884684 ++1m, 0.884038 ++1m, 0.883392 ++1m, 0.882747 ++1m, 0.883440 ++1m, 0.889538 ++1m, 0.895635 ++1m, 0.901733 ++1m, 0.907830 ++1m, 0.910020 ++1m, 0.894957 ++1m, 0.879895 ++1m, 0.864832 ++1m, 0.849770 ++1m, 0.838421 ++1m, 0.845111 ++1m, 0.851801 ++1m, 0.858492 ++1m, 0.865182 ++1m, 0.869028 ++1m, 0.857582 ++1m, 0.846136 ++1m, 0.834690 ++1m, 0.823244 ++1m, 0.815736 ++1m, 0.831850 ++1m, 0.847965 ++1m, 0.864079 ++1m, 0.880194 ++1m, 0.891355 ++1m, 0.869047 ++1m, 0.846738 ++1m, 0.824430 ++1m, 0.802122 ++1m, 0.784734 ++1m, 0.805222 ++1m, 0.825710 ++1m, 0.846197 ++1m, 0.866685 ++1m, 0.882728 ++1m, 0.859226 ++1m, 0.835724 ++1m, 0.812222 ++1m, 0.788720 ++1m, 0.768770 ++1m, 0.786035 ++1m, 0.803300 ++1m, 0.820565 ++1m, 0.837831 ++1m, 0.852691 ++1m, 0.837086 ++1m, 0.821482 ++1m, 0.805878 ++1m, 0.790274 ++1m, 0.775340 ++1m, 0.771052 ++1m, 0.766764 ++1m, 0.762476 ++1m, 0.758188 ++1m, 0.754572 ++1m, 0.765126 ++1m, 0.775680 ++1m, 0.786234 ++1m, 0.796788 ++1m, 0.806623 ++1m, 0.794239 ++1m, 0.781855 ++1m, 0.769472 ++1m, 0.757088 ++1m, 0.744947 ++1m, 0.746503 ++1m, 0.748059 ++1m, 0.749615 ++1m, 0.751171 ++1m, 0.752778 ++1m, 0.769143 ++1m, 0.785509 ++1m, 0.801874 ++1m, 0.818239 ++1m, 0.834604 ++1m, 0.814432 ++1m, 0.793875 ++1m, 0.773318 ++1m, 0.752760 ++1m, 0.732203 ++1m, 0.729089 ++1m, 0.726412 ++1m, 0.723735 ++1m, 0.721057 ++1m, 0.718380 ++1m, 0.719477 ++1m, 0.720724 ++1m, 0.721971 ++1m, 0.723218 ++1m, 0.724466 ++1m, 0.718061 ++1m, 0.711234 ++1m, 0.704407 ++1m, 0.697580 ++1m, 0.690753 ++1m, 0.687737 ++1m, 0.684992 ++1m, 0.682247 ++1m, 0.679501 ++1m, 0.676756 ++1m, 0.682467 ++1m, 0.688916 ++1m, 0.695364 ++1m, 0.701812 ++1m, 0.708260 ++1m, 0.706360 ++1m, 0.703593 ++1m, 0.700826 ++1m, 0.698059 ++1m, 0.695292 ++1m, 0.677207 ++1m, 0.657268 ++1m, 0.637328 ++1m, 0.617389 ++1m, 0.597450 ++1m, 0.598484 ++1m, 0.602433 ++1m, 0.606381 ++1m, 0.610329 ++1m, 0.614277 ++1m, 0.612482 ++1m, 0.609784 ++1m, 0.607086 ++1m, 0.604388 ++1m, 0.601691 ++1m, 0.597593 ++1m, 0.593249 ++1m, 0.588905 ++1m, 0.584561 ++1m, 0.580217 ++1m, 0.578793 ++1m, 0.577941 ++1m, 0.577089 ++1m, 0.576237 ++1m, 0.575385 ++1m, 0.560604 ++1m, 0.542813 ++1m, 0.525022 ++1m, 0.507231 ++1m, 0.489440 ++1m, 0.489830 ++1m, 0.494530 ++1m, 0.499231 ++1m, 0.503931 ++1m, 0.508632 ++1m, 0.516498 ++1m, 0.525183 ++1m, 0.533869 ++1m, 0.542554 ++1m, 0.551240 ++1m, 0.547171 ++1m, 0.539514 ++1m, 0.531858 ++1m, 0.524202 ++1m, 0.516545 ++1m, 0.514296 ++1m, 0.513693 ++1m, 0.513091 ++1m, 0.512488 ++1m, 0.511885 ++1m, 0.510832 ++1m, 0.509631 ++1m, 0.508430 ++1m, 0.507229 ++1m, 0.506027 ++1m, 0.511588 ++1m, 0.519540 ++1m, 0.527492 ++1m, 0.535445 ++1m, 0.543397 ++1m, 0.536305 ++1m, 0.523498 ++1m, 0.510691 ++1m, 0.497884 ++1m, 0.485078 ++1m, 0.481098 ++1m, 0.480711 ++1m, 0.480323 ++1m, 0.479936 ++1m, 0.479548 ++1m, 0.485361 ++1m, 0.493872 ++1m, 0.502382 ++1m, 0.510893 ++1m, 0.519404 ++1m, 0.513479 ++1m, 0.500853 ++1m, 0.488227 ++1m, 0.475601 ++1m, 0.462975 ++1m, 0.463203 ++1m, 0.469793 ++1m, 0.476382 ++1m, 0.482971 ++1m, 0.489560 ++1m, 0.487922 ++1m, 0.481950 ++1m, 0.475978 ++1m, 0.470007 ++1m, 0.464035 ++1m, 0.462834 ++1m, 0.464304 ++1m, 0.465773 ++1m, 0.467243 ++1m, 0.468712 ++1m, 0.469174 ++1m, 0.469037 ++1m, 0.468900 ++1m, 0.468763 ++1m, 0.468626 ++1m, 0.465880 ++1m, 0.461490 ++1m, 0.457100 ++1m, 0.452710 ++1m, 0.448320 ++1m, 0.450580 ++1m, 0.457286 ++1m, 0.463993 ++1m, 0.470699 ++1m, 0.477405 ++1m, 0.477641 ++1m, 0.473294 ++1m, 0.468947 ++1m, 0.464600 ++1m, 0.460253 ++1m, 0.459227 ++1m, 0.460692 ++1m, 0.462158 ++1m, 0.463623 ++1m, 0.465088 ++1m, 0.466797 ++1m, 0.468698 ++1m, 0.470599 ++1m, 0.472501 ++1m, 0.474402 ++1m, 0.473397 ++1m, 0.469952 ++1m, 0.466507 ++1m, 0.463062 ++1m, 0.459617 ++1m, 0.459135 ++1m, 0.461284 ++1m, 0.463434 ++1m, 0.465584 ++1m, 0.467733 ++1m, 0.470190 ++1m, 0.472934 ++1m, 0.475678 ++1m, 0.478422 ++1m, 0.481166 ++1m, 0.478677 ++1m, 0.470991 ++1m, 0.463304 ++1m, 0.455618 ++1m, 0.447932 ++1m, 0.440665 ++1m, 0.433837 ++1m, 0.427010 ++1m, 0.420182 ++1m, 0.413355 ++1m, 0.411414 ++1m, 0.414900 ++1m, 0.418386 ++1m, 0.421872 ++1m, 0.425358 ++1m, 0.426210 ++1m, 0.423971 ++1m, 0.421731 ++1m, 0.419492 ++1m, 0.417252 ++1m, 0.417889 ++1m, 0.422098 ++1m, 0.426307 ++1m, 0.430516 ++1m, 0.434726 ++1m, 0.435469 ++1m, 0.431656 ++1m, 0.427843 ++1m, 0.424030 ++1m, 0.420217 ++1m, 0.416178 ++1m, 0.411823 ++1m, 0.407468 ++1m, 0.403113 ++1m, 0.398759 ++1m, 0.395928 ++1m, 0.395345 ++1m, 0.394761 ++1m, 0.394178 ++1m, 0.393594 ++1m, 0.392290 ++1m, 0.389858 ++1m, 0.387425 ++1m, 0.384993 ++1m, 0.382561 ++1m, 0.380948 ++1m, 0.380693 ++1m, 0.380438 ++1m, 0.380182 ++1m, 0.379927 ++1m, 0.380042 ++1m, 0.380811 ++1m, 0.381579 ++1m, 0.382347 ++1m, 0.383115 ++1m, 0.383209 ++1m, 0.382041 ++1m, 0.380873 ++1m, 0.379706 ++1m, 0.378538 ++1m, 0.378154 ++1m, 0.379328 ++1m, 0.380503 ++1m, 0.381677 ++1m, 0.382852 ++1m, 0.382500 ++1m, 0.378914 ++1m, 0.375327 ++1m, 0.371741 ++1m, 0.368154 ++1m, 0.365185 ++1m, 0.363611 ++1m, 0.362036 ++1m, 0.360462 ++1m, 0.358887 ++1m, 0.357566 ++1m, 0.356856 ++1m, 0.356146 ++1m, 0.355437 ++1m, 0.354727 ++1m, 0.352813 ++1m, 0.347783 ++1m, 0.342754 ++1m, 0.337724 ++1m, 0.332695 ++1m, 0.329010 ++1m, 0.329058 ++1m, 0.329105 ++1m, 0.329153 ++1m, 0.329201 ++1m, 0.328870 ++1m, 0.327407 ++1m, 0.325944 ++1m, 0.324482 ++1m, 0.323019 ++1m, 0.322511 ++1m, 0.325081 ++1m, 0.327650 ++1m, 0.330219 ++1m, 0.332788 ++1m, 0.334574 ++1m, 0.333631 ++1m, 0.332688 ++1m, 0.331746 ++1m, 0.330803 ++1m, 0.330921 ++1m, 0.335056 ++1m, 0.339191 ++1m, 0.343326 ++1m, 0.347461 ++1m, 0.350591 ++1m, 0.349574 ++1m, 0.348557 ++1m, 0.347539 ++1m, 0.346522 ++1m, 0.345681 ++1m, 0.345633 ++1m, 0.345586 ++1m, 0.345539 ++1m, 0.345492 ++1m, 0.346354 ++1m, 0.351745 ++1m, 0.357137 ++1m, 0.362528 ++1m, 0.367919 ++1m, 0.372796 ++1m, 0.374830 ++1m, 0.376865 ++1m, 0.378899 ++1m, 0.380934 ++1m, 0.382623 ++1m, 0.382179 ++1m, 0.381736 ++1m, 0.381293 ++1m, 0.380850 ++1m, 0.379902 ++1m, 0.375439 ++1m, 0.370975 ++1m, 0.366512 ++1m, 0.362048 ++1m, 0.359051 ++1m, 0.367737 ++1m, 0.376423 ++1m, 0.385109 ++1m, 0.393795 ++1m, 0.400725 ++1m, 0.391415 ++1m, 0.382106 ++1m, 0.372797 ++1m, 0.363487 ++1m, 0.355365 ++1m, 0.360246 ++1m, 0.365127 ++1m, 0.370008 ++1m, 0.374890 ++1m, 0.379203 ++1m, 0.375933 ++1m, 0.372664 ++1m, 0.369394 ++1m, 0.366125 ++1m, 0.362837 ++1m, 0.359245 ++1m, 0.355653 ++1m, 0.352061 ++1m, 0.348469 ++1m, 0.345012 ++1m, 0.344638 ++1m, 0.344263 ++1m, 0.343889 ++1m, 0.343515 ++1m, 0.343042 ++1m, 0.339145 ++1m, 0.335247 ++1m, 0.331349 ++1m, 0.327451 ++1m, 0.323546 ++1m, 0.319130 ++1m, 0.314714 ++1m, 0.310299 ++1m, 0.305883 ++1m, 0.301467 diff --git a/examples/user_guide_examples/Example_1b/EV_Controller/Control.json b/examples/user_guide_examples/Example_1b/EV_Controller/Control.json index a347da3d82..80121eba1d 100644 --- a/examples/user_guide_examples/Example_1b/EV_Controller/Control.json +++ b/examples/user_guide_examples/Example_1b/EV_Controller/Control.json @@ -1,77 +1,77 @@ -{ - "name": "EV_Controller", - "loglevel": 5, - "coreType": "zmq", - "timeDelta": 1.0, - "uninterruptible": true, - - "endpoints":[ - { - "name": "EV_Controller/EV6", - "destination": "IEEE_123_feeder_0/EV6", - "type": "genmessage", - "global": true - - }, - { - "name": "EV_Controller/EV5", - "destination": "IEEE_123_feeder_0/EV5", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV4", - "destination": "IEEE_123_feeder_0/EV4", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV3", - "destination": "IEEE_123_feeder_0/EV3", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV2", - "destination": "IEEE_123_feeder_0/EV2", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV1", - "destination": "IEEE_123_feeder_0/EV1", - "type": "genmessage", - "global": true - } - ], - "subscriptions":[ - { - "key": "IEEE_123_feeder_0/totalLoad", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV6", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV5", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV4", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV3", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV2", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV1", - "type": "complex", - "required": true - }] +{ + "name": "EV_Controller", + "loglevel": 5, + "coreType": "zmq", + "timeDelta": 1.0, + "uninterruptible": true, + + "endpoints":[ + { + "name": "EV_Controller/EV6", + "destination": "IEEE_123_feeder_0/EV6", + "type": "genmessage", + "global": true + + }, + { + "name": "EV_Controller/EV5", + "destination": "IEEE_123_feeder_0/EV5", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV4", + "destination": "IEEE_123_feeder_0/EV4", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV3", + "destination": "IEEE_123_feeder_0/EV3", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV2", + "destination": "IEEE_123_feeder_0/EV2", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV1", + "destination": "IEEE_123_feeder_0/EV1", + "type": "genmessage", + "global": true + } + ], + "subscriptions":[ + { + "key": "IEEE_123_feeder_0/totalLoad", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV6", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV5", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV4", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV3", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV2", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV1", + "type": "complex", + "required": true + }] } \ No newline at end of file diff --git a/examples/user_guide_examples/Example_1b/Transmission/Transmission_json.json b/examples/user_guide_examples/Example_1b/Transmission/Transmission_json.json index b23b0b5f1c..366e6ac78f 100644 --- a/examples/user_guide_examples/Example_1b/Transmission/Transmission_json.json +++ b/examples/user_guide_examples/Example_1b/Transmission/Transmission_json.json @@ -1,19 +1,19 @@ -{ - "name": "TransmissionSim", - "loglevel": 7, - "coreType": "zmq", - "timeDelta": 1.0, - "uninterruptible": true, - - "publications": [{ - "key": "TransmissionSim/transmission_voltage", - "type": "complex", - "global": true - }], - - "subscriptions": [{ - "key": "IEEE_123_feeder_0/totalLoad", - "type": "complex", - "required": true - }] +{ + "name": "TransmissionSim", + "loglevel": 7, + "coreType": "zmq", + "timeDelta": 1.0, + "uninterruptible": true, + + "publications": [{ + "key": "TransmissionSim/transmission_voltage", + "type": "complex", + "global": true + }], + + "subscriptions": [{ + "key": "IEEE_123_feeder_0/totalLoad", + "type": "complex", + "required": true + }] } \ No newline at end of file diff --git a/examples/user_guide_examples/Example_1c/Distribution/include/players/load_shape_player.player b/examples/user_guide_examples/Example_1c/Distribution/include/players/load_shape_player.player index cac3aa6197..089fa4c2ce 100644 --- a/examples/user_guide_examples/Example_1c/Distribution/include/players/load_shape_player.player +++ b/examples/user_guide_examples/Example_1c/Distribution/include/players/load_shape_player.player @@ -1,1440 +1,1440 @@ -2013-08-28 00:00:00, 0.241766 -+1m, 0.243147 -+1m, 0.244528 -+1m, 0.245908 -+1m, 0.247289 -+1m, 0.248670 -+1m, 0.245771 -+1m, 0.242811 -+1m, 0.239852 -+1m, 0.236892 -+1m, 0.233933 -+1m, 0.235427 -+1m, 0.237050 -+1m, 0.238672 -+1m, 0.240294 -+1m, 0.241916 -+1m, 0.241126 -+1m, 0.240231 -+1m, 0.239335 -+1m, 0.238440 -+1m, 0.237544 -+1m, 0.236195 -+1m, 0.234818 -+1m, 0.233442 -+1m, 0.232065 -+1m, 0.230689 -+1m, 0.231470 -+1m, 0.232412 -+1m, 0.233354 -+1m, 0.234297 -+1m, 0.235239 -+1m, 0.234936 -+1m, 0.234520 -+1m, 0.234103 -+1m, 0.233686 -+1m, 0.233270 -+1m, 0.233278 -+1m, 0.233332 -+1m, 0.233387 -+1m, 0.233441 -+1m, 0.233495 -+1m, 0.231224 -+1m, 0.228660 -+1m, 0.226096 -+1m, 0.223533 -+1m, 0.220969 -+1m, 0.220822 -+1m, 0.221021 -+1m, 0.221220 -+1m, 0.221419 -+1m, 0.221618 -+1m, 0.221828 -+1m, 0.222040 -+1m, 0.222253 -+1m, 0.222465 -+1m, 0.222677 -+1m, 0.222844 -+1m, 0.223003 -+1m, 0.223162 -+1m, 0.223321 -+1m, 0.223480 -+1m, 0.223259 -+1m, 0.222961 -+1m, 0.222663 -+1m, 0.222365 -+1m, 0.222067 -+1m, 0.222466 -+1m, 0.223019 -+1m, 0.223573 -+1m, 0.224126 -+1m, 0.224679 -+1m, 0.224661 -+1m, 0.224503 -+1m, 0.224346 -+1m, 0.224189 -+1m, 0.224032 -+1m, 0.222787 -+1m, 0.221254 -+1m, 0.219722 -+1m, 0.218189 -+1m, 0.216657 -+1m, 0.217125 -+1m, 0.218167 -+1m, 0.219209 -+1m, 0.220252 -+1m, 0.221294 -+1m, 0.219722 -+1m, 0.217338 -+1m, 0.214954 -+1m, 0.212570 -+1m, 0.210186 -+1m, 0.209746 -+1m, 0.209956 -+1m, 0.210167 -+1m, 0.210377 -+1m, 0.210587 -+1m, 0.211425 -+1m, 0.212488 -+1m, 0.213551 -+1m, 0.214614 -+1m, 0.215677 -+1m, 0.215553 -+1m, 0.214970 -+1m, 0.214387 -+1m, 0.213805 -+1m, 0.213222 -+1m, 0.212366 -+1m, 0.211397 -+1m, 0.210428 -+1m, 0.209460 -+1m, 0.208491 -+1m, 0.208696 -+1m, 0.209420 -+1m, 0.210144 -+1m, 0.210868 -+1m, 0.211592 -+1m, 0.211443 -+1m, 0.210881 -+1m, 0.210320 -+1m, 0.209758 -+1m, 0.209197 -+1m, 0.209802 -+1m, 0.210993 -+1m, 0.212184 -+1m, 0.213375 -+1m, 0.214567 -+1m, 0.213534 -+1m, 0.211313 -+1m, 0.209092 -+1m, 0.206871 -+1m, 0.204649 -+1m, 0.204855 -+1m, 0.206439 -+1m, 0.208024 -+1m, 0.209608 -+1m, 0.211193 -+1m, 0.211206 -+1m, 0.210271 -+1m, 0.209335 -+1m, 0.208400 -+1m, 0.207465 -+1m, 0.207536 -+1m, 0.208251 -+1m, 0.208965 -+1m, 0.209680 -+1m, 0.210395 -+1m, 0.209883 -+1m, 0.208540 -+1m, 0.207197 -+1m, 0.205854 -+1m, 0.204511 -+1m, 0.204859 -+1m, 0.206422 -+1m, 0.207986 -+1m, 0.209549 -+1m, 0.211112 -+1m, 0.211285 -+1m, 0.210400 -+1m, 0.209514 -+1m, 0.208629 -+1m, 0.207743 -+1m, 0.207328 -+1m, 0.207292 -+1m, 0.207255 -+1m, 0.207218 -+1m, 0.207181 -+1m, 0.206490 -+1m, 0.205241 -+1m, 0.203991 -+1m, 0.202742 -+1m, 0.201493 -+1m, 0.200902 -+1m, 0.200905 -+1m, 0.200908 -+1m, 0.200911 -+1m, 0.200913 -+1m, 0.201755 -+1m, 0.203396 -+1m, 0.205037 -+1m, 0.206677 -+1m, 0.208318 -+1m, 0.208488 -+1m, 0.207176 -+1m, 0.205864 -+1m, 0.204552 -+1m, 0.203240 -+1m, 0.203157 -+1m, 0.204383 -+1m, 0.205609 -+1m, 0.206835 -+1m, 0.208061 -+1m, 0.208520 -+1m, 0.208115 -+1m, 0.207711 -+1m, 0.207306 -+1m, 0.206902 -+1m, 0.206871 -+1m, 0.207284 -+1m, 0.207697 -+1m, 0.208111 -+1m, 0.208524 -+1m, 0.208938 -+1m, 0.209353 -+1m, 0.209767 -+1m, 0.210182 -+1m, 0.210596 -+1m, 0.210134 -+1m, 0.208504 -+1m, 0.206874 -+1m, 0.205244 -+1m, 0.203614 -+1m, 0.203002 -+1m, 0.203827 -+1m, 0.204651 -+1m, 0.205476 -+1m, 0.206300 -+1m, 0.206306 -+1m, 0.205088 -+1m, 0.203870 -+1m, 0.202651 -+1m, 0.201433 -+1m, 0.201004 -+1m, 0.201826 -+1m, 0.202647 -+1m, 0.203469 -+1m, 0.204291 -+1m, 0.205265 -+1m, 0.206494 -+1m, 0.207724 -+1m, 0.208954 -+1m, 0.210184 -+1m, 0.210839 -+1m, 0.210470 -+1m, 0.210100 -+1m, 0.209731 -+1m, 0.209361 -+1m, 0.209352 -+1m, 0.210030 -+1m, 0.210707 -+1m, 0.211384 -+1m, 0.212061 -+1m, 0.212521 -+1m, 0.212541 -+1m, 0.212561 -+1m, 0.212581 -+1m, 0.212601 -+1m, 0.212622 -+1m, 0.212645 -+1m, 0.212668 -+1m, 0.212691 -+1m, 0.212714 -+1m, 0.212479 -+1m, 0.211649 -+1m, 0.210820 -+1m, 0.209991 -+1m, 0.209161 -+1m, 0.208221 -+1m, 0.207009 -+1m, 0.205797 -+1m, 0.204585 -+1m, 0.203372 -+1m, 0.203256 -+1m, 0.206026 -+1m, 0.208795 -+1m, 0.211565 -+1m, 0.214334 -+1m, 0.216212 -+1m, 0.215571 -+1m, 0.214930 -+1m, 0.214289 -+1m, 0.213648 -+1m, 0.213303 -+1m, 0.213858 -+1m, 0.214413 -+1m, 0.214968 -+1m, 0.215523 -+1m, 0.215765 -+1m, 0.214978 -+1m, 0.214191 -+1m, 0.213404 -+1m, 0.212617 -+1m, 0.211708 -+1m, 0.210363 -+1m, 0.209019 -+1m, 0.207675 -+1m, 0.206331 -+1m, 0.205699 -+1m, 0.207819 -+1m, 0.209940 -+1m, 0.212060 -+1m, 0.214181 -+1m, 0.216173 -+1m, 0.217625 -+1m, 0.219077 -+1m, 0.220529 -+1m, 0.221981 -+1m, 0.223073 -+1m, 0.222496 -+1m, 0.221919 -+1m, 0.221342 -+1m, 0.220765 -+1m, 0.220006 -+1m, 0.218311 -+1m, 0.216616 -+1m, 0.214921 -+1m, 0.213227 -+1m, 0.212057 -+1m, 0.213867 -+1m, 0.215678 -+1m, 0.217488 -+1m, 0.219298 -+1m, 0.220788 -+1m, 0.220244 -+1m, 0.219699 -+1m, 0.219155 -+1m, 0.218610 -+1m, 0.218166 -+1m, 0.218442 -+1m, 0.218717 -+1m, 0.218993 -+1m, 0.219269 -+1m, 0.219649 -+1m, 0.220885 -+1m, 0.222122 -+1m, 0.223358 -+1m, 0.224595 -+1m, 0.225782 -+1m, 0.226493 -+1m, 0.227204 -+1m, 0.227916 -+1m, 0.228627 -+1m, 0.229355 -+1m, 0.230269 -+1m, 0.231183 -+1m, 0.232097 -+1m, 0.233012 -+1m, 0.233676 -+1m, 0.230818 -+1m, 0.227959 -+1m, 0.225101 -+1m, 0.222242 -+1m, 0.219612 -+1m, 0.221107 -+1m, 0.222603 -+1m, 0.224099 -+1m, 0.225595 -+1m, 0.227055 -+1m, 0.227601 -+1m, 0.228148 -+1m, 0.228694 -+1m, 0.229241 -+1m, 0.229809 -+1m, 0.231278 -+1m, 0.232747 -+1m, 0.234216 -+1m, 0.235685 -+1m, 0.237150 -+1m, 0.238281 -+1m, 0.239412 -+1m, 0.240543 -+1m, 0.241674 -+1m, 0.242805 -+1m, 0.244551 -+1m, 0.246299 -+1m, 0.248047 -+1m, 0.249795 -+1m, 0.251543 -+1m, 0.251748 -+1m, 0.251926 -+1m, 0.252103 -+1m, 0.252281 -+1m, 0.252458 -+1m, 0.253655 -+1m, 0.254885 -+1m, 0.256115 -+1m, 0.257345 -+1m, 0.258576 -+1m, 0.259165 -+1m, 0.259723 -+1m, 0.260282 -+1m, 0.260840 -+1m, 0.261399 -+1m, 0.262141 -+1m, 0.262894 -+1m, 0.263648 -+1m, 0.264401 -+1m, 0.265154 -+1m, 0.262487 -+1m, 0.259549 -+1m, 0.256611 -+1m, 0.253673 -+1m, 0.250735 -+1m, 0.254199 -+1m, 0.258274 -+1m, 0.262349 -+1m, 0.266425 -+1m, 0.270500 -+1m, 0.270185 -+1m, 0.269377 -+1m, 0.268569 -+1m, 0.267761 -+1m, 0.266953 -+1m, 0.268050 -+1m, 0.269395 -+1m, 0.270740 -+1m, 0.272084 -+1m, 0.273429 -+1m, 0.276155 -+1m, 0.279085 -+1m, 0.282016 -+1m, 0.284946 -+1m, 0.287877 -+1m, 0.286309 -+1m, 0.283992 -+1m, 0.281675 -+1m, 0.279358 -+1m, 0.277041 -+1m, 0.279466 -+1m, 0.282774 -+1m, 0.286082 -+1m, 0.289390 -+1m, 0.292698 -+1m, 0.298190 -+1m, 0.304131 -+1m, 0.310073 -+1m, 0.316015 -+1m, 0.321957 -+1m, 0.320661 -+1m, 0.317725 -+1m, 0.314790 -+1m, 0.311854 -+1m, 0.308919 -+1m, 0.308506 -+1m, 0.308717 -+1m, 0.308929 -+1m, 0.309141 -+1m, 0.309353 -+1m, 0.310369 -+1m, 0.311602 -+1m, 0.312835 -+1m, 0.314068 -+1m, 0.315301 -+1m, 0.318650 -+1m, 0.322618 -+1m, 0.326586 -+1m, 0.330555 -+1m, 0.334523 -+1m, 0.336308 -+1m, 0.337402 -+1m, 0.338495 -+1m, 0.339589 -+1m, 0.340682 -+1m, 0.338936 -+1m, 0.336222 -+1m, 0.333508 -+1m, 0.330794 -+1m, 0.328080 -+1m, 0.332903 -+1m, 0.340490 -+1m, 0.348078 -+1m, 0.355665 -+1m, 0.363253 -+1m, 0.363248 -+1m, 0.360258 -+1m, 0.357268 -+1m, 0.354278 -+1m, 0.351288 -+1m, 0.353795 -+1m, 0.358615 -+1m, 0.363434 -+1m, 0.368254 -+1m, 0.373073 -+1m, 0.373912 -+1m, 0.372961 -+1m, 0.372011 -+1m, 0.371060 -+1m, 0.370109 -+1m, 0.371173 -+1m, 0.373202 -+1m, 0.375231 -+1m, 0.377261 -+1m, 0.379290 -+1m, 0.382262 -+1m, 0.385715 -+1m, 0.389168 -+1m, 0.392620 -+1m, 0.396073 -+1m, 0.396396 -+1m, 0.395018 -+1m, 0.393640 -+1m, 0.392263 -+1m, 0.390885 -+1m, 0.393387 -+1m, 0.398127 -+1m, 0.402867 -+1m, 0.407608 -+1m, 0.412348 -+1m, 0.417306 -+1m, 0.422398 -+1m, 0.427490 -+1m, 0.432582 -+1m, 0.437674 -+1m, 0.441531 -+1m, 0.444584 -+1m, 0.447638 -+1m, 0.450692 -+1m, 0.453745 -+1m, 0.453973 -+1m, 0.452256 -+1m, 0.450538 -+1m, 0.448821 -+1m, 0.447103 -+1m, 0.448788 -+1m, 0.452952 -+1m, 0.457116 -+1m, 0.461280 -+1m, 0.465445 -+1m, 0.466463 -+1m, 0.465055 -+1m, 0.463646 -+1m, 0.462237 -+1m, 0.460829 -+1m, 0.460724 -+1m, 0.461683 -+1m, 0.462642 -+1m, 0.463602 -+1m, 0.464561 -+1m, 0.469697 -+1m, 0.478441 -+1m, 0.487185 -+1m, 0.495929 -+1m, 0.504672 -+1m, 0.505769 -+1m, 0.499882 -+1m, 0.493995 -+1m, 0.488108 -+1m, 0.482221 -+1m, 0.484360 -+1m, 0.494251 -+1m, 0.504142 -+1m, 0.514034 -+1m, 0.523925 -+1m, 0.527751 -+1m, 0.525384 -+1m, 0.523017 -+1m, 0.520650 -+1m, 0.518283 -+1m, 0.515893 -+1m, 0.513478 -+1m, 0.511063 -+1m, 0.508648 -+1m, 0.506234 -+1m, 0.507668 -+1m, 0.513498 -+1m, 0.519328 -+1m, 0.525158 -+1m, 0.530988 -+1m, 0.534626 -+1m, 0.535616 -+1m, 0.536607 -+1m, 0.537598 -+1m, 0.538588 -+1m, 0.538230 -+1m, 0.536148 -+1m, 0.534066 -+1m, 0.531984 -+1m, 0.529903 -+1m, 0.534551 -+1m, 0.548302 -+1m, 0.562054 -+1m, 0.575805 -+1m, 0.589556 -+1m, 0.593174 -+1m, 0.582280 -+1m, 0.571385 -+1m, 0.560490 -+1m, 0.549595 -+1m, 0.542154 -+1m, 0.539953 -+1m, 0.537752 -+1m, 0.535551 -+1m, 0.533350 -+1m, 0.536895 -+1m, 0.549684 -+1m, 0.562473 -+1m, 0.575262 -+1m, 0.588050 -+1m, 0.595417 -+1m, 0.593523 -+1m, 0.591629 -+1m, 0.589736 -+1m, 0.587842 -+1m, 0.589211 -+1m, 0.596496 -+1m, 0.603782 -+1m, 0.611067 -+1m, 0.618353 -+1m, 0.620227 -+1m, 0.611663 -+1m, 0.603099 -+1m, 0.594536 -+1m, 0.585972 -+1m, 0.582125 -+1m, 0.587964 -+1m, 0.593802 -+1m, 0.599640 -+1m, 0.605479 -+1m, 0.608268 -+1m, 0.604384 -+1m, 0.600499 -+1m, 0.596615 -+1m, 0.592730 -+1m, 0.593972 -+1m, 0.607196 -+1m, 0.620419 -+1m, 0.633643 -+1m, 0.646866 -+1m, 0.653312 -+1m, 0.642814 -+1m, 0.632316 -+1m, 0.621818 -+1m, 0.611321 -+1m, 0.607301 -+1m, 0.620639 -+1m, 0.633977 -+1m, 0.647315 -+1m, 0.660653 -+1m, 0.666440 -+1m, 0.650491 -+1m, 0.634542 -+1m, 0.618592 -+1m, 0.602643 -+1m, 0.594820 -+1m, 0.612190 -+1m, 0.629560 -+1m, 0.646930 -+1m, 0.664300 -+1m, 0.678658 -+1m, 0.682934 -+1m, 0.687209 -+1m, 0.691485 -+1m, 0.695760 -+1m, 0.697681 -+1m, 0.691057 -+1m, 0.684433 -+1m, 0.677809 -+1m, 0.671184 -+1m, 0.666186 -+1m, 0.667608 -+1m, 0.669030 -+1m, 0.670451 -+1m, 0.671873 -+1m, 0.673889 -+1m, 0.678470 -+1m, 0.683052 -+1m, 0.687633 -+1m, 0.692214 -+1m, 0.695887 -+1m, 0.695250 -+1m, 0.694612 -+1m, 0.693975 -+1m, 0.693338 -+1m, 0.692939 -+1m, 0.693785 -+1m, 0.694631 -+1m, 0.695478 -+1m, 0.696324 -+1m, 0.696526 -+1m, 0.692966 -+1m, 0.689406 -+1m, 0.685847 -+1m, 0.682287 -+1m, 0.680534 -+1m, 0.690622 -+1m, 0.700710 -+1m, 0.710798 -+1m, 0.720886 -+1m, 0.730881 -+1m, 0.740180 -+1m, 0.749479 -+1m, 0.758778 -+1m, 0.768077 -+1m, 0.775691 -+1m, 0.768869 -+1m, 0.762047 -+1m, 0.755225 -+1m, 0.748403 -+1m, 0.742472 -+1m, 0.745481 -+1m, 0.748491 -+1m, 0.751500 -+1m, 0.754509 -+1m, 0.757045 -+1m, 0.753876 -+1m, 0.750707 -+1m, 0.747537 -+1m, 0.744368 -+1m, 0.741265 -+1m, 0.739151 -+1m, 0.737038 -+1m, 0.734924 -+1m, 0.732811 -+1m, 0.731415 -+1m, 0.744002 -+1m, 0.756590 -+1m, 0.769178 -+1m, 0.781766 -+1m, 0.793928 -+1m, 0.794283 -+1m, 0.794639 -+1m, 0.794994 -+1m, 0.795350 -+1m, 0.795739 -+1m, 0.797678 -+1m, 0.799617 -+1m, 0.801557 -+1m, 0.803496 -+1m, 0.805386 -+1m, 0.800178 -+1m, 0.794970 -+1m, 0.789762 -+1m, 0.784554 -+1m, 0.779346 -+1m, 0.787739 -+1m, 0.796227 -+1m, 0.804716 -+1m, 0.813204 -+1m, 0.821693 -+1m, 0.813917 -+1m, 0.805794 -+1m, 0.797672 -+1m, 0.789549 -+1m, 0.781426 -+1m, 0.799239 -+1m, 0.817988 -+1m, 0.836736 -+1m, 0.855485 -+1m, 0.874234 -+1m, 0.864736 -+1m, 0.853789 -+1m, 0.842843 -+1m, 0.831896 -+1m, 0.820950 -+1m, 0.829602 -+1m, 0.839567 -+1m, 0.849531 -+1m, 0.859495 -+1m, 0.869459 -+1m, 0.870771 -+1m, 0.871363 -+1m, 0.871956 -+1m, 0.872549 -+1m, 0.873142 -+1m, 0.871804 -+1m, 0.870274 -+1m, 0.868744 -+1m, 0.867214 -+1m, 0.865684 -+1m, 0.866654 -+1m, 0.867916 -+1m, 0.869177 -+1m, 0.870439 -+1m, 0.871700 -+1m, 0.874678 -+1m, 0.877886 -+1m, 0.881094 -+1m, 0.884302 -+1m, 0.887510 -+1m, 0.891387 -+1m, 0.895366 -+1m, 0.899346 -+1m, 0.903325 -+1m, 0.907305 -+1m, 0.912080 -+1m, 0.916992 -+1m, 0.921904 -+1m, 0.926816 -+1m, 0.931728 -+1m, 0.927894 -+1m, 0.922392 -+1m, 0.916890 -+1m, 0.911387 -+1m, 0.905885 -+1m, 0.910907 -+1m, 0.918149 -+1m, 0.925391 -+1m, 0.932633 -+1m, 0.939875 -+1m, 0.941082 -+1m, 0.940889 -+1m, 0.940697 -+1m, 0.940505 -+1m, 0.940312 -+1m, 0.932065 -+1m, 0.921778 -+1m, 0.911491 -+1m, 0.901204 -+1m, 0.890917 -+1m, 0.898610 -+1m, 0.911256 -+1m, 0.923903 -+1m, 0.936550 -+1m, 0.949196 -+1m, 0.949972 -+1m, 0.947202 -+1m, 0.944433 -+1m, 0.941663 -+1m, 0.938893 -+1m, 0.928625 -+1m, 0.915938 -+1m, 0.903251 -+1m, 0.890564 -+1m, 0.877877 -+1m, 0.880108 -+1m, 0.887521 -+1m, 0.894935 -+1m, 0.902349 -+1m, 0.909762 -+1m, 0.920595 -+1m, 0.932703 -+1m, 0.944811 -+1m, 0.956919 -+1m, 0.969027 -+1m, 0.969230 -+1m, 0.964672 -+1m, 0.960113 -+1m, 0.955555 -+1m, 0.950997 -+1m, 0.948776 -+1m, 0.947556 -+1m, 0.946335 -+1m, 0.945115 -+1m, 0.943895 -+1m, 0.935305 -+1m, 0.923349 -+1m, 0.911393 -+1m, 0.899437 -+1m, 0.887480 -+1m, 0.895984 -+1m, 0.914452 -+1m, 0.932920 -+1m, 0.951387 -+1m, 0.969855 -+1m, 0.970176 -+1m, 0.961087 -+1m, 0.951997 -+1m, 0.942908 -+1m, 0.933819 -+1m, 0.935361 -+1m, 0.942764 -+1m, 0.950167 -+1m, 0.957570 -+1m, 0.964973 -+1m, 0.961336 -+1m, 0.951233 -+1m, 0.941131 -+1m, 0.931028 -+1m, 0.920925 -+1m, 0.924638 -+1m, 0.936935 -+1m, 0.949233 -+1m, 0.961531 -+1m, 0.973829 -+1m, 0.977238 -+1m, 0.974790 -+1m, 0.972341 -+1m, 0.969893 -+1m, 0.967445 -+1m, 0.962175 -+1m, 0.954936 -+1m, 0.947697 -+1m, 0.940457 -+1m, 0.933218 -+1m, 0.935485 -+1m, 0.944783 -+1m, 0.954080 -+1m, 0.963377 -+1m, 0.972675 -+1m, 0.974409 -+1m, 0.970224 -+1m, 0.966039 -+1m, 0.961855 -+1m, 0.957670 -+1m, 0.960599 -+1m, 0.969420 -+1m, 0.978241 -+1m, 0.987061 -+1m, 0.995882 -+1m, 0.996670 -+1m, 0.990424 -+1m, 0.984178 -+1m, 0.977931 -+1m, 0.971685 -+1m, 0.970768 -+1m, 0.974788 -+1m, 0.978808 -+1m, 0.982827 -+1m, 0.986847 -+1m, 0.984968 -+1m, 0.977313 -+1m, 0.969659 -+1m, 0.962004 -+1m, 0.954350 -+1m, 0.942768 -+1m, 0.927120 -+1m, 0.911472 -+1m, 0.895823 -+1m, 0.880175 -+1m, 0.875845 -+1m, 0.883908 -+1m, 0.891970 -+1m, 0.900032 -+1m, 0.908095 -+1m, 0.911900 -+1m, 0.910778 -+1m, 0.909655 -+1m, 0.908533 -+1m, 0.907410 -+1m, 0.907281 -+1m, 0.908369 -+1m, 0.909457 -+1m, 0.910545 -+1m, 0.911633 -+1m, 0.918841 -+1m, 0.933980 -+1m, 0.949120 -+1m, 0.964259 -+1m, 0.979399 -+1m, 0.974267 -+1m, 0.941325 -+1m, 0.908383 -+1m, 0.875441 -+1m, 0.842499 -+1m, 0.833637 -+1m, 0.859762 -+1m, 0.885888 -+1m, 0.912014 -+1m, 0.938140 -+1m, 0.951700 -+1m, 0.945909 -+1m, 0.940118 -+1m, 0.934328 -+1m, 0.928537 -+1m, 0.924780 -+1m, 0.924342 -+1m, 0.923904 -+1m, 0.923466 -+1m, 0.923028 -+1m, 0.920917 -+1m, 0.915904 -+1m, 0.910891 -+1m, 0.905878 -+1m, 0.900865 -+1m, 0.898290 -+1m, 0.900201 -+1m, 0.902113 -+1m, 0.904025 -+1m, 0.905936 -+1m, 0.911819 -+1m, 0.925479 -+1m, 0.939139 -+1m, 0.952800 -+1m, 0.966460 -+1m, 0.969697 -+1m, 0.951190 -+1m, 0.932683 -+1m, 0.914175 -+1m, 0.895668 -+1m, 0.884981 -+1m, 0.891692 -+1m, 0.898402 -+1m, 0.905112 -+1m, 0.911823 -+1m, 0.920855 -+1m, 0.935407 -+1m, 0.949959 -+1m, 0.964511 -+1m, 0.979063 -+1m, 0.980515 -+1m, 0.948651 -+1m, 0.916786 -+1m, 0.884922 -+1m, 0.853058 -+1m, 0.836844 -+1m, 0.863312 -+1m, 0.889779 -+1m, 0.916247 -+1m, 0.942715 -+1m, 0.960603 -+1m, 0.953339 -+1m, 0.946074 -+1m, 0.938810 -+1m, 0.931545 -+1m, 0.925881 -+1m, 0.925271 -+1m, 0.924660 -+1m, 0.924050 -+1m, 0.923440 -+1m, 0.921274 -+1m, 0.913795 -+1m, 0.906315 -+1m, 0.898836 -+1m, 0.891356 -+1m, 0.885329 -+1m, 0.884684 -+1m, 0.884038 -+1m, 0.883392 -+1m, 0.882747 -+1m, 0.883440 -+1m, 0.889538 -+1m, 0.895635 -+1m, 0.901733 -+1m, 0.907830 -+1m, 0.910020 -+1m, 0.894957 -+1m, 0.879895 -+1m, 0.864832 -+1m, 0.849770 -+1m, 0.838421 -+1m, 0.845111 -+1m, 0.851801 -+1m, 0.858492 -+1m, 0.865182 -+1m, 0.869028 -+1m, 0.857582 -+1m, 0.846136 -+1m, 0.834690 -+1m, 0.823244 -+1m, 0.815736 -+1m, 0.831850 -+1m, 0.847965 -+1m, 0.864079 -+1m, 0.880194 -+1m, 0.891355 -+1m, 0.869047 -+1m, 0.846738 -+1m, 0.824430 -+1m, 0.802122 -+1m, 0.784734 -+1m, 0.805222 -+1m, 0.825710 -+1m, 0.846197 -+1m, 0.866685 -+1m, 0.882728 -+1m, 0.859226 -+1m, 0.835724 -+1m, 0.812222 -+1m, 0.788720 -+1m, 0.768770 -+1m, 0.786035 -+1m, 0.803300 -+1m, 0.820565 -+1m, 0.837831 -+1m, 0.852691 -+1m, 0.837086 -+1m, 0.821482 -+1m, 0.805878 -+1m, 0.790274 -+1m, 0.775340 -+1m, 0.771052 -+1m, 0.766764 -+1m, 0.762476 -+1m, 0.758188 -+1m, 0.754572 -+1m, 0.765126 -+1m, 0.775680 -+1m, 0.786234 -+1m, 0.796788 -+1m, 0.806623 -+1m, 0.794239 -+1m, 0.781855 -+1m, 0.769472 -+1m, 0.757088 -+1m, 0.744947 -+1m, 0.746503 -+1m, 0.748059 -+1m, 0.749615 -+1m, 0.751171 -+1m, 0.752778 -+1m, 0.769143 -+1m, 0.785509 -+1m, 0.801874 -+1m, 0.818239 -+1m, 0.834604 -+1m, 0.814432 -+1m, 0.793875 -+1m, 0.773318 -+1m, 0.752760 -+1m, 0.732203 -+1m, 0.729089 -+1m, 0.726412 -+1m, 0.723735 -+1m, 0.721057 -+1m, 0.718380 -+1m, 0.719477 -+1m, 0.720724 -+1m, 0.721971 -+1m, 0.723218 -+1m, 0.724466 -+1m, 0.718061 -+1m, 0.711234 -+1m, 0.704407 -+1m, 0.697580 -+1m, 0.690753 -+1m, 0.687737 -+1m, 0.684992 -+1m, 0.682247 -+1m, 0.679501 -+1m, 0.676756 -+1m, 0.682467 -+1m, 0.688916 -+1m, 0.695364 -+1m, 0.701812 -+1m, 0.708260 -+1m, 0.706360 -+1m, 0.703593 -+1m, 0.700826 -+1m, 0.698059 -+1m, 0.695292 -+1m, 0.677207 -+1m, 0.657268 -+1m, 0.637328 -+1m, 0.617389 -+1m, 0.597450 -+1m, 0.598484 -+1m, 0.602433 -+1m, 0.606381 -+1m, 0.610329 -+1m, 0.614277 -+1m, 0.612482 -+1m, 0.609784 -+1m, 0.607086 -+1m, 0.604388 -+1m, 0.601691 -+1m, 0.597593 -+1m, 0.593249 -+1m, 0.588905 -+1m, 0.584561 -+1m, 0.580217 -+1m, 0.578793 -+1m, 0.577941 -+1m, 0.577089 -+1m, 0.576237 -+1m, 0.575385 -+1m, 0.560604 -+1m, 0.542813 -+1m, 0.525022 -+1m, 0.507231 -+1m, 0.489440 -+1m, 0.489830 -+1m, 0.494530 -+1m, 0.499231 -+1m, 0.503931 -+1m, 0.508632 -+1m, 0.516498 -+1m, 0.525183 -+1m, 0.533869 -+1m, 0.542554 -+1m, 0.551240 -+1m, 0.547171 -+1m, 0.539514 -+1m, 0.531858 -+1m, 0.524202 -+1m, 0.516545 -+1m, 0.514296 -+1m, 0.513693 -+1m, 0.513091 -+1m, 0.512488 -+1m, 0.511885 -+1m, 0.510832 -+1m, 0.509631 -+1m, 0.508430 -+1m, 0.507229 -+1m, 0.506027 -+1m, 0.511588 -+1m, 0.519540 -+1m, 0.527492 -+1m, 0.535445 -+1m, 0.543397 -+1m, 0.536305 -+1m, 0.523498 -+1m, 0.510691 -+1m, 0.497884 -+1m, 0.485078 -+1m, 0.481098 -+1m, 0.480711 -+1m, 0.480323 -+1m, 0.479936 -+1m, 0.479548 -+1m, 0.485361 -+1m, 0.493872 -+1m, 0.502382 -+1m, 0.510893 -+1m, 0.519404 -+1m, 0.513479 -+1m, 0.500853 -+1m, 0.488227 -+1m, 0.475601 -+1m, 0.462975 -+1m, 0.463203 -+1m, 0.469793 -+1m, 0.476382 -+1m, 0.482971 -+1m, 0.489560 -+1m, 0.487922 -+1m, 0.481950 -+1m, 0.475978 -+1m, 0.470007 -+1m, 0.464035 -+1m, 0.462834 -+1m, 0.464304 -+1m, 0.465773 -+1m, 0.467243 -+1m, 0.468712 -+1m, 0.469174 -+1m, 0.469037 -+1m, 0.468900 -+1m, 0.468763 -+1m, 0.468626 -+1m, 0.465880 -+1m, 0.461490 -+1m, 0.457100 -+1m, 0.452710 -+1m, 0.448320 -+1m, 0.450580 -+1m, 0.457286 -+1m, 0.463993 -+1m, 0.470699 -+1m, 0.477405 -+1m, 0.477641 -+1m, 0.473294 -+1m, 0.468947 -+1m, 0.464600 -+1m, 0.460253 -+1m, 0.459227 -+1m, 0.460692 -+1m, 0.462158 -+1m, 0.463623 -+1m, 0.465088 -+1m, 0.466797 -+1m, 0.468698 -+1m, 0.470599 -+1m, 0.472501 -+1m, 0.474402 -+1m, 0.473397 -+1m, 0.469952 -+1m, 0.466507 -+1m, 0.463062 -+1m, 0.459617 -+1m, 0.459135 -+1m, 0.461284 -+1m, 0.463434 -+1m, 0.465584 -+1m, 0.467733 -+1m, 0.470190 -+1m, 0.472934 -+1m, 0.475678 -+1m, 0.478422 -+1m, 0.481166 -+1m, 0.478677 -+1m, 0.470991 -+1m, 0.463304 -+1m, 0.455618 -+1m, 0.447932 -+1m, 0.440665 -+1m, 0.433837 -+1m, 0.427010 -+1m, 0.420182 -+1m, 0.413355 -+1m, 0.411414 -+1m, 0.414900 -+1m, 0.418386 -+1m, 0.421872 -+1m, 0.425358 -+1m, 0.426210 -+1m, 0.423971 -+1m, 0.421731 -+1m, 0.419492 -+1m, 0.417252 -+1m, 0.417889 -+1m, 0.422098 -+1m, 0.426307 -+1m, 0.430516 -+1m, 0.434726 -+1m, 0.435469 -+1m, 0.431656 -+1m, 0.427843 -+1m, 0.424030 -+1m, 0.420217 -+1m, 0.416178 -+1m, 0.411823 -+1m, 0.407468 -+1m, 0.403113 -+1m, 0.398759 -+1m, 0.395928 -+1m, 0.395345 -+1m, 0.394761 -+1m, 0.394178 -+1m, 0.393594 -+1m, 0.392290 -+1m, 0.389858 -+1m, 0.387425 -+1m, 0.384993 -+1m, 0.382561 -+1m, 0.380948 -+1m, 0.380693 -+1m, 0.380438 -+1m, 0.380182 -+1m, 0.379927 -+1m, 0.380042 -+1m, 0.380811 -+1m, 0.381579 -+1m, 0.382347 -+1m, 0.383115 -+1m, 0.383209 -+1m, 0.382041 -+1m, 0.380873 -+1m, 0.379706 -+1m, 0.378538 -+1m, 0.378154 -+1m, 0.379328 -+1m, 0.380503 -+1m, 0.381677 -+1m, 0.382852 -+1m, 0.382500 -+1m, 0.378914 -+1m, 0.375327 -+1m, 0.371741 -+1m, 0.368154 -+1m, 0.365185 -+1m, 0.363611 -+1m, 0.362036 -+1m, 0.360462 -+1m, 0.358887 -+1m, 0.357566 -+1m, 0.356856 -+1m, 0.356146 -+1m, 0.355437 -+1m, 0.354727 -+1m, 0.352813 -+1m, 0.347783 -+1m, 0.342754 -+1m, 0.337724 -+1m, 0.332695 -+1m, 0.329010 -+1m, 0.329058 -+1m, 0.329105 -+1m, 0.329153 -+1m, 0.329201 -+1m, 0.328870 -+1m, 0.327407 -+1m, 0.325944 -+1m, 0.324482 -+1m, 0.323019 -+1m, 0.322511 -+1m, 0.325081 -+1m, 0.327650 -+1m, 0.330219 -+1m, 0.332788 -+1m, 0.334574 -+1m, 0.333631 -+1m, 0.332688 -+1m, 0.331746 -+1m, 0.330803 -+1m, 0.330921 -+1m, 0.335056 -+1m, 0.339191 -+1m, 0.343326 -+1m, 0.347461 -+1m, 0.350591 -+1m, 0.349574 -+1m, 0.348557 -+1m, 0.347539 -+1m, 0.346522 -+1m, 0.345681 -+1m, 0.345633 -+1m, 0.345586 -+1m, 0.345539 -+1m, 0.345492 -+1m, 0.346354 -+1m, 0.351745 -+1m, 0.357137 -+1m, 0.362528 -+1m, 0.367919 -+1m, 0.372796 -+1m, 0.374830 -+1m, 0.376865 -+1m, 0.378899 -+1m, 0.380934 -+1m, 0.382623 -+1m, 0.382179 -+1m, 0.381736 -+1m, 0.381293 -+1m, 0.380850 -+1m, 0.379902 -+1m, 0.375439 -+1m, 0.370975 -+1m, 0.366512 -+1m, 0.362048 -+1m, 0.359051 -+1m, 0.367737 -+1m, 0.376423 -+1m, 0.385109 -+1m, 0.393795 -+1m, 0.400725 -+1m, 0.391415 -+1m, 0.382106 -+1m, 0.372797 -+1m, 0.363487 -+1m, 0.355365 -+1m, 0.360246 -+1m, 0.365127 -+1m, 0.370008 -+1m, 0.374890 -+1m, 0.379203 -+1m, 0.375933 -+1m, 0.372664 -+1m, 0.369394 -+1m, 0.366125 -+1m, 0.362837 -+1m, 0.359245 -+1m, 0.355653 -+1m, 0.352061 -+1m, 0.348469 -+1m, 0.345012 -+1m, 0.344638 -+1m, 0.344263 -+1m, 0.343889 -+1m, 0.343515 -+1m, 0.343042 -+1m, 0.339145 -+1m, 0.335247 -+1m, 0.331349 -+1m, 0.327451 -+1m, 0.323546 -+1m, 0.319130 -+1m, 0.314714 -+1m, 0.310299 -+1m, 0.305883 -+1m, 0.301467 +2013-08-28 00:00:00, 0.241766 ++1m, 0.243147 ++1m, 0.244528 ++1m, 0.245908 ++1m, 0.247289 ++1m, 0.248670 ++1m, 0.245771 ++1m, 0.242811 ++1m, 0.239852 ++1m, 0.236892 ++1m, 0.233933 ++1m, 0.235427 ++1m, 0.237050 ++1m, 0.238672 ++1m, 0.240294 ++1m, 0.241916 ++1m, 0.241126 ++1m, 0.240231 ++1m, 0.239335 ++1m, 0.238440 ++1m, 0.237544 ++1m, 0.236195 ++1m, 0.234818 ++1m, 0.233442 ++1m, 0.232065 ++1m, 0.230689 ++1m, 0.231470 ++1m, 0.232412 ++1m, 0.233354 ++1m, 0.234297 ++1m, 0.235239 ++1m, 0.234936 ++1m, 0.234520 ++1m, 0.234103 ++1m, 0.233686 ++1m, 0.233270 ++1m, 0.233278 ++1m, 0.233332 ++1m, 0.233387 ++1m, 0.233441 ++1m, 0.233495 ++1m, 0.231224 ++1m, 0.228660 ++1m, 0.226096 ++1m, 0.223533 ++1m, 0.220969 ++1m, 0.220822 ++1m, 0.221021 ++1m, 0.221220 ++1m, 0.221419 ++1m, 0.221618 ++1m, 0.221828 ++1m, 0.222040 ++1m, 0.222253 ++1m, 0.222465 ++1m, 0.222677 ++1m, 0.222844 ++1m, 0.223003 ++1m, 0.223162 ++1m, 0.223321 ++1m, 0.223480 ++1m, 0.223259 ++1m, 0.222961 ++1m, 0.222663 ++1m, 0.222365 ++1m, 0.222067 ++1m, 0.222466 ++1m, 0.223019 ++1m, 0.223573 ++1m, 0.224126 ++1m, 0.224679 ++1m, 0.224661 ++1m, 0.224503 ++1m, 0.224346 ++1m, 0.224189 ++1m, 0.224032 ++1m, 0.222787 ++1m, 0.221254 ++1m, 0.219722 ++1m, 0.218189 ++1m, 0.216657 ++1m, 0.217125 ++1m, 0.218167 ++1m, 0.219209 ++1m, 0.220252 ++1m, 0.221294 ++1m, 0.219722 ++1m, 0.217338 ++1m, 0.214954 ++1m, 0.212570 ++1m, 0.210186 ++1m, 0.209746 ++1m, 0.209956 ++1m, 0.210167 ++1m, 0.210377 ++1m, 0.210587 ++1m, 0.211425 ++1m, 0.212488 ++1m, 0.213551 ++1m, 0.214614 ++1m, 0.215677 ++1m, 0.215553 ++1m, 0.214970 ++1m, 0.214387 ++1m, 0.213805 ++1m, 0.213222 ++1m, 0.212366 ++1m, 0.211397 ++1m, 0.210428 ++1m, 0.209460 ++1m, 0.208491 ++1m, 0.208696 ++1m, 0.209420 ++1m, 0.210144 ++1m, 0.210868 ++1m, 0.211592 ++1m, 0.211443 ++1m, 0.210881 ++1m, 0.210320 ++1m, 0.209758 ++1m, 0.209197 ++1m, 0.209802 ++1m, 0.210993 ++1m, 0.212184 ++1m, 0.213375 ++1m, 0.214567 ++1m, 0.213534 ++1m, 0.211313 ++1m, 0.209092 ++1m, 0.206871 ++1m, 0.204649 ++1m, 0.204855 ++1m, 0.206439 ++1m, 0.208024 ++1m, 0.209608 ++1m, 0.211193 ++1m, 0.211206 ++1m, 0.210271 ++1m, 0.209335 ++1m, 0.208400 ++1m, 0.207465 ++1m, 0.207536 ++1m, 0.208251 ++1m, 0.208965 ++1m, 0.209680 ++1m, 0.210395 ++1m, 0.209883 ++1m, 0.208540 ++1m, 0.207197 ++1m, 0.205854 ++1m, 0.204511 ++1m, 0.204859 ++1m, 0.206422 ++1m, 0.207986 ++1m, 0.209549 ++1m, 0.211112 ++1m, 0.211285 ++1m, 0.210400 ++1m, 0.209514 ++1m, 0.208629 ++1m, 0.207743 ++1m, 0.207328 ++1m, 0.207292 ++1m, 0.207255 ++1m, 0.207218 ++1m, 0.207181 ++1m, 0.206490 ++1m, 0.205241 ++1m, 0.203991 ++1m, 0.202742 ++1m, 0.201493 ++1m, 0.200902 ++1m, 0.200905 ++1m, 0.200908 ++1m, 0.200911 ++1m, 0.200913 ++1m, 0.201755 ++1m, 0.203396 ++1m, 0.205037 ++1m, 0.206677 ++1m, 0.208318 ++1m, 0.208488 ++1m, 0.207176 ++1m, 0.205864 ++1m, 0.204552 ++1m, 0.203240 ++1m, 0.203157 ++1m, 0.204383 ++1m, 0.205609 ++1m, 0.206835 ++1m, 0.208061 ++1m, 0.208520 ++1m, 0.208115 ++1m, 0.207711 ++1m, 0.207306 ++1m, 0.206902 ++1m, 0.206871 ++1m, 0.207284 ++1m, 0.207697 ++1m, 0.208111 ++1m, 0.208524 ++1m, 0.208938 ++1m, 0.209353 ++1m, 0.209767 ++1m, 0.210182 ++1m, 0.210596 ++1m, 0.210134 ++1m, 0.208504 ++1m, 0.206874 ++1m, 0.205244 ++1m, 0.203614 ++1m, 0.203002 ++1m, 0.203827 ++1m, 0.204651 ++1m, 0.205476 ++1m, 0.206300 ++1m, 0.206306 ++1m, 0.205088 ++1m, 0.203870 ++1m, 0.202651 ++1m, 0.201433 ++1m, 0.201004 ++1m, 0.201826 ++1m, 0.202647 ++1m, 0.203469 ++1m, 0.204291 ++1m, 0.205265 ++1m, 0.206494 ++1m, 0.207724 ++1m, 0.208954 ++1m, 0.210184 ++1m, 0.210839 ++1m, 0.210470 ++1m, 0.210100 ++1m, 0.209731 ++1m, 0.209361 ++1m, 0.209352 ++1m, 0.210030 ++1m, 0.210707 ++1m, 0.211384 ++1m, 0.212061 ++1m, 0.212521 ++1m, 0.212541 ++1m, 0.212561 ++1m, 0.212581 ++1m, 0.212601 ++1m, 0.212622 ++1m, 0.212645 ++1m, 0.212668 ++1m, 0.212691 ++1m, 0.212714 ++1m, 0.212479 ++1m, 0.211649 ++1m, 0.210820 ++1m, 0.209991 ++1m, 0.209161 ++1m, 0.208221 ++1m, 0.207009 ++1m, 0.205797 ++1m, 0.204585 ++1m, 0.203372 ++1m, 0.203256 ++1m, 0.206026 ++1m, 0.208795 ++1m, 0.211565 ++1m, 0.214334 ++1m, 0.216212 ++1m, 0.215571 ++1m, 0.214930 ++1m, 0.214289 ++1m, 0.213648 ++1m, 0.213303 ++1m, 0.213858 ++1m, 0.214413 ++1m, 0.214968 ++1m, 0.215523 ++1m, 0.215765 ++1m, 0.214978 ++1m, 0.214191 ++1m, 0.213404 ++1m, 0.212617 ++1m, 0.211708 ++1m, 0.210363 ++1m, 0.209019 ++1m, 0.207675 ++1m, 0.206331 ++1m, 0.205699 ++1m, 0.207819 ++1m, 0.209940 ++1m, 0.212060 ++1m, 0.214181 ++1m, 0.216173 ++1m, 0.217625 ++1m, 0.219077 ++1m, 0.220529 ++1m, 0.221981 ++1m, 0.223073 ++1m, 0.222496 ++1m, 0.221919 ++1m, 0.221342 ++1m, 0.220765 ++1m, 0.220006 ++1m, 0.218311 ++1m, 0.216616 ++1m, 0.214921 ++1m, 0.213227 ++1m, 0.212057 ++1m, 0.213867 ++1m, 0.215678 ++1m, 0.217488 ++1m, 0.219298 ++1m, 0.220788 ++1m, 0.220244 ++1m, 0.219699 ++1m, 0.219155 ++1m, 0.218610 ++1m, 0.218166 ++1m, 0.218442 ++1m, 0.218717 ++1m, 0.218993 ++1m, 0.219269 ++1m, 0.219649 ++1m, 0.220885 ++1m, 0.222122 ++1m, 0.223358 ++1m, 0.224595 ++1m, 0.225782 ++1m, 0.226493 ++1m, 0.227204 ++1m, 0.227916 ++1m, 0.228627 ++1m, 0.229355 ++1m, 0.230269 ++1m, 0.231183 ++1m, 0.232097 ++1m, 0.233012 ++1m, 0.233676 ++1m, 0.230818 ++1m, 0.227959 ++1m, 0.225101 ++1m, 0.222242 ++1m, 0.219612 ++1m, 0.221107 ++1m, 0.222603 ++1m, 0.224099 ++1m, 0.225595 ++1m, 0.227055 ++1m, 0.227601 ++1m, 0.228148 ++1m, 0.228694 ++1m, 0.229241 ++1m, 0.229809 ++1m, 0.231278 ++1m, 0.232747 ++1m, 0.234216 ++1m, 0.235685 ++1m, 0.237150 ++1m, 0.238281 ++1m, 0.239412 ++1m, 0.240543 ++1m, 0.241674 ++1m, 0.242805 ++1m, 0.244551 ++1m, 0.246299 ++1m, 0.248047 ++1m, 0.249795 ++1m, 0.251543 ++1m, 0.251748 ++1m, 0.251926 ++1m, 0.252103 ++1m, 0.252281 ++1m, 0.252458 ++1m, 0.253655 ++1m, 0.254885 ++1m, 0.256115 ++1m, 0.257345 ++1m, 0.258576 ++1m, 0.259165 ++1m, 0.259723 ++1m, 0.260282 ++1m, 0.260840 ++1m, 0.261399 ++1m, 0.262141 ++1m, 0.262894 ++1m, 0.263648 ++1m, 0.264401 ++1m, 0.265154 ++1m, 0.262487 ++1m, 0.259549 ++1m, 0.256611 ++1m, 0.253673 ++1m, 0.250735 ++1m, 0.254199 ++1m, 0.258274 ++1m, 0.262349 ++1m, 0.266425 ++1m, 0.270500 ++1m, 0.270185 ++1m, 0.269377 ++1m, 0.268569 ++1m, 0.267761 ++1m, 0.266953 ++1m, 0.268050 ++1m, 0.269395 ++1m, 0.270740 ++1m, 0.272084 ++1m, 0.273429 ++1m, 0.276155 ++1m, 0.279085 ++1m, 0.282016 ++1m, 0.284946 ++1m, 0.287877 ++1m, 0.286309 ++1m, 0.283992 ++1m, 0.281675 ++1m, 0.279358 ++1m, 0.277041 ++1m, 0.279466 ++1m, 0.282774 ++1m, 0.286082 ++1m, 0.289390 ++1m, 0.292698 ++1m, 0.298190 ++1m, 0.304131 ++1m, 0.310073 ++1m, 0.316015 ++1m, 0.321957 ++1m, 0.320661 ++1m, 0.317725 ++1m, 0.314790 ++1m, 0.311854 ++1m, 0.308919 ++1m, 0.308506 ++1m, 0.308717 ++1m, 0.308929 ++1m, 0.309141 ++1m, 0.309353 ++1m, 0.310369 ++1m, 0.311602 ++1m, 0.312835 ++1m, 0.314068 ++1m, 0.315301 ++1m, 0.318650 ++1m, 0.322618 ++1m, 0.326586 ++1m, 0.330555 ++1m, 0.334523 ++1m, 0.336308 ++1m, 0.337402 ++1m, 0.338495 ++1m, 0.339589 ++1m, 0.340682 ++1m, 0.338936 ++1m, 0.336222 ++1m, 0.333508 ++1m, 0.330794 ++1m, 0.328080 ++1m, 0.332903 ++1m, 0.340490 ++1m, 0.348078 ++1m, 0.355665 ++1m, 0.363253 ++1m, 0.363248 ++1m, 0.360258 ++1m, 0.357268 ++1m, 0.354278 ++1m, 0.351288 ++1m, 0.353795 ++1m, 0.358615 ++1m, 0.363434 ++1m, 0.368254 ++1m, 0.373073 ++1m, 0.373912 ++1m, 0.372961 ++1m, 0.372011 ++1m, 0.371060 ++1m, 0.370109 ++1m, 0.371173 ++1m, 0.373202 ++1m, 0.375231 ++1m, 0.377261 ++1m, 0.379290 ++1m, 0.382262 ++1m, 0.385715 ++1m, 0.389168 ++1m, 0.392620 ++1m, 0.396073 ++1m, 0.396396 ++1m, 0.395018 ++1m, 0.393640 ++1m, 0.392263 ++1m, 0.390885 ++1m, 0.393387 ++1m, 0.398127 ++1m, 0.402867 ++1m, 0.407608 ++1m, 0.412348 ++1m, 0.417306 ++1m, 0.422398 ++1m, 0.427490 ++1m, 0.432582 ++1m, 0.437674 ++1m, 0.441531 ++1m, 0.444584 ++1m, 0.447638 ++1m, 0.450692 ++1m, 0.453745 ++1m, 0.453973 ++1m, 0.452256 ++1m, 0.450538 ++1m, 0.448821 ++1m, 0.447103 ++1m, 0.448788 ++1m, 0.452952 ++1m, 0.457116 ++1m, 0.461280 ++1m, 0.465445 ++1m, 0.466463 ++1m, 0.465055 ++1m, 0.463646 ++1m, 0.462237 ++1m, 0.460829 ++1m, 0.460724 ++1m, 0.461683 ++1m, 0.462642 ++1m, 0.463602 ++1m, 0.464561 ++1m, 0.469697 ++1m, 0.478441 ++1m, 0.487185 ++1m, 0.495929 ++1m, 0.504672 ++1m, 0.505769 ++1m, 0.499882 ++1m, 0.493995 ++1m, 0.488108 ++1m, 0.482221 ++1m, 0.484360 ++1m, 0.494251 ++1m, 0.504142 ++1m, 0.514034 ++1m, 0.523925 ++1m, 0.527751 ++1m, 0.525384 ++1m, 0.523017 ++1m, 0.520650 ++1m, 0.518283 ++1m, 0.515893 ++1m, 0.513478 ++1m, 0.511063 ++1m, 0.508648 ++1m, 0.506234 ++1m, 0.507668 ++1m, 0.513498 ++1m, 0.519328 ++1m, 0.525158 ++1m, 0.530988 ++1m, 0.534626 ++1m, 0.535616 ++1m, 0.536607 ++1m, 0.537598 ++1m, 0.538588 ++1m, 0.538230 ++1m, 0.536148 ++1m, 0.534066 ++1m, 0.531984 ++1m, 0.529903 ++1m, 0.534551 ++1m, 0.548302 ++1m, 0.562054 ++1m, 0.575805 ++1m, 0.589556 ++1m, 0.593174 ++1m, 0.582280 ++1m, 0.571385 ++1m, 0.560490 ++1m, 0.549595 ++1m, 0.542154 ++1m, 0.539953 ++1m, 0.537752 ++1m, 0.535551 ++1m, 0.533350 ++1m, 0.536895 ++1m, 0.549684 ++1m, 0.562473 ++1m, 0.575262 ++1m, 0.588050 ++1m, 0.595417 ++1m, 0.593523 ++1m, 0.591629 ++1m, 0.589736 ++1m, 0.587842 ++1m, 0.589211 ++1m, 0.596496 ++1m, 0.603782 ++1m, 0.611067 ++1m, 0.618353 ++1m, 0.620227 ++1m, 0.611663 ++1m, 0.603099 ++1m, 0.594536 ++1m, 0.585972 ++1m, 0.582125 ++1m, 0.587964 ++1m, 0.593802 ++1m, 0.599640 ++1m, 0.605479 ++1m, 0.608268 ++1m, 0.604384 ++1m, 0.600499 ++1m, 0.596615 ++1m, 0.592730 ++1m, 0.593972 ++1m, 0.607196 ++1m, 0.620419 ++1m, 0.633643 ++1m, 0.646866 ++1m, 0.653312 ++1m, 0.642814 ++1m, 0.632316 ++1m, 0.621818 ++1m, 0.611321 ++1m, 0.607301 ++1m, 0.620639 ++1m, 0.633977 ++1m, 0.647315 ++1m, 0.660653 ++1m, 0.666440 ++1m, 0.650491 ++1m, 0.634542 ++1m, 0.618592 ++1m, 0.602643 ++1m, 0.594820 ++1m, 0.612190 ++1m, 0.629560 ++1m, 0.646930 ++1m, 0.664300 ++1m, 0.678658 ++1m, 0.682934 ++1m, 0.687209 ++1m, 0.691485 ++1m, 0.695760 ++1m, 0.697681 ++1m, 0.691057 ++1m, 0.684433 ++1m, 0.677809 ++1m, 0.671184 ++1m, 0.666186 ++1m, 0.667608 ++1m, 0.669030 ++1m, 0.670451 ++1m, 0.671873 ++1m, 0.673889 ++1m, 0.678470 ++1m, 0.683052 ++1m, 0.687633 ++1m, 0.692214 ++1m, 0.695887 ++1m, 0.695250 ++1m, 0.694612 ++1m, 0.693975 ++1m, 0.693338 ++1m, 0.692939 ++1m, 0.693785 ++1m, 0.694631 ++1m, 0.695478 ++1m, 0.696324 ++1m, 0.696526 ++1m, 0.692966 ++1m, 0.689406 ++1m, 0.685847 ++1m, 0.682287 ++1m, 0.680534 ++1m, 0.690622 ++1m, 0.700710 ++1m, 0.710798 ++1m, 0.720886 ++1m, 0.730881 ++1m, 0.740180 ++1m, 0.749479 ++1m, 0.758778 ++1m, 0.768077 ++1m, 0.775691 ++1m, 0.768869 ++1m, 0.762047 ++1m, 0.755225 ++1m, 0.748403 ++1m, 0.742472 ++1m, 0.745481 ++1m, 0.748491 ++1m, 0.751500 ++1m, 0.754509 ++1m, 0.757045 ++1m, 0.753876 ++1m, 0.750707 ++1m, 0.747537 ++1m, 0.744368 ++1m, 0.741265 ++1m, 0.739151 ++1m, 0.737038 ++1m, 0.734924 ++1m, 0.732811 ++1m, 0.731415 ++1m, 0.744002 ++1m, 0.756590 ++1m, 0.769178 ++1m, 0.781766 ++1m, 0.793928 ++1m, 0.794283 ++1m, 0.794639 ++1m, 0.794994 ++1m, 0.795350 ++1m, 0.795739 ++1m, 0.797678 ++1m, 0.799617 ++1m, 0.801557 ++1m, 0.803496 ++1m, 0.805386 ++1m, 0.800178 ++1m, 0.794970 ++1m, 0.789762 ++1m, 0.784554 ++1m, 0.779346 ++1m, 0.787739 ++1m, 0.796227 ++1m, 0.804716 ++1m, 0.813204 ++1m, 0.821693 ++1m, 0.813917 ++1m, 0.805794 ++1m, 0.797672 ++1m, 0.789549 ++1m, 0.781426 ++1m, 0.799239 ++1m, 0.817988 ++1m, 0.836736 ++1m, 0.855485 ++1m, 0.874234 ++1m, 0.864736 ++1m, 0.853789 ++1m, 0.842843 ++1m, 0.831896 ++1m, 0.820950 ++1m, 0.829602 ++1m, 0.839567 ++1m, 0.849531 ++1m, 0.859495 ++1m, 0.869459 ++1m, 0.870771 ++1m, 0.871363 ++1m, 0.871956 ++1m, 0.872549 ++1m, 0.873142 ++1m, 0.871804 ++1m, 0.870274 ++1m, 0.868744 ++1m, 0.867214 ++1m, 0.865684 ++1m, 0.866654 ++1m, 0.867916 ++1m, 0.869177 ++1m, 0.870439 ++1m, 0.871700 ++1m, 0.874678 ++1m, 0.877886 ++1m, 0.881094 ++1m, 0.884302 ++1m, 0.887510 ++1m, 0.891387 ++1m, 0.895366 ++1m, 0.899346 ++1m, 0.903325 ++1m, 0.907305 ++1m, 0.912080 ++1m, 0.916992 ++1m, 0.921904 ++1m, 0.926816 ++1m, 0.931728 ++1m, 0.927894 ++1m, 0.922392 ++1m, 0.916890 ++1m, 0.911387 ++1m, 0.905885 ++1m, 0.910907 ++1m, 0.918149 ++1m, 0.925391 ++1m, 0.932633 ++1m, 0.939875 ++1m, 0.941082 ++1m, 0.940889 ++1m, 0.940697 ++1m, 0.940505 ++1m, 0.940312 ++1m, 0.932065 ++1m, 0.921778 ++1m, 0.911491 ++1m, 0.901204 ++1m, 0.890917 ++1m, 0.898610 ++1m, 0.911256 ++1m, 0.923903 ++1m, 0.936550 ++1m, 0.949196 ++1m, 0.949972 ++1m, 0.947202 ++1m, 0.944433 ++1m, 0.941663 ++1m, 0.938893 ++1m, 0.928625 ++1m, 0.915938 ++1m, 0.903251 ++1m, 0.890564 ++1m, 0.877877 ++1m, 0.880108 ++1m, 0.887521 ++1m, 0.894935 ++1m, 0.902349 ++1m, 0.909762 ++1m, 0.920595 ++1m, 0.932703 ++1m, 0.944811 ++1m, 0.956919 ++1m, 0.969027 ++1m, 0.969230 ++1m, 0.964672 ++1m, 0.960113 ++1m, 0.955555 ++1m, 0.950997 ++1m, 0.948776 ++1m, 0.947556 ++1m, 0.946335 ++1m, 0.945115 ++1m, 0.943895 ++1m, 0.935305 ++1m, 0.923349 ++1m, 0.911393 ++1m, 0.899437 ++1m, 0.887480 ++1m, 0.895984 ++1m, 0.914452 ++1m, 0.932920 ++1m, 0.951387 ++1m, 0.969855 ++1m, 0.970176 ++1m, 0.961087 ++1m, 0.951997 ++1m, 0.942908 ++1m, 0.933819 ++1m, 0.935361 ++1m, 0.942764 ++1m, 0.950167 ++1m, 0.957570 ++1m, 0.964973 ++1m, 0.961336 ++1m, 0.951233 ++1m, 0.941131 ++1m, 0.931028 ++1m, 0.920925 ++1m, 0.924638 ++1m, 0.936935 ++1m, 0.949233 ++1m, 0.961531 ++1m, 0.973829 ++1m, 0.977238 ++1m, 0.974790 ++1m, 0.972341 ++1m, 0.969893 ++1m, 0.967445 ++1m, 0.962175 ++1m, 0.954936 ++1m, 0.947697 ++1m, 0.940457 ++1m, 0.933218 ++1m, 0.935485 ++1m, 0.944783 ++1m, 0.954080 ++1m, 0.963377 ++1m, 0.972675 ++1m, 0.974409 ++1m, 0.970224 ++1m, 0.966039 ++1m, 0.961855 ++1m, 0.957670 ++1m, 0.960599 ++1m, 0.969420 ++1m, 0.978241 ++1m, 0.987061 ++1m, 0.995882 ++1m, 0.996670 ++1m, 0.990424 ++1m, 0.984178 ++1m, 0.977931 ++1m, 0.971685 ++1m, 0.970768 ++1m, 0.974788 ++1m, 0.978808 ++1m, 0.982827 ++1m, 0.986847 ++1m, 0.984968 ++1m, 0.977313 ++1m, 0.969659 ++1m, 0.962004 ++1m, 0.954350 ++1m, 0.942768 ++1m, 0.927120 ++1m, 0.911472 ++1m, 0.895823 ++1m, 0.880175 ++1m, 0.875845 ++1m, 0.883908 ++1m, 0.891970 ++1m, 0.900032 ++1m, 0.908095 ++1m, 0.911900 ++1m, 0.910778 ++1m, 0.909655 ++1m, 0.908533 ++1m, 0.907410 ++1m, 0.907281 ++1m, 0.908369 ++1m, 0.909457 ++1m, 0.910545 ++1m, 0.911633 ++1m, 0.918841 ++1m, 0.933980 ++1m, 0.949120 ++1m, 0.964259 ++1m, 0.979399 ++1m, 0.974267 ++1m, 0.941325 ++1m, 0.908383 ++1m, 0.875441 ++1m, 0.842499 ++1m, 0.833637 ++1m, 0.859762 ++1m, 0.885888 ++1m, 0.912014 ++1m, 0.938140 ++1m, 0.951700 ++1m, 0.945909 ++1m, 0.940118 ++1m, 0.934328 ++1m, 0.928537 ++1m, 0.924780 ++1m, 0.924342 ++1m, 0.923904 ++1m, 0.923466 ++1m, 0.923028 ++1m, 0.920917 ++1m, 0.915904 ++1m, 0.910891 ++1m, 0.905878 ++1m, 0.900865 ++1m, 0.898290 ++1m, 0.900201 ++1m, 0.902113 ++1m, 0.904025 ++1m, 0.905936 ++1m, 0.911819 ++1m, 0.925479 ++1m, 0.939139 ++1m, 0.952800 ++1m, 0.966460 ++1m, 0.969697 ++1m, 0.951190 ++1m, 0.932683 ++1m, 0.914175 ++1m, 0.895668 ++1m, 0.884981 ++1m, 0.891692 ++1m, 0.898402 ++1m, 0.905112 ++1m, 0.911823 ++1m, 0.920855 ++1m, 0.935407 ++1m, 0.949959 ++1m, 0.964511 ++1m, 0.979063 ++1m, 0.980515 ++1m, 0.948651 ++1m, 0.916786 ++1m, 0.884922 ++1m, 0.853058 ++1m, 0.836844 ++1m, 0.863312 ++1m, 0.889779 ++1m, 0.916247 ++1m, 0.942715 ++1m, 0.960603 ++1m, 0.953339 ++1m, 0.946074 ++1m, 0.938810 ++1m, 0.931545 ++1m, 0.925881 ++1m, 0.925271 ++1m, 0.924660 ++1m, 0.924050 ++1m, 0.923440 ++1m, 0.921274 ++1m, 0.913795 ++1m, 0.906315 ++1m, 0.898836 ++1m, 0.891356 ++1m, 0.885329 ++1m, 0.884684 ++1m, 0.884038 ++1m, 0.883392 ++1m, 0.882747 ++1m, 0.883440 ++1m, 0.889538 ++1m, 0.895635 ++1m, 0.901733 ++1m, 0.907830 ++1m, 0.910020 ++1m, 0.894957 ++1m, 0.879895 ++1m, 0.864832 ++1m, 0.849770 ++1m, 0.838421 ++1m, 0.845111 ++1m, 0.851801 ++1m, 0.858492 ++1m, 0.865182 ++1m, 0.869028 ++1m, 0.857582 ++1m, 0.846136 ++1m, 0.834690 ++1m, 0.823244 ++1m, 0.815736 ++1m, 0.831850 ++1m, 0.847965 ++1m, 0.864079 ++1m, 0.880194 ++1m, 0.891355 ++1m, 0.869047 ++1m, 0.846738 ++1m, 0.824430 ++1m, 0.802122 ++1m, 0.784734 ++1m, 0.805222 ++1m, 0.825710 ++1m, 0.846197 ++1m, 0.866685 ++1m, 0.882728 ++1m, 0.859226 ++1m, 0.835724 ++1m, 0.812222 ++1m, 0.788720 ++1m, 0.768770 ++1m, 0.786035 ++1m, 0.803300 ++1m, 0.820565 ++1m, 0.837831 ++1m, 0.852691 ++1m, 0.837086 ++1m, 0.821482 ++1m, 0.805878 ++1m, 0.790274 ++1m, 0.775340 ++1m, 0.771052 ++1m, 0.766764 ++1m, 0.762476 ++1m, 0.758188 ++1m, 0.754572 ++1m, 0.765126 ++1m, 0.775680 ++1m, 0.786234 ++1m, 0.796788 ++1m, 0.806623 ++1m, 0.794239 ++1m, 0.781855 ++1m, 0.769472 ++1m, 0.757088 ++1m, 0.744947 ++1m, 0.746503 ++1m, 0.748059 ++1m, 0.749615 ++1m, 0.751171 ++1m, 0.752778 ++1m, 0.769143 ++1m, 0.785509 ++1m, 0.801874 ++1m, 0.818239 ++1m, 0.834604 ++1m, 0.814432 ++1m, 0.793875 ++1m, 0.773318 ++1m, 0.752760 ++1m, 0.732203 ++1m, 0.729089 ++1m, 0.726412 ++1m, 0.723735 ++1m, 0.721057 ++1m, 0.718380 ++1m, 0.719477 ++1m, 0.720724 ++1m, 0.721971 ++1m, 0.723218 ++1m, 0.724466 ++1m, 0.718061 ++1m, 0.711234 ++1m, 0.704407 ++1m, 0.697580 ++1m, 0.690753 ++1m, 0.687737 ++1m, 0.684992 ++1m, 0.682247 ++1m, 0.679501 ++1m, 0.676756 ++1m, 0.682467 ++1m, 0.688916 ++1m, 0.695364 ++1m, 0.701812 ++1m, 0.708260 ++1m, 0.706360 ++1m, 0.703593 ++1m, 0.700826 ++1m, 0.698059 ++1m, 0.695292 ++1m, 0.677207 ++1m, 0.657268 ++1m, 0.637328 ++1m, 0.617389 ++1m, 0.597450 ++1m, 0.598484 ++1m, 0.602433 ++1m, 0.606381 ++1m, 0.610329 ++1m, 0.614277 ++1m, 0.612482 ++1m, 0.609784 ++1m, 0.607086 ++1m, 0.604388 ++1m, 0.601691 ++1m, 0.597593 ++1m, 0.593249 ++1m, 0.588905 ++1m, 0.584561 ++1m, 0.580217 ++1m, 0.578793 ++1m, 0.577941 ++1m, 0.577089 ++1m, 0.576237 ++1m, 0.575385 ++1m, 0.560604 ++1m, 0.542813 ++1m, 0.525022 ++1m, 0.507231 ++1m, 0.489440 ++1m, 0.489830 ++1m, 0.494530 ++1m, 0.499231 ++1m, 0.503931 ++1m, 0.508632 ++1m, 0.516498 ++1m, 0.525183 ++1m, 0.533869 ++1m, 0.542554 ++1m, 0.551240 ++1m, 0.547171 ++1m, 0.539514 ++1m, 0.531858 ++1m, 0.524202 ++1m, 0.516545 ++1m, 0.514296 ++1m, 0.513693 ++1m, 0.513091 ++1m, 0.512488 ++1m, 0.511885 ++1m, 0.510832 ++1m, 0.509631 ++1m, 0.508430 ++1m, 0.507229 ++1m, 0.506027 ++1m, 0.511588 ++1m, 0.519540 ++1m, 0.527492 ++1m, 0.535445 ++1m, 0.543397 ++1m, 0.536305 ++1m, 0.523498 ++1m, 0.510691 ++1m, 0.497884 ++1m, 0.485078 ++1m, 0.481098 ++1m, 0.480711 ++1m, 0.480323 ++1m, 0.479936 ++1m, 0.479548 ++1m, 0.485361 ++1m, 0.493872 ++1m, 0.502382 ++1m, 0.510893 ++1m, 0.519404 ++1m, 0.513479 ++1m, 0.500853 ++1m, 0.488227 ++1m, 0.475601 ++1m, 0.462975 ++1m, 0.463203 ++1m, 0.469793 ++1m, 0.476382 ++1m, 0.482971 ++1m, 0.489560 ++1m, 0.487922 ++1m, 0.481950 ++1m, 0.475978 ++1m, 0.470007 ++1m, 0.464035 ++1m, 0.462834 ++1m, 0.464304 ++1m, 0.465773 ++1m, 0.467243 ++1m, 0.468712 ++1m, 0.469174 ++1m, 0.469037 ++1m, 0.468900 ++1m, 0.468763 ++1m, 0.468626 ++1m, 0.465880 ++1m, 0.461490 ++1m, 0.457100 ++1m, 0.452710 ++1m, 0.448320 ++1m, 0.450580 ++1m, 0.457286 ++1m, 0.463993 ++1m, 0.470699 ++1m, 0.477405 ++1m, 0.477641 ++1m, 0.473294 ++1m, 0.468947 ++1m, 0.464600 ++1m, 0.460253 ++1m, 0.459227 ++1m, 0.460692 ++1m, 0.462158 ++1m, 0.463623 ++1m, 0.465088 ++1m, 0.466797 ++1m, 0.468698 ++1m, 0.470599 ++1m, 0.472501 ++1m, 0.474402 ++1m, 0.473397 ++1m, 0.469952 ++1m, 0.466507 ++1m, 0.463062 ++1m, 0.459617 ++1m, 0.459135 ++1m, 0.461284 ++1m, 0.463434 ++1m, 0.465584 ++1m, 0.467733 ++1m, 0.470190 ++1m, 0.472934 ++1m, 0.475678 ++1m, 0.478422 ++1m, 0.481166 ++1m, 0.478677 ++1m, 0.470991 ++1m, 0.463304 ++1m, 0.455618 ++1m, 0.447932 ++1m, 0.440665 ++1m, 0.433837 ++1m, 0.427010 ++1m, 0.420182 ++1m, 0.413355 ++1m, 0.411414 ++1m, 0.414900 ++1m, 0.418386 ++1m, 0.421872 ++1m, 0.425358 ++1m, 0.426210 ++1m, 0.423971 ++1m, 0.421731 ++1m, 0.419492 ++1m, 0.417252 ++1m, 0.417889 ++1m, 0.422098 ++1m, 0.426307 ++1m, 0.430516 ++1m, 0.434726 ++1m, 0.435469 ++1m, 0.431656 ++1m, 0.427843 ++1m, 0.424030 ++1m, 0.420217 ++1m, 0.416178 ++1m, 0.411823 ++1m, 0.407468 ++1m, 0.403113 ++1m, 0.398759 ++1m, 0.395928 ++1m, 0.395345 ++1m, 0.394761 ++1m, 0.394178 ++1m, 0.393594 ++1m, 0.392290 ++1m, 0.389858 ++1m, 0.387425 ++1m, 0.384993 ++1m, 0.382561 ++1m, 0.380948 ++1m, 0.380693 ++1m, 0.380438 ++1m, 0.380182 ++1m, 0.379927 ++1m, 0.380042 ++1m, 0.380811 ++1m, 0.381579 ++1m, 0.382347 ++1m, 0.383115 ++1m, 0.383209 ++1m, 0.382041 ++1m, 0.380873 ++1m, 0.379706 ++1m, 0.378538 ++1m, 0.378154 ++1m, 0.379328 ++1m, 0.380503 ++1m, 0.381677 ++1m, 0.382852 ++1m, 0.382500 ++1m, 0.378914 ++1m, 0.375327 ++1m, 0.371741 ++1m, 0.368154 ++1m, 0.365185 ++1m, 0.363611 ++1m, 0.362036 ++1m, 0.360462 ++1m, 0.358887 ++1m, 0.357566 ++1m, 0.356856 ++1m, 0.356146 ++1m, 0.355437 ++1m, 0.354727 ++1m, 0.352813 ++1m, 0.347783 ++1m, 0.342754 ++1m, 0.337724 ++1m, 0.332695 ++1m, 0.329010 ++1m, 0.329058 ++1m, 0.329105 ++1m, 0.329153 ++1m, 0.329201 ++1m, 0.328870 ++1m, 0.327407 ++1m, 0.325944 ++1m, 0.324482 ++1m, 0.323019 ++1m, 0.322511 ++1m, 0.325081 ++1m, 0.327650 ++1m, 0.330219 ++1m, 0.332788 ++1m, 0.334574 ++1m, 0.333631 ++1m, 0.332688 ++1m, 0.331746 ++1m, 0.330803 ++1m, 0.330921 ++1m, 0.335056 ++1m, 0.339191 ++1m, 0.343326 ++1m, 0.347461 ++1m, 0.350591 ++1m, 0.349574 ++1m, 0.348557 ++1m, 0.347539 ++1m, 0.346522 ++1m, 0.345681 ++1m, 0.345633 ++1m, 0.345586 ++1m, 0.345539 ++1m, 0.345492 ++1m, 0.346354 ++1m, 0.351745 ++1m, 0.357137 ++1m, 0.362528 ++1m, 0.367919 ++1m, 0.372796 ++1m, 0.374830 ++1m, 0.376865 ++1m, 0.378899 ++1m, 0.380934 ++1m, 0.382623 ++1m, 0.382179 ++1m, 0.381736 ++1m, 0.381293 ++1m, 0.380850 ++1m, 0.379902 ++1m, 0.375439 ++1m, 0.370975 ++1m, 0.366512 ++1m, 0.362048 ++1m, 0.359051 ++1m, 0.367737 ++1m, 0.376423 ++1m, 0.385109 ++1m, 0.393795 ++1m, 0.400725 ++1m, 0.391415 ++1m, 0.382106 ++1m, 0.372797 ++1m, 0.363487 ++1m, 0.355365 ++1m, 0.360246 ++1m, 0.365127 ++1m, 0.370008 ++1m, 0.374890 ++1m, 0.379203 ++1m, 0.375933 ++1m, 0.372664 ++1m, 0.369394 ++1m, 0.366125 ++1m, 0.362837 ++1m, 0.359245 ++1m, 0.355653 ++1m, 0.352061 ++1m, 0.348469 ++1m, 0.345012 ++1m, 0.344638 ++1m, 0.344263 ++1m, 0.343889 ++1m, 0.343515 ++1m, 0.343042 ++1m, 0.339145 ++1m, 0.335247 ++1m, 0.331349 ++1m, 0.327451 ++1m, 0.323546 ++1m, 0.319130 ++1m, 0.314714 ++1m, 0.310299 ++1m, 0.305883 ++1m, 0.301467 diff --git a/examples/user_guide_examples/Example_1c/EV_Controller/Control.json b/examples/user_guide_examples/Example_1c/EV_Controller/Control.json index 2ee56fe98a..2efe597fe1 100644 --- a/examples/user_guide_examples/Example_1c/EV_Controller/Control.json +++ b/examples/user_guide_examples/Example_1c/EV_Controller/Control.json @@ -1,139 +1,139 @@ -{ - "name": "EV_Controller", - "loglevel": 5, - "coreType": "zmq", - "timeDelta": 1.0, - "uninterruptible": true, - - "endpoints":[ - { - "name": "EV_Controller/EV6", - "type": "genmessage", - "global": true - - }, - { - "name": "EV_Controller/EV5", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV4", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV3", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV2", - "type": "genmessage", - "global": true - }, - { - "name": "EV_Controller/EV1", - "type": "genmessage", - "global": true - } - ], - "filters": - [ - { - "name":"filterEV6", - "sourcetarget":"EV_Controller/EV6", - "mode":"source", - "operation":"delay", - "properties": - { - "name":"delay", - "value":600 - } - }, - { - "name":"filterEV5", - "sourcetarget":"EV_Controller/EV5", - "mode":"source", - "operation":"delay", - "properties": - { - "name":"delay", - "value":600 - } - }, - { - "name":"filterEV4", - "sourcetarget":"EV_Controller/EV4", - "operation":"delay", - "properties": - { - "name":"delay", - "value":600 - } - }, - { - "name":"filterEV3", - "sourcetarget":"EV_Controller/EV3", - "mode":"source", - "operation":"delay", - "properties": - { - "name":"delay", - "value":600 - } - }, - { - "name":"filterEV2", - "sourcetarget":"EV_Controller/EV2", - "mode":"source", - "operation":"delay", - "properties": - { - "name":"delay", - "value":600 - } - }, - { - "name":"filterEV1", - "sourcetarget":"EV_Controller/EV1", - "mode":"source", - "operation":"delay", - "properties": - { - "name":"delay", - "value":600 - } - } - ], - "subscriptions":[ - { - "key": "IEEE_123_feeder_0/totalLoad", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV6", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV5", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV4", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV3", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV2", - "type": "complex", - "required": true - }, { - "key": "IEEE_123_feeder_0/charge_EV1", - "type": "complex", - "required": true - }] +{ + "name": "EV_Controller", + "loglevel": 5, + "coreType": "zmq", + "timeDelta": 1.0, + "uninterruptible": true, + + "endpoints":[ + { + "name": "EV_Controller/EV6", + "type": "genmessage", + "global": true + + }, + { + "name": "EV_Controller/EV5", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV4", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV3", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV2", + "type": "genmessage", + "global": true + }, + { + "name": "EV_Controller/EV1", + "type": "genmessage", + "global": true + } + ], + "filters": + [ + { + "name":"filterEV6", + "sourcetarget":"EV_Controller/EV6", + "mode":"source", + "operation":"delay", + "properties": + { + "name":"delay", + "value":600 + } + }, + { + "name":"filterEV5", + "sourcetarget":"EV_Controller/EV5", + "mode":"source", + "operation":"delay", + "properties": + { + "name":"delay", + "value":600 + } + }, + { + "name":"filterEV4", + "sourcetarget":"EV_Controller/EV4", + "operation":"delay", + "properties": + { + "name":"delay", + "value":600 + } + }, + { + "name":"filterEV3", + "sourcetarget":"EV_Controller/EV3", + "mode":"source", + "operation":"delay", + "properties": + { + "name":"delay", + "value":600 + } + }, + { + "name":"filterEV2", + "sourcetarget":"EV_Controller/EV2", + "mode":"source", + "operation":"delay", + "properties": + { + "name":"delay", + "value":600 + } + }, + { + "name":"filterEV1", + "sourcetarget":"EV_Controller/EV1", + "mode":"source", + "operation":"delay", + "properties": + { + "name":"delay", + "value":600 + } + } + ], + "subscriptions":[ + { + "key": "IEEE_123_feeder_0/totalLoad", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV6", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV5", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV4", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV3", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV2", + "type": "complex", + "required": true + }, { + "key": "IEEE_123_feeder_0/charge_EV1", + "type": "complex", + "required": true + }] } \ No newline at end of file diff --git a/examples/user_guide_examples/Example_1c/Transmission/Transmission_json.json b/examples/user_guide_examples/Example_1c/Transmission/Transmission_json.json index b600e9983d..05d51a0b99 100644 --- a/examples/user_guide_examples/Example_1c/Transmission/Transmission_json.json +++ b/examples/user_guide_examples/Example_1c/Transmission/Transmission_json.json @@ -1,19 +1,19 @@ -{ - "name": "TransmissionSim", - "loglevel": 5, - "coreType": "zmq", - "timeDelta": 1.0, - "uninterruptible": true, - - "publications": [{ - "key": "TransmissionSim/transmission_voltage", - "type": "complex", - "global": true - }], - - "subscriptions": [{ - "key": "IEEE_123_feeder_0/totalLoad", - "type": "complex", - "required": true - }] +{ + "name": "TransmissionSim", + "loglevel": 5, + "coreType": "zmq", + "timeDelta": 1.0, + "uninterruptible": true, + + "publications": [{ + "key": "TransmissionSim/transmission_voltage", + "type": "complex", + "global": true + }], + + "subscriptions": [{ + "key": "IEEE_123_feeder_0/totalLoad", + "type": "complex", + "required": true + }] } \ No newline at end of file From 53fb2dafe0cecb1f7ce3746651805b2426880623 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Tue, 3 Mar 2020 14:47:27 -0800 Subject: [PATCH 19/32] Warning fixes (#1108) * doc update, fix some warnings and add `HELICS_DISABLE_GIT_OPERATIONS` hidden option prepare for 2.4.1 release * fix some additional warnings and revert some fixes. * Automated formatting of source files (#1109) Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> --- CMakeLists.txt | 21 ++++++++++++------- appveyor.yml | 2 +- benchmarks/helics/PholdFederate.hpp | 6 +++--- docs/ROADMAP.md | 11 +++++----- docs/installation/helics_cmake_options.md | 3 ++- src/helics/apps/Clone.hpp | 21 +++++++++++-------- src/helics/apps/helicsWebServer.cpp | 2 +- src/helics/core/CommonCore.hpp | 8 +++---- src/helics/core/CoreBroker.cpp | 1 + src/helics/core/FederateState.hpp | 4 ++-- tests/helics/shared_library/FilterTests.cpp | 4 ++-- tests/helics/shared_library/SystemTests.cpp | 1 + .../shared_library/test-message-federate.cpp | 16 ++++++++------ 13 files changed, 59 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab7b1cf9ed..3960c5a7ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ project(HELICS VERSION 2.4.1) # ----------------------------------------------------------------------------- set(HELICS_VERSION_BUILD) # use ISO date YYYY-MM-DD -set(HELICS_DATE "2020-02-21") +set(HELICS_DATE "2020-03-05") set(HELICS_VERSION_UNDERSCORE "${HELICS_VERSION_MAJOR}_${HELICS_VERSION_MINOR}_${HELICS_VERSION_PATCH}" @@ -53,9 +53,11 @@ else() get_property(helics-use-folders GLOBAL PROPERTY USE_FOLDERS) endif() -# generate a version description based on git tags -include(version_describe) -git_version_describe(${HELICS_SOURCE_DIR} HELICS_VERSION_DESCRIPTION) +if (NOT HELICS_DISABLE_GIT_OPERATIONS) + # generate a version description based on git tags + include(version_describe) + git_version_describe(${HELICS_SOURCE_DIR} HELICS_VERSION_DESCRIPTION) +endif() if(HELICS_VERSION_DESCRIPTION) message(STATUS "helics version tag description is ${HELICS_VERSION_DESCRIPTION}") @@ -335,9 +337,11 @@ if(HELICS_GENERATE_DOXYGEN_DOC) endif(DOXYGEN_FOUND) endif(HELICS_GENERATE_DOXYGEN_DOC) + # ------------------------------------------------------------- # Update git submodules # ------------------------------------------------------------- +if (NOT HELICS_DISABLE_GIT_OPERATIONS) include(updateGitSubmodules) if(NOT EXISTS "${PROJECT_SOURCE_DIR}/ThirdParty/fmtlib/CMakeLists.txt") submod_update(ThirdParty/fmtlib) @@ -383,6 +387,7 @@ endif() check_submodule_status() +endif() # NOT HELICS_DISABLE_GIT_OPERATIONS include(GNUInstallDirs) # ------------------------------------------------------------- @@ -1112,6 +1117,8 @@ endif() # ------------------------------------------------------------- # Git Hooks # ------------------------------------------------------------- -if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) - include(addGitHooks) -endif () +if (NOT HELICS_DISABLE_GIT_OPERATIONS) + if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) + include(addGitHooks) + endif () +endif() diff --git a/appveyor.yml b/appveyor.yml index f8c5772974..2221b96965 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,6 @@ clone_depth: 1 -version: 2.4.0.{build} +version: 2.4.1.{build} image: Visual Studio 2015 diff --git a/benchmarks/helics/PholdFederate.hpp b/benchmarks/helics/PholdFederate.hpp index ff9c51d107..ff405b9b66 100644 --- a/benchmarks/helics/PholdFederate.hpp +++ b/benchmarks/helics/PholdFederate.hpp @@ -82,12 +82,12 @@ class PholdFederate: public BenchmarkFederate { void doParamInit(helics::FederateInfo& /*fi*/) override { if (app->get_option("--set_rand_seed")->count() == 0) { - std::mt19937 rand_gen(0x600d5eed); + std::mt19937 rgen(0x600d5eed); std::uniform_int_distribution rand_seed_uniform; for (int i = 0; i < index; i++) { - rand_seed_uniform(rand_gen); + rand_seed_uniform(rgen); } - setRandomSeed(rand_seed_uniform(rand_gen)); + setRandomSeed(rand_seed_uniform(rgen)); } // set up based on given params diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index cb715f85a7..5c03738dfa 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -4,11 +4,8 @@ This document contains tentative plans for changes and improvements of note in upcoming versions of the HELICS library. All dates are approximate and subject to change, but this is a snapshot of the current planning thoughts. See the [projects](https://github.com/GMLC-TDC/HELICS/projects) for additional details -## \[2.5\] ~ 2020-04-30 +## \[2.5\] ~ 2020-05-01 - Multi-broker to allow multiple communication cores to be connected in the same federation -- Single thread cores(probably not) -- Plugin architecture for user defined cores (possible) -- SSL capable core (probably not) - Some dynamic federation support - C API callbacks for custom filters - improved REST API support @@ -20,7 +17,8 @@ This document contains tentative plans for changes and improvements of note in u - Debugging tools (Global time synchronization points) - Additional package manager integration - Performance improvements and tests -- Increased code Coverage +- Increased code Coverage (target 80%) +- Deprecate C api message structure ## \[2.6\] ~ 2020-07-31 It is unclear if there will be a 2.6 release or the changes would just get rolled into a 3.0 release. If there is it would be the last of the 2.X series and would likely be released in late July, 2020. @@ -31,6 +29,9 @@ It is unclear if there will be a 2.6 release or the changes would just get rolle - Full Dynamic Federation support - Much more general debugging support - Targeted endpoints +- SSL capable core +- Single thread cores +- Plugin architecture for user defined cores - Remove deprecated functions - Change values for log level enumerations - Some additional renaming of CMake variables diff --git a/docs/installation/helics_cmake_options.md b/docs/installation/helics_cmake_options.md index 1c28dbc2d8..c525c4357f 100644 --- a/docs/installation/helics_cmake_options.md +++ b/docs/installation/helics_cmake_options.md @@ -76,5 +76,6 @@ There are a few options in the CMake system that are not visible in the GUI they - `HELICS_OVERWRITE_INTERFACE_FILES` : Instruct CMake to take the generated files, and overwrite the existing interface files for the given language, only applies to python, Matlab, and Java. This is used in the generation of the interface files for releases and the git repo. It is only active is `HELICS_SWIG_GENERATE_INTERFACE_FILES_ONLY` is enabled. - `HELICS_DISABLE_SYSTEM_CALL_TESTS` : There are a few test that execute system calls, which could be problematic to compile or execute on certain platforms. This option removes those tests from compilation. - `INSTALL_SYSTEM_LIBRARIES` : Install system libraries with the installation, mainly useful for making a complete installer package with all needed libraries included. -= `HELICS_INSTALL_PACKAGE_TESTS` : Set the find_package tests to only look for HELICS in the system install paths, and enable the package-config-tests +- `HELICS_INSTALL_PACKAGE_TESTS` : Set the find_package tests to only look for HELICS in the system install paths, and enable the package-config-tests +- `HELICS_DISABLE_GIT_OPERATIONS` : will turn off any of the helper tools that require git, this is useful in a couple cases for building packages and other situations where updates shouldn't be checked and no modifications should be made. - `HELICS_SKIP_ZMQ_INSTALL`: This is only relevant if ZMQ is built as part of the compilation process, but it skips the installation of zmq as part of HELICS install in that case. diff --git a/src/helics/apps/Clone.hpp b/src/helics/apps/Clone.hpp index a960818f34..458089e497 100644 --- a/src/helics/apps/Clone.hpp +++ b/src/helics/apps/Clone.hpp @@ -23,10 +23,10 @@ namespace apps { class HELICS_CXX_EXPORT Clone: public App { public: /** construct from a FederateInfo structure - @param name the name of the Recorder, can be left empty for the default or to pull from the federateInfo object + @param appName the name of the Recorder, can be left empty for the default or to pull from the federateInfo object @param fi a federate information structure */ - Clone(const std::string& name, FederateInfo& fi); + Clone(const std::string& appName, FederateInfo& fi); /** construct from command line arguments in a vector @param args the command line arguments to pass in a reverse vector */ @@ -35,24 +35,27 @@ namespace apps { Clone(int argc, char* argv[]); /**constructor taking a federate information structure and using the given core - @param name the name of the Recorder, can be left empty for the default or to pull from the federateInfo object + @param appName the name of the Recorder, can be left empty for the default or to pull from the federateInfo object @param core a pointer to core object which the federate can join @param fi a federate information structure */ - Clone(const std::string& name, const std::shared_ptr& core, const FederateInfo& fi); + Clone( + const std::string& appName, + const std::shared_ptr& core, + const FederateInfo& fi); /**constructor taking a federate information structure and using the given core - @param name the name of the federate (can be empty to use defaults from fi) + @param appName the name of the federate (can be empty to use defaults from fi) @param core a coreApp object that can be joined @param fi a federate information structure */ - Clone(const std::string& name, CoreApp& core, const FederateInfo& fi); + Clone(const std::string& appName, CoreApp& core, const FederateInfo& fi); /**constructor taking a file with the required information - @param name the name of the app - @param file a file defining the federate information in JSon or text + @param appName the name of the app + @param jsonString a file or json string defining the federate information in JSON or text */ - Clone(const std::string& name, const std::string& file); + Clone(const std::string& appName, const std::string& jsonString); /** move construction*/ Clone(Clone&& other_recorder) = default; /** move assignment*/ diff --git a/src/helics/apps/helicsWebServer.cpp b/src/helics/apps/helicsWebServer.cpp index 536a15faa4..665f1dd1be 100644 --- a/src/helics/apps/helicsWebServer.cpp +++ b/src/helics/apps/helicsWebServer.cpp @@ -276,7 +276,7 @@ void handle_request(http::request>&& req, Se } } if (brokerName == "query" && target == "brokers") { - brokerName == "brokers"; + brokerName = "brokers"; } if (brokerName == "brokers") { return send(response_json(getBrokerList())); diff --git a/src/helics/core/CommonCore.hpp b/src/helics/core/CommonCore.hpp index fbacc55688..0884a44e22 100644 --- a/src/helics/core/CommonCore.hpp +++ b/src/helics/core/CommonCore.hpp @@ -409,13 +409,13 @@ class CommonCore: public Core, public BrokerBase { uint16_t flags = 0); /** check if a global id represents a local federate - @param global_id the federate global id + @param global_fedid the identifier for the federate @return true if it is a local federate*/ - bool isLocal(global_federate_id global_id) const; + bool isLocal(global_federate_id global_fedid) const; /** get a route id for a non-local federate - @param global_id the federate global id + @param global_fedid the identifier for the federate @return parent_route if unknown, otherwise returns the route_id*/ - route_id getRoute(global_federate_id global_id) const; + route_id getRoute(global_federate_id global_fedid) const; /** process a message for potential additions to the filter ordering @param cmd the message to process */ diff --git a/src/helics/core/CoreBroker.cpp b/src/helics/core/CoreBroker.cpp index ad826e83f2..3b8a641d9d 100644 --- a/src/helics/core/CoreBroker.cpp +++ b/src/helics/core/CoreBroker.cpp @@ -575,6 +575,7 @@ void CoreBroker::processPriorityCommand(ActionMessage&& command) delayTransmitQueue.push(command); } } + break; default: // must not have been a priority command break; diff --git a/src/helics/core/FederateState.hpp b/src/helics/core/FederateState.hpp index 2927e9d660..b9ef134660 100644 --- a/src/helics/core/FederateState.hpp +++ b/src/helics/core/FederateState.hpp @@ -103,8 +103,8 @@ class FederateState { delayQueues; //!< queue for delaying processing of messages for a time std::vector events; //!< list of value events to process std::vector delayedFederates; //!< list of federates to delay messages from - Time time_granted = startupTime; //!< the most recent granted time; - Time allowed_send_time = startupTime; //!< the next time a message can be sent; + Time time_granted{startupTime}; //!< the most recent granted time; + Time allowed_send_time{startupTime}; //!< the next time a message can be sent; mutable std::atomic_flag processing = ATOMIC_FLAG_INIT; //!< the federate is processing private: /** a logging function for logging or printing messages*/ diff --git a/tests/helics/shared_library/FilterTests.cpp b/tests/helics/shared_library/FilterTests.cpp index a2ddfa9e8b..9712d1422a 100644 --- a/tests/helics/shared_library/FilterTests.cpp +++ b/tests/helics/shared_library/FilterTests.cpp @@ -623,7 +623,7 @@ TEST_F(filter_tests, clone_test_connections) //this is testing the filtered_endpoints query for cloning source filters auto q = helicsCreateQuery("", "filtered_endpoints"); std::string filteredEndpoints = helicsQueryExecute(q, sFed, nullptr); - std::cout << filteredEndpoints << std::endl; + //std::cout << filteredEndpoints << std::endl; EXPECT_TRUE(filteredEndpoints.find("(cloning)") != std::string::npos); EXPECT_TRUE(filteredEndpoints.find("srcFilters") != std::string::npos); helicsQueryFree(q); @@ -786,7 +786,7 @@ TEST_F(filter_tests, clone_test_dest_connections) auto q = helicsCreateQuery("", "filtered_endpoints"); std::string filteredEndpoints = helicsQueryExecute(q, dFed, nullptr); - std::cout << filteredEndpoints << std::endl; + //std::cout << filteredEndpoints << std::endl; EXPECT_TRUE(filteredEndpoints.find("cloningdestFilter") != std::string::npos); helicsQueryFree(q); diff --git a/tests/helics/shared_library/SystemTests.cpp b/tests/helics/shared_library/SystemTests.cpp index 74f7ccc7ff..b69929be65 100644 --- a/tests/helics/shared_library/SystemTests.cpp +++ b/tests/helics/shared_library/SystemTests.cpp @@ -56,6 +56,7 @@ TEST(other_tests, broker_global_value) // test global value creation from a core and its error pathways TEST(other_tests, core_global_value) { + helicsCloseLibrary(); auto err = helicsErrorInitialize(); auto brk = helicsCreateBroker("test", "gbrokerc", "--root", &err); diff --git a/tests/helics/shared_library/test-message-federate.cpp b/tests/helics/shared_library/test-message-federate.cpp index ce0ca7923b..99c92af607 100644 --- a/tests/helics/shared_library/test-message-federate.cpp +++ b/tests/helics/shared_library/test-message-federate.cpp @@ -275,15 +275,19 @@ TEST_P(mfed_type_tests, send_receive_2fed) auto M1 = helicsEndpointGetMessage(epid); // ASSERT_TRUE(M1); - ASSERT_EQ(M1.length, 400); - ASSERT_NE(M1.data, nullptr); - EXPECT_EQ(M1.data[245], 'b'); + EXPECT_EQ(M1.length, 400); + EXPECT_NE(M1.data, nullptr); + if (M1.data != nullptr) { + EXPECT_EQ(M1.data[245], 'b'); + } auto M2 = helicsEndpointGetMessage(epid2); // ASSERT_TRUE(M2); - ASSERT_EQ(M2.length, 500); - ASSERT_NE(M2.data, nullptr); - EXPECT_EQ(M2.data[245], 'a'); + EXPECT_EQ(M2.length, 500); + EXPECT_NE(M2.data, nullptr); + if (M2.data != nullptr) { + EXPECT_EQ(M2.data[245], 'a'); + } CE(helicsFederateFinalizeAsync(mFed1, &err)); CE(helicsFederateFinalize(mFed2, &err)); CE(helicsFederateFinalizeComplete(mFed1, &err)); From 91973306f08ee4ce4391df36a3431560fce5eb84 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Tue, 3 Mar 2020 19:32:45 -0800 Subject: [PATCH 20/32] Send helics-version-update event to helics-packaging after new releases (#1112) * Send helics-version-update event for completed release builds * Use double quotes instead for bash substitution * Update CHANGELOG.md * Update the step name for helics-packaging release event notification * Update CHANGELOG.md * Update CHANGELOG.md --- .github/workflows/release-build.yml | 38 +++++++++++++++++++++-------- CHANGELOG.md | 1 + 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 315b493d2c..a5bee317f9 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -7,9 +7,9 @@ on: types: published jobs: -################################ +##################################### # Create all submodules archive -################################ +##################################### create-all-submodule-archive: name: Create all submodule archive runs-on: ubuntu-latest @@ -33,9 +33,9 @@ jobs: name: all-submodules-archive path: artifact -################################ +##################################### # Build MSVC archives -################################ +##################################### build-windows-msvc: runs-on: ${{ matrix.os }} strategy: @@ -90,9 +90,9 @@ jobs: name: ${{ runner.os }}-installers path: artifact -################################ +##################################### # Build installers -################################ +##################################### build-installers: runs-on: ${{ matrix.os }} name: Build ${{ matrix.os }} ${{ matrix.arch }} ${{ matrix.cpack_gen }} Installer @@ -172,9 +172,9 @@ jobs: name: ${{ runner.os }}-installers path: artifact -################################ +##################################### # Build shared libraries -################################ +##################################### build-sharedlibs: runs-on: ${{ matrix.os }} name: Build ${{ matrix.os }} ${{ matrix.arch }} Shared Library @@ -248,9 +248,9 @@ jobs: name: ${{ runner.os }}-installers path: artifact -################################ +##################################### # Generate SHA-256 file -################################ +##################################### generate-sha256: name: Calculate SHA256 for release assets needs: [create-all-submodule-archive, build-installers, build-sharedlibs, build-windows-msvc] @@ -291,3 +291,21 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} UPLOAD_URL: ${{ github.event.release.upload_url }} run: ./.github/workflows/upload-release-asset.sh "artifacts/Helics-$(git rev-parse --abbrev-ref "${GITHUB_REF}")-SHA-256.txt" + +##################################### +# Send helics-version-update event(s) +##################################### + send-version-update-event: + name: Send helics-version-update event(s) + needs: [generate-sha256] + runs-on: ubuntu-latest + if: github.event.action == 'published' + steps: + - name: Send event to helics-packaging + run: | + HELICS_REPO="${{ github.repository }}" + HELICS_VERSION="${{ github.event.release.tag_name }}" + curl -X POST --header 'authorization: Bearer ${{ secrets.HELICS_BOT_TOKEN }}' \ + --url https://api.github.com/repos/GMLC-TDC/helics-packaging/dispatches \ + --header 'content-type: application/json' \ + --data "{\"event_type\":\"helics-version-update\",\"client_payload\":{\"repository\":\"${HELICS_REPO}\",\"tag_name\":\"${HELICS_VERSION}\",\"version\":\"${HELICS_VERSION#v}\"}}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 532f39f74f..3877f4a035 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ Increased code coverage and additional bug fixes. - helics can be installed on [MSYS2](https://helics.readthedocs.io/en/latest/installation/windows.html#msys2) using pacman. - Standalone benchmark federates for use in multinode benchmark runs - A FreeBSD 12.1 CI build using Cirrus CI +- Sending an event from GitHub Actions release builds to trigger updating additional HELICS packages when a new release is made ### Deprecated From db2c196f9cd36c3952c6cc514e91cb5c4cb06b5e Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Wed, 4 Mar 2020 14:19:41 -0800 Subject: [PATCH 21/32] Add win32 release zip archive (#1113) * Add win32 archive with apps to release assets * Update CHANGELOG.md --- .github/workflows/release-build.yml | 10 ++++++++-- CHANGELOG.md | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index a5bee317f9..d61d53ee61 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -98,7 +98,7 @@ jobs: name: Build ${{ matrix.os }} ${{ matrix.arch }} ${{ matrix.cpack_gen }} Installer strategy: matrix: - id: [windows-x64, macos-x64-zip, linux-x64] + id: [windows-x64, windows-x86, macos-x64, linux-x64] include: - id: windows-x64 os: windows-latest @@ -106,7 +106,13 @@ jobs: cpack_gen: NSIS;ZIP cmake_gen: 'Visual Studio 16 2019' msvc_ver: 'msvc2019' - - id: macos-x64-zip + - id: windows-x86 + os: windows-latest + arch: x86 + cpack_gen: ZIP + cmake_gen: 'Visual Studio 16 2019' + msvc_ver: 'msvc2019' + - id: macos-x64 os: macos-latest arch: x64 cpack_gen: ZIP diff --git a/CHANGELOG.md b/CHANGELOG.md index 3877f4a035..2febbbbe2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Increased code coverage and additional bug fixes. - Standalone benchmark federates for use in multinode benchmark runs - A FreeBSD 12.1 CI build using Cirrus CI - Sending an event from GitHub Actions release builds to trigger updating additional HELICS packages when a new release is made +- A 32-bit Windows zip install archive for releases ### Deprecated From 70ee2cfd3891758c64fa294c9e38354a751098be Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Wed, 4 Mar 2020 14:20:36 -0800 Subject: [PATCH 22/32] Update GitHub actions to use actions/checkout@v2 (#1114) * Update release build to actions/checkout@v2 * Update clang-format action to use checkout v2 * Update swig gen to use checkout v2 action * Update CHANGELOG.md --- .github/workflows/clang-format.yml | 4 ++-- .github/workflows/release-build.yml | 16 ++++++++-------- .github/workflows/swig-interface-gen.yml | 2 +- CHANGELOG.md | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml index b12b98e569..cb1bab8297 100644 --- a/.github/workflows/clang-format.yml +++ b/.github/workflows/clang-format.yml @@ -33,10 +33,10 @@ jobs: # script: | # github.issues.createComment({...context.issue, body: 'Okay, commit https://github.com/${{ github.repository }}/commit/${{ github.sha }} is being formatted. A PR with the changes will be open soon! :sunglasses:'}) - name: Checkout event Ref - uses: actions/checkout@v1 + uses: actions/checkout@v2 if: github.event_name != 'pull_request' - name: Checkout PR Head Ref - uses: actions/checkout@v1 + uses: actions/checkout@v2 if: github.event_name == 'pull_request' with: repository: ${{ github.event.pull_request.head.repo.full_name }} diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index d61d53ee61..6e21c30d5c 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest if: github.event.action == 'published' steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Create archive # Creates the archive then moves it to an artifact subfolder @@ -51,11 +51,11 @@ jobs: msvc_ver: 'msvc2019' steps: - name: Checkout event ref - uses: actions/checkout@v1 + uses: actions/checkout@v2 if: github.event.action == 'published' - name: Checkout develop branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 with: ref: develop if: github.event_name == 'schedule' @@ -124,11 +124,11 @@ jobs: steps: - name: Checkout event ref - uses: actions/checkout@v1 + uses: actions/checkout@v2 if: github.event.action == 'published' - name: Checkout develop branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 with: ref: develop if: github.event_name == 'schedule' @@ -208,11 +208,11 @@ jobs: steps: - name: Checkout event ref - uses: actions/checkout@v1 + uses: actions/checkout@v2 if: github.event.action == 'published' - name: Checkout develop branch - uses: actions/checkout@v1 + uses: actions/checkout@v2 with: ref: develop if: github.event_name == 'schedule' @@ -263,7 +263,7 @@ jobs: runs-on: ubuntu-latest if: github.event.action == 'published' steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Get all submodules archive uses: actions/download-artifact@v1 diff --git a/.github/workflows/swig-interface-gen.yml b/.github/workflows/swig-interface-gen.yml index 38f33df88a..08a92e9c2e 100644 --- a/.github/workflows/swig-interface-gen.yml +++ b/.github/workflows/swig-interface-gen.yml @@ -14,7 +14,7 @@ jobs: image: helics/buildenv:interface-gen steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Run SWIG run: | rm -rf interfaces/*/interface/* diff --git a/CHANGELOG.md b/CHANGELOG.md index 2febbbbe2e..63e221aa99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Increased code coverage and additional bug fixes. - Configuration of flags and targets for interfaces in json and toml files can be done in multiple sections - The benchmark federates have been changed to use a common base benchmark federate class for more consistent behavior - Switched to including netif as a git submodule +- Updated the GitHub actions (clang-format, swig interface updates, and release builds) to use actions/checkout@v2 ### Fixed - Issue with iterative requests that were not being honored if the federate was acting in isolation From d15d0083643382d04288baa15e87ff3ea880aa3f Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Wed, 4 Mar 2020 19:22:50 -0800 Subject: [PATCH 23/32] Windows installer clean-up (#1116) * Cleanup the Windows installer * Replace cpack_add_component_group with setting variables * Revise component descriptions for installer * Minor changes to formatting and description rewording * Update CHANGELOG.md --- CHANGELOG.md | 1 + CMakeLists.txt | 51 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63e221aa99..9be2e1d5fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ Increased code coverage and additional bug fixes. - The benchmark federates have been changed to use a common base benchmark federate class for more consistent behavior - Switched to including netif as a git submodule - Updated the GitHub actions (clang-format, swig interface updates, and release builds) to use actions/checkout@v2 +- Cleaned up the Windows installer (better component names/descriptions and groups, link to Gitter, and require installing Headers to install SWIG) ### Fixed - Issue with iterative requests that were not being honored if the federate was acting in isolation diff --git a/CMakeLists.txt b/CMakeLists.txt index 3960c5a7ba..ff6000c158 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -991,16 +991,16 @@ if(HELICS_ENABLE_PACKAGE_BUILD) # cmake-format: on set(CPACK_COMPONENTS_ALL + Runtime applications headers libs - Runtime + swig matlab python java octave csharp - swig cereal ) if(WIN32) @@ -1011,18 +1011,36 @@ if(HELICS_ENABLE_PACKAGE_BUILD) set(CPACK_RESOURCE_FILE_README "${HELICS_SOURCE_DIR}/README.md") endif(WIN32) - set(CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "Application") + set(CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "Applications") set(CPACK_COMPONENT_LIBS_DISPLAY_NAME "Libraries") set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Headers") set(CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "Runtime Libraries") - + set(CPACK_COMPONENT_SWIG_DISPLAY_NAME "SWIG") + set(CPACK_COMPONENT_JAVA_DISPLAY_NAME "Java") + set(CPACK_COMPONENT_PYTHON_DISPLAY_NAME "Python") + set(CPACK_COMPONENT_MATLAB_DISPLAY_NAME "MATLAB") + set(CPACK_COMPONENT_OCTAVE_DISPLAY_NAME "Octave") + set(CPACK_COMPONENT_CSHARP_DISPLAY_NAME "C#") + + set(CPACK_COMPONENT_GROUP_INTERFACES_DISPLAY_NAME "Interfaces") + set(CPACK_COMPONENT_GROUP_INTERFACES_DESCRIPTION + "Additional language interfaces for HELICS" + ) + set(CPACK_COMPONENT_SWIG_GROUP interfaces) set(CPACK_COMPONENT_MATLAB_GROUP interfaces) set(CPACK_COMPONENT_JAVA_GROUP interfaces) set(CPACK_COMPONENT_OCTAVE_GROUP interfaces) set(CPACK_COMPONENT_PYTHON_GROUP interfaces) set(CPACK_COMPONENT_CSHARP_GROUP interfaces) - set(CPACK_COMPONENT_APPLICATION_DESCRIPTION + set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DISPLAY_NAME "Development") + set(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION + "Files needed to build applications that use HELICS" + ) + set(CPACK_COMPONENT_HEADERS_GROUP development) + set(CPACK_COMPONENT_LIBS_GROUP development) + + set(CPACK_COMPONENT_APPLICATIONS_DESCRIPTION "Executables and helper applications for HELICS" ) set(CPACK_COMPONENT_LIBS_DESCRIPTION @@ -1036,12 +1054,15 @@ if(HELICS_ENABLE_PACKAGE_BUILD) "cereal C++11 serialization library [no support for other language interfaces]" ) set(CPACK_COMPONENT_SWIG_DESCRIPTION - "Basic swig interface files for HELICS for building 3rd party language interfaces" - ) - set(CPACK_COMPONENT_GROUP_INTERFACES_DESCRIPTION - "additional language interfaces for HELICS" + "SWIG files needed for building 3rd party language interfaces (requires Development Headers)" ) + set(CPACK_COMPONENT_PYTHON_DESCRIPTION "Python language interface") + set(CPACK_COMPONENT_JAVA_DESCRIPTION "Java language interface") + set(CPACK_COMPONENT_MATLAB_DESCRIPTION "MATLAB language interface") + set(CPACK_COMPONENT_OCTAVE_DESCRIPTION "Octave language interface") + set(CPACK_COMPONENT_CSHARP_DESCRIPTION "C# language interface") + set(CPACK_COMPONENT_SWIG_DEPENDS headers) set(CPACK_COMPONENT_LIBS_DEPENDS headers) set(CPACK_COMPONENT_RUNTIME_REQUIRED ON) @@ -1061,6 +1082,10 @@ if(HELICS_ENABLE_PACKAGE_BUILD) endif() if(WIN32) + # title at the top of the installer + set(CPACK_NSIS_PACKAGE_NAME "HELICS v${HELICS_VERSION}") + # name shown in the add/remove program control panel + set(CPACK_NSIS_DISPLAY_NAME "HELICS v${HELICS_VERSION}") set(CPACK_PACKAGE_ICON "${HELICS_SOURCE_DIR}\\\\docs\\\\img\\\\HELICS.ico") set(CPACK_NSIS_MUI_ICON "${HELICS_SOURCE_DIR}/docs/img/HELICS.ico") set(CPACK_NSIS_INSTALL_ROOT "C:\\\\local") @@ -1073,11 +1098,13 @@ if(HELICS_ENABLE_PACKAGE_BUILD) set(CPACK_NSIS_EXECUTABLES_DIRECTORY ${CMAKE_INSTALL_BINDIR}) set(CPACK_NSIS_MENU_LINKS "https://www.github.com/GMLC-TDC/HELICS" - "HELICS Github" + "HELICS GitHub" "https://helics.readthedocs.io/en/latest" - "Helics Documentation" + "HELICS Documentation" "https://www.helics.org" - "Helics Web page" + "HELICS Website" + "https://gitter.im/GMLC-TDC/HELICS" + "HELICS Gitter Chat" "https://www.youtube.com/channel/UCPa81c4BVXEYXt2EShTzbcg" "TDC YouTube channel" ) From 1df1846d352daed3d27060320b1c6296e93b8751 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Wed, 4 Mar 2020 20:12:34 -0800 Subject: [PATCH 24/32] Global err control (#1110) * add flags and global error propagation to federates and cores * update some functions in the commonCore with the Error propagation changes. * add error definitions * more more integration of global and local error paths. * add checks in the time coordinator * work on the error propagation through the federation * change a bunch of booleans in the broker state to use a connection_state enumeration * change the internal functions around for CoreBroker * add error processing in coreBroker * update error propagation handling in the core. * get global error termination to work for first case * add some state conditions to CommonCore for error handling * allow the terminate_on_error flag to be set on a core, and work through error escalation rules on the core * add test for connection error generated in Federate and escalation. [codecov] * add system and shared_library tests for local and Global errors [codecov] * update some coverage sections and fix a few warnings and issues from the sanitizers [codecov] * update some docs and changelog related to this PR. * Automated formatting of source files (#1111) Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> [codecov] * add function calls to the C++98 API * Apply suggestions from code review Co-Authored-By: Ryan Mast * Automated formatting of source files (#1115) Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> * Apply suggestions from code review Co-Authored-By: Ryan Mast Co-authored-by: Ryan Mast Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> --- CHANGELOG.md | 6 +- benchmarks/helics/PholdFederate.hpp | 6 +- docs/apps/Broker.md | 15 +- docs/configuration/FederateFlags.md | 4 + docs/man/broker-options.adoc | 4 + docs/man/timeout-options.adoc | 4 + src/helics/application_api/Federate.cpp | 39 +++- src/helics/application_api/Federate.hpp | 9 + src/helics/application_api/FederateInfo.cpp | 8 +- src/helics/core/ActionMessage.hpp | 16 ++ src/helics/core/ActionMessageDefintions.hpp | 8 + src/helics/core/BrokerBase.cpp | 73 +++++++- src/helics/core/BrokerBase.hpp | 6 +- src/helics/core/CommonCore.cpp | 134 ++++++++++--- src/helics/core/CommonCore.hpp | 19 +- src/helics/core/Core.hpp | 27 ++- src/helics/core/CoreBroker.cpp | 176 +++++++++++++----- src/helics/core/CoreBroker.hpp | 31 ++- src/helics/core/FederateState.cpp | 91 +++++++-- src/helics/core/FederateState.hpp | 9 +- src/helics/core/TimeCoordinator.cpp | 45 +++++ src/helics/core/TimeCoordinator.hpp | 2 + src/helics/core/TimeDependencies.cpp | 11 +- src/helics/core/TimeDependencies.hpp | 1 + src/helics/core/TimeoutMonitor.cpp | 10 +- src/helics/core/global_federate_id.hpp | 34 ++-- src/helics/core/helics_definitions.hpp | 7 +- src/helics/cpp98/Federate.hpp | 18 ++ src/helics/helics_enums.h | 5 +- .../shared_api_library/FederateExport.cpp | 30 +++ src/helics/shared_api_library/helics.h | 18 ++ .../helics/application_api/FederateTests.cpp | 62 ++++++ tests/helics/shared_library/SystemTests.cpp | 45 +++++ .../helics/shared_library/evilInputTests.cpp | 22 +++ tests/helics/system_tests/ErrorTests.cpp | 147 ++++++++++++++- 35 files changed, 985 insertions(+), 157 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9be2e1d5fc..7830b1eebe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ A note on future revisions. Everything within a major version number should be code compatible (with the exception of experimental interfaces). The most notable example of an experimental interface is the support for multiple source inputs. The APIs to deal with this will change in future minor releases. Everything within a single minor release should be network compatible with other federates on the same minor release number. Compatibility across minor release numbers may be possible in some situations but we are not going to guarantee this as those components are subject to performance improvements and may need to be modified at some point. Patch releases will be limited to bug fixes and other improvements not impacting the public API or network compatibility. Check the [Public API](./docs/Public_API.md) for details on what is included and excluded from the public API and version stability. ## [2.4.1][] - 2020-03-04 -Increased code coverage and additional bug fixes. +Increased code coverage and additional bug fixes. The error propagation in HELICS was improved such that local errors can be escaled to global errors, and a federate can define errors coming from the federate that are handled appropriately and can halt a co-simulation. ### Changed @@ -28,13 +28,15 @@ Increased code coverage and additional bug fixes. ### Added - `HELICS_DISABLE_WEBSERVER` option to turn off building of the webserver. It will build by default if Boost is enabled and is version 1.70 or higher; otherwise it is disabled. -- A series of test for Federate.cpp to increase coverage on that file to 100% +- A series of tests for Federate.cpp to increase coverage on that file to 100% - A series of tests for ValueFederate.*pp to increase coverage on that file to 100% - Docker image for a helics builder which includes build tools and the helics installation - helics can be installed on [MSYS2](https://helics.readthedocs.io/en/latest/installation/windows.html#msys2) using pacman. - Standalone benchmark federates for use in multinode benchmark runs - A FreeBSD 12.1 CI build using Cirrus CI - Sending an event from GitHub Actions release builds to trigger updating additional HELICS packages when a new release is made +- `localError`, and `GlobalError` function calls the Federate API and in the C++ and sharedLibrary. +- `helics_terminate_on_error` flag to escalate what would be a local error into a global one that will halt the co-simulation. This flag can be specified through the flag to federates or to brokers and cores through a command line option `--terminate_on_error` - A 32-bit Windows zip install archive for releases ### Deprecated diff --git a/benchmarks/helics/PholdFederate.hpp b/benchmarks/helics/PholdFederate.hpp index ff405b9b66..b44b49dc79 100644 --- a/benchmarks/helics/PholdFederate.hpp +++ b/benchmarks/helics/PholdFederate.hpp @@ -82,12 +82,12 @@ class PholdFederate: public BenchmarkFederate { void doParamInit(helics::FederateInfo& /*fi*/) override { if (app->get_option("--set_rand_seed")->count() == 0) { - std::mt19937 rgen(0x600d5eed); + std::mt19937 random_engine(0x600d5eed); std::uniform_int_distribution rand_seed_uniform; for (int i = 0; i < index; i++) { - rand_seed_uniform(rgen); + rand_seed_uniform(random_engine); } - setRandomSeed(rand_seed_uniform(rgen)); + setRandomSeed(rand_seed_uniform(random_engine)); } // set up based on given params diff --git a/docs/apps/Broker.md b/docs/apps/Broker.md index bf9fb89f98..5bb5c253da 100644 --- a/docs/apps/Broker.md +++ b/docs/apps/Broker.md @@ -20,8 +20,7 @@ command line only: configuration: -n [ --name ] arg name of the broker - -t [ --type ] arg type of the broker ("(zmq)", "ipc", "test", "mpi", - "test", "tcp", "udp") + -t [ --type ] arg type of the broker ("(zmq)", "ipc", "test", "mpi","test", "tcp", "udp") Help for Zero MQ Broker: allowed options: @@ -113,14 +112,16 @@ configuration: connected (ignored in cores) --identifier arg name of the core/broker --tick arg number of milliseconds per tick counter if there is no - broker communication for 2 ticks then secondary - actions are taken (can also be entered as a time like - '10s' or '45ms') - --dumplog capture a record of all messages and dump a complete - log to file or console on termination + broker communication for 2 ticks then secondary actions + are taken (can also be entered as a time like '10s' or '45ms') + --dumplog capture a record of all messages and dump a complete log to file or console on termination + --terminate_on_error Specify that the co-simulation should terminate if any error occurs --timeout arg milliseconds to wait for a broker connection (can also be entered as a time like '10s' or '45ms') + --error_timeout arg milliseconds to wait before disconnecting after an error + (can also be entered as a time like '10s' or '45ms') + ``` If the Broker is started with `term` as the first option, a terminal is opened for user entry of commands all command line arguments following term are passed to the broker. diff --git a/docs/configuration/FederateFlags.md b/docs/configuration/FederateFlags.md index 5ec54ddfc5..7aa172c034 100644 --- a/docs/configuration/FederateFlags.md +++ b/docs/configuration/FederateFlags.md @@ -32,3 +32,7 @@ This applies to Input interface. If enabled this flag tells the inputs to check If specified on a federate it indicates the federate may be slow in responding, and to not disconnect the federate if things are slow. If applied to a core or broker, it is indicative that the broker doesn't respond to internal pings quickly so they cannot be used as a mechanism for timeout. For federates this option doesn't do much but its role will likely be expanded as more robust timeout and coordination mechanics are developed. + +#### terminate on error + +If the `terminate_on_error` flag is set then a federate encountering an internal error will trigger a global error and cause the entire federation to abort. If the flag is not set then errors will only be local. Errors of this nature are typically the result of configuration errors. For example having a required publication that is not used or incompatible units or types on publications and subscriptions. diff --git a/docs/man/broker-options.adoc b/docs/man/broker-options.adoc index d0f28e193a..17a27c6639 100644 --- a/docs/man/broker-options.adoc +++ b/docs/man/broker-options.adoc @@ -112,6 +112,10 @@ All Core/Broker Types Specify that a broker might be slow or unresponsive to ping requests from other brokers. +--terminate_on_error:: + Specify that a broker should treat all errors as global errors and terminate + the co-simulation if an error is encountered + --restrictive_time_policy:: --conservative_time_policy:: Specify that a broker should use a conservative time policy in the time diff --git a/docs/man/timeout-options.adoc b/docs/man/timeout-options.adoc index ac1efbe7de..8c67d91422 100644 --- a/docs/man/timeout-options.adoc +++ b/docs/man/timeout-options.adoc @@ -17,3 +17,7 @@ Timeout --networktimeout :: Time to wait for a broker connection. Can be entered as a time like '10s' or '45ms'. Default unit is ms. + +--errortimeout :: + Time to wait after an error has occured before disconnecting. Can be entered as a time like '10s' + or '45ms'. Default unit is ms. \ No newline at end of file diff --git a/src/helics/application_api/Federate.cpp b/src/helics/application_api/Federate.cpp index bfe0ef01de..b07b2370f3 100644 --- a/src/helics/application_api/Federate.cpp +++ b/src/helics/application_api/Federate.cpp @@ -530,13 +530,8 @@ void Federate::error(int errorcode) error(errorcode, errorString); } -void Federate::error(int errorcode, const std::string& message) +void Federate::completeOperation() { - if (!coreObject) { - throw( - InvalidFunctionCall("cannot generate error on uninitialized or disconnected Federate")); - } - // deal with pending operations first switch (currentMode.load()) { case modes::pending_init: enterInitializingModeComplete(); @@ -556,10 +551,42 @@ void Federate::error(int errorcode, const std::string& message) default: break; } +} + +void Federate::error(int errorcode, const std::string& message) +{ + if (!coreObject) { + throw( + InvalidFunctionCall("cannot generate error on uninitialized or disconnected Federate")); + } + // deal with pending operations first + completeOperation(); currentMode = modes::error; coreObject->logMessage(fedID, errorcode, message); } +void Federate::localError(int errorcode, const std::string& message) +{ + if (!coreObject) { + throw(InvalidFunctionCall( + "cannot generate a federation error on uninitialized or disconnected Federate")); + } + completeOperation(); + currentMode = modes::error; + coreObject->localError(fedID, errorcode, message); +} + +void Federate::globalError(int errorcode, const std::string& message) +{ + if (!coreObject) { + throw(InvalidFunctionCall( + "cannot generate a federation error on uninitialized or disconnected Federate")); + } + completeOperation(); + currentMode = modes::error; + coreObject->globalError(fedID, errorcode, message); +} + Time Federate::requestTime(Time nextInternalTimeStep) { if (currentMode == modes::executing) { diff --git a/src/helics/application_api/Federate.hpp b/src/helics/application_api/Federate.hpp index 818bef0b9f..cb4ba61352 100644 --- a/src/helics/application_api/Federate.hpp +++ b/src/helics/application_api/Federate.hpp @@ -166,6 +166,13 @@ class HELICS_CXX_EXPORT Federate { /** specify the simulator had an error with error code and message */ void error(int errorcode, const std::string& message); + /** specify the simulator had a local error with error code and message + */ + void localError(int errorcode, const std::string& message); + + /** specify the simulator had a local error with error code and message + */ + void globalError(int errorcode, const std::string& message); /** specify a separator to use for naming separation between the federate name and the interface name setSeparator('.') will result in future registrations of local endpoints such as fedName.endpoint @@ -557,6 +564,8 @@ class HELICS_CXX_EXPORT Federate { { logMessage(helics_log_level_data, message); } + /** call to complete async operation with no output*/ + void completeOperation(); private: /** register filter interfaces defined in file or string diff --git a/src/helics/application_api/FederateInfo.cpp b/src/helics/application_api/FederateInfo.cpp index 6b98681869..f0a4a74ccc 100644 --- a/src/helics/application_api/FederateInfo.cpp +++ b/src/helics/application_api/FederateInfo.cpp @@ -80,7 +80,9 @@ static const std::map propStringsTranslations{ {"buffer_data", helics_handle_option_buffer_data}, {"required", helics_handle_option_connection_required}, {"optional", helics_handle_option_connection_optional}, - {"wait_for_current_time", helics_flag_wait_for_current_time_update}}; + {"wait_for_current_time", helics_flag_wait_for_current_time_update}, + {"terminate_on_error", helics_flag_terminate_on_error}, + {"terminateonerror", helics_flag_terminate_on_error}}; static const std::set validTimeProperties{"period", "timedelta", @@ -126,7 +128,9 @@ static const std::set validFlagOptions{"interruptible", "no_ping", "slow", "required", - "optional"}; + "optional", + "terminate_on_error", + "terminateonerror"}; static const std::map optionStringsTranslations{ {"buffer", helics_handle_option_buffer_data}, diff --git a/src/helics/core/ActionMessage.hpp b/src/helics/core/ActionMessage.hpp index d83baaec72..bcf9a4d68d 100644 --- a/src/helics/core/ActionMessage.hpp +++ b/src/helics/core/ActionMessage.hpp @@ -235,6 +235,9 @@ inline bool isTimingCommand(const ActionMessage& command) noexcept case CMD_EXEC_REQUEST: case CMD_PRIORITY_DISCONNECT: case CMD_TERMINATE_IMMEDIATELY: + case CMD_ERROR: + case CMD_LOCAL_ERROR: + case CMD_GLOBAL_ERROR: return true; default: return false; @@ -284,6 +287,19 @@ inline bool isDisconnectCommand(const ActionMessage& command) noexcept } } +/** check if a command is a disconnect command*/ +inline bool isErrorCommand(const ActionMessage& command) noexcept +{ + switch (command.action()) { + case CMD_ERROR: + case CMD_LOCAL_ERROR: + case CMD_GLOBAL_ERROR: + return true; + default: + return false; + } +} + /** check if a command is a valid command*/ inline bool isValidCommand(const ActionMessage& command) noexcept { diff --git a/src/helics/core/ActionMessageDefintions.hpp b/src/helics/core/ActionMessageDefintions.hpp index 7d5724ae29..02f64a7fec 100644 --- a/src/helics/core/ActionMessageDefintions.hpp +++ b/src/helics/core/ActionMessageDefintions.hpp @@ -83,6 +83,10 @@ across different compilers*/ cmd_log = 55, //!< log a message with the root broker cmd_warning = 9990, //!< indicate some sort of warning cmd_error = 10000, //!< indicate an error with a federate + cmd_local_error = 10003, //!< indicate a local error within a federate/core/broker + cmd_global_error = + 10005, //!< indicate a global error with a federate/core/broker and the federation should terminate + cmd_error_check = 10001, //!< check some status for error and error timeouts cmd_invalid = 1010101, //!< indicates that command has generated an invalid state cmd_send_route = 75, //!< command to define a route information cmd_search_dependency = 1464, //!< command to add a dependency by name @@ -235,6 +239,10 @@ across different compilers*/ #define CMD_LOG action_message_def::action_t::cmd_log #define CMD_WARNING action_message_def::action_t::cmd_warning #define CMD_ERROR action_message_def::action_t::cmd_error +#define CMD_GLOBAL_ERROR action_message_def::action_t::cmd_global_error +#define CMD_LOCAL_ERROR action_message_def::action_t::cmd_local_error +#define CMD_ERROR_CHECK action_message_def::action_t::cmd_error_check + #define CMD_RESEND action_message_def::action_t::cmd_resend #define CMD_REG_PUB action_message_def::action_t::cmd_reg_pub diff --git a/src/helics/core/BrokerBase.cpp b/src/helics/core/BrokerBase.cpp index cb14ece53c..9ecd3a0078 100644 --- a/src/helics/core/BrokerBase.cpp +++ b/src/helics/core/BrokerBase.cpp @@ -137,13 +137,16 @@ std::shared_ptr BrokerBase::generateBaseCLI() "--conservative_time_policy,--restrictive_time_policy", restrictive_time_policy, "specify that a broker should use a conservative time policy in the time coordinator"); + hApp->add_flag( + "--terminate_on_error,--halt_on_error", + terminate_on_error, + "specify that a broker should cause the federation to terminate on an error"); auto logging_group = hApp->add_option_group("logging", "Options related to file and message logging"); logging_group->option_defaults()->ignore_underscore(); logging_group->add_flag( "--force_logging_flush", forceLoggingFlush, "flush the log after every message"); - logging_group->add_option("--logfile", logFile, "the file to log the messages to") - ->ignore_underscore(); + logging_group->add_option("--logfile", logFile, "the file to log the messages to"); logging_group ->add_option_function( "--loglevel,--log-level", @@ -172,6 +175,7 @@ std::shared_ptr BrokerBase::generateBaseCLI() auto timeout_group = hApp->add_option_group("timeouts", "Options related to network and process timeouts"); + timeout_group->option_defaults()->ignore_underscore()->ignore_case(); timeout_group->add_option( "--tick", tickTimer, @@ -192,6 +196,13 @@ std::shared_ptr BrokerBase::generateBaseCLI() networkTimeout, "time to wait for a broker connection default unit is in ms(can also be entered as a time " "like '10s' or '45ms') "); + timeout_group + ->add_option( + "--errordelay,--errortimeout", + errorDelay, + "time to wait after an error state before terminating " + "like '10s' or '45ms') ") + ->default_str(std::to_string(static_cast(errorDelay))); return hApp; } @@ -283,7 +294,18 @@ void BrokerBase::setErrorState(int eCode, const std::string& estring) { lastErrorString = estring; errorCode = eCode; - brokerState.store(broker_state_t::errored); + if (brokerState.load() != broker_state_t::errored) { + brokerState.store(broker_state_t::errored); + if (errorDelay <= timeZero) { + ActionMessage halt(CMD_USER_DISCONNECT, global_id.load(), global_id.load()); + addActionMessage(halt); + } else { + errorTimeStart = std::chrono::steady_clock::now(); + ActionMessage(CMD_ERROR_CHECK, global_id.load(), global_id.load()); + } + } + + sendToLogger(global_id.load(), helics_log_level_error, identifier, estring); } void BrokerBase::setLoggingFile(const std::string& lfile) @@ -497,6 +519,30 @@ void BrokerBase::queueProcessingLoop() contextLoop = serv->startContextLoop(); #endif } + // deal with error state timeout + if (brokerState.load() == broker_state_t::errored) { + auto ctime = std::chrono::steady_clock::now(); + auto td = ctime - errorTimeStart; + if (td >= errorDelay.to_ms()) { + command.setAction(CMD_USER_DISCONNECT); + addActionMessage(command); + } else { +#ifndef HELICS_DISABLE_ASIO + if (!disable_timer) { + ticktimer.expires_at(errorTimeStart + errorDelay.to_ns()); + active = std::make_pair(true, true); + ticktimer.async_wait(timerCallback); + } else { + command.setAction(CMD_ERROR_CHECK); + addActionMessage(command); + } +#else + command.setAction(CMD_ERROR_CHECK); + addActionMessage(command); +#endif + } + break; + } if (messagesSinceLastTick == 0 || forwardTick) { #ifndef DISABLE_TICK processCommand(std::move(command)); @@ -512,6 +558,26 @@ void BrokerBase::queueProcessingLoop() } #endif break; + case CMD_ERROR_CHECK: + if (brokerState.load() == broker_state_t::errored) { + auto ctime = std::chrono::steady_clock::now(); + auto td = ctime - errorTimeStart; + if (td > errorDelay.to_ms()) { + command.setAction(CMD_USER_DISCONNECT); + addActionMessage(command); + } else { +#ifndef HELICS_DISABLE_ASIO + if (tickTimer > td * 2 || disable_timer) { + std::this_thread::sleep_for(std::chrono::milliseconds(200)); + addActionMessage(command); + } +#else + std::this_thread::sleep_for(std::chrono::milliseconds(200)); + addActionMessage(command); +#endif + } + } + break; case CMD_PING: // ping is processed normally but doesn't count as an actual message for timeout purposes unless it // comes from the parent @@ -572,6 +638,7 @@ action_message_def::action_t BrokerBase::commandProcessor(ActionMessage& command case CMD_STOP: case CMD_TICK: case CMD_PING: + case CMD_ERROR_CHECK: return command.action(); case CMD_MULTI_MESSAGE: for (int ii = 0; ii < command.counter; ++ii) { diff --git a/src/helics/core/BrokerBase.hpp b/src/helics/core/BrokerBase.hpp index 34d41ae51b..d108da8d60 100644 --- a/src/helics/core/BrokerBase.hpp +++ b/src/helics/core/BrokerBase.hpp @@ -44,6 +44,7 @@ class BrokerBase { Time tickTimer{5.0}; //!< the length of each heartbeat tick Time timeout{30.0}; //!< timeout to wait to establish a broker connection before giving up Time networkTimeout{-1.0}; //!< timeout to establish a socket connection before giving up + Time errorDelay{10.0}; //!< time to delay before terminating after error state std::string identifier; //!< an identifier for the broker std::string brokerKey; //!< a key that all joining federates must have to connect if empty no key is required @@ -60,6 +61,8 @@ class BrokerBase { false}; //!< flag indicating that no further message should be processed bool restrictive_time_policy{ false}; //!< flag indicating the broker should use a conservative time policy + bool terminate_on_error{ + false}; //!< flag indicating that the federation should halt on any error private: std::atomic mainLoopIsRunning{ false}; //!< flag indicating that the main processing loop is running @@ -101,7 +104,8 @@ class BrokerBase { bool forwardTick{ false}; //!< indicator that ticks should be forwarded to the command processor regardless bool no_ping{false}; //!< indicator that the broker is not very responsive to ping requests - + decltype(std::chrono::steady_clock::now()) + errorTimeStart; //!< time when the error condition started related to the errorDelay std::atomic errorCode{0}; //!< storage for last error code std::string lastErrorString; //!< storage for last error string diff --git a/src/helics/core/CommonCore.cpp b/src/helics/core/CommonCore.cpp index 14b346c7c7..73064e066b 100644 --- a/src/helics/core/CommonCore.cpp +++ b/src/helics/core/CommonCore.cpp @@ -339,15 +339,43 @@ bool CommonCore::isOpenToNewFederates() const { return ((brokerState != broker_state_t::created) && (brokerState < broker_state_t::operating)); } -void CommonCore::error(local_federate_id federateID, int errorID) +void CommonCore::globalError( + local_federate_id federateID, + int error_code, + const std::string& error_string) +{ + auto fed = getFederateAt(federateID); + if (fed == nullptr) { + throw(InvalidIdentifier("federateID not valid error")); + } + ActionMessage m(CMD_GLOBAL_ERROR); + m.source_id = fed->global_id.load(); + m.messageID = error_code; + m.payload = error_string; + addActionMessage(m); + fed->addAction(m); + iteration_result ret = iteration_result::next_step; + while (ret != iteration_result::error) { + ret = fed->genericUnspecifiedQueueProcess(); + if (ret == iteration_result::halted) { + break; + } + } +} + +void CommonCore::localError( + local_federate_id federateID, + int error_code, + const std::string& error_string) { auto fed = getFederateAt(federateID); if (fed == nullptr) { throw(InvalidIdentifier("federateID not valid error")); } - ActionMessage m(CMD_ERROR); + ActionMessage m(CMD_LOCAL_ERROR); m.source_id = fed->global_id.load(); - m.messageID = errorID; + m.messageID = error_code; + m.payload = error_string; addActionMessage(m); fed->addAction(m); iteration_result ret = iteration_result::next_step; @@ -390,18 +418,22 @@ bool CommonCore::allInitReady() const bool CommonCore::allDisconnected() const { // all federates must have hit finished state - auto afed = allFedDisconnected(); + auto afed = (minFederateState() == operation_state::disconnected); if ((hasTimeDependency) || (hasFilters)) { return (afed) && (!timeCoord->hasActiveTimeDependencies()); } return (afed); } -bool CommonCore::allFedDisconnected() const +operation_state CommonCore::minFederateState() const { - // all federates must have hit finished state - auto pred = [](const auto& fed) { return fed.disconnected; }; - return std::all_of(loopFederates.begin(), loopFederates.end(), pred); + operation_state op{operation_state::disconnected}; + for (auto& fed : loopFederates) { + if (fed.state < op) { + op = fed.state; + } + } + return op; } void CommonCore::setCoreReadyToInit() @@ -729,21 +761,11 @@ void CommonCore::setFlagOption(local_federate_id federateID, int32_t flag, bool } else { ActionMessage cmd(CMD_CORE_CONFIGURE); cmd.messageID = defs::flags::delay_init_entry; - if (flagValue) { - setActionFlag(cmd, indicator_flag); - } addActionMessage(cmd); } - } else if (flag == defs::flags::enable_init_entry) { - ActionMessage cmd(CMD_CORE_CONFIGURE); - cmd.messageID = defs::flags::enable_init_entry; - if (flagValue) { - setActionFlag(cmd, indicator_flag); - } - addActionMessage(cmd); - } else if (flag == defs::flags::slow_responding) { + } else { ActionMessage cmd(CMD_CORE_CONFIGURE); - cmd.messageID = defs::flags::slow_responding; + cmd.messageID = flag; if (flagValue) { setActionFlag(cmd, indicator_flag); } @@ -2452,12 +2474,14 @@ void CommonCore::errorRespondDelayedMessages(const std::string& estring) } } -void CommonCore::sendErrorToFederates(int error_code) +void CommonCore::sendErrorToFederates(int error_code, const std::string& message) { - ActionMessage errorCom(CMD_ERROR); + ActionMessage errorCom(CMD_LOCAL_ERROR); + errorCom.source_id = global_broker_id_local; errorCom.messageID = error_code; + errorCom.payload = message; loopFederates.apply([&errorCom](auto& fed) { - if ((fed) && (!fed.disconnected)) { + if ((fed) && (fed.state == operation_state::operating)) { fed->addAction(errorCom); } }); @@ -2564,6 +2588,12 @@ void CommonCore::processCommand(ActionMessage&& command) m.source_id = global_broker_id_local; transmit(parent_route_id, m); } + } else if ( + brokerState == broker_state_t::errored) { //we are disconnecting in an error state + sendDisconnect(); + ActionMessage m(CMD_DISCONNECT); + m.source_id = global_broker_id_local; + transmit(parent_route_id, m); } addActionMessage(CMD_STOP); // we can't just fall through since this may have generated other messages that need to be forwarded or @@ -2638,12 +2668,12 @@ void CommonCore::processCommand(ActionMessage&& command) if (fed == loopFederates.end()) { return; } - fed->disconnected = true; + fed->state = operation_state::disconnected; auto cstate = brokerState.load(); if ((!checkAndProcessDisconnect()) || (cstate < broker_state_t::operating)) { command.setAction(CMD_DISCONNECT_FED); transmit(parent_route_id, command); - if (!allFedDisconnected()) { + if (minFederateState() != operation_state::disconnected) { command.setAction(CMD_DISCONNECT_FED_ACK); command.dest_id = command.source_id; command.source_id = parent_broker_id; @@ -2735,22 +2765,61 @@ void CommonCore::processCommand(ActionMessage&& command) } break; case CMD_ERROR: + case CMD_LOCAL_ERROR: if (command.dest_id == global_broker_id_local) { if (command.source_id == higher_broker_id || - command.source_id == parent_broker_id) { - sendErrorToFederates(command.messageID); - brokerState = broker_state_t::errored; + command.source_id == parent_broker_id || command.source_id == root_broker_id) { + sendErrorToFederates(command.messageID, command.payload); + setErrorState(command.messageID, command.payload); + } else { sendToLogger( parent_broker_id, log_level::error, getFederateNameNoThrow(command.source_id), command.payload); + auto fed = loopFederates.find(command.source_id); + fed->state = operation_state::error; + + if (hasTimeDependency) { + timeCoord->processTimeMessage(command); + } + } + if (terminate_on_error) { + if (brokerState != broker_state_t::errored) { + sendErrorToFederates(command.messageID, command.payload); + brokerState = broker_state_t::errored; + } + command.setAction(CMD_GLOBAL_ERROR); + command.source_id = global_broker_id_local; + command.dest_id = root_broker_id; + transmit(parent_route_id, std::move(command)); } } else { + if (command.dest_id == parent_broker_id) { + if (terminate_on_error) { + if (brokerState != broker_state_t::errored) { + sendErrorToFederates(command.messageID, command.payload); + brokerState = broker_state_t::errored; + } + command.setAction(CMD_GLOBAL_ERROR); + command.source_id = global_broker_id_local; + command.dest_id = root_broker_id; + transmit(parent_route_id, std::move(command)); + break; + } else { + } + } routeMessage(command); } break; + case CMD_GLOBAL_ERROR: + setErrorState(command.messageID, command.payload); + sendErrorToFederates(command.messageID, command.payload); + if (!(command.source_id == higher_broker_id || command.source_id == root_broker_id)) { + transmit(parent_route_id, std::move(command)); + } + break; case CMD_DATA_LINK: { auto pub = loopHandles.getPublication(command.name); if (pub != nullptr) { @@ -3529,6 +3598,9 @@ void CommonCore::processCoreConfigureCommands(ActionMessage& cmd) case defs::properties::console_log_level: setLogLevels(cmd.getExtraData(), fileLogLevel); break; + case defs::flags::terminate_on_error: + terminate_on_error = checkActionFlag(cmd, indicator_flag); + break; case defs::flags::slow_responding: no_ping = checkActionFlag(cmd, indicator_flag); break; @@ -3555,6 +3627,12 @@ void CommonCore::processCoreConfigureCommands(ActionMessage& cmd) FiltI->filterOp = std::move(M); } } break; + default: + LOG_WARNING( + global_broker_id_local, + identifier, + "unrecognized configure option passed to core "); + break; } } diff --git a/src/helics/core/CommonCore.hpp b/src/helics/core/CommonCore.hpp index 0884a44e22..0020280764 100644 --- a/src/helics/core/CommonCore.hpp +++ b/src/helics/core/CommonCore.hpp @@ -35,12 +35,14 @@ class FilterCoordinator; class FilterInfo; class TimeoutMonitor; enum class handle_type : char; +/** enumeration of possible operating conditions for a federate*/ +enum class operation_state : std::uint8_t { operating = 0, error = 5, disconnected = 10 }; /** helper class for containing some wrapper around a federate for the core*/ class FedInfo { public: FederateState* fed = nullptr; - bool disconnected = false; + operation_state state{operation_state::operating}; constexpr FedInfo() = default; constexpr explicit FedInfo(FederateState* newfed) noexcept: fed(newfed){}; @@ -68,7 +70,12 @@ class CommonCore: public Core, public BrokerBase { virtual void configureFromVector(std::vector args) override final; virtual bool isConfigured() const override final; virtual bool isOpenToNewFederates() const override final; - virtual void error(local_federate_id federateID, int errorID = -1) override final; + virtual void + globalError(local_federate_id federateID, int errorCode, const std::string& error_string) + override final; + virtual void + localError(local_federate_id federateID, int errorCode, const std::string& error_string) + override final; virtual void finalize(local_federate_id federateID) override final; virtual void enterInitializingMode(local_federate_id federateID) override final; virtual void setCoreReadyToInit() override final; @@ -270,8 +277,8 @@ class CommonCore: public Core, public BrokerBase { bool allInitReady() const; /** check if all connections are disconnected (feds and time dependencies)*/ bool allDisconnected() const; - /** check if all federates have said good-bye*/ - bool allFedDisconnected() const; + /** get the minimum operating state of the connected federates*/ + operation_state minFederateState() const; private: /** get the federate Information from the federateID*/ @@ -448,8 +455,8 @@ class CommonCore: public Core, public BrokerBase { */ std::string federateQuery(const FederateState* fed, const std::string& queryStr) const; - /** send an error code to all the federates*/ - void sendErrorToFederates(int error_code); + /** send an error code and message to all the federates*/ + void sendErrorToFederates(int error_code, const std::string& message); /** check for a disconnect and take actions if the object can disconnect*/ bool checkAndProcessDisconnect(); /** send a disconnect message to time dependencies and child federates*/ diff --git a/src/helics/core/Core.hpp b/src/helics/core/Core.hpp index a15726ae7e..fd608bc0e6 100644 --- a/src/helics/core/Core.hpp +++ b/src/helics/core/Core.hpp @@ -126,10 +126,31 @@ class Core { virtual const std::string& getIdentifier() const = 0; /** get the connection network or connection address for the core*/ virtual const std::string& getAddress() const = 0; + + /** + * Federate has encountered a global error and the federation should halt. + @param federateID the federate + */ + virtual void globalError( + local_federate_id federateID, + int32_t errorCode, + const std::string& error_string) = 0; + + /** + * Federate has encountered a local error and should be disconnected. + */ + virtual void localError( + local_federate_id federateID, + int32_t errorCode, + const std::string& error_string) = 0; + /** * Federate has encountered an unrecoverable error. */ - virtual void error(local_federate_id federateID, int32_t errorCode = -1) = 0; + void error(local_federate_id federateID, int32_t errorCode = -1) + { + globalError(federateID, errorCode, ""); + } /** * Federate has completed. @@ -140,7 +161,7 @@ class Core { virtual void finalize(local_federate_id federateID) = 0; /** - * Federates may be in four Modes. + * Federates may be in five Modes. * -# Startup * Configuration of the federate. * State begins when registerFederate() is invoked and ends when enterInitializingMode() is invoked. @@ -152,6 +173,8 @@ class Core { * State begins when enterExecutingMode() is invoked and ends when finalize() is invoked. * -# Finalized * state after finalize is invoked. + * -# Error + * state invoked after an error is called. */ /** diff --git a/src/helics/core/CoreBroker.cpp b/src/helics/core/CoreBroker.cpp index 3b8a641d9d..a5a8f7b8f2 100644 --- a/src/helics/core/CoreBroker.cpp +++ b/src/helics/core/CoreBroker.cpp @@ -527,9 +527,9 @@ void CoreBroker::processPriorityCommand(ActionMessage&& command) case CMD_PRIORITY_DISCONNECT: { auto brk = getBrokerById(global_broker_id(command.source_id)); if (brk != nullptr) { - brk->isDisconnected = true; + brk->state = connection_state::disconnected; } - if (allDisconnected()) { + if (getAllConnectionState() >= connection_state::disconnected) { if (!isRootc) { ActionMessage dis(CMD_PRIORITY_DISCONNECT); dis.source_id = global_broker_id_local; @@ -635,7 +635,7 @@ void CoreBroker::labelAsDisconnected(global_broker_id brkid) { auto disconnect_procedure = [brkid](auto& obj) { if (obj.parent == brkid) { - obj.isDisconnected = true; + obj.state = connection_state::disconnected; } }; _brokers.apply(disconnect_procedure); @@ -647,10 +647,10 @@ void CoreBroker::sendDisconnect() ActionMessage bye(CMD_DISCONNECT); bye.source_id = global_broker_id_local; _brokers.apply([this, &bye](auto& brk) { - if (!brk.isDisconnected) { + if (brk.state < connection_state::disconnected) { if (brk.parent == global_broker_id_local) { this->routeMessage(bye, brk.global_id); - brk.isDisconnected = true; + brk.state = connection_state::disconnected; } if (hasTimeDependency) { timeCoord->removeDependency(brk.global_id); @@ -731,10 +731,11 @@ void CoreBroker::processCommand(ActionMessage&& command) bool partDisconnected{false}; bool ignore{false}; for (auto& brk : _brokers) { - if (brk.isDisconnected) { + if (brk.state == connection_state::disconnected) { partDisconnected = true; } - if (brk.isDisconnected && brk.global_id == command.source_id) { + if (brk.state == connection_state::disconnected && + brk.global_id == command.source_id) { // the broker in question is already disconnected, ignore this ignore = true; break; @@ -781,7 +782,7 @@ void CoreBroker::processCommand(ActionMessage&& command) case CMD_INIT: { auto brk = getBrokerById(static_cast(command.source_id)); if (brk != nullptr) { - brk->_initRequested = true; + brk->state = connection_state::init_requested; } if (allInitReady()) { if (isRootc) { @@ -803,7 +804,7 @@ void CoreBroker::processCommand(ActionMessage&& command) } auto brk = getBrokerById(global_broker_id(command.source_id)); if (brk != nullptr) { - brk->_initRequested = false; + brk->state = connection_state::connected; } } break; case CMD_INIT_GRANT: @@ -933,7 +934,7 @@ void CoreBroker::processCommand(ActionMessage&& command) case CMD_DISCONNECT_FED: { auto fed = _federates.find(command.source_id); if (fed != _federates.end()) { - fed->isDisconnected = true; + fed->state = connection_state::disconnected; } if (!isRootc) { transmit(parent_route_id, command); @@ -944,7 +945,9 @@ void CoreBroker::processCommand(ActionMessage&& command) } } break; case CMD_STOP: - if (!allDisconnected()) { // only send a disconnect message if we haven't done so already + if ((getAllConnectionState() < + connection_state:: + disconnected)) { // only send a disconnect message if we haven't done so already timeCoord->disconnect(); if (!isRootc) { ActionMessage m(CMD_DISCONNECT); @@ -1022,15 +1025,9 @@ void CoreBroker::processCommand(ActionMessage&& command) } break; case CMD_ERROR: - if (isRootc || command.dest_id == global_broker_id_local) { - sendToLogger(command.source_id, log_level::error, std::string(), command.payload); - if (command.source_id == parent_broker_id) { - broadcast(command); - } - brokerState = broker_state_t::errored; - } else { - transmit(parent_route_id, command); - } + case CMD_LOCAL_ERROR: + case CMD_GLOBAL_ERROR: + processError(command); break; case CMD_REG_PUB: if ((!isRootc) && (command.dest_id != parent_broker_id)) { @@ -1162,7 +1159,7 @@ void CoreBroker::checkForNamedInterface(ActionMessage& command) auto pub = handles.getPublication(command.name); if (pub != nullptr) { auto fed = _federates.find(pub->getFederateId()); - if (!fed->isDisconnected) { + if (fed->state < connection_state::error) { command.setAction(CMD_ADD_SUBSCRIBER); command.setDestination(pub->handle); command.name.clear(); @@ -1187,7 +1184,7 @@ void CoreBroker::checkForNamedInterface(ActionMessage& command) auto inp = handles.getInput(command.name); if (inp != nullptr) { auto fed = _federates.find(inp->getFederateId()); - if (!fed->isDisconnected) { + if (fed->state < connection_state::error) { command.setAction(CMD_ADD_PUBLISHER); command.setDestination(inp->handle); auto pub = handles.findHandle(command.getSource()); @@ -1235,7 +1232,7 @@ void CoreBroker::checkForNamedInterface(ActionMessage& command) auto ept = handles.getEndpoint(command.name); if (ept != nullptr) { auto fed = _federates.find(ept->getFederateId()); - if (!fed->isDisconnected) { + if (fed->state < connection_state::error) { command.setAction(CMD_ADD_FILTER); command.setDestination(ept->handle); command.name.clear(); @@ -1410,15 +1407,34 @@ void CoreBroker::addLocalInfo(BasicHandleInfo& handleInfo, const ActionMessage& handleInfo.flags = m.flags; } +void CoreBroker::propagateError(ActionMessage&& cmd) +{ + LOG_ERROR(global_broker_id_local, getIdentifier(), cmd.payload); + if (cmd.action() == CMD_LOCAL_ERROR) { + if (terminate_on_error) { + LOG_ERROR( + global_broker_id_local, + getIdentifier(), + "Error Escalation: Federation terminating"); + cmd.setAction(CMD_GLOBAL_ERROR); + setErrorState(cmd.messageID, cmd.payload); + broadcast(cmd); + transmitToParent(std::move(cmd)); + return; + } + } + routeMessage(std::move(cmd)); +} + void CoreBroker::addPublication(ActionMessage& m) { // detect duplicate publications if (handles.getPublication(m.name) != nullptr) { - ActionMessage eret(CMD_ERROR, global_broker_id_local, m.source_id); + ActionMessage eret(CMD_LOCAL_ERROR, global_broker_id_local, m.source_id); eret.dest_handle = m.source_handle; eret.messageID = defs::errors::registration_failure; eret.payload = "Duplicate publication names (" + m.name + ")"; - routeMessage(eret); + propagateError(std::move(eret)); return; } auto& pub = handles.addHandle( @@ -1440,11 +1456,11 @@ void CoreBroker::addInput(ActionMessage& m) { // detect duplicate publications if (handles.getInput(m.name) != nullptr) { - ActionMessage eret(CMD_ERROR, global_broker_id_local, m.source_id); + ActionMessage eret(CMD_LOCAL_ERROR, global_broker_id_local, m.source_id); eret.dest_handle = m.source_handle; eret.messageID = defs::errors::registration_failure; eret.payload = "Duplicate input names (" + m.name + ")"; - routeMessage(eret); + propagateError(std::move(eret)); return; } auto& inp = handles.addHandle( @@ -1462,11 +1478,11 @@ void CoreBroker::addEndpoint(ActionMessage& m) { // detect duplicate endpoints if (handles.getEndpoint(m.name) != nullptr) { - ActionMessage eret(CMD_ERROR, global_broker_id_local, m.source_id); + ActionMessage eret(CMD_LOCAL_ERROR, global_broker_id_local, m.source_id); eret.dest_handle = m.source_handle; eret.messageID = defs::errors::registration_failure; eret.payload = "Duplicate endpoint names (" + m.name + ")"; - routeMessage(eret); + propagateError(std::move(eret)); return; } auto& ept = handles.addHandle( @@ -1499,11 +1515,11 @@ void CoreBroker::addFilter(ActionMessage& m) { // detect duplicate endpoints if (handles.getFilter(m.name) != nullptr) { - ActionMessage eret(CMD_ERROR, global_broker_id_local, m.source_id); + ActionMessage eret(CMD_LOCAL_ERROR, global_broker_id_local, m.source_id); eret.dest_handle = m.source_handle; eret.messageID = defs::errors::registration_failure; eret.payload = "Duplicate filter names (" + m.name + ")"; - routeMessage(eret); + propagateError(std::move(eret)); return; } @@ -1798,7 +1814,7 @@ void CoreBroker::routeMessage(ActionMessage&& cmd) void CoreBroker::broadcast(ActionMessage& cmd) { for (auto& broker : _brokers) { - if ((!broker._nonLocal) && (!broker.isDisconnected)) { + if ((!broker._nonLocal) && (broker.state < connection_state::disconnected)) { cmd.dest_id = broker.global_id; transmit(broker.route, cmd); } @@ -2037,6 +2053,66 @@ void CoreBroker::FindandNotifyFilterTargets(BasicHandleInfo& handleInfo) } } +void CoreBroker::processError(ActionMessage& command) +{ + sendToLogger(command.source_id, log_level::error, std::string(), command.payload); + if (command.source_id == global_broker_id_local) { + brokerState = broker_state_t::errored; + broadcast(command); + if (!isRootc) { + command.setAction(CMD_LOCAL_ERROR); + transmit(parent_route_id, std::move(command)); + } + return; + } + + if (command.source_id == parent_broker_id || command.source_id == root_broker_id) { + brokerState = broker_state_t::errored; + broadcast(command); + } + + auto brk = getBrokerById(global_broker_id(command.source_id)); + if (brk == nullptr) { + auto fed = _federates.find(command.source_id); + if (fed != _federates.end()) { + fed->state = connection_state::error; + } + } else { + brk->state = connection_state::error; + } + + switch (command.action()) { + case CMD_LOCAL_ERROR: + case CMD_ERROR: + if (terminate_on_error) { + //upgrade the error to a global error and reprocess + command.setAction(CMD_GLOBAL_ERROR); + processError(command); + return; + } + if (!(isRootc || command.dest_id == global_broker_id_local || + command.dest_id == parent_broker_id)) { + transmit(parent_route_id, command); + } + if (hasTimeDependency) { + timeCoord->processTimeMessage(command); + } + break; + case CMD_GLOBAL_ERROR: + setErrorState(command.messageID, command.payload); + if (!(isRootc || command.dest_id == global_broker_id_local || + command.dest_id == parent_broker_id)) { + transmit(parent_route_id, command); + } else { + command.source_id = global_broker_id_local; + broadcast(command); + } + break; + default: + break; + } +} + void CoreBroker::processDisconnect(ActionMessage& command) { auto brk = getBrokerById(global_broker_id(command.source_id)); @@ -2081,7 +2157,7 @@ void CoreBroker::processDisconnect(ActionMessage& command) disconnectBroker(*brk); } - if (allDisconnected()) { + if ((getAllConnectionState() >= connection_state::disconnected)) { timeCoord->disconnect(); if (!isRootc) { ActionMessage dis(CMD_DISCONNECT); @@ -2148,7 +2224,7 @@ void CoreBroker::processDisconnect(ActionMessage& command) void CoreBroker::disconnectBroker(BasicBrokerInfo& brk) { - brk.isDisconnected = true; + brk.state = connection_state::disconnected; if (brokerState < broker_state_t::operating) { if (isRootc) { ActionMessage dis(CMD_BROADCAST_DISCONNECT); @@ -2748,6 +2824,23 @@ void CoreBroker::checkDependencies() routeMessage(adddep, fedid); } } + +connection_state CoreBroker::getAllConnectionState() const +{ + connection_state res = connection_state::disconnected; + int cnt{0}; + for (auto& brk : _brokers) { + if (brk._nonLocal) { + continue; + } + ++cnt; + if (brk.state < res) { + res = brk.state; + } + } + return (cnt > 0) ? res : connection_state::connected; +} + bool CoreBroker::allInitReady() const { // the federate count must be greater than the min size @@ -2757,17 +2850,10 @@ bool CoreBroker::allInitReady() const if (static_cast(_brokers.size()) < minBrokerCount) { return false; } - - return std::all_of(_brokers.begin(), _brokers.end(), [](const auto& brk) { - return ((brk._nonLocal) || (brk._initRequested)); - }); -} - -bool CoreBroker::allDisconnected() const -{ - return std::all_of(_brokers.begin(), _brokers.end(), [](const auto& brk) { - return ((brk._nonLocal) || (brk.isDisconnected)); - }); + return getAllConnectionState() >= connection_state::init_requested; + //return std::all_of(_brokers.begin(), _brokers.end(), [](const auto& brk) { + // return ((brk._nonLocal) || (brk.state==connection_state::init_requested)); + //}); } } // namespace helics diff --git a/src/helics/core/CoreBroker.hpp b/src/helics/core/CoreBroker.hpp index 48381f0672..2ed797b3d3 100644 --- a/src/helics/core/CoreBroker.hpp +++ b/src/helics/core/CoreBroker.hpp @@ -31,6 +31,17 @@ SPDX-License-Identifier: BSD-3-Clause #include namespace helics { + +/** enumeration of possible states of a remote federate or broker*/ +enum class connection_state : std::uint8_t { + connected = 0, + init_requested = 1, + operating = 2, + error = 40, + request_disconnect = 48, + disconnected = 50 +}; + /** class defining the common information for a federate*/ class BasicFedInfo { public: @@ -38,7 +49,7 @@ class BasicFedInfo { global_federate_id global_id; //!< the identification code for the federate route_id route; //!< the routing information for data to be sent to the federate global_broker_id parent; //!< the id of the parent broker/core - bool isDisconnected = false; //!< flag indicating the federate is disconnected + connection_state state{connection_state::connected}; explicit BasicFedInfo(const std::string& fedname): name(fedname){}; }; @@ -50,15 +61,18 @@ class BasicBrokerInfo { global_broker_id global_id; //!< the global identifier for the broker route_id route; //!< the identifier for the route to take to the broker global_broker_id parent; //!< the id of the parent broker/core - bool _initRequested{false}; //!< flag indicating the broker has requesting initialization - bool isDisconnected{false}; //!< flag indicating that the broker has disconnected + + connection_state state{ + connection_state::connected}; //!< specify the current status of the broker + bool _hasTimeDependency{ - false}; //!< flag indicating that a broker has endpoints it is coordinating + false}; //!< flag indicating that a broker has general endpoints it is coordinating bool _core{false}; //!< if set to true the broker is a core false is a broker; bool _nonLocal{false}; //!< indicator that the broker has a subbroker as a parent. bool _route_key{false}; //!< indicator that the broker has a unique route id bool _sent_disconnect_ack{false}; //!< indicator that the disconnect ack has been sent bool _disable_ping{false}; //!< indicator that the broker doesn't respond to pings + // 1 byte gap std::string routeInfo; //!< string describing the connection information for the route explicit BasicBrokerInfo(const std::string& brokerName): name(brokerName){}; }; @@ -143,7 +157,8 @@ class CoreBroker: public Broker, public BrokerBase { void routeMessage(ActionMessage&& cmd); /** transmit a message to the parent or root */ void transmitToParent(ActionMessage&& cmd); - + /** propagate an error message or escalate it depending on settings*/ + void propagateError(ActionMessage&& cmd); /** broadcast a message to all immediate brokers*/ void broadcast(ActionMessage& cmd); /**/ @@ -247,7 +262,9 @@ class CoreBroker: public Broker, public BrokerBase { @return true if everyone is ready, false otherwise */ bool allInitReady() const; - bool allDisconnected() const; + /** get a value for the summary connection status of all the connected systems*/ + connection_state getAllConnectionState() const; + /** set the local identification string for the broker*/ void setIdentifier(const std::string& name); /** get the local identification for the broker*/ @@ -282,6 +299,8 @@ class CoreBroker: public Broker, public BrokerBase { void FindandNotifyEndpointTargets(BasicHandleInfo& handleInfo); /** process a disconnect message*/ void processDisconnect(ActionMessage& command); + /** process an error message*/ + void processError(ActionMessage& command); /** disconnect a broker/core*/ void disconnectBroker(BasicBrokerInfo& brk); /** run a check for a named interface*/ diff --git a/src/helics/core/FederateState.cpp b/src/helics/core/FederateState.cpp index 24587a896f..9e53f35b37 100644 --- a/src/helics/core/FederateState.cpp +++ b/src/helics/core/FederateState.cpp @@ -683,7 +683,7 @@ const std::vector& FederateState::getEvents() const return events; } -message_processing_result FederateState::processDelayQueue() +message_processing_result FederateState::processDelayQueue() noexcept { delayedFederates.clear(); auto ret_code = message_processing_result::continue_processing; @@ -749,14 +749,13 @@ bool FederateState::messageShouldBeDelayed(const ActionMessage& cmd) const } } -message_processing_result FederateState::processQueue() +message_processing_result FederateState::processQueue() noexcept { if (state == HELICS_FINISHED) { return message_processing_result::halted; } - if (state == HELICS_ERROR) { - return message_processing_result::error; - } + auto initError = (state == HELICS_ERROR); + bool error_cmd{false}; // process the delay Queue first auto ret_code = processDelayQueue(); @@ -771,6 +770,30 @@ message_processing_result FederateState::processQueue() if (ret_code == message_processing_result::delay_message) { delayQueues[static_cast(cmd.source_id)].push_back(cmd); } + if (ret_code == message_processing_result::error && cmd.action() == CMD_GLOBAL_ERROR) { + error_cmd = true; + } + } + if (ret_code == message_processing_result::error && state == HELICS_ERROR) { + if (!initError && !error_cmd) { + if (parent_ != nullptr) { + ActionMessage gError(CMD_LOCAL_ERROR); + if (terminate_on_error) { + gError.setAction(CMD_GLOBAL_ERROR); + } else { + timeCoord->localError(); + } + gError.source_id = global_id.load(); + gError.dest_id = parent_broker_id; + gError.messageID = errorCode; + gError.payload = errorString; + + parent_->addActionMessage(std::move(gError)); + } + } + } + if (initError) { + ret_code = message_processing_result::error; } return ret_code; } @@ -815,6 +838,7 @@ message_processing_result FederateState::processActionMessage(ActionMessage& cmd timeGranted_mode = true; int pcode = checkInterfaces(); if (pcode != defs::errors::ok) { + setState(HELICS_ERROR); return message_processing_result::error; } return message_processing_result::next_step; @@ -1055,17 +1079,53 @@ message_processing_result FederateState::processActionMessage(ActionMessage& cmd LOG_WARNING(cmd.payload); break; case CMD_ERROR: - setState(HELICS_ERROR); - if (cmd.payload.empty()) { - errorString = commandErrorString(cmd.messageID); - if (errorString == "unknown") { - errorString += " code:" + std::to_string(cmd.messageID); + case CMD_LOCAL_ERROR: + case CMD_GLOBAL_ERROR: + if (cmd.action() == CMD_GLOBAL_ERROR || cmd.source_id == global_id.load() || + cmd.source_id == parent_broker_id || cmd.source_id == root_broker_id || + cmd.dest_id != global_id) { + if ((state != HELICS_FINISHED) && (state != HELICS_TERMINATING)) { + if (cmd.action() != CMD_GLOBAL_ERROR) { + timeCoord->localError(); + } + setState(HELICS_ERROR); + if (cmd.payload.empty()) { + errorString = commandErrorString(cmd.messageID); + if (errorString == "unknown") { + errorString += " code:" + std::to_string(cmd.messageID); + } + } else { + errorString = cmd.payload; + } + errorCode = cmd.messageID; + LOG_ERROR(errorString); + return message_processing_result::error; } } else { - errorString = cmd.payload; + switch (timeCoord->processTimeMessage(cmd)) { + case message_process_result::delay_processing: + addFederateToDelay(global_federate_id(cmd.source_id)); + return message_processing_result::delay_message; + case message_process_result::no_effect: + return message_processing_result::continue_processing; + default: + break; + } + if (state != HELICS_EXECUTING) { + break; + } + if (!timeGranted_mode) { + auto ret = timeCoord->checkTimeGrant(); + if (returnableResult(ret)) { + time_granted = timeCoord->getGrantedTime(); + allowed_send_time = timeCoord->allowedSendTime(); + timeGranted_mode = true; + return ret; + } + } } - errorCode = cmd.messageID; - return message_processing_result::error; + break; + case CMD_ADD_PUBLISHER: { auto subI = interfaceInformation.getInput(cmd.dest_handle); if (subI != nullptr) { @@ -1319,6 +1379,9 @@ void FederateState::setOptionFlag(int optionFlag, bool value) case defs::flags::slow_responding: slow_responding = value; break; + case defs::flags::terminate_on_error: + terminate_on_error = value; + break; case defs::flags::realtime: if (value) { if (state < HELICS_EXECUTING) { @@ -1400,6 +1463,8 @@ bool FederateState::getOptionFlag(int optionFlag) const return source_only; case defs::flags::slow_responding: return slow_responding; + case defs::flags::terminate_on_error: + return terminate_on_error; case defs::flags::connections_required: return ((interfaceFlags.load() & make_flags(required_flag)) != 0); case defs::flags::connections_optional: diff --git a/src/helics/core/FederateState.hpp b/src/helics/core/FederateState.hpp index b9ef134660..a482bd0621 100644 --- a/src/helics/core/FederateState.hpp +++ b/src/helics/core/FederateState.hpp @@ -88,7 +88,8 @@ class FederateState { bool iterating{false}; //!< the federate is iterating at a time step bool timeGranted_mode{ false}; //!< indicator if the federate is in a granted state or a requested state waiting to grant - // 1 byte free + bool terminate_on_error{ + false}; //!< indicator that if the federate encounters a configuration error it should cause a co-simulation abort int logLevel{1}; //!< the level of logging used in the federate // std::vector messLog; @@ -213,7 +214,7 @@ class FederateState { /** locks the processing so FederateState can be used with lock_guard*/ void lock() { sleeplock(); } - /** trys to lock the processing return true if successful and false if not*/ + /** tries to lock the processing return true if successful and false if not*/ bool try_lock() const { return !processing.test_and_set(); } /** unlocks the processing*/ void unlock() const { processing.clear(std::memory_order_release); } @@ -227,7 +228,7 @@ class FederateState { 4. a break event is encountered @return a convergence state value with an indicator of return reason and state of convergence */ - message_processing_result processQueue(); + message_processing_result processQueue() noexcept; /** process the federate delayed Message queue until a returnable event or it is empty @details processQueue will process messages until one of 3 things occur @@ -237,7 +238,7 @@ class FederateState { 4. a break event is encountered @return a convergence state value with an indicator of return reason and state of convergence */ - message_processing_result processDelayQueue(); + message_processing_result processDelayQueue() noexcept; /** process a single message @return a convergence state value with an indicator of return reason and state of convergence */ diff --git a/src/helics/core/TimeCoordinator.cpp b/src/helics/core/TimeCoordinator.cpp index ef3a34d753..f85a7bbb56 100644 --- a/src/helics/core/TimeCoordinator.cpp +++ b/src/helics/core/TimeCoordinator.cpp @@ -91,6 +91,49 @@ void TimeCoordinator::disconnect() disconnected = true; } +void TimeCoordinator::localError() +{ + if (disconnected) { + return; + } + time_granted = Time::maxVal(); + time_grantBase = Time::maxVal(); + if (sendMessageFunction) { + std::set connections(dependents.begin(), dependents.end()); + for (auto dep : dependencies) { + if (dep.Tnext < Time::maxVal()) { + connections.insert(dep.fedID); + } + } + if (connections.empty()) { + return; + } + ActionMessage bye(CMD_LOCAL_ERROR); + + bye.source_id = source_id; + if (connections.size() == 1) { + bye.dest_id = *connections.begin(); + if (bye.dest_id == source_id) { + processTimeMessage(bye); + } else { + sendMessageFunction(bye); + } + } else { + ActionMessage multi(CMD_MULTI_MESSAGE); + for (auto fed : connections) { + bye.dest_id = fed; + if (fed == source_id) { + processTimeMessage(bye); + } else { + appendMessage(multi, bye); + } + } + sendMessageFunction(multi); + } + } + disconnected = true; +} + void TimeCoordinator::timeRequest( Time nextTime, iteration_request iterate, @@ -607,6 +650,8 @@ message_process_result TimeCoordinator::processTimeMessage(const ActionMessage& case CMD_DISCONNECT_CORE: case CMD_DISCONNECT_FED: case CMD_DISCONNECT_BROKER: + case CMD_GLOBAL_ERROR: + case CMD_LOCAL_ERROR: // this command requires removing dependents as well as dealing with dependency processing removeDependent(global_federate_id(cmd.source_id)); break; diff --git a/src/helics/core/TimeCoordinator.hpp b/src/helics/core/TimeCoordinator.hpp index 69cfedb3f7..a1c7fe5ef1 100644 --- a/src/helics/core/TimeCoordinator.hpp +++ b/src/helics/core/TimeCoordinator.hpp @@ -207,6 +207,8 @@ class TimeCoordinator { message_processing_result checkTimeGrant(); /** disconnect*/ void disconnect(); + /** generate a local Error*/ + void localError(); /** generate a string with the current time status*/ std::string printTimeStatus() const; /** return true if there are active dependencies*/ diff --git a/src/helics/core/TimeDependencies.cpp b/src/helics/core/TimeDependencies.cpp index 234b449009..afc1189e0d 100644 --- a/src/helics/core/TimeDependencies.cpp +++ b/src/helics/core/TimeDependencies.cpp @@ -71,7 +71,16 @@ bool DependencyInfo::ProcessMessage(const ActionMessage& m) Tnext = Time::maxVal(); Te = Time::maxVal(); Tdemin = Time::maxVal(); - minFed = global_federate_id(); + minFed = global_federate_id{}; + break; + case CMD_LOCAL_ERROR: + case CMD_GLOBAL_ERROR: + time_state = time_state_t::error; + // printf("%d disconnect from %d\n", fedID, m.source_id); + Tnext = Time::maxVal(); + Te = Time::maxVal(); + Tdemin = Time::maxVal(); + minFed = global_federate_id{}; break; case CMD_SEND_MESSAGE: if (time_state == time_state_t::time_granted) { diff --git a/src/helics/core/TimeDependencies.hpp b/src/helics/core/TimeDependencies.hpp index bfe01c630e..d90074270d 100644 --- a/src/helics/core/TimeDependencies.hpp +++ b/src/helics/core/TimeDependencies.hpp @@ -24,6 +24,7 @@ class DependencyInfo { time_granted = 3, time_requested_iterative = 4, time_requested = 5, + error = 7 }; global_federate_id fedID{}; //!< identifier for the dependency diff --git a/src/helics/core/TimeoutMonitor.cpp b/src/helics/core/TimeoutMonitor.cpp index 2be3444077..c761105924 100644 --- a/src/helics/core/TimeoutMonitor.cpp +++ b/src/helics/core/TimeoutMonitor.cpp @@ -19,12 +19,10 @@ void TimeoutMonitor::tick(CommonCore* core) if (now - parentConnection.lastPing > timeout) { // try to reset the connection to the broker // brokerReconnect() + const std::string message{"core lost connection with broker"}; core->sendToLogger( - core->global_broker_id_local, - log_level::error, - core->getIdentifier(), - "core lost connection with broker"); - core->sendErrorToFederates(-5); + core->global_broker_id_local, log_level::error, core->getIdentifier(), message); + core->sendErrorToFederates(-5, message); core->processDisconnect(); core->brokerState = BrokerBase::broker_state_t::errored; core->addActionMessage(CMD_STOP); @@ -192,7 +190,7 @@ void TimeoutMonitor::pingSub(CoreBroker* brk) connections[cindex].disablePing = brkr._disable_ping; } - if (!brkr.isDisconnected) { + if (brkr.state < connection_state::error) { if (connections[cindex].disablePing) { continue; } diff --git a/src/helics/core/global_federate_id.hpp b/src/helics/core/global_federate_id.hpp index 65890f031d..e62558490d 100644 --- a/src/helics/core/global_federate_id.hpp +++ b/src/helics/core/global_federate_id.hpp @@ -10,17 +10,17 @@ SPDX-License-Identifier: BSD-3-Clause namespace helics { /** a shift in the global federate id numbers to allow discrimination between local ids and global ones -this value allows 131072 federates to be available in each core -1,878,917,120 allowable federates in the system and -268,435,455 brokers allowed if we need more than that this, program has been phenomenally successful beyond -all wildest imaginations and we can probably afford to change these to 64 bit numbers to accommodate -*/ + this value allows 131072 federates to be available in each core + 1,878,917,120 allowable federates in the system and + 268,435,455 brokers allowed if we need more than that this, program has been phenomenally successful beyond + all wildest imaginations and we can probably afford to change these to 64 bit numbers to accommodate + */ constexpr identififier_base_type global_federate_id_shift = 0x0002'0000; /** a shift in the global id index to discriminate between global ids of brokers vs federates*/ constexpr identififier_base_type global_broker_id_shift = 0x7000'0000; /** class holding a globally unique identifier for brokers -@details the class is fully compatible with global_federate_id*/ + @details the class is fully compatible with global_federate_id*/ class global_broker_id { public: using base_type = identififier_base_type; @@ -52,10 +52,12 @@ class global_broker_id { }; /** constant to use for indicating that a command is for the core itself from the Core Public API*/ -constexpr global_broker_id parent_broker_id(0); +constexpr global_broker_id parent_broker_id{0}; +/** constant to use for indicating the id of the root broker*/ +constexpr global_broker_id root_broker_id{1}; /** stream operator for a federate_id - */ + */ std::ostream& operator<<(std::ostream& os, global_broker_id id); /** class holder a globally unique identifier for federates*/ class global_federate_id { @@ -100,16 +102,16 @@ class global_federate_id { /** return true if the broker_id is a valid broker id code*/ bool isValid() const { return (gid != invalid_global_fed_id); } /** generate a local offset index - @details the global_id is shifted by a certain amount*/ + @details the global_id is shifted by a certain amount*/ constexpr base_type localIndex() const { return gid - global_federate_id_shift; } private: - base_type gid = invalid_global_fed_id; //!< the underlying index value static constexpr base_type invalid_global_fed_id{-2'010'000'000}; + base_type gid{invalid_global_fed_id}; //!< the underlying index value }; /** stream operator for a federate_id - */ + */ std::ostream& operator<<(std::ostream& os, global_federate_id id); /** class merging a global id and handle together */ @@ -123,7 +125,7 @@ class global_handle { constexpr global_handle(global_federate_id fed, interface_handle hand): fed_id(fed), handle(hand){}; /** convert to a uint64_t - @details for use in maps and other things*/ + @details for use in maps and other things*/ explicit operator uint64_t() const { auto key = static_cast(fed_id.baseValue()) << 32U; @@ -150,7 +152,7 @@ class global_handle { }; /** stream operator for a federate_id - */ + */ std::ostream& operator<<(std::ostream& os, global_handle id); /** class defining a specific type for labeling a route*/ @@ -173,12 +175,12 @@ class route_id { bool isValid() const { return (rid != invalid_route_id); } private: - base_type rid = invalid_route_id; //!< the underlying index value static constexpr base_type invalid_route_id{-1'295'148'000}; + base_type rid{invalid_route_id}; //!< the underlying index value }; -constexpr route_id parent_route_id(0); -constexpr route_id control_route(-1); +constexpr route_id parent_route_id{0}; +constexpr route_id control_route{-1}; /** stream operator for a route_id */ diff --git a/src/helics/core/helics_definitions.hpp b/src/helics/core/helics_definitions.hpp index ad1832f3b2..f4943eb6e6 100644 --- a/src/helics/core/helics_definitions.hpp +++ b/src/helics/core/helics_definitions.hpp @@ -25,9 +25,12 @@ namespace defs { /** flag indicating that a federate can be interrupted*/ interruptible = helics_flag_interruptible, /** flag specifying that a federate may be slow to respond to pings - If the federate goes offline there is no good way to detect it so use with caution - */ + If the federate goes offline there is no good way to detect it so use with caution + */ slow_responding = helics_flag_slow_responding, + /** flag specifying that a federate encountering an internal error should cause and abort for the entire co-simulation + */ + terminate_on_error = helics_flag_terminate_on_error, /** flag indicating that a federate/interface is a signal generator only*/ source_only = helics_flag_source_only, /** flag indicating a federate/interface should only transmit values if they have changed(binary equivalence)*/ diff --git a/src/helics/cpp98/Federate.hpp b/src/helics/cpp98/Federate.hpp index 8b70262306..baa4736d15 100644 --- a/src/helics/cpp98/Federate.hpp +++ b/src/helics/cpp98/Federate.hpp @@ -502,6 +502,24 @@ class Federate { helicsFederateSetGlobal(fed, valueName.c_str(), value.c_str(), hThrowOnError()); } + /** generate a local federate error + @param error_code an error code to give to the error + @param error_string a string message associated with the error + */ + void localError(int error_code, const std::string& error_string) + { + helicsFederateLocalError(fed, error_code, error_string.c_str()); + } + + /** generate a global error to terminate the federation + @param error_code an error code to give to the error + @param error_string a string message associated with the error + */ + void globalError(int error_code, const std::string& error_string) + { + helicsFederateGlobalError(fed, error_code, error_string.c_str()); + } + /** log an error message*/ void logErrorMessage(const std::string& message) { diff --git a/src/helics/helics_enums.h b/src/helics/helics_enums.h index b8a1d4c7fe..acf89f21ae 100644 --- a/src/helics/helics_enums.h +++ b/src/helics/helics_enums.h @@ -116,7 +116,9 @@ typedef enum { /** used to clear the HELICS_DELAY_INIT_ENTRY flag in cores*/ helics_flag_enable_init_entry = 47, /** used to not display warnings on mismatched requested times*/ - helics_flag_ignore_time_mismatch_warnings = 67 + helics_flag_ignore_time_mismatch_warnings = 67, + /** specify that a federate error should terminate the federation*/ + helics_flag_terminate_on_error = 72 } helics_federate_flags; /** log level definitions @@ -164,6 +166,7 @@ typedef enum { helics_error_insufficient_space = (-18), /*!< insufficient space is available to store requested data*/ helics_error_other = -101, /*!< the function produced a helics error of some other type */ + helics_error_fatal = -404, /*!< global fatal error for federation */ helics_error_external_type = -203 /*!< an unknown non-helics error was produced*/ } helics_error_types; diff --git a/src/helics/shared_api_library/FederateExport.cpp b/src/helics/shared_api_library/FederateExport.cpp index a2c3e53d50..8fbbec7b32 100644 --- a/src/helics/shared_api_library/FederateExport.cpp +++ b/src/helics/shared_api_library/FederateExport.cpp @@ -589,6 +589,36 @@ void helicsFederateRegisterInterfaces(helics_federate fed, const char* file, hel } } +void helicsFederateGlobalError(helics_federate fed, int error_code, const char* error_string) +{ + auto fedObj = getFed(fed, nullptr); + if (fedObj == nullptr) { + return; + } + try { + fedObj->globalError(error_code, AS_STRING(error_string)); + } + // LCOV_EXCL_START + catch (...) { + } + // LCOV_EXCL_STOP +} + +void helicsFederateLocalError(helics_federate fed, int error_code, const char* error_string) +{ + auto fedObj = getFed(fed, nullptr); + if (fedObj == nullptr) { + return; + } + try { + fedObj->localError(error_code, AS_STRING(error_string)); + } + // LCOV_EXCL_START + catch (...) { + } + // LCOV_EXCL_STOP +} + void helicsFederateFinalize(helics_federate fed, helics_error* err) { auto fedObj = getFed(fed, err); diff --git a/src/helics/shared_api_library/helics.h b/src/helics/shared_api_library/helics.h index c31113ac3b..ebdab44f8d 100644 --- a/src/helics/shared_api_library/helics.h +++ b/src/helics/shared_api_library/helics.h @@ -569,6 +569,24 @@ HELICS_EXPORT void helicsFederateInfoSetIntegerProperty(helics_federate_info fi, @endforcpponly */ HELICS_EXPORT void helicsFederateRegisterInterfaces(helics_federate fed, const char* file, helics_error* err); + +/** generate a global Error from a federate +A global error halts the co-simulation completely +@param fed the federate to create an error in +@param error_code the integer code for the error +@param error_string a string describing the error +*/ +HELICS_EXPORT void helicsFederateGlobalError(helics_federate fed, int error_code, const char* error_string); + +/** generate a local error in a federate +this will propagate through the co-simulation but not necessarily halt the co-simulation, it has a similar effect to finalize but does +allow some interaction with a core for a brief time. +@param fed the federate to create an error in +@param error_code the integer code for the error +@param error_string a string describing the error +*/ +HELICS_EXPORT void helicsFederateLocalError(helics_federate fed, int error_code, const char* error_string); + /** finalize the federate this function halts all communication in the federate and disconnects it from the core */ HELICS_EXPORT void helicsFederateFinalize(helics_federate fed, helics_error* err); diff --git a/tests/helics/application_api/FederateTests.cpp b/tests/helics/application_api/FederateTests.cpp index c795152242..1e235a021b 100644 --- a/tests/helics/application_api/FederateTests.cpp +++ b/tests/helics/application_api/FederateTests.cpp @@ -12,6 +12,7 @@ SPDX-License-Identifier: BSD-3-Clause #include "helics/core/Core.hpp" #include "helics/core/CoreFactory.hpp" #include "helics/core/core-exceptions.hpp" +#include "helics/core/helics_definitions.hpp" #include #include @@ -397,6 +398,7 @@ TEST(federate_tests, from_file6) auto fstr2 = std::string(TEST_DIR) + "example_filters.toml"; auto Fed1 = std::make_shared(fstr2); EXPECT_THROW(Fed1->registerFilterInterfaces("non_existing.toml"), helics::InvalidParameter); + EXPECT_THROW(Fed1->registerFilterInterfaces("non_existing.json"), helics::InvalidParameter); } TEST(federate_tests, from_file7) @@ -815,6 +817,66 @@ TEST(federate_tests, forceErrorPendingTimeAsync) Fed1->getCorePointer()->disconnect(); } +TEST(federate_tests, federateGeneratedLocalError) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_le"; + fi.coreInitString = "-f 1 --autobroker"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->localError(9827, "user generated error"); + + EXPECT_THROW(Fed1->requestTime(3.0), helics::HelicsException); + + Fed1->getCorePointer()->disconnect(); + Fed1->disconnect(); + EXPECT_THROW(Fed1->localError(9827, "user generated error2"), helics::InvalidFunctionCall); +} + +TEST(federate_tests, federateGeneratedGlobalError) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_ge"; + fi.coreInitString = "-f 1 --autobroker --error_timeout=0"; + + auto Fed1 = std::make_shared("fed1", fi); + + Fed1->enterExecutingMode(); + Fed1->requestTimeAsync(2.0); + Fed1->globalError(9827, "user generated global error"); + + EXPECT_THROW(Fed1->requestTime(3.0), helics::HelicsException); + + EXPECT_TRUE(Fed1->getCorePointer()->waitForDisconnect(std::chrono::milliseconds(300))); + + Fed1->disconnect(); + EXPECT_THROW( + Fed1->globalError(9827, "user generated global error2"), helics::InvalidFunctionCall); +} + +TEST(federate_tests, federateGeneratedlocalErrorEscalation) +{ + helics::FederateInfo fi(helics::core_type::TEST); + fi.coreName = "core_full_ge"; + fi.coreInitString = "-f 1 --autobroker --error_timeout=0"; + + auto Fed1 = std::make_shared("fed1", fi); + Fed1->setFlagOption(helics::defs::flags::terminate_on_error); + Fed1->enterExecutingMode(); + Fed1->requestTimeAsync(2.0); + Fed1->localError(9827, "user generated global error"); + + EXPECT_THROW(Fed1->requestTime(3.0), helics::HelicsException); + + EXPECT_TRUE(Fed1->getCorePointer()->waitForDisconnect(std::chrono::milliseconds(300))); + + Fed1->disconnect(); + EXPECT_THROW( + Fed1->globalError(9827, "user generated global error2"), helics::InvalidFunctionCall); +} + TEST(federate_tests, queryTest1) { helics::FederateInfo fi(helics::core_type::TEST); diff --git a/tests/helics/shared_library/SystemTests.cpp b/tests/helics/shared_library/SystemTests.cpp index b69929be65..5f6e8418e6 100644 --- a/tests/helics/shared_library/SystemTests.cpp +++ b/tests/helics/shared_library/SystemTests.cpp @@ -253,3 +253,48 @@ TEST(other_tests, broker_creation) helicsBrokerDisconnect(brk, &err); } + +TEST(federate_tests, federateGeneratedLocalError) +{ + auto fi = helicsCreateFederateInfo(); + helicsFederateInfoSetCoreType(fi, helics_core_type_test, nullptr); + helicsFederateInfoSetCoreName(fi, "core_full_le", nullptr); + helicsFederateInfoSetCoreInitString(fi, "-f 1 --autobroker --error_timeout=0", nullptr); + + auto fed1 = helicsCreateValueFederate("fed1", fi, nullptr); + helicsFederateInfoFree(fi); + helicsFederateEnterExecutingMode(fed1, nullptr); + + helicsFederateRequestTime(fed1, 2.0, nullptr); + helicsFederateLocalError(fed1, 9827, "user generated error"); + + auto err = helicsErrorInitialize(); + helicsFederateRequestTime(fed1, 3.0, &err); + EXPECT_NE(err.error_code, 0); + + auto cr = helicsFederateGetCoreObject(fed1, nullptr); + helicsCoreDisconnect(cr, nullptr); + helicsCoreFree(cr); + helicsFederateDestroy(fed1); +} + +TEST(federate_tests, federateGeneratedGlobalError) +{ + auto fi = helicsCreateFederateInfo(); + helicsFederateInfoSetCoreType(fi, helics_core_type_test, nullptr); + helicsFederateInfoSetCoreName(fi, "core_full_ge", nullptr); + helicsFederateInfoSetCoreInitString(fi, "-f 1 --autobroker --error_timeout=0", nullptr); + + auto fed1 = helicsCreateValueFederate("fed1", fi, nullptr); + helicsFederateInfoFree(fi); + helicsFederateEnterExecutingMode(fed1, nullptr); + + helicsFederateRequestTime(fed1, 2.0, nullptr); + helicsFederateGlobalError(fed1, 9827, "user generated global error"); + + auto err = helicsErrorInitialize(); + helicsFederateRequestTime(fed1, 3.0, &err); + EXPECT_NE(err.error_code, 0); + + helicsFederateDestroy(fed1); +} diff --git a/tests/helics/shared_library/evilInputTests.cpp b/tests/helics/shared_library/evilInputTests.cpp index a5c1ab640f..427ee8e656 100644 --- a/tests/helics/shared_library/evilInputTests.cpp +++ b/tests/helics/shared_library/evilInputTests.cpp @@ -1083,6 +1083,28 @@ TEST(evil_federate_test, helicsFederateRegisterInterfaces) EXPECT_NE(err.error_code, 0); } +TEST(evil_federate_test, helicsFederateLocalError) +{ + //void helicsFederateLocalError(helics_federate fed, int error_code, const char *error_message); + char rdata[256]; + helics_federate evil_federate = reinterpret_cast(rdata); + + EXPECT_NO_THROW(helicsFederateLocalError(nullptr, 4, nullptr)); + + EXPECT_NO_THROW(helicsFederateLocalError(evil_federate, -25, "error_message")); +} + +TEST(evil_federate_test, helicsFederateGlobalError) +{ + //void helicsFederateLocalError(helics_federate fed, int error_code, const char *error_message); + char rdata[256]; + helics_federate evil_federate = reinterpret_cast(rdata); + + EXPECT_NO_THROW(helicsFederateGlobalError(nullptr, 4, nullptr)); + + EXPECT_NO_THROW(helicsFederateGlobalError(evil_federate, -25, "error_message")); +} + TEST(evil_federate_test, helicsFederateFinalize) { //void helicsFederateFinalize(helics_federate fed, helics_error* err); diff --git a/tests/helics/system_tests/ErrorTests.cpp b/tests/helics/system_tests/ErrorTests.cpp index 72b8933eb2..04cea41866 100644 --- a/tests/helics/system_tests/ErrorTests.cpp +++ b/tests/helics/system_tests/ErrorTests.cpp @@ -189,6 +189,118 @@ TEST_F(error_tests, duplicate_publication_names2) broker->disconnect(); } +TEST_F(error_tests, duplicate_publication_names_auto_terminate) +{ + auto broker = AddBroker("test", "-f 2 --error_timeout=0"); + AddFederates("test", 1, broker, 1.0, "fed"); + AddFederates("test", 1, broker, 1.0, "fed"); + + auto fed1 = GetFederateAs(0); + auto fed2 = GetFederateAs(1); + + fed1->setFlagOption(helics_flag_terminate_on_error); + fed2->setFlagOption(helics_flag_terminate_on_error); + fed1->registerGlobalPublication("testkey", ""); + fed1->enterInitializingModeAsync(); + + fed2->registerGlobalPublication("testkey", ""); + + bool gotException = false; + try { + fed2->enterInitializingMode(); + } + catch (const helics::RegistrationFailure&) { + gotException = true; + EXPECT_TRUE(fed2->getCurrentMode() == helics::Federate::modes::error); + } + + try { + fed1->enterInitializingModeComplete(); + } + catch (const helics::RegistrationFailure&) { + gotException = true; + EXPECT_TRUE(fed1->getCurrentMode() == helics::Federate::modes::error); + } + EXPECT_TRUE(gotException); + + broker->waitForDisconnect(); +} + +TEST_F(error_tests, duplicate_publication_names_auto_terminate_core) +{ + auto broker = AddBroker("test", "-f 2 --error_timeout=0"); + AddFederates("test", 1, broker, 1.0, "fed"); + AddFederates("test", 1, broker, 1.0, "fed"); + + auto fed1 = GetFederateAs(0); + auto fed2 = GetFederateAs(1); + + fed1->getCorePointer()->setFlagOption( + helics::local_core_id, helics_flag_terminate_on_error, true); + fed2->getCorePointer()->setFlagOption( + helics::local_core_id, helics_flag_terminate_on_error, true); + + fed1->registerGlobalPublication("testkey", ""); + fed1->enterInitializingModeAsync(); + + fed2->registerGlobalPublication("testkey", ""); + + bool gotException = false; + try { + fed2->enterInitializingMode(); + } + catch (const helics::RegistrationFailure&) { + gotException = true; + EXPECT_TRUE(fed2->getCurrentMode() == helics::Federate::modes::error); + } + + try { + fed1->enterInitializingModeComplete(); + } + catch (const helics::RegistrationFailure&) { + gotException = true; + EXPECT_TRUE(fed1->getCurrentMode() == helics::Federate::modes::error); + } + EXPECT_TRUE(gotException); + + broker->waitForDisconnect(); +} + +TEST_F(error_tests, duplicate_publication_names_auto_terminate_broker) +{ + auto broker = AddBroker("test", "-f 2 --error_timeout=0 --terminate_on_error"); + AddFederates("test", 1, broker, 1.0, "fed"); + AddFederates("test", 1, broker, 1.0, "fed"); + + auto fed1 = GetFederateAs(0); + auto fed2 = GetFederateAs(1); + + fed1->registerGlobalPublication("testkey", ""); + fed1->enterInitializingModeAsync(); + + fed2->registerGlobalPublication("testkey", ""); + + bool gotException = false; + try { + fed2->enterInitializingMode(); + } + catch (const helics::HelicsException&) { + gotException = true; + EXPECT_TRUE(fed2->getCurrentMode() == helics::Federate::modes::error); + } + + try { + fed1->enterInitializingModeComplete(); + } + catch (const helics::HelicsException&) { + gotException = true; + EXPECT_TRUE(fed1->getCurrentMode() == helics::Federate::modes::error); + } + EXPECT_TRUE(gotException); + + broker->waitForDisconnect(); +} + TEST_F(error_tests, duplicate_publication_names3) { auto broker = AddBroker("test", 1); @@ -324,15 +436,15 @@ TEST_F(error_tests, missing_required_pub_with_default) EXPECT_THROW(fed2->enterInitializingMode(), helics::ConnectionFailure); // this is definitely not how you would normally do this, // we are calling finalize while an async call is active, this should result in finalize throwing since it was - // a global connection failure - EXPECT_THROW(fed1->finalize(), helics::ConnectionFailure); + // a global connection failure, depending on how things go this will be a registration failure or a connection failure + EXPECT_THROW(fed1->finalize(), helics::HelicsException); fed2->finalize(); broker->disconnect(); } TEST_F(error_tests, mismatched_units) { - auto broker = AddBroker("test", 2); + auto broker = AddBroker("test", 3); AddFederates("test", 3, broker, 1.0, "fed"); @@ -356,6 +468,35 @@ TEST_F(error_tests, mismatched_units) broker->disconnect(); } +TEST_F(error_tests, mismatched_units_terminate_on_error) +{ + auto broker = AddBroker("test", "-f 3 --error_timeout=0"); + + AddFederates("test", 3, broker, 1.0, "fed"); + + auto fed1 = GetFederateAs(0); + auto fed2 = GetFederateAs(1); + auto fed3 = GetFederateAs(2); + + fed1->registerGlobalPublication("t1", "double", "V"); + fed2->setFlagOption(helics_flag_terminate_on_error); + fed2->registerSubscription("t1", "m"); + auto& sub = fed3->registerSubscription("t1", "m"); + sub.setOption(helics::defs::options::ignore_unit_mismatch); + fed1->enterExecutingModeAsync(); + fed2->enterExecutingModeAsync(); + try { + fed3->enterExecutingMode(); + fed1->enterExecutingModeComplete(); + } + catch (const helics::HelicsException&) { + ; + } + EXPECT_THROW(fed2->enterExecutingModeComplete(), helics::ConnectionFailure); + + EXPECT_TRUE(broker->waitForDisconnect(std::chrono::milliseconds(500))); +} + class error_tests_type: public ::testing::TestWithParam, public FederateTestFixture { }; From 71f4c25633f1c3a961c3a5baffb876b2e76c0a23 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Thu, 5 Mar 2020 04:09:37 -0800 Subject: [PATCH 25/32] Automated update to SWIG generated interface files (#1117) Co-authored-by: HELICS-bot <45982316+HELICS-bot@users.noreply.github.com> --- interfaces/java/interface/helics.java | 23 + interfaces/java/interface/helicsJNI.java | 4 + interfaces/java/interface/helicsJava.c | 62 + .../java/interface/helics_error_types.java | 6 +- .../java/interface/helics_federate_flags.java | 6 +- .../interface/+helics/helicsBrokerSetGlobal.m | 2 +- .../+helics/helicsBrokerSetLogFile.m | 2 +- .../interface/+helics/helicsCleanupLibrary.m | 2 +- .../interface/+helics/helicsCloseLibrary.m | 2 +- .../+helics/helicsCoreRegisterCloningFilter.m | 2 +- .../+helics/helicsCoreRegisterFilter.m | 2 +- .../interface/+helics/helicsCoreSetGlobal.m | 2 +- .../interface/+helics/helicsCoreSetLogFile.m | 2 +- .../interface/+helics/helicsCreateQuery.m | 2 +- .../+helics/helicsEndpointClearMessages.m | 2 +- .../helicsEndpointGetDefaultDestination.m | 2 +- .../interface/+helics/helicsEndpointGetInfo.m | 2 +- .../+helics/helicsEndpointGetMessage.m | 2 +- .../+helics/helicsEndpointGetMessageObject.m | 2 +- .../interface/+helics/helicsEndpointGetName.m | 2 +- .../+helics/helicsEndpointGetOption.m | 2 +- .../interface/+helics/helicsEndpointGetType.m | 2 +- .../+helics/helicsEndpointHasMessage.m | 2 +- .../+helics/helicsEndpointPendingMessages.m | 2 +- .../+helics/helicsEndpointSendEventRaw.m | 2 +- .../+helics/helicsEndpointSendMessage.m | 2 +- .../+helics/helicsEndpointSendMessageObject.m | 2 +- .../+helics/helicsEndpointSendMessageRaw.m | 2 +- .../helicsEndpointSetDefaultDestination.m | 2 +- .../interface/+helics/helicsEndpointSetInfo.m | 2 +- .../+helics/helicsEndpointSetOption.m | 2 +- .../+helics/helicsEndpointSubscribe.m | 2 +- .../+helics/helicsFederateClearMessages.m | 2 +- .../+helics/helicsFederateClearUpdates.m | 2 +- .../helicsFederateCreateMessageObject.m | 2 +- .../helicsFederateEnterExecutingMode.m | 2 +- .../helicsFederateEnterExecutingModeAsync.m | 2 +- ...helicsFederateEnterExecutingModeComplete.m | 2 +- ...elicsFederateEnterExecutingModeIterative.m | 2 +- ...FederateEnterExecutingModeIterativeAsync.m | 2 +- ...erateEnterExecutingModeIterativeComplete.m | 2 +- .../helicsFederateEnterInitializingMode.m | 2 +- ...helicsFederateEnterInitializingModeAsync.m | 2 +- ...icsFederateEnterInitializingModeComplete.m | 2 +- .../+helics/helicsFederateFinalize.m | 2 +- .../+helics/helicsFederateFinalizeAsync.m | 2 +- .../+helics/helicsFederateFinalizeComplete.m | 2 +- .../interface/+helics/helicsFederateFree.m | 2 +- .../+helics/helicsFederateGetCoreObject.m | 2 +- .../+helics/helicsFederateGetCurrentTime.m | 2 +- .../+helics/helicsFederateGetEndpoint.m | 2 +- .../helicsFederateGetEndpointByIndex.m | 2 +- .../+helics/helicsFederateGetEndpointCount.m | 2 +- .../+helics/helicsFederateGetFilter.m | 2 +- .../+helics/helicsFederateGetFilterByIndex.m | 2 +- .../+helics/helicsFederateGetFilterCount.m | 2 +- .../+helics/helicsFederateGetFlagOption.m | 2 +- .../+helics/helicsFederateGetInput.m | 2 +- .../+helics/helicsFederateGetInputByIndex.m | 2 +- .../+helics/helicsFederateGetInputCount.m | 2 +- .../helicsFederateGetIntegerProperty.m | 2 +- .../+helics/helicsFederateGetMessage.m | 2 +- .../+helics/helicsFederateGetMessageObject.m | 2 +- .../interface/+helics/helicsFederateGetName.m | 2 +- .../+helics/helicsFederateGetPublication.m | 2 +- .../helicsFederateGetPublicationByIndex.m | 2 +- .../helicsFederateGetPublicationCount.m | 2 +- .../+helics/helicsFederateGetState.m | 2 +- .../+helics/helicsFederateGetSubscription.m | 2 +- .../+helics/helicsFederateGetTimeProperty.m | 2 +- .../+helics/helicsFederateGlobalError.m | 3 + .../+helics/helicsFederateHasMessage.m | 2 +- .../helicsFederateIsAsyncOperationCompleted.m | 2 +- .../+helics/helicsFederateLocalError.m | 3 + .../+helics/helicsFederateLogDebugMessage.m | 2 +- .../+helics/helicsFederateLogErrorMessage.m | 2 +- .../+helics/helicsFederateLogInfoMessage.m | 2 +- .../+helics/helicsFederateLogLevelMessage.m | 2 +- .../+helics/helicsFederateLogWarningMessage.m | 2 +- .../+helics/helicsFederatePendingMessages.m | 2 +- .../+helics/helicsFederatePublishJSON.m | 2 +- .../helicsFederateRegisterCloningFilter.m | 2 +- .../+helics/helicsFederateRegisterEndpoint.m | 2 +- .../+helics/helicsFederateRegisterFilter.m | 2 +- ...elicsFederateRegisterFromPublicationJSON.m | 2 +- ...elicsFederateRegisterGlobalCloningFilter.m | 2 +- .../helicsFederateRegisterGlobalEndpoint.m | 2 +- .../helicsFederateRegisterGlobalFilter.m | 2 +- .../helicsFederateRegisterGlobalInput.m | 2 +- .../helicsFederateRegisterGlobalPublication.m | 2 +- .../helicsFederateRegisterGlobalTypeInput.m | 2 +- ...icsFederateRegisterGlobalTypePublication.m | 2 +- .../+helics/helicsFederateRegisterInput.m | 2 +- .../helicsFederateRegisterPublication.m | 2 +- .../helicsFederateRegisterSubscription.m | 2 +- .../+helics/helicsFederateRegisterTypeInput.m | 2 +- .../helicsFederateRegisterTypePublication.m | 2 +- .../+helics/helicsFederateRequestNextStep.m | 2 +- .../+helics/helicsFederateRequestTime.m | 2 +- .../helicsFederateRequestTimeAdvance.m | 2 +- .../+helics/helicsFederateRequestTimeAsync.m | 2 +- .../helicsFederateRequestTimeComplete.m | 2 +- .../helicsFederateRequestTimeIterative.m | 2 +- .../helicsFederateRequestTimeIterativeAsync.m | 2 +- ...licsFederateRequestTimeIterativeComplete.m | 2 +- .../+helics/helicsFederateSetFlagOption.m | 2 +- .../+helics/helicsFederateSetGlobal.m | 2 +- .../helicsFederateSetIntegerProperty.m | 2 +- .../+helics/helicsFederateSetLogFile.m | 2 +- .../+helics/helicsFederateSetSeparator.m | 2 +- .../+helics/helicsFederateSetTimeProperty.m | 2 +- .../+helics/helicsFilterAddDeliveryEndpoint.m | 2 +- .../helicsFilterAddDestinationTarget.m | 2 +- .../+helics/helicsFilterAddSourceTarget.m | 2 +- .../interface/+helics/helicsFilterGetInfo.m | 2 +- .../interface/+helics/helicsFilterGetName.m | 2 +- .../interface/+helics/helicsFilterGetOption.m | 2 +- .../helicsFilterRemoveDeliveryEndpoint.m | 2 +- .../+helics/helicsFilterRemoveTarget.m | 2 +- .../interface/+helics/helicsFilterSet.m | 2 +- .../interface/+helics/helicsFilterSetInfo.m | 2 +- .../interface/+helics/helicsFilterSetOption.m | 2 +- .../interface/+helics/helicsFilterSetString.m | 2 +- .../interface/+helics/helicsInputAddTarget.m | 2 +- .../+helics/helicsInputClearUpdate.m | 2 +- .../interface/+helics/helicsInputGetBoolean.m | 2 +- .../interface/+helics/helicsInputGetChar.m | 2 +- .../interface/+helics/helicsInputGetComplex.m | 2 +- .../interface/+helics/helicsInputGetDouble.m | 2 +- .../+helics/helicsInputGetExtractionUnits.m | 2 +- .../interface/+helics/helicsInputGetInfo.m | 2 +- .../+helics/helicsInputGetInjectionUnits.m | 2 +- .../interface/+helics/helicsInputGetInteger.m | 2 +- .../interface/+helics/helicsInputGetKey.m | 2 +- .../+helics/helicsInputGetNamedPoint.m | 2 +- .../interface/+helics/helicsInputGetOption.m | 2 +- .../+helics/helicsInputGetPublicationType.m | 2 +- .../+helics/helicsInputGetRawValue.m | 2 +- .../+helics/helicsInputGetRawValueSize.m | 2 +- .../interface/+helics/helicsInputGetString.m | 2 +- .../+helics/helicsInputGetStringSize.m | 2 +- .../interface/+helics/helicsInputGetTime.m | 2 +- .../interface/+helics/helicsInputGetType.m | 2 +- .../interface/+helics/helicsInputGetUnits.m | 2 +- .../interface/+helics/helicsInputGetVector.m | 2 +- .../+helics/helicsInputGetVectorSize.m | 2 +- .../interface/+helics/helicsInputIsUpdated.m | 2 +- .../+helics/helicsInputLastUpdateTime.m | 2 +- .../+helics/helicsInputSetDefaultBoolean.m | 2 +- .../+helics/helicsInputSetDefaultChar.m | 2 +- .../+helics/helicsInputSetDefaultComplex.m | 2 +- .../+helics/helicsInputSetDefaultDouble.m | 2 +- .../+helics/helicsInputSetDefaultInteger.m | 2 +- .../+helics/helicsInputSetDefaultNamedPoint.m | 2 +- .../+helics/helicsInputSetDefaultRaw.m | 2 +- .../+helics/helicsInputSetDefaultString.m | 2 +- .../+helics/helicsInputSetDefaultTime.m | 2 +- .../+helics/helicsInputSetDefaultVector.m | 2 +- .../interface/+helics/helicsInputSetInfo.m | 2 +- .../+helics/helicsInputSetMinimumChange.m | 2 +- .../interface/+helics/helicsInputSetOption.m | 2 +- .../+helics/helicsMessageAppendData.m | 2 +- .../+helics/helicsMessageCheckFlag.m | 2 +- .../+helics/helicsMessageClearFlags.m | 2 +- .../+helics/helicsMessageGetDestination.m | 2 +- .../+helics/helicsMessageGetMessageID.m | 2 +- .../helicsMessageGetOriginalDestination.m | 2 +- .../+helics/helicsMessageGetOriginalSource.m | 2 +- .../+helics/helicsMessageGetRawData.m | 2 +- .../+helics/helicsMessageGetRawDataSize.m | 2 +- .../+helics/helicsMessageGetSource.m | 2 +- .../+helics/helicsMessageGetString.m | 2 +- .../interface/+helics/helicsMessageGetTime.m | 2 +- .../interface/+helics/helicsMessageIsValid.m | 2 +- .../interface/+helics/helicsMessageReserve.m | 2 +- .../interface/+helics/helicsMessageSetData.m | 2 +- .../+helics/helicsMessageSetDestination.m | 2 +- .../+helics/helicsMessageSetFlagOption.m | 2 +- .../+helics/helicsMessageSetMessageID.m | 2 +- .../helicsMessageSetOriginalDestination.m | 2 +- .../+helics/helicsMessageSetOriginalSource.m | 2 +- .../+helics/helicsMessageSetSource.m | 2 +- .../+helics/helicsMessageSetString.m | 2 +- .../interface/+helics/helicsMessageSetTime.m | 2 +- .../+helics/helicsPublicationAddTarget.m | 2 +- .../+helics/helicsPublicationGetInfo.m | 2 +- .../+helics/helicsPublicationGetKey.m | 2 +- .../+helics/helicsPublicationGetOption.m | 2 +- .../+helics/helicsPublicationGetType.m | 2 +- .../+helics/helicsPublicationGetUnits.m | 2 +- .../+helics/helicsPublicationPublishBoolean.m | 2 +- .../+helics/helicsPublicationPublishChar.m | 2 +- .../+helics/helicsPublicationPublishComplex.m | 2 +- .../+helics/helicsPublicationPublishDouble.m | 2 +- .../+helics/helicsPublicationPublishInteger.m | 2 +- .../helicsPublicationPublishNamedPoint.m | 2 +- .../+helics/helicsPublicationPublishRaw.m | 2 +- .../+helics/helicsPublicationPublishString.m | 2 +- .../+helics/helicsPublicationPublishTime.m | 2 +- .../+helics/helicsPublicationPublishVector.m | 2 +- .../+helics/helicsPublicationSetInfo.m | 2 +- .../helicsPublicationSetMinimumChange.m | 2 +- .../+helics/helicsPublicationSetOption.m | 2 +- .../+helics/helicsQueryBrokerExecute.m | 2 +- .../+helics/helicsQueryCoreExecute.m | 2 +- .../interface/+helics/helicsQueryExecute.m | 2 +- .../+helics/helicsQueryExecuteAsync.m | 2 +- .../+helics/helicsQueryExecuteComplete.m | 2 +- .../interface/+helics/helicsQueryFree.m | 2 +- .../+helics/helicsQueryIsCompleted.m | 2 +- .../+helics/helicsSubscriptionGetKey.m | 2 +- .../+helics/helics_error_connection_failure.m | 2 +- .../interface/+helics/helics_error_discard.m | 2 +- .../+helics/helics_error_execution_failure.m | 2 +- .../+helics/helics_error_external_type.m | 2 +- .../interface/+helics/helics_error_fatal.m | 7 + .../+helics/helics_error_insufficient_space.m | 2 +- .../+helics/helics_error_invalid_argument.m | 2 +- .../helics_error_invalid_function_call.m | 2 +- .../+helics/helics_error_invalid_object.m | 2 +- .../helics_error_invalid_state_transition.m | 2 +- .../interface/+helics/helics_error_other.m | 2 +- .../helics_error_registration_failure.m | 2 +- .../+helics/helics_error_system_failure.m | 2 +- .../+helics/helics_filter_type_clone.m | 2 +- .../+helics/helics_filter_type_custom.m | 2 +- .../+helics/helics_filter_type_delay.m | 2 +- .../+helics/helics_filter_type_firewall.m | 2 +- .../+helics/helics_filter_type_random_delay.m | 2 +- .../+helics/helics_filter_type_random_drop.m | 2 +- .../+helics/helics_filter_type_reroute.m | 2 +- .../+helics/helics_flag_terminate_on_error.m | 7 + .../helics_handle_option_buffer_data.m | 2 +- ...helics_handle_option_connection_optional.m | 2 +- ...helics_handle_option_connection_required.m | 2 +- .../helics_handle_option_ignore_interrupts.m | 2 +- ...elics_handle_option_ignore_unit_mismatch.m | 2 +- ...ndle_option_multiple_connections_allowed.m | 2 +- ...cs_handle_option_only_transmit_on_change.m | 2 +- ...lics_handle_option_only_update_on_change.m | 2 +- ...ics_handle_option_single_connection_only.m | 2 +- ...elics_handle_option_strict_type_checking.m | 2 +- ...helics_iteration_request_force_iteration.m | 2 +- ...lics_iteration_request_iterate_if_needed.m | 2 +- .../helics_iteration_request_no_iteration.m | 2 +- .../+helics/helics_iteration_result_error.m | 2 +- .../+helics/helics_iteration_result_halted.m | 2 +- .../helics_iteration_result_iterating.m | 2 +- .../helics_iteration_result_next_step.m | 2 +- .../+helics/helics_log_level_connections.m | 2 +- .../interface/+helics/helics_log_level_data.m | 2 +- .../+helics/helics_log_level_error.m | 2 +- .../+helics/helics_log_level_interfaces.m | 2 +- .../+helics/helics_log_level_no_print.m | 2 +- .../+helics/helics_log_level_summary.m | 2 +- .../+helics/helics_log_level_timing.m | 2 +- .../+helics/helics_log_level_trace.m | 2 +- .../+helics/helics_log_level_warning.m | 2 +- .../matlab/interface/+helics/helics_ok.m | 2 +- .../helics_property_int_console_log_level.m | 2 +- .../helics_property_int_file_log_level.m | 2 +- .../+helics/helics_property_int_log_level.m | 2 +- .../helics_property_int_max_iterations.m | 2 +- .../+helics/helics_property_time_delta.m | 2 +- .../helics_property_time_input_delay.m | 2 +- .../+helics/helics_property_time_offset.m | 2 +- .../helics_property_time_output_delay.m | 2 +- .../+helics/helics_property_time_period.m | 2 +- .../+helics/helics_property_time_rt_lag.m | 2 +- .../+helics/helics_property_time_rt_lead.m | 2 +- .../helics_property_time_rt_tolerance.m | 2 +- .../interface/+helics/helics_state_error.m | 2 +- .../+helics/helics_state_execution.m | 2 +- .../interface/+helics/helics_state_finalize.m | 2 +- .../+helics/helics_state_initialization.m | 2 +- .../+helics/helics_state_pending_exec.m | 2 +- .../+helics/helics_state_pending_finalize.m | 2 +- .../+helics/helics_state_pending_init.m | 2 +- .../helics_state_pending_iterative_time.m | 2 +- .../+helics/helics_state_pending_time.m | 2 +- .../interface/+helics/helics_state_startup.m | 2 +- .../matlab/interface/+helics/helics_warning.m | 2 +- interfaces/matlab/interface/helicsMEX.cpp | 1180 +++++++++-------- interfaces/python/interface/helics.py | 31 + interfaces/python/interface/helicsPython.c | 99 ++ 285 files changed, 1156 insertions(+), 821 deletions(-) create mode 100644 interfaces/matlab/interface/+helics/helicsFederateGlobalError.m create mode 100644 interfaces/matlab/interface/+helics/helicsFederateLocalError.m create mode 100644 interfaces/matlab/interface/+helics/helics_error_fatal.m create mode 100644 interfaces/matlab/interface/+helics/helics_flag_terminate_on_error.m diff --git a/interfaces/java/interface/helics.java b/interfaces/java/interface/helics.java index 564a23462b..c7f4f61227 100644 --- a/interfaces/java/interface/helics.java +++ b/interfaces/java/interface/helics.java @@ -694,6 +694,29 @@ public static void helicsFederateRegisterInterfaces(SWIGTYPE_p_void fed, String helicsJNI.helicsFederateRegisterInterfaces(SWIGTYPE_p_void.getCPtr(fed), file); } + /** + * generate a global Error from a federate
+ * A global error halts the co-simulation completely
+ * @param fed the federate to create an error in
+ * @param error_code the integer code for the error
+ * @param error_string a string describing the error + */ + public static void helicsFederateGlobalError(SWIGTYPE_p_void fed, int error_code, String error_string) { + helicsJNI.helicsFederateGlobalError(SWIGTYPE_p_void.getCPtr(fed), error_code, error_string); + } + + /** + * generate a local error in a federate
+ * this will propagate through the co-simulation but not necessarily halt the co-simulation, it has a similar effect to finalize but does
+ * allow some interaction with a core for a brief time.
+ * @param fed the federate to create an error in
+ * @param error_code the integer code for the error
+ * @param error_string a string describing the error + */ + public static void helicsFederateLocalError(SWIGTYPE_p_void fed, int error_code, String error_string) { + helicsJNI.helicsFederateLocalError(SWIGTYPE_p_void.getCPtr(fed), error_code, error_string); + } + /** * finalize the federate this function halts all communication in the federate and disconnects it from the core */ diff --git a/interfaces/java/interface/helicsJNI.java b/interfaces/java/interface/helicsJNI.java index e41acb8f23..f1f790bde8 100644 --- a/interfaces/java/interface/helicsJNI.java +++ b/interfaces/java/interface/helicsJNI.java @@ -51,6 +51,7 @@ public class helicsJNI { public final static native int helics_flag_delay_init_entry_get(); public final static native int helics_flag_enable_init_entry_get(); public final static native int helics_flag_ignore_time_mismatch_warnings_get(); + public final static native int helics_flag_terminate_on_error_get(); public final static native int helics_log_level_no_print_get(); public final static native int helics_log_level_error_get(); public final static native int helics_log_level_warning_get(); @@ -73,6 +74,7 @@ public class helicsJNI { public final static native int helics_error_execution_failure_get(); public final static native int helics_error_insufficient_space_get(); public final static native int helics_error_other_get(); + public final static native int helics_error_fatal_get(); public final static native int helics_error_external_type_get(); public final static native int helics_property_time_delta_get(); public final static native int helics_property_time_period_get(); @@ -200,6 +202,8 @@ public class helicsJNI { public final static native void helicsFederateInfoSetTimeProperty(long jarg1, int jarg2, double jarg3); public final static native void helicsFederateInfoSetIntegerProperty(long jarg1, int jarg2, int jarg3); public final static native void helicsFederateRegisterInterfaces(long jarg1, String jarg2); + public final static native void helicsFederateGlobalError(long jarg1, int jarg2, String jarg3); + public final static native void helicsFederateLocalError(long jarg1, int jarg2, String jarg3); public final static native void helicsFederateFinalize(long jarg1); public final static native void helicsFederateFinalizeAsync(long jarg1); public final static native void helicsFederateFinalizeComplete(long jarg1); diff --git a/interfaces/java/interface/helicsJava.c b/interfaces/java/interface/helicsJava.c index afa8122f8e..9a0a11e94f 100644 --- a/interfaces/java/interface/helicsJava.c +++ b/interfaces/java/interface/helicsJava.c @@ -725,6 +725,18 @@ SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1flag_1ignore_1tim } +SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1flag_1terminate_1on_1error_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + helics_federate_flags result; + + (void)jenv; + (void)jcls; + result = (helics_federate_flags)helics_flag_terminate_on_error; + jresult = (jint)result; + return jresult; +} + + SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1log_1level_1no_1print_1get(JNIEnv *jenv, jclass jcls) { jint jresult = 0 ; helics_log_levels result; @@ -989,6 +1001,18 @@ SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1error_1other_1get } +SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1error_1fatal_1get(JNIEnv *jenv, jclass jcls) { + jint jresult = 0 ; + helics_error_types result; + + (void)jenv; + (void)jcls; + result = (helics_error_types)helics_error_fatal; + jresult = (jint)result; + return jresult; +} + + SWIGEXPORT jint JNICALL Java_com_java_helics_helicsJNI_helics_1error_1external_1type_1get(JNIEnv *jenv, jclass jcls) { jint jresult = 0 ; helics_error_types result; @@ -3564,6 +3588,44 @@ SWIGEXPORT void JNICALL Java_com_java_helics_helicsJNI_helicsFederateRegisterInt } +SWIGEXPORT void JNICALL Java_com_java_helics_helicsJNI_helicsFederateGlobalError(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jstring jarg3) { + helics_federate arg1 = (helics_federate) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(helics_federate *)&jarg1; + arg2 = (int)jarg2; + arg3 = 0; + if (jarg3) { + arg3 = (char *)(*jenv)->GetStringUTFChars(jenv, jarg3, 0); + if (!arg3) return ; + } + helicsFederateGlobalError(arg1,arg2,(char const *)arg3); + if (arg3) (*jenv)->ReleaseStringUTFChars(jenv, jarg3, (const char *)arg3); +} + + +SWIGEXPORT void JNICALL Java_com_java_helics_helicsJNI_helicsFederateLocalError(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jstring jarg3) { + helics_federate arg1 = (helics_federate) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + + (void)jenv; + (void)jcls; + arg1 = *(helics_federate *)&jarg1; + arg2 = (int)jarg2; + arg3 = 0; + if (jarg3) { + arg3 = (char *)(*jenv)->GetStringUTFChars(jenv, jarg3, 0); + if (!arg3) return ; + } + helicsFederateLocalError(arg1,arg2,(char const *)arg3); + if (arg3) (*jenv)->ReleaseStringUTFChars(jenv, jarg3, (const char *)arg3); +} + + SWIGEXPORT void JNICALL Java_com_java_helics_helicsJNI_helicsFederateFinalize(JNIEnv *jenv, jclass jcls, jlong jarg1) { helics_federate arg1 = (helics_federate) 0 ; helics_error *arg2 = (helics_error *) 0 ; diff --git a/interfaces/java/interface/helics_error_types.java b/interfaces/java/interface/helics_error_types.java index f59de5ec0f..7d54608a78 100644 --- a/interfaces/java/interface/helics_error_types.java +++ b/interfaces/java/interface/helics_error_types.java @@ -64,6 +64,10 @@ public final class helics_error_types { * the function produced a helics error of some other type */ public final static helics_error_types helics_error_other = new helics_error_types("helics_error_other", helicsJNI.helics_error_other_get()); + /** + * global fatal error for federation + */ + public final static helics_error_types helics_error_fatal = new helics_error_types("helics_error_fatal", helicsJNI.helics_error_fatal_get()); /** * an unknown non-helics error was produced */ @@ -103,7 +107,7 @@ private helics_error_types(String swigName, helics_error_types swigEnum) { swigNext = this.swigValue+1; } - private static helics_error_types[] swigValues = { helics_ok, helics_error_registration_failure, helics_error_connection_failure, helics_error_invalid_object, helics_error_invalid_argument, helics_error_discard, helics_error_system_failure, helics_warning, helics_error_invalid_state_transition, helics_error_invalid_function_call, helics_error_execution_failure, helics_error_insufficient_space, helics_error_other, helics_error_external_type }; + private static helics_error_types[] swigValues = { helics_ok, helics_error_registration_failure, helics_error_connection_failure, helics_error_invalid_object, helics_error_invalid_argument, helics_error_discard, helics_error_system_failure, helics_warning, helics_error_invalid_state_transition, helics_error_invalid_function_call, helics_error_execution_failure, helics_error_insufficient_space, helics_error_other, helics_error_fatal, helics_error_external_type }; private static int swigNext = 0; private final int swigValue; private final String swigName; diff --git a/interfaces/java/interface/helics_federate_flags.java b/interfaces/java/interface/helics_federate_flags.java index 9f7e221a6d..d2e37b5783 100644 --- a/interfaces/java/interface/helics_federate_flags.java +++ b/interfaces/java/interface/helics_federate_flags.java @@ -82,6 +82,10 @@ public final class helics_federate_flags { * used to not display warnings on mismatched requested times */ public final static helics_federate_flags helics_flag_ignore_time_mismatch_warnings = new helics_federate_flags("helics_flag_ignore_time_mismatch_warnings", helicsJNI.helics_flag_ignore_time_mismatch_warnings_get()); + /** + * specify that a federate error should terminate the federation + */ + public final static helics_federate_flags helics_flag_terminate_on_error = new helics_federate_flags("helics_flag_terminate_on_error", helicsJNI.helics_flag_terminate_on_error_get()); public final int swigValue() { return swigValue; @@ -117,7 +121,7 @@ private helics_federate_flags(String swigName, helics_federate_flags swigEnum) { swigNext = this.swigValue+1; } - private static helics_federate_flags[] swigValues = { helics_flag_observer, helics_flag_uninterruptible, helics_flag_interruptible, helics_flag_source_only, helics_flag_only_transmit_on_change, helics_flag_only_update_on_change, helics_flag_wait_for_current_time_update, helics_flag_restrictive_time_policy, helics_flag_rollback, helics_flag_forward_compute, helics_flag_realtime, helics_flag_single_thread_federate, helics_flag_slow_responding, helics_flag_delay_init_entry, helics_flag_enable_init_entry, helics_flag_ignore_time_mismatch_warnings }; + private static helics_federate_flags[] swigValues = { helics_flag_observer, helics_flag_uninterruptible, helics_flag_interruptible, helics_flag_source_only, helics_flag_only_transmit_on_change, helics_flag_only_update_on_change, helics_flag_wait_for_current_time_update, helics_flag_restrictive_time_policy, helics_flag_rollback, helics_flag_forward_compute, helics_flag_realtime, helics_flag_single_thread_federate, helics_flag_slow_responding, helics_flag_delay_init_entry, helics_flag_enable_init_entry, helics_flag_ignore_time_mismatch_warnings, helics_flag_terminate_on_error }; private static int swigNext = 0; private final int swigValue; private final String swigName; diff --git a/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m b/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m index 801308440f..0162464b76 100644 --- a/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m +++ b/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m @@ -1,3 +1,3 @@ function varargout = helicsBrokerSetGlobal(varargin) - [varargout{1:nargout}] = helicsMEX(137, varargin{:}); + [varargout{1:nargout}] = helicsMEX(139, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m b/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m index fdfbf66102..f72d4f4d8c 100644 --- a/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m +++ b/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m @@ -1,3 +1,3 @@ function varargout = helicsBrokerSetLogFile(varargin) - [varargout{1:nargout}] = helicsMEX(139, varargin{:}); + [varargout{1:nargout}] = helicsMEX(141, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m b/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m index 79a3dc8a72..7ca0390970 100644 --- a/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m +++ b/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m @@ -1,3 +1,3 @@ function varargout = helicsCleanupLibrary(varargin) - [varargout{1:nargout}] = helicsMEX(148, varargin{:}); + [varargout{1:nargout}] = helicsMEX(150, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCloseLibrary.m b/interfaces/matlab/interface/+helics/helicsCloseLibrary.m index b6de3be788..9f9b540cf0 100644 --- a/interfaces/matlab/interface/+helics/helicsCloseLibrary.m +++ b/interfaces/matlab/interface/+helics/helicsCloseLibrary.m @@ -1,3 +1,3 @@ function varargout = helicsCloseLibrary(varargin) - [varargout{1:nargout}] = helicsMEX(99, varargin{:}); + [varargout{1:nargout}] = helicsMEX(101, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m b/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m index 411011ae77..a8a867049f 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m +++ b/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m @@ -1,3 +1,3 @@ function varargout = helicsCoreRegisterCloningFilter(varargin) - [varargout{1:nargout}] = helicsMEX(283, varargin{:}); + [varargout{1:nargout}] = helicsMEX(285, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m b/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m index d9873397a4..7ffe5a05d7 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m +++ b/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m @@ -1,3 +1,3 @@ function varargout = helicsCoreRegisterFilter(varargin) - [varargout{1:nargout}] = helicsMEX(282, varargin{:}); + [varargout{1:nargout}] = helicsMEX(284, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m b/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m index 453ef780e9..52c93012d4 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m +++ b/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m @@ -1,3 +1,3 @@ function varargout = helicsCoreSetGlobal(varargin) - [varargout{1:nargout}] = helicsMEX(136, varargin{:}); + [varargout{1:nargout}] = helicsMEX(138, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m b/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m index 741a5af517..5f2e14cba7 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m +++ b/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m @@ -1,3 +1,3 @@ function varargout = helicsCoreSetLogFile(varargin) - [varargout{1:nargout}] = helicsMEX(138, varargin{:}); + [varargout{1:nargout}] = helicsMEX(140, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCreateQuery.m b/interfaces/matlab/interface/+helics/helicsCreateQuery.m index ed53750962..8dd58948ca 100644 --- a/interfaces/matlab/interface/+helics/helicsCreateQuery.m +++ b/interfaces/matlab/interface/+helics/helicsCreateQuery.m @@ -1,3 +1,3 @@ function varargout = helicsCreateQuery(varargin) - [varargout{1:nargout}] = helicsMEX(140, varargin{:}); + [varargout{1:nargout}] = helicsMEX(142, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m b/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m index 481e0ad575..d2d4460a25 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointClearMessages(varargin) - [varargout{1:nargout}] = helicsMEX(247, varargin{:}); + [varargout{1:nargout}] = helicsMEX(249, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m b/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m index d2028f572a..aed076aad7 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetDefaultDestination(varargin) - [varargout{1:nargout}] = helicsMEX(231, varargin{:}); + [varargout{1:nargout}] = helicsMEX(233, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m b/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m index 1193c9f2ac..f7fe43a031 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(251, varargin{:}); + [varargout{1:nargout}] = helicsMEX(253, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m index 3f73e20aef..e09cb25921 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetMessage(varargin) - [varargout{1:nargout}] = helicsMEX(241, varargin{:}); + [varargout{1:nargout}] = helicsMEX(243, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m b/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m index 0761e1199c..a661292731 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(242, varargin{:}); + [varargout{1:nargout}] = helicsMEX(244, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetName.m b/interfaces/matlab/interface/+helics/helicsEndpointGetName.m index fb2a4f95b0..d974da0ca6 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetName.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetName.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetName(varargin) - [varargout{1:nargout}] = helicsMEX(249, varargin{:}); + [varargout{1:nargout}] = helicsMEX(251, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m b/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m index 7b98d0e6d2..8e2f1b5179 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(254, varargin{:}); + [varargout{1:nargout}] = helicsMEX(256, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetType.m b/interfaces/matlab/interface/+helics/helicsEndpointGetType.m index d54bcdb528..01786d65a7 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetType.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetType.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetType(varargin) - [varargout{1:nargout}] = helicsMEX(248, varargin{:}); + [varargout{1:nargout}] = helicsMEX(250, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m index e98020cb39..2b7fa8153a 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointHasMessage(varargin) - [varargout{1:nargout}] = helicsMEX(238, varargin{:}); + [varargout{1:nargout}] = helicsMEX(240, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m b/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m index 20f7073c39..77fd155c14 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointPendingMessages(varargin) - [varargout{1:nargout}] = helicsMEX(240, varargin{:}); + [varargout{1:nargout}] = helicsMEX(242, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m b/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m index d64fcfb345..f43b3f52d4 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendEventRaw(varargin) - [varargout{1:nargout}] = helicsMEX(233, varargin{:}); + [varargout{1:nargout}] = helicsMEX(235, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m index ba4a6f4d7e..2ec4495e61 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendMessage(varargin) - [varargout{1:nargout}] = helicsMEX(234, varargin{:}); + [varargout{1:nargout}] = helicsMEX(236, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m index 8db60d0ae2..66ae86cb60 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(235, varargin{:}); + [varargout{1:nargout}] = helicsMEX(237, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m index 709d007210..e0ec788f1e 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendMessageRaw(varargin) - [varargout{1:nargout}] = helicsMEX(232, varargin{:}); + [varargout{1:nargout}] = helicsMEX(234, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m b/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m index a6127377e4..ca5183d98e 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSetDefaultDestination(varargin) - [varargout{1:nargout}] = helicsMEX(230, varargin{:}); + [varargout{1:nargout}] = helicsMEX(232, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m b/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m index c8d7d1e5c2..949af3265a 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(252, varargin{:}); + [varargout{1:nargout}] = helicsMEX(254, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m b/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m index a4f795543d..b2c9ac23b1 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(253, varargin{:}); + [varargout{1:nargout}] = helicsMEX(255, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m b/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m index 68471bfdc4..0112f733ec 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSubscribe(varargin) - [varargout{1:nargout}] = helicsMEX(236, varargin{:}); + [varargout{1:nargout}] = helicsMEX(238, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m b/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m index 635af93e55..2839ec304a 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m +++ b/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m @@ -1,3 +1,3 @@ function varargout = helicsFederateClearMessages(varargin) - [varargout{1:nargout}] = helicsMEX(246, varargin{:}); + [varargout{1:nargout}] = helicsMEX(248, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m b/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m index 65b02c02d2..fe48f64394 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m +++ b/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m @@ -1,3 +1,3 @@ function varargout = helicsFederateClearUpdates(varargin) - [varargout{1:nargout}] = helicsMEX(163, varargin{:}); + [varargout{1:nargout}] = helicsMEX(165, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m b/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m index bb1d6577da..ee36638fb7 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsFederateCreateMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(245, varargin{:}); + [varargout{1:nargout}] = helicsMEX(247, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingMode.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingMode.m index 69c2d3a2ea..6fa20874fb 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingMode.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingMode.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterExecutingMode(varargin) - [varargout{1:nargout}] = helicsMEX(104, varargin{:}); + [varargout{1:nargout}] = helicsMEX(106, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeAsync.m index dbe59adda8..f8c2d026da 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeAsync.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeAsync.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterExecutingModeAsync(varargin) - [varargout{1:nargout}] = helicsMEX(105, varargin{:}); + [varargout{1:nargout}] = helicsMEX(107, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeComplete.m index 8152a9c46d..b5a26c966f 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeComplete.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeComplete.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterExecutingModeComplete(varargin) - [varargout{1:nargout}] = helicsMEX(106, varargin{:}); + [varargout{1:nargout}] = helicsMEX(108, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterative.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterative.m index 67fc5a2a2d..5fab30b321 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterative.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterative.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterExecutingModeIterative(varargin) - [varargout{1:nargout}] = helicsMEX(107, varargin{:}); + [varargout{1:nargout}] = helicsMEX(109, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeAsync.m index aeda64b1a5..e68449e6a8 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeAsync.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeAsync.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterExecutingModeIterativeAsync(varargin) - [varargout{1:nargout}] = helicsMEX(108, varargin{:}); + [varargout{1:nargout}] = helicsMEX(110, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeComplete.m index b89fc96657..85add4a1ad 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeComplete.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterExecutingModeIterativeComplete.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterExecutingModeIterativeComplete(varargin) - [varargout{1:nargout}] = helicsMEX(109, varargin{:}); + [varargout{1:nargout}] = helicsMEX(111, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingMode.m b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingMode.m index 76640bbe7e..6f0c7c5d9d 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingMode.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingMode.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterInitializingMode(varargin) - [varargout{1:nargout}] = helicsMEX(100, varargin{:}); + [varargout{1:nargout}] = helicsMEX(102, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeAsync.m index 3227845d50..184eb28a51 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeAsync.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeAsync.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterInitializingModeAsync(varargin) - [varargout{1:nargout}] = helicsMEX(101, varargin{:}); + [varargout{1:nargout}] = helicsMEX(103, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeComplete.m index 5acd396d84..a279c0d18d 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeComplete.m +++ b/interfaces/matlab/interface/+helics/helicsFederateEnterInitializingModeComplete.m @@ -1,3 +1,3 @@ function varargout = helicsFederateEnterInitializingModeComplete(varargin) - [varargout{1:nargout}] = helicsMEX(103, varargin{:}); + [varargout{1:nargout}] = helicsMEX(105, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateFinalize.m b/interfaces/matlab/interface/+helics/helicsFederateFinalize.m index 079b59f0a2..82bf418ec9 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateFinalize.m +++ b/interfaces/matlab/interface/+helics/helicsFederateFinalize.m @@ -1,3 +1,3 @@ function varargout = helicsFederateFinalize(varargin) - [varargout{1:nargout}] = helicsMEX(95, varargin{:}); + [varargout{1:nargout}] = helicsMEX(97, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateFinalizeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateFinalizeAsync.m index 8b819538d6..6fdc85557e 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateFinalizeAsync.m +++ b/interfaces/matlab/interface/+helics/helicsFederateFinalizeAsync.m @@ -1,3 +1,3 @@ function varargout = helicsFederateFinalizeAsync(varargin) - [varargout{1:nargout}] = helicsMEX(96, varargin{:}); + [varargout{1:nargout}] = helicsMEX(98, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateFinalizeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateFinalizeComplete.m index 079c5c4b62..dc8c9d7c4a 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateFinalizeComplete.m +++ b/interfaces/matlab/interface/+helics/helicsFederateFinalizeComplete.m @@ -1,3 +1,3 @@ function varargout = helicsFederateFinalizeComplete(varargin) - [varargout{1:nargout}] = helicsMEX(97, varargin{:}); + [varargout{1:nargout}] = helicsMEX(99, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateFree.m b/interfaces/matlab/interface/+helics/helicsFederateFree.m index 2e370b55d3..bcc6020669 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateFree.m +++ b/interfaces/matlab/interface/+helics/helicsFederateFree.m @@ -1,3 +1,3 @@ function varargout = helicsFederateFree(varargin) - [varargout{1:nargout}] = helicsMEX(98, varargin{:}); + [varargout{1:nargout}] = helicsMEX(100, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetCoreObject.m b/interfaces/matlab/interface/+helics/helicsFederateGetCoreObject.m index b2ff0111bb..5e34fb2f07 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetCoreObject.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetCoreObject.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetCoreObject(varargin) - [varargout{1:nargout}] = helicsMEX(111, varargin{:}); + [varargout{1:nargout}] = helicsMEX(113, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetCurrentTime.m b/interfaces/matlab/interface/+helics/helicsFederateGetCurrentTime.m index e35d00b2da..0d4e578b71 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetCurrentTime.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetCurrentTime.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetCurrentTime(varargin) - [varargout{1:nargout}] = helicsMEX(128, varargin{:}); + [varargout{1:nargout}] = helicsMEX(130, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m index 3a5e97573c..1df22ae5f5 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(228, varargin{:}); + [varargout{1:nargout}] = helicsMEX(230, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m index 37acd3678f..36ade67b54 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetEndpointByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(229, varargin{:}); + [varargout{1:nargout}] = helicsMEX(231, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m index f272d97519..f8343a87f3 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetEndpointCount(varargin) - [varargout{1:nargout}] = helicsMEX(250, varargin{:}); + [varargout{1:nargout}] = helicsMEX(252, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m index 98d4d65ccf..0823689f4c 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetFilter(varargin) - [varargout{1:nargout}] = helicsMEX(285, varargin{:}); + [varargout{1:nargout}] = helicsMEX(287, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m index 24387e16be..707a3c85a9 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetFilterByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(286, varargin{:}); + [varargout{1:nargout}] = helicsMEX(288, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m index 816fdfef84..9cd074d91d 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetFilterCount(varargin) - [varargout{1:nargout}] = helicsMEX(284, varargin{:}); + [varargout{1:nargout}] = helicsMEX(286, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetFlagOption.m b/interfaces/matlab/interface/+helics/helicsFederateGetFlagOption.m index 67f89e53e9..16083b1d49 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetFlagOption.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetFlagOption.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetFlagOption(varargin) - [varargout{1:nargout}] = helicsMEX(126, varargin{:}); + [varargout{1:nargout}] = helicsMEX(128, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetInput.m b/interfaces/matlab/interface/+helics/helicsFederateGetInput.m index c76cf7f04b..368994b8b2 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetInput(varargin) - [varargout{1:nargout}] = helicsMEX(160, varargin{:}); + [varargout{1:nargout}] = helicsMEX(162, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m index 5494a541f8..ed3f057031 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetInputByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(161, varargin{:}); + [varargout{1:nargout}] = helicsMEX(163, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m index 9c7d448289..939bdd6358 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetInputCount(varargin) - [varargout{1:nargout}] = helicsMEX(225, varargin{:}); + [varargout{1:nargout}] = helicsMEX(227, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetIntegerProperty.m b/interfaces/matlab/interface/+helics/helicsFederateGetIntegerProperty.m index 65b175ec25..a15792827b 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetIntegerProperty.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetIntegerProperty.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetIntegerProperty(varargin) - [varargout{1:nargout}] = helicsMEX(127, varargin{:}); + [varargout{1:nargout}] = helicsMEX(129, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m b/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m index b564b51866..e4910f9e6b 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetMessage(varargin) - [varargout{1:nargout}] = helicsMEX(243, varargin{:}); + [varargout{1:nargout}] = helicsMEX(245, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m b/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m index c15c3014ca..2a4429614c 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(244, varargin{:}); + [varargout{1:nargout}] = helicsMEX(246, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetName.m b/interfaces/matlab/interface/+helics/helicsFederateGetName.m index d5aac23ac6..71f2e31c43 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetName.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetName.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetName(varargin) - [varargout{1:nargout}] = helicsMEX(120, varargin{:}); + [varargout{1:nargout}] = helicsMEX(122, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m index 2285eeddd5..da2c181f67 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetPublication(varargin) - [varargout{1:nargout}] = helicsMEX(158, varargin{:}); + [varargout{1:nargout}] = helicsMEX(160, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m index 378ee31498..6dd2b79c10 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetPublicationByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(159, varargin{:}); + [varargout{1:nargout}] = helicsMEX(161, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m index 58acdbcd51..7077f0e6d4 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetPublicationCount(varargin) - [varargout{1:nargout}] = helicsMEX(224, varargin{:}); + [varargout{1:nargout}] = helicsMEX(226, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetState.m b/interfaces/matlab/interface/+helics/helicsFederateGetState.m index 2d72565c49..72f7cf80cd 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetState.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetState.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetState(varargin) - [varargout{1:nargout}] = helicsMEX(110, varargin{:}); + [varargout{1:nargout}] = helicsMEX(112, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m b/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m index 6dc130ce3f..08bd4a2a6b 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetSubscription(varargin) - [varargout{1:nargout}] = helicsMEX(162, varargin{:}); + [varargout{1:nargout}] = helicsMEX(164, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetTimeProperty.m b/interfaces/matlab/interface/+helics/helicsFederateGetTimeProperty.m index c0db342d22..88a71ce39e 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetTimeProperty.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetTimeProperty.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetTimeProperty(varargin) - [varargout{1:nargout}] = helicsMEX(125, varargin{:}); + [varargout{1:nargout}] = helicsMEX(127, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGlobalError.m b/interfaces/matlab/interface/+helics/helicsFederateGlobalError.m new file mode 100644 index 0000000000..0de82d5097 --- /dev/null +++ b/interfaces/matlab/interface/+helics/helicsFederateGlobalError.m @@ -0,0 +1,3 @@ +function varargout = helicsFederateGlobalError(varargin) + [varargout{1:nargout}] = helicsMEX(95, varargin{:}); +end diff --git a/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m b/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m index ae8ad12038..d6fc9bd9e7 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateHasMessage(varargin) - [varargout{1:nargout}] = helicsMEX(237, varargin{:}); + [varargout{1:nargout}] = helicsMEX(239, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateIsAsyncOperationCompleted.m b/interfaces/matlab/interface/+helics/helicsFederateIsAsyncOperationCompleted.m index 8b34d14703..0d85d184b7 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateIsAsyncOperationCompleted.m +++ b/interfaces/matlab/interface/+helics/helicsFederateIsAsyncOperationCompleted.m @@ -1,3 +1,3 @@ function varargout = helicsFederateIsAsyncOperationCompleted(varargin) - [varargout{1:nargout}] = helicsMEX(102, varargin{:}); + [varargout{1:nargout}] = helicsMEX(104, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLocalError.m b/interfaces/matlab/interface/+helics/helicsFederateLocalError.m new file mode 100644 index 0000000000..8657775b52 --- /dev/null +++ b/interfaces/matlab/interface/+helics/helicsFederateLocalError.m @@ -0,0 +1,3 @@ +function varargout = helicsFederateLocalError(varargin) + [varargout{1:nargout}] = helicsMEX(96, varargin{:}); +end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m index d7dab58d21..f4865f53e2 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogDebugMessage(varargin) - [varargout{1:nargout}] = helicsMEX(134, varargin{:}); + [varargout{1:nargout}] = helicsMEX(136, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m index 8ca726c10c..1de1ad71e7 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogErrorMessage(varargin) - [varargout{1:nargout}] = helicsMEX(131, varargin{:}); + [varargout{1:nargout}] = helicsMEX(133, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m index dd3769a716..85197c9a4b 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogInfoMessage(varargin) - [varargout{1:nargout}] = helicsMEX(133, varargin{:}); + [varargout{1:nargout}] = helicsMEX(135, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m index e174a381fb..a3513edfa2 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogLevelMessage(varargin) - [varargout{1:nargout}] = helicsMEX(135, varargin{:}); + [varargout{1:nargout}] = helicsMEX(137, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m index f1699e4d1e..2d045c831c 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogWarningMessage(varargin) - [varargout{1:nargout}] = helicsMEX(132, varargin{:}); + [varargout{1:nargout}] = helicsMEX(134, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m b/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m index a494a7b598..f14081a952 100644 --- a/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m +++ b/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m @@ -1,3 +1,3 @@ function varargout = helicsFederatePendingMessages(varargin) - [varargout{1:nargout}] = helicsMEX(239, varargin{:}); + [varargout{1:nargout}] = helicsMEX(241, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m b/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m index 24650479ed..b3443d90d7 100644 --- a/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m +++ b/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m @@ -1,3 +1,3 @@ function varargout = helicsFederatePublishJSON(varargin) - [varargout{1:nargout}] = helicsMEX(165, varargin{:}); + [varargout{1:nargout}] = helicsMEX(167, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m index 711d867aae..faffa096e1 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterCloningFilter(varargin) - [varargout{1:nargout}] = helicsMEX(280, varargin{:}); + [varargout{1:nargout}] = helicsMEX(282, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m index ba6c4ff908..9b1ce21667 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(226, varargin{:}); + [varargout{1:nargout}] = helicsMEX(228, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m index 80c4d94123..d9c3fb124e 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterFilter(varargin) - [varargout{1:nargout}] = helicsMEX(278, varargin{:}); + [varargout{1:nargout}] = helicsMEX(280, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m index 5afa29c333..c3ed8d1641 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterFromPublicationJSON(varargin) - [varargout{1:nargout}] = helicsMEX(164, varargin{:}); + [varargout{1:nargout}] = helicsMEX(166, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m index 6149595b23..0e4237f27e 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalCloningFilter(varargin) - [varargout{1:nargout}] = helicsMEX(281, varargin{:}); + [varargout{1:nargout}] = helicsMEX(283, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m index 58f7a7ba3f..b8baed8cec 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(227, varargin{:}); + [varargout{1:nargout}] = helicsMEX(229, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m index f44cb31896..fcea094738 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalFilter(varargin) - [varargout{1:nargout}] = helicsMEX(279, varargin{:}); + [varargout{1:nargout}] = helicsMEX(281, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m index 69b2ddab76..bbded0298a 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalInput(varargin) - [varargout{1:nargout}] = helicsMEX(156, varargin{:}); + [varargout{1:nargout}] = helicsMEX(158, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m index 683b1807da..be121633f4 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalPublication(varargin) - [varargout{1:nargout}] = helicsMEX(152, varargin{:}); + [varargout{1:nargout}] = helicsMEX(154, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m index b5118ac8b4..b506b6e0bd 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalTypeInput(varargin) - [varargout{1:nargout}] = helicsMEX(157, varargin{:}); + [varargout{1:nargout}] = helicsMEX(159, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m index c683c73d1e..e802022912 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalTypePublication(varargin) - [varargout{1:nargout}] = helicsMEX(153, varargin{:}); + [varargout{1:nargout}] = helicsMEX(155, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m index 6aeeb80650..517787ddff 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterInput(varargin) - [varargout{1:nargout}] = helicsMEX(154, varargin{:}); + [varargout{1:nargout}] = helicsMEX(156, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m index 299cb737cf..8c1ee7b636 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterPublication(varargin) - [varargout{1:nargout}] = helicsMEX(150, varargin{:}); + [varargout{1:nargout}] = helicsMEX(152, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m index 2e9a8c9be1..7a47061b86 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterSubscription(varargin) - [varargout{1:nargout}] = helicsMEX(149, varargin{:}); + [varargout{1:nargout}] = helicsMEX(151, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m index 297c0e3099..42dafa894e 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterTypeInput(varargin) - [varargout{1:nargout}] = helicsMEX(155, varargin{:}); + [varargout{1:nargout}] = helicsMEX(157, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m index 0102fd4958..3b2c013720 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterTypePublication(varargin) - [varargout{1:nargout}] = helicsMEX(151, varargin{:}); + [varargout{1:nargout}] = helicsMEX(153, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestNextStep.m b/interfaces/matlab/interface/+helics/helicsFederateRequestNextStep.m index 2b74770a27..9c27f72bfb 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestNextStep.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestNextStep.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestNextStep(varargin) - [varargout{1:nargout}] = helicsMEX(114, varargin{:}); + [varargout{1:nargout}] = helicsMEX(116, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestTime.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTime.m index d6bb4c7382..62ecd5fab4 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestTime.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestTime.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestTime(varargin) - [varargout{1:nargout}] = helicsMEX(112, varargin{:}); + [varargout{1:nargout}] = helicsMEX(114, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAdvance.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAdvance.m index afc18e9b44..6076ef3bd1 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAdvance.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAdvance.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestTimeAdvance(varargin) - [varargout{1:nargout}] = helicsMEX(113, varargin{:}); + [varargout{1:nargout}] = helicsMEX(115, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAsync.m index cd93047193..e37a546f6f 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAsync.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeAsync.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestTimeAsync(varargin) - [varargout{1:nargout}] = helicsMEX(116, varargin{:}); + [varargout{1:nargout}] = helicsMEX(118, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeComplete.m index 3071d0b0f1..831b113c1a 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeComplete.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeComplete.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestTimeComplete(varargin) - [varargout{1:nargout}] = helicsMEX(117, varargin{:}); + [varargout{1:nargout}] = helicsMEX(119, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterative.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterative.m index b3deb2b193..d15bfe902d 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterative.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterative.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestTimeIterative(varargin) - [varargout{1:nargout}] = helicsMEX(115, varargin{:}); + [varargout{1:nargout}] = helicsMEX(117, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeAsync.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeAsync.m index 2a2051dc11..016c8c73da 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeAsync.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeAsync.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestTimeIterativeAsync(varargin) - [varargout{1:nargout}] = helicsMEX(118, varargin{:}); + [varargout{1:nargout}] = helicsMEX(120, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeComplete.m b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeComplete.m index 08a677ab20..840a8958b1 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeComplete.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRequestTimeIterativeComplete.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRequestTimeIterativeComplete(varargin) - [varargout{1:nargout}] = helicsMEX(119, varargin{:}); + [varargout{1:nargout}] = helicsMEX(121, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateSetFlagOption.m b/interfaces/matlab/interface/+helics/helicsFederateSetFlagOption.m index f98906fa83..7de29754ff 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateSetFlagOption.m +++ b/interfaces/matlab/interface/+helics/helicsFederateSetFlagOption.m @@ -1,3 +1,3 @@ function varargout = helicsFederateSetFlagOption(varargin) - [varargout{1:nargout}] = helicsMEX(122, varargin{:}); + [varargout{1:nargout}] = helicsMEX(124, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateSetGlobal.m b/interfaces/matlab/interface/+helics/helicsFederateSetGlobal.m index 9cc347a6ec..e02f94f6bb 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateSetGlobal.m +++ b/interfaces/matlab/interface/+helics/helicsFederateSetGlobal.m @@ -1,3 +1,3 @@ function varargout = helicsFederateSetGlobal(varargin) - [varargout{1:nargout}] = helicsMEX(129, varargin{:}); + [varargout{1:nargout}] = helicsMEX(131, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateSetIntegerProperty.m b/interfaces/matlab/interface/+helics/helicsFederateSetIntegerProperty.m index dc521050e9..3e01e32346 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateSetIntegerProperty.m +++ b/interfaces/matlab/interface/+helics/helicsFederateSetIntegerProperty.m @@ -1,3 +1,3 @@ function varargout = helicsFederateSetIntegerProperty(varargin) - [varargout{1:nargout}] = helicsMEX(124, varargin{:}); + [varargout{1:nargout}] = helicsMEX(126, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m b/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m index 659d0ca816..e1a41b6376 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m +++ b/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m @@ -1,3 +1,3 @@ function varargout = helicsFederateSetLogFile(varargin) - [varargout{1:nargout}] = helicsMEX(130, varargin{:}); + [varargout{1:nargout}] = helicsMEX(132, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateSetSeparator.m b/interfaces/matlab/interface/+helics/helicsFederateSetSeparator.m index 97852d286f..36b1715dba 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateSetSeparator.m +++ b/interfaces/matlab/interface/+helics/helicsFederateSetSeparator.m @@ -1,3 +1,3 @@ function varargout = helicsFederateSetSeparator(varargin) - [varargout{1:nargout}] = helicsMEX(123, varargin{:}); + [varargout{1:nargout}] = helicsMEX(125, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateSetTimeProperty.m b/interfaces/matlab/interface/+helics/helicsFederateSetTimeProperty.m index 9937c0db64..a66703a0dd 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateSetTimeProperty.m +++ b/interfaces/matlab/interface/+helics/helicsFederateSetTimeProperty.m @@ -1,3 +1,3 @@ function varargout = helicsFederateSetTimeProperty(varargin) - [varargout{1:nargout}] = helicsMEX(121, varargin{:}); + [varargout{1:nargout}] = helicsMEX(123, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m b/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m index f19b238001..3d32b16f50 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFilterAddDeliveryEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(292, varargin{:}); + [varargout{1:nargout}] = helicsMEX(294, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m b/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m index 949fef7500..1fe06a4027 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m +++ b/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m @@ -1,3 +1,3 @@ function varargout = helicsFilterAddDestinationTarget(varargin) - [varargout{1:nargout}] = helicsMEX(290, varargin{:}); + [varargout{1:nargout}] = helicsMEX(292, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m b/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m index 16c6ed2e8d..e8ab866177 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m +++ b/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m @@ -1,3 +1,3 @@ function varargout = helicsFilterAddSourceTarget(varargin) - [varargout{1:nargout}] = helicsMEX(291, varargin{:}); + [varargout{1:nargout}] = helicsMEX(293, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m b/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m index 7d70769554..f3a5dfc73b 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsFilterGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(295, varargin{:}); + [varargout{1:nargout}] = helicsMEX(297, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterGetName.m b/interfaces/matlab/interface/+helics/helicsFilterGetName.m index 4b86e6b983..c4d5890f7f 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterGetName.m +++ b/interfaces/matlab/interface/+helics/helicsFilterGetName.m @@ -1,3 +1,3 @@ function varargout = helicsFilterGetName(varargin) - [varargout{1:nargout}] = helicsMEX(287, varargin{:}); + [varargout{1:nargout}] = helicsMEX(289, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterGetOption.m b/interfaces/matlab/interface/+helics/helicsFilterGetOption.m index ea24a00f8f..e45135985e 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsFilterGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsFilterGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(298, varargin{:}); + [varargout{1:nargout}] = helicsMEX(300, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m b/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m index 9ac9771195..c721eafba0 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFilterRemoveDeliveryEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(294, varargin{:}); + [varargout{1:nargout}] = helicsMEX(296, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m b/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m index b2026e752e..9ddb624afd 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m +++ b/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m @@ -1,3 +1,3 @@ function varargout = helicsFilterRemoveTarget(varargin) - [varargout{1:nargout}] = helicsMEX(293, varargin{:}); + [varargout{1:nargout}] = helicsMEX(295, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSet.m b/interfaces/matlab/interface/+helics/helicsFilterSet.m index d9abccbb1d..23b1cc0e9d 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSet.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSet.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSet(varargin) - [varargout{1:nargout}] = helicsMEX(288, varargin{:}); + [varargout{1:nargout}] = helicsMEX(290, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m b/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m index 9a6032881c..e530df5f14 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(296, varargin{:}); + [varargout{1:nargout}] = helicsMEX(298, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSetOption.m b/interfaces/matlab/interface/+helics/helicsFilterSetOption.m index eb5b7ab0a9..43cf8bd64c 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(297, varargin{:}); + [varargout{1:nargout}] = helicsMEX(299, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSetString.m b/interfaces/matlab/interface/+helics/helicsFilterSetString.m index 4014e3928d..cb257ca61b 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSetString.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSetString.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSetString(varargin) - [varargout{1:nargout}] = helicsMEX(289, varargin{:}); + [varargout{1:nargout}] = helicsMEX(291, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputAddTarget.m b/interfaces/matlab/interface/+helics/helicsInputAddTarget.m index 5c62aba582..1596c16fd5 100644 --- a/interfaces/matlab/interface/+helics/helicsInputAddTarget.m +++ b/interfaces/matlab/interface/+helics/helicsInputAddTarget.m @@ -1,3 +1,3 @@ function varargout = helicsInputAddTarget(varargin) - [varargout{1:nargout}] = helicsMEX(177, varargin{:}); + [varargout{1:nargout}] = helicsMEX(179, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m b/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m index 6edafbc1fa..f67c80b8fc 100644 --- a/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m +++ b/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m @@ -1,3 +1,3 @@ function varargout = helicsInputClearUpdate(varargin) - [varargout{1:nargout}] = helicsMEX(223, varargin{:}); + [varargout{1:nargout}] = helicsMEX(225, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m b/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m index 11b01f848a..adece9569f 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetBoolean(varargin) - [varargout{1:nargout}] = helicsMEX(183, varargin{:}); + [varargout{1:nargout}] = helicsMEX(185, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetChar.m b/interfaces/matlab/interface/+helics/helicsInputGetChar.m index 7753d40563..c36d962ba0 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetChar.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetChar.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetChar(varargin) - [varargout{1:nargout}] = helicsMEX(186, varargin{:}); + [varargout{1:nargout}] = helicsMEX(188, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetComplex.m b/interfaces/matlab/interface/+helics/helicsInputGetComplex.m index 9f7d3f8bde..87ec098836 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetComplex.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetComplex.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetComplex(varargin) - [varargout{1:nargout}] = helicsMEX(187, varargin{:}); + [varargout{1:nargout}] = helicsMEX(189, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetDouble.m b/interfaces/matlab/interface/+helics/helicsInputGetDouble.m index da2eb8b8e5..0c96bf91f2 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetDouble.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetDouble.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetDouble(varargin) - [varargout{1:nargout}] = helicsMEX(184, varargin{:}); + [varargout{1:nargout}] = helicsMEX(186, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m index 9f1d63adf4..f3f9630a75 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetExtractionUnits(varargin) - [varargout{1:nargout}] = helicsMEX(209, varargin{:}); + [varargout{1:nargout}] = helicsMEX(211, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetInfo.m b/interfaces/matlab/interface/+helics/helicsInputGetInfo.m index 0aaa64fe1a..6da40fa45e 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(211, varargin{:}); + [varargout{1:nargout}] = helicsMEX(213, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m index 6acac9ec09..739f260522 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetInjectionUnits(varargin) - [varargout{1:nargout}] = helicsMEX(208, varargin{:}); + [varargout{1:nargout}] = helicsMEX(210, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetInteger.m b/interfaces/matlab/interface/+helics/helicsInputGetInteger.m index cac9161f61..40bc9e9c3d 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetInteger.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetInteger.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetInteger(varargin) - [varargout{1:nargout}] = helicsMEX(182, varargin{:}); + [varargout{1:nargout}] = helicsMEX(184, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetKey.m b/interfaces/matlab/interface/+helics/helicsInputGetKey.m index 87f23ebfd1..67ae02c778 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetKey.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetKey.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetKey(varargin) - [varargout{1:nargout}] = helicsMEX(204, varargin{:}); + [varargout{1:nargout}] = helicsMEX(206, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m b/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m index 2a28f58534..5a4bcdb4b6 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetNamedPoint(varargin) - [varargout{1:nargout}] = helicsMEX(190, varargin{:}); + [varargout{1:nargout}] = helicsMEX(192, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetOption.m b/interfaces/matlab/interface/+helics/helicsInputGetOption.m index 22c7f51179..e2214e22db 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(215, varargin{:}); + [varargout{1:nargout}] = helicsMEX(217, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m b/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m index d64450cc8f..562fd5f750 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetPublicationType(varargin) - [varargout{1:nargout}] = helicsMEX(202, varargin{:}); + [varargout{1:nargout}] = helicsMEX(204, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m b/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m index 3eeeca6bce..7f05f3c5bf 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetRawValue(varargin) - [varargout{1:nargout}] = helicsMEX(179, varargin{:}); + [varargout{1:nargout}] = helicsMEX(181, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m b/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m index 66e76c4c7a..ff421c4d7f 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetRawValueSize(varargin) - [varargout{1:nargout}] = helicsMEX(178, varargin{:}); + [varargout{1:nargout}] = helicsMEX(180, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetString.m b/interfaces/matlab/interface/+helics/helicsInputGetString.m index 7949ae2118..81c70e467e 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetString.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetString.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetString(varargin) - [varargout{1:nargout}] = helicsMEX(181, varargin{:}); + [varargout{1:nargout}] = helicsMEX(183, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m b/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m index 91879c9536..c908bc4e34 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetStringSize(varargin) - [varargout{1:nargout}] = helicsMEX(180, varargin{:}); + [varargout{1:nargout}] = helicsMEX(182, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetTime.m b/interfaces/matlab/interface/+helics/helicsInputGetTime.m index 7f9a9093b4..3c2ef6ff7c 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetTime.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetTime.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetTime(varargin) - [varargout{1:nargout}] = helicsMEX(185, varargin{:}); + [varargout{1:nargout}] = helicsMEX(187, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetType.m b/interfaces/matlab/interface/+helics/helicsInputGetType.m index 170e7104dc..6ffc152b07 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetType.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetType.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetType(varargin) - [varargout{1:nargout}] = helicsMEX(201, varargin{:}); + [varargout{1:nargout}] = helicsMEX(203, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetUnits.m index 6adc59cf1a..5b1efb4d31 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetUnits.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetUnits.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetUnits(varargin) - [varargout{1:nargout}] = helicsMEX(207, varargin{:}); + [varargout{1:nargout}] = helicsMEX(209, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetVector.m b/interfaces/matlab/interface/+helics/helicsInputGetVector.m index f77b5b79c8..452bd863de 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetVector.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetVector.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetVector(varargin) - [varargout{1:nargout}] = helicsMEX(189, varargin{:}); + [varargout{1:nargout}] = helicsMEX(191, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m b/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m index 8f74b7535d..a474d4bd0b 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetVectorSize(varargin) - [varargout{1:nargout}] = helicsMEX(188, varargin{:}); + [varargout{1:nargout}] = helicsMEX(190, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m b/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m index 464417227f..df34cfd325 100644 --- a/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m +++ b/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m @@ -1,3 +1,3 @@ function varargout = helicsInputIsUpdated(varargin) - [varargout{1:nargout}] = helicsMEX(221, varargin{:}); + [varargout{1:nargout}] = helicsMEX(223, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m b/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m index 11da06e876..efce08ed3d 100644 --- a/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m +++ b/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m @@ -1,3 +1,3 @@ function varargout = helicsInputLastUpdateTime(varargin) - [varargout{1:nargout}] = helicsMEX(222, varargin{:}); + [varargout{1:nargout}] = helicsMEX(224, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m index dc880516da..1999a3f4ec 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultBoolean(varargin) - [varargout{1:nargout}] = helicsMEX(194, varargin{:}); + [varargout{1:nargout}] = helicsMEX(196, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m index c7d501e0df..5c832ecc87 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultChar(varargin) - [varargout{1:nargout}] = helicsMEX(196, varargin{:}); + [varargout{1:nargout}] = helicsMEX(198, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m index 1670c30b61..ffc2730a21 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultComplex(varargin) - [varargout{1:nargout}] = helicsMEX(198, varargin{:}); + [varargout{1:nargout}] = helicsMEX(200, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m index 932ec4ba51..0da2c7f629 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultDouble(varargin) - [varargout{1:nargout}] = helicsMEX(197, varargin{:}); + [varargout{1:nargout}] = helicsMEX(199, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m index f3c2da8065..f05950cfef 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultInteger(varargin) - [varargout{1:nargout}] = helicsMEX(193, varargin{:}); + [varargout{1:nargout}] = helicsMEX(195, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m index 153fe6a70e..ffafcb5392 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultNamedPoint(varargin) - [varargout{1:nargout}] = helicsMEX(200, varargin{:}); + [varargout{1:nargout}] = helicsMEX(202, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m index bd9360f8a3..cc49a9367d 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultRaw(varargin) - [varargout{1:nargout}] = helicsMEX(191, varargin{:}); + [varargout{1:nargout}] = helicsMEX(193, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m index 702440cc2b..0cd1edb75d 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultString(varargin) - [varargout{1:nargout}] = helicsMEX(192, varargin{:}); + [varargout{1:nargout}] = helicsMEX(194, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m index 78cac204f2..55ca277c44 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultTime(varargin) - [varargout{1:nargout}] = helicsMEX(195, varargin{:}); + [varargout{1:nargout}] = helicsMEX(197, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m index 565044d343..9542a5ed39 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultVector(varargin) - [varargout{1:nargout}] = helicsMEX(199, varargin{:}); + [varargout{1:nargout}] = helicsMEX(201, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetInfo.m b/interfaces/matlab/interface/+helics/helicsInputSetInfo.m index 3cbe1b756b..fa69eeab11 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(212, varargin{:}); + [varargout{1:nargout}] = helicsMEX(214, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m b/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m index e3f1bd66de..d5f148ce1f 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetMinimumChange(varargin) - [varargout{1:nargout}] = helicsMEX(220, varargin{:}); + [varargout{1:nargout}] = helicsMEX(222, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetOption.m b/interfaces/matlab/interface/+helics/helicsInputSetOption.m index 498d1969cc..0a4860ada6 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(216, varargin{:}); + [varargout{1:nargout}] = helicsMEX(218, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageAppendData.m b/interfaces/matlab/interface/+helics/helicsMessageAppendData.m index b340a9a9ea..470e0342f1 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageAppendData.m +++ b/interfaces/matlab/interface/+helics/helicsMessageAppendData.m @@ -1,3 +1,3 @@ function varargout = helicsMessageAppendData(varargin) - [varargout{1:nargout}] = helicsMEX(277, varargin{:}); + [varargout{1:nargout}] = helicsMEX(279, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m b/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m index efbe7b9325..de47268bda 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m +++ b/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m @@ -1,3 +1,3 @@ function varargout = helicsMessageCheckFlag(varargin) - [varargout{1:nargout}] = helicsMEX(262, varargin{:}); + [varargout{1:nargout}] = helicsMEX(264, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m b/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m index 65de332de0..5ce71840d2 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m +++ b/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m @@ -1,3 +1,3 @@ function varargout = helicsMessageClearFlags(varargin) - [varargout{1:nargout}] = helicsMEX(273, varargin{:}); + [varargout{1:nargout}] = helicsMEX(275, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m b/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m index 02c4e2e4ac..b4854c834f 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetDestination(varargin) - [varargout{1:nargout}] = helicsMEX(256, varargin{:}); + [varargout{1:nargout}] = helicsMEX(258, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m b/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m index 768fc472b9..1d664ca6ed 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetMessageID(varargin) - [varargout{1:nargout}] = helicsMEX(261, varargin{:}); + [varargout{1:nargout}] = helicsMEX(263, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m index 065243782f..94c98b4527 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetOriginalDestination(varargin) - [varargout{1:nargout}] = helicsMEX(258, varargin{:}); + [varargout{1:nargout}] = helicsMEX(260, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m index 38d94f3618..5cd6bc9275 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetOriginalSource(varargin) - [varargout{1:nargout}] = helicsMEX(257, varargin{:}); + [varargout{1:nargout}] = helicsMEX(259, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m b/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m index e611245cc9..0522720c90 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetRawData(varargin) - [varargout{1:nargout}] = helicsMEX(264, varargin{:}); + [varargout{1:nargout}] = helicsMEX(266, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m b/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m index 40d6b2c53f..d048a9fee3 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetRawDataSize(varargin) - [varargout{1:nargout}] = helicsMEX(263, varargin{:}); + [varargout{1:nargout}] = helicsMEX(265, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetSource.m b/interfaces/matlab/interface/+helics/helicsMessageGetSource.m index 2f240e7fa2..d319b0ffdc 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetSource(varargin) - [varargout{1:nargout}] = helicsMEX(255, varargin{:}); + [varargout{1:nargout}] = helicsMEX(257, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetString.m b/interfaces/matlab/interface/+helics/helicsMessageGetString.m index 2e7e3eec96..eff9a50b45 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetString.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetString.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetString(varargin) - [varargout{1:nargout}] = helicsMEX(260, varargin{:}); + [varargout{1:nargout}] = helicsMEX(262, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetTime.m b/interfaces/matlab/interface/+helics/helicsMessageGetTime.m index fa7bcd23c7..b428ebafad 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetTime.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetTime.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetTime(varargin) - [varargout{1:nargout}] = helicsMEX(259, varargin{:}); + [varargout{1:nargout}] = helicsMEX(261, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageIsValid.m b/interfaces/matlab/interface/+helics/helicsMessageIsValid.m index ab02f5bbe0..7ccd0fed8d 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageIsValid.m +++ b/interfaces/matlab/interface/+helics/helicsMessageIsValid.m @@ -1,3 +1,3 @@ function varargout = helicsMessageIsValid(varargin) - [varargout{1:nargout}] = helicsMEX(265, varargin{:}); + [varargout{1:nargout}] = helicsMEX(267, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageReserve.m b/interfaces/matlab/interface/+helics/helicsMessageReserve.m index 678611a2d5..528bbcd8fe 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageReserve.m +++ b/interfaces/matlab/interface/+helics/helicsMessageReserve.m @@ -1,3 +1,3 @@ function varargout = helicsMessageReserve(varargin) - [varargout{1:nargout}] = helicsMEX(271, varargin{:}); + [varargout{1:nargout}] = helicsMEX(273, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetData.m b/interfaces/matlab/interface/+helics/helicsMessageSetData.m index b34f15b797..b2e16bc865 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetData.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetData.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetData(varargin) - [varargout{1:nargout}] = helicsMEX(276, varargin{:}); + [varargout{1:nargout}] = helicsMEX(278, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m b/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m index 071a28b787..3b78090770 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetDestination(varargin) - [varargout{1:nargout}] = helicsMEX(267, varargin{:}); + [varargout{1:nargout}] = helicsMEX(269, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m b/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m index 55632a1216..2d4b54deaa 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetFlagOption(varargin) - [varargout{1:nargout}] = helicsMEX(274, varargin{:}); + [varargout{1:nargout}] = helicsMEX(276, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m b/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m index 7a225f11ca..aae4462e3c 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetMessageID(varargin) - [varargout{1:nargout}] = helicsMEX(272, varargin{:}); + [varargout{1:nargout}] = helicsMEX(274, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m index 9adce670af..727fb3e89f 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetOriginalDestination(varargin) - [varargout{1:nargout}] = helicsMEX(269, varargin{:}); + [varargout{1:nargout}] = helicsMEX(271, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m index 0ddc081eec..af2687822d 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetOriginalSource(varargin) - [varargout{1:nargout}] = helicsMEX(268, varargin{:}); + [varargout{1:nargout}] = helicsMEX(270, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetSource.m b/interfaces/matlab/interface/+helics/helicsMessageSetSource.m index b8d7df490b..0ea0de03ee 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetSource(varargin) - [varargout{1:nargout}] = helicsMEX(266, varargin{:}); + [varargout{1:nargout}] = helicsMEX(268, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetString.m b/interfaces/matlab/interface/+helics/helicsMessageSetString.m index 079cd4e502..ca2d18722d 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetString.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetString.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetString(varargin) - [varargout{1:nargout}] = helicsMEX(275, varargin{:}); + [varargout{1:nargout}] = helicsMEX(277, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetTime.m b/interfaces/matlab/interface/+helics/helicsMessageSetTime.m index 79c9261ea6..a1c8bcf037 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetTime.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetTime.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetTime(varargin) - [varargout{1:nargout}] = helicsMEX(270, varargin{:}); + [varargout{1:nargout}] = helicsMEX(272, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m b/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m index 7cb66c7cf9..bf99a26c09 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationAddTarget(varargin) - [varargout{1:nargout}] = helicsMEX(176, varargin{:}); + [varargout{1:nargout}] = helicsMEX(178, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m b/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m index 78cb275652..61041adbde 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(213, varargin{:}); + [varargout{1:nargout}] = helicsMEX(215, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m b/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m index 9a62ee4cd6..5647a4918d 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetKey(varargin) - [varargout{1:nargout}] = helicsMEX(206, varargin{:}); + [varargout{1:nargout}] = helicsMEX(208, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m b/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m index f94c1f8709..e5ea391f76 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(217, varargin{:}); + [varargout{1:nargout}] = helicsMEX(219, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetType.m b/interfaces/matlab/interface/+helics/helicsPublicationGetType.m index 58756f526f..d9894296bc 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetType.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetType.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetType(varargin) - [varargout{1:nargout}] = helicsMEX(203, varargin{:}); + [varargout{1:nargout}] = helicsMEX(205, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m b/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m index 688b77a6c8..230a204331 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetUnits(varargin) - [varargout{1:nargout}] = helicsMEX(210, varargin{:}); + [varargout{1:nargout}] = helicsMEX(212, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m index 847368d611..8e2095f31c 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishBoolean(varargin) - [varargout{1:nargout}] = helicsMEX(169, varargin{:}); + [varargout{1:nargout}] = helicsMEX(171, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m index 5cdbdae5a2..7d79da30d0 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishChar(varargin) - [varargout{1:nargout}] = helicsMEX(172, varargin{:}); + [varargout{1:nargout}] = helicsMEX(174, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m index 649e1f5ed4..06addfdcc0 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishComplex(varargin) - [varargout{1:nargout}] = helicsMEX(173, varargin{:}); + [varargout{1:nargout}] = helicsMEX(175, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m index f91f6db0c5..759f564260 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishDouble(varargin) - [varargout{1:nargout}] = helicsMEX(170, varargin{:}); + [varargout{1:nargout}] = helicsMEX(172, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m index 12491991bc..681a1a4158 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishInteger(varargin) - [varargout{1:nargout}] = helicsMEX(168, varargin{:}); + [varargout{1:nargout}] = helicsMEX(170, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m index 6e6e435060..95f0e993e5 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishNamedPoint(varargin) - [varargout{1:nargout}] = helicsMEX(175, varargin{:}); + [varargout{1:nargout}] = helicsMEX(177, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m index 62d4695327..467d032839 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishRaw(varargin) - [varargout{1:nargout}] = helicsMEX(166, varargin{:}); + [varargout{1:nargout}] = helicsMEX(168, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m index cf0432b4a1..623431826b 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishString(varargin) - [varargout{1:nargout}] = helicsMEX(167, varargin{:}); + [varargout{1:nargout}] = helicsMEX(169, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m index 3930e74b9f..313459f901 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishTime(varargin) - [varargout{1:nargout}] = helicsMEX(171, varargin{:}); + [varargout{1:nargout}] = helicsMEX(173, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m index c4cba0564d..a41e036e36 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishVector(varargin) - [varargout{1:nargout}] = helicsMEX(174, varargin{:}); + [varargout{1:nargout}] = helicsMEX(176, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m b/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m index e540754f27..13c0df6b97 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(214, varargin{:}); + [varargout{1:nargout}] = helicsMEX(216, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m b/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m index fa668da836..660367bc59 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationSetMinimumChange(varargin) - [varargout{1:nargout}] = helicsMEX(219, varargin{:}); + [varargout{1:nargout}] = helicsMEX(221, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m b/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m index 9417344fa8..2d7d0d380a 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(218, varargin{:}); + [varargout{1:nargout}] = helicsMEX(220, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m b/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m index 2d8413a90f..a4db18d4d6 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m +++ b/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m @@ -1,3 +1,3 @@ function varargout = helicsQueryBrokerExecute(varargin) - [varargout{1:nargout}] = helicsMEX(143, varargin{:}); + [varargout{1:nargout}] = helicsMEX(145, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m b/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m index 6e1a69e9ad..4e3b2ba409 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m +++ b/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m @@ -1,3 +1,3 @@ function varargout = helicsQueryCoreExecute(varargin) - [varargout{1:nargout}] = helicsMEX(142, varargin{:}); + [varargout{1:nargout}] = helicsMEX(144, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryExecute.m b/interfaces/matlab/interface/+helics/helicsQueryExecute.m index bdc5be2b21..ef86a162a5 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryExecute.m +++ b/interfaces/matlab/interface/+helics/helicsQueryExecute.m @@ -1,3 +1,3 @@ function varargout = helicsQueryExecute(varargin) - [varargout{1:nargout}] = helicsMEX(141, varargin{:}); + [varargout{1:nargout}] = helicsMEX(143, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m b/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m index 28a522f963..a795bfc506 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m +++ b/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m @@ -1,3 +1,3 @@ function varargout = helicsQueryExecuteAsync(varargin) - [varargout{1:nargout}] = helicsMEX(144, varargin{:}); + [varargout{1:nargout}] = helicsMEX(146, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m b/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m index 98d65eb16e..29e1587533 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m +++ b/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m @@ -1,3 +1,3 @@ function varargout = helicsQueryExecuteComplete(varargin) - [varargout{1:nargout}] = helicsMEX(145, varargin{:}); + [varargout{1:nargout}] = helicsMEX(147, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryFree.m b/interfaces/matlab/interface/+helics/helicsQueryFree.m index eb8b40ba22..6ec4b93855 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryFree.m +++ b/interfaces/matlab/interface/+helics/helicsQueryFree.m @@ -1,3 +1,3 @@ function varargout = helicsQueryFree(varargin) - [varargout{1:nargout}] = helicsMEX(147, varargin{:}); + [varargout{1:nargout}] = helicsMEX(149, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m b/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m index 683cad0917..6fea8236da 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m +++ b/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m @@ -1,3 +1,3 @@ function varargout = helicsQueryIsCompleted(varargin) - [varargout{1:nargout}] = helicsMEX(146, varargin{:}); + [varargout{1:nargout}] = helicsMEX(148, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m b/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m index e27a5231fb..34dabdabb4 100644 --- a/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m +++ b/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m @@ -1,3 +1,3 @@ function varargout = helicsSubscriptionGetKey(varargin) - [varargout{1:nargout}] = helicsMEX(205, varargin{:}); + [varargout{1:nargout}] = helicsMEX(207, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helics_error_connection_failure.m b/interfaces/matlab/interface/+helics/helics_error_connection_failure.m index 7f0b0fa21e..4a2c9188c0 100644 --- a/interfaces/matlab/interface/+helics/helics_error_connection_failure.m +++ b/interfaces/matlab/interface/+helics/helics_error_connection_failure.m @@ -1,7 +1,7 @@ function v = helics_error_connection_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 53); + vInitialized = helicsMEX(0, 54); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_discard.m b/interfaces/matlab/interface/+helics/helics_error_discard.m index 6d80228b6f..92c506edfa 100644 --- a/interfaces/matlab/interface/+helics/helics_error_discard.m +++ b/interfaces/matlab/interface/+helics/helics_error_discard.m @@ -1,7 +1,7 @@ function v = helics_error_discard() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 56); + vInitialized = helicsMEX(0, 57); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_execution_failure.m b/interfaces/matlab/interface/+helics/helics_error_execution_failure.m index d28ac01482..e3f994413f 100644 --- a/interfaces/matlab/interface/+helics/helics_error_execution_failure.m +++ b/interfaces/matlab/interface/+helics/helics_error_execution_failure.m @@ -1,7 +1,7 @@ function v = helics_error_execution_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 61); + vInitialized = helicsMEX(0, 62); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_external_type.m b/interfaces/matlab/interface/+helics/helics_error_external_type.m index 668adf47b3..f84e44cbb6 100644 --- a/interfaces/matlab/interface/+helics/helics_error_external_type.m +++ b/interfaces/matlab/interface/+helics/helics_error_external_type.m @@ -1,7 +1,7 @@ function v = helics_error_external_type() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 64); + vInitialized = helicsMEX(0, 66); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_fatal.m b/interfaces/matlab/interface/+helics/helics_error_fatal.m new file mode 100644 index 0000000000..ffb4ea1fd4 --- /dev/null +++ b/interfaces/matlab/interface/+helics/helics_error_fatal.m @@ -0,0 +1,7 @@ +function v = helics_error_fatal() + persistent vInitialized; + if isempty(vInitialized) + vInitialized = helicsMEX(0, 65); + end + v = vInitialized; +end diff --git a/interfaces/matlab/interface/+helics/helics_error_insufficient_space.m b/interfaces/matlab/interface/+helics/helics_error_insufficient_space.m index 7503c0b3f7..e8d7ec66e9 100644 --- a/interfaces/matlab/interface/+helics/helics_error_insufficient_space.m +++ b/interfaces/matlab/interface/+helics/helics_error_insufficient_space.m @@ -1,7 +1,7 @@ function v = helics_error_insufficient_space() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 62); + vInitialized = helicsMEX(0, 63); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_invalid_argument.m b/interfaces/matlab/interface/+helics/helics_error_invalid_argument.m index fbb67b6a52..ff2b1f0a4d 100644 --- a/interfaces/matlab/interface/+helics/helics_error_invalid_argument.m +++ b/interfaces/matlab/interface/+helics/helics_error_invalid_argument.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_argument() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 55); + vInitialized = helicsMEX(0, 56); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_invalid_function_call.m b/interfaces/matlab/interface/+helics/helics_error_invalid_function_call.m index 785d29e2bc..b70d0def4d 100644 --- a/interfaces/matlab/interface/+helics/helics_error_invalid_function_call.m +++ b/interfaces/matlab/interface/+helics/helics_error_invalid_function_call.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_function_call() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 60); + vInitialized = helicsMEX(0, 61); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_invalid_object.m b/interfaces/matlab/interface/+helics/helics_error_invalid_object.m index 23e3dc8a0e..1c98e815a7 100644 --- a/interfaces/matlab/interface/+helics/helics_error_invalid_object.m +++ b/interfaces/matlab/interface/+helics/helics_error_invalid_object.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_object() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 54); + vInitialized = helicsMEX(0, 55); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_invalid_state_transition.m b/interfaces/matlab/interface/+helics/helics_error_invalid_state_transition.m index bbd5b01f78..b8653de10a 100644 --- a/interfaces/matlab/interface/+helics/helics_error_invalid_state_transition.m +++ b/interfaces/matlab/interface/+helics/helics_error_invalid_state_transition.m @@ -1,7 +1,7 @@ function v = helics_error_invalid_state_transition() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 59); + vInitialized = helicsMEX(0, 60); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_other.m b/interfaces/matlab/interface/+helics/helics_error_other.m index 9652d5e979..5eee4cae26 100644 --- a/interfaces/matlab/interface/+helics/helics_error_other.m +++ b/interfaces/matlab/interface/+helics/helics_error_other.m @@ -1,7 +1,7 @@ function v = helics_error_other() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 63); + vInitialized = helicsMEX(0, 64); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_registration_failure.m b/interfaces/matlab/interface/+helics/helics_error_registration_failure.m index d1a7e023c6..06a6e27ef1 100644 --- a/interfaces/matlab/interface/+helics/helics_error_registration_failure.m +++ b/interfaces/matlab/interface/+helics/helics_error_registration_failure.m @@ -1,7 +1,7 @@ function v = helics_error_registration_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 52); + vInitialized = helicsMEX(0, 53); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_error_system_failure.m b/interfaces/matlab/interface/+helics/helics_error_system_failure.m index 1bfd71ff1f..78237fef24 100644 --- a/interfaces/matlab/interface/+helics/helics_error_system_failure.m +++ b/interfaces/matlab/interface/+helics/helics_error_system_failure.m @@ -1,7 +1,7 @@ function v = helics_error_system_failure() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 57); + vInitialized = helicsMEX(0, 58); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_filter_type_clone.m b/interfaces/matlab/interface/+helics/helics_filter_type_clone.m index 28d542ad89..16d48bfdae 100644 --- a/interfaces/matlab/interface/+helics/helics_filter_type_clone.m +++ b/interfaces/matlab/interface/+helics/helics_filter_type_clone.m @@ -1,7 +1,7 @@ function v = helics_filter_type_clone() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 92); + vInitialized = helicsMEX(0, 94); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_filter_type_custom.m b/interfaces/matlab/interface/+helics/helics_filter_type_custom.m index f10e0ddf86..6c0928da05 100644 --- a/interfaces/matlab/interface/+helics/helics_filter_type_custom.m +++ b/interfaces/matlab/interface/+helics/helics_filter_type_custom.m @@ -1,7 +1,7 @@ function v = helics_filter_type_custom() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 87); + vInitialized = helicsMEX(0, 89); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_filter_type_delay.m b/interfaces/matlab/interface/+helics/helics_filter_type_delay.m index 0b62b80651..eb97b698e4 100644 --- a/interfaces/matlab/interface/+helics/helics_filter_type_delay.m +++ b/interfaces/matlab/interface/+helics/helics_filter_type_delay.m @@ -1,7 +1,7 @@ function v = helics_filter_type_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 88); + vInitialized = helicsMEX(0, 90); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_filter_type_firewall.m b/interfaces/matlab/interface/+helics/helics_filter_type_firewall.m index 6754524c2f..d635cc3225 100644 --- a/interfaces/matlab/interface/+helics/helics_filter_type_firewall.m +++ b/interfaces/matlab/interface/+helics/helics_filter_type_firewall.m @@ -1,7 +1,7 @@ function v = helics_filter_type_firewall() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 93); + vInitialized = helicsMEX(0, 95); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_filter_type_random_delay.m b/interfaces/matlab/interface/+helics/helics_filter_type_random_delay.m index d46c33e44b..9ba05bf888 100644 --- a/interfaces/matlab/interface/+helics/helics_filter_type_random_delay.m +++ b/interfaces/matlab/interface/+helics/helics_filter_type_random_delay.m @@ -1,7 +1,7 @@ function v = helics_filter_type_random_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 89); + vInitialized = helicsMEX(0, 91); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_filter_type_random_drop.m b/interfaces/matlab/interface/+helics/helics_filter_type_random_drop.m index c5737fb129..11a3a86fa1 100644 --- a/interfaces/matlab/interface/+helics/helics_filter_type_random_drop.m +++ b/interfaces/matlab/interface/+helics/helics_filter_type_random_drop.m @@ -1,7 +1,7 @@ function v = helics_filter_type_random_drop() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 90); + vInitialized = helicsMEX(0, 92); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_filter_type_reroute.m b/interfaces/matlab/interface/+helics/helics_filter_type_reroute.m index ec414678a5..45e510afe2 100644 --- a/interfaces/matlab/interface/+helics/helics_filter_type_reroute.m +++ b/interfaces/matlab/interface/+helics/helics_filter_type_reroute.m @@ -1,7 +1,7 @@ function v = helics_filter_type_reroute() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 91); + vInitialized = helicsMEX(0, 93); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_flag_terminate_on_error.m b/interfaces/matlab/interface/+helics/helics_flag_terminate_on_error.m new file mode 100644 index 0000000000..3665eb9f6b --- /dev/null +++ b/interfaces/matlab/interface/+helics/helics_flag_terminate_on_error.m @@ -0,0 +1,7 @@ +function v = helics_flag_terminate_on_error() + persistent vInitialized; + if isempty(vInitialized) + vInitialized = helicsMEX(0, 42); + end + v = vInitialized; +end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_buffer_data.m b/interfaces/matlab/interface/+helics/helics_handle_option_buffer_data.m index 7e0fbb1dc0..dcaaedfc08 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_buffer_data.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_buffer_data.m @@ -1,7 +1,7 @@ function v = helics_handle_option_buffer_data() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 81); + vInitialized = helicsMEX(0, 83); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_connection_optional.m b/interfaces/matlab/interface/+helics/helics_handle_option_connection_optional.m index 134eb6040c..edee694db2 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_connection_optional.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_connection_optional.m @@ -1,7 +1,7 @@ function v = helics_handle_option_connection_optional() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 78); + vInitialized = helicsMEX(0, 80); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_connection_required.m b/interfaces/matlab/interface/+helics/helics_handle_option_connection_required.m index 2540742e34..ea796b2574 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_connection_required.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_connection_required.m @@ -1,7 +1,7 @@ function v = helics_handle_option_connection_required() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 77); + vInitialized = helicsMEX(0, 79); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_ignore_interrupts.m b/interfaces/matlab/interface/+helics/helics_handle_option_ignore_interrupts.m index 47c385ae39..a0676026e7 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_ignore_interrupts.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_ignore_interrupts.m @@ -1,7 +1,7 @@ function v = helics_handle_option_ignore_interrupts() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 86); + vInitialized = helicsMEX(0, 88); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_ignore_unit_mismatch.m b/interfaces/matlab/interface/+helics/helics_handle_option_ignore_unit_mismatch.m index 3a57149ce5..4089b09898 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_ignore_unit_mismatch.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_ignore_unit_mismatch.m @@ -1,7 +1,7 @@ function v = helics_handle_option_ignore_unit_mismatch() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 83); + vInitialized = helicsMEX(0, 85); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_multiple_connections_allowed.m b/interfaces/matlab/interface/+helics/helics_handle_option_multiple_connections_allowed.m index ebf4a0e76e..6ba49ae3f6 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_multiple_connections_allowed.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_multiple_connections_allowed.m @@ -1,7 +1,7 @@ function v = helics_handle_option_multiple_connections_allowed() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 80); + vInitialized = helicsMEX(0, 82); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_only_transmit_on_change.m b/interfaces/matlab/interface/+helics/helics_handle_option_only_transmit_on_change.m index 1b79d7095c..9aed3b12c1 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_only_transmit_on_change.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_only_transmit_on_change.m @@ -1,7 +1,7 @@ function v = helics_handle_option_only_transmit_on_change() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 84); + vInitialized = helicsMEX(0, 86); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_only_update_on_change.m b/interfaces/matlab/interface/+helics/helics_handle_option_only_update_on_change.m index d4ef8f190a..2bd107337d 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_only_update_on_change.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_only_update_on_change.m @@ -1,7 +1,7 @@ function v = helics_handle_option_only_update_on_change() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 85); + vInitialized = helicsMEX(0, 87); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_single_connection_only.m b/interfaces/matlab/interface/+helics/helics_handle_option_single_connection_only.m index be6ae1ca5a..e7ede88f1b 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_single_connection_only.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_single_connection_only.m @@ -1,7 +1,7 @@ function v = helics_handle_option_single_connection_only() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 79); + vInitialized = helicsMEX(0, 81); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_handle_option_strict_type_checking.m b/interfaces/matlab/interface/+helics/helics_handle_option_strict_type_checking.m index 6cf6ec761e..f0d02a7ecb 100644 --- a/interfaces/matlab/interface/+helics/helics_handle_option_strict_type_checking.m +++ b/interfaces/matlab/interface/+helics/helics_handle_option_strict_type_checking.m @@ -1,7 +1,7 @@ function v = helics_handle_option_strict_type_checking() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 82); + vInitialized = helicsMEX(0, 84); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_iteration_request_force_iteration.m b/interfaces/matlab/interface/+helics/helics_iteration_request_force_iteration.m index 7f851be9ba..cc071fe040 100644 --- a/interfaces/matlab/interface/+helics/helics_iteration_request_force_iteration.m +++ b/interfaces/matlab/interface/+helics/helics_iteration_request_force_iteration.m @@ -1,7 +1,7 @@ function v = helics_iteration_request_force_iteration() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 95); + vInitialized = helicsMEX(0, 97); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_iteration_request_iterate_if_needed.m b/interfaces/matlab/interface/+helics/helics_iteration_request_iterate_if_needed.m index f9f20ab005..07db76e992 100644 --- a/interfaces/matlab/interface/+helics/helics_iteration_request_iterate_if_needed.m +++ b/interfaces/matlab/interface/+helics/helics_iteration_request_iterate_if_needed.m @@ -1,7 +1,7 @@ function v = helics_iteration_request_iterate_if_needed() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 96); + vInitialized = helicsMEX(0, 98); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_iteration_request_no_iteration.m b/interfaces/matlab/interface/+helics/helics_iteration_request_no_iteration.m index 0f8b5f377b..6b56afc40a 100644 --- a/interfaces/matlab/interface/+helics/helics_iteration_request_no_iteration.m +++ b/interfaces/matlab/interface/+helics/helics_iteration_request_no_iteration.m @@ -1,7 +1,7 @@ function v = helics_iteration_request_no_iteration() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 94); + vInitialized = helicsMEX(0, 96); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_iteration_result_error.m b/interfaces/matlab/interface/+helics/helics_iteration_result_error.m index 3d1b0c5fce..2f65eaa590 100644 --- a/interfaces/matlab/interface/+helics/helics_iteration_result_error.m +++ b/interfaces/matlab/interface/+helics/helics_iteration_result_error.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_error() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 98); + vInitialized = helicsMEX(0, 100); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_iteration_result_halted.m b/interfaces/matlab/interface/+helics/helics_iteration_result_halted.m index ed3b6e8a4c..48fa65f770 100644 --- a/interfaces/matlab/interface/+helics/helics_iteration_result_halted.m +++ b/interfaces/matlab/interface/+helics/helics_iteration_result_halted.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_halted() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 99); + vInitialized = helicsMEX(0, 101); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_iteration_result_iterating.m b/interfaces/matlab/interface/+helics/helics_iteration_result_iterating.m index 07c96a7361..d33bf1f507 100644 --- a/interfaces/matlab/interface/+helics/helics_iteration_result_iterating.m +++ b/interfaces/matlab/interface/+helics/helics_iteration_result_iterating.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_iterating() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 100); + vInitialized = helicsMEX(0, 102); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_iteration_result_next_step.m b/interfaces/matlab/interface/+helics/helics_iteration_result_next_step.m index 12480798fe..27060f9c79 100644 --- a/interfaces/matlab/interface/+helics/helics_iteration_result_next_step.m +++ b/interfaces/matlab/interface/+helics/helics_iteration_result_next_step.m @@ -1,7 +1,7 @@ function v = helics_iteration_result_next_step() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 97); + vInitialized = helicsMEX(0, 99); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_connections.m b/interfaces/matlab/interface/+helics/helics_log_level_connections.m index ffd5d7b4d4..bde6e92da4 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_connections.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_connections.m @@ -1,7 +1,7 @@ function v = helics_log_level_connections() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 46); + vInitialized = helicsMEX(0, 47); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_data.m b/interfaces/matlab/interface/+helics/helics_log_level_data.m index 49ce05a3d8..317c9e7f30 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_data.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_data.m @@ -1,7 +1,7 @@ function v = helics_log_level_data() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 49); + vInitialized = helicsMEX(0, 50); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_error.m b/interfaces/matlab/interface/+helics/helics_log_level_error.m index d64cb040c5..9e36f20d95 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_error.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_error.m @@ -1,7 +1,7 @@ function v = helics_log_level_error() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 43); + vInitialized = helicsMEX(0, 44); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_interfaces.m b/interfaces/matlab/interface/+helics/helics_log_level_interfaces.m index 10f6f6ebd0..f150e7d71d 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_interfaces.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_interfaces.m @@ -1,7 +1,7 @@ function v = helics_log_level_interfaces() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 47); + vInitialized = helicsMEX(0, 48); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_no_print.m b/interfaces/matlab/interface/+helics/helics_log_level_no_print.m index fe6ff53b31..ceebb5a664 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_no_print.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_no_print.m @@ -1,7 +1,7 @@ function v = helics_log_level_no_print() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 42); + vInitialized = helicsMEX(0, 43); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_summary.m b/interfaces/matlab/interface/+helics/helics_log_level_summary.m index c9905e7d6b..761c52ead7 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_summary.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_summary.m @@ -1,7 +1,7 @@ function v = helics_log_level_summary() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 45); + vInitialized = helicsMEX(0, 46); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_timing.m b/interfaces/matlab/interface/+helics/helics_log_level_timing.m index d5be9aaa16..c0a358e591 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_timing.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_timing.m @@ -1,7 +1,7 @@ function v = helics_log_level_timing() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 48); + vInitialized = helicsMEX(0, 49); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_trace.m b/interfaces/matlab/interface/+helics/helics_log_level_trace.m index 693c378188..40a354afe0 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_trace.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_trace.m @@ -1,7 +1,7 @@ function v = helics_log_level_trace() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 50); + vInitialized = helicsMEX(0, 51); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_log_level_warning.m b/interfaces/matlab/interface/+helics/helics_log_level_warning.m index e8db34eabb..48c9c1d855 100644 --- a/interfaces/matlab/interface/+helics/helics_log_level_warning.m +++ b/interfaces/matlab/interface/+helics/helics_log_level_warning.m @@ -1,7 +1,7 @@ function v = helics_log_level_warning() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 44); + vInitialized = helicsMEX(0, 45); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_ok.m b/interfaces/matlab/interface/+helics/helics_ok.m index 842608f015..22f9bbb9de 100644 --- a/interfaces/matlab/interface/+helics/helics_ok.m +++ b/interfaces/matlab/interface/+helics/helics_ok.m @@ -1,7 +1,7 @@ function v = helics_ok() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 51); + vInitialized = helicsMEX(0, 52); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_int_console_log_level.m b/interfaces/matlab/interface/+helics/helics_property_int_console_log_level.m index 0bf6e5ba4c..7c7f219968 100644 --- a/interfaces/matlab/interface/+helics/helics_property_int_console_log_level.m +++ b/interfaces/matlab/interface/+helics/helics_property_int_console_log_level.m @@ -1,7 +1,7 @@ function v = helics_property_int_console_log_level() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 76); + vInitialized = helicsMEX(0, 78); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_int_file_log_level.m b/interfaces/matlab/interface/+helics/helics_property_int_file_log_level.m index c60af73008..8e64c59668 100644 --- a/interfaces/matlab/interface/+helics/helics_property_int_file_log_level.m +++ b/interfaces/matlab/interface/+helics/helics_property_int_file_log_level.m @@ -1,7 +1,7 @@ function v = helics_property_int_file_log_level() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 75); + vInitialized = helicsMEX(0, 77); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_int_log_level.m b/interfaces/matlab/interface/+helics/helics_property_int_log_level.m index 9af85fcea0..4a432811f6 100644 --- a/interfaces/matlab/interface/+helics/helics_property_int_log_level.m +++ b/interfaces/matlab/interface/+helics/helics_property_int_log_level.m @@ -1,7 +1,7 @@ function v = helics_property_int_log_level() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 74); + vInitialized = helicsMEX(0, 76); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_int_max_iterations.m b/interfaces/matlab/interface/+helics/helics_property_int_max_iterations.m index 9738f70fe0..5529fa1c52 100644 --- a/interfaces/matlab/interface/+helics/helics_property_int_max_iterations.m +++ b/interfaces/matlab/interface/+helics/helics_property_int_max_iterations.m @@ -1,7 +1,7 @@ function v = helics_property_int_max_iterations() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 73); + vInitialized = helicsMEX(0, 75); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_delta.m b/interfaces/matlab/interface/+helics/helics_property_time_delta.m index 6a795cf5dc..3d512c4f46 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_delta.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_delta.m @@ -1,7 +1,7 @@ function v = helics_property_time_delta() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 65); + vInitialized = helicsMEX(0, 67); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_input_delay.m b/interfaces/matlab/interface/+helics/helics_property_time_input_delay.m index f84cca29a1..6724bcad73 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_input_delay.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_input_delay.m @@ -1,7 +1,7 @@ function v = helics_property_time_input_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 71); + vInitialized = helicsMEX(0, 73); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_offset.m b/interfaces/matlab/interface/+helics/helics_property_time_offset.m index 17ece6dbcf..33ec0d7bbe 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_offset.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_offset.m @@ -1,7 +1,7 @@ function v = helics_property_time_offset() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 67); + vInitialized = helicsMEX(0, 69); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_output_delay.m b/interfaces/matlab/interface/+helics/helics_property_time_output_delay.m index 22b8d1ac93..363eed8ac4 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_output_delay.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_output_delay.m @@ -1,7 +1,7 @@ function v = helics_property_time_output_delay() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 72); + vInitialized = helicsMEX(0, 74); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_period.m b/interfaces/matlab/interface/+helics/helics_property_time_period.m index 2398e756a8..dd5a52099d 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_period.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_period.m @@ -1,7 +1,7 @@ function v = helics_property_time_period() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 66); + vInitialized = helicsMEX(0, 68); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_rt_lag.m b/interfaces/matlab/interface/+helics/helics_property_time_rt_lag.m index 8a80beeac5..da118e4612 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_rt_lag.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_rt_lag.m @@ -1,7 +1,7 @@ function v = helics_property_time_rt_lag() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 68); + vInitialized = helicsMEX(0, 70); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_rt_lead.m b/interfaces/matlab/interface/+helics/helics_property_time_rt_lead.m index 0e17fc1d52..5cd52d6f8a 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_rt_lead.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_rt_lead.m @@ -1,7 +1,7 @@ function v = helics_property_time_rt_lead() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 69); + vInitialized = helicsMEX(0, 71); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_property_time_rt_tolerance.m b/interfaces/matlab/interface/+helics/helics_property_time_rt_tolerance.m index 1031fe586e..cf0cd03ffb 100644 --- a/interfaces/matlab/interface/+helics/helics_property_time_rt_tolerance.m +++ b/interfaces/matlab/interface/+helics/helics_property_time_rt_tolerance.m @@ -1,7 +1,7 @@ function v = helics_property_time_rt_tolerance() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 70); + vInitialized = helicsMEX(0, 72); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_error.m b/interfaces/matlab/interface/+helics/helics_state_error.m index 8c62a34877..2e9f0f0b7e 100644 --- a/interfaces/matlab/interface/+helics/helics_state_error.m +++ b/interfaces/matlab/interface/+helics/helics_state_error.m @@ -1,7 +1,7 @@ function v = helics_state_error() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 105); + vInitialized = helicsMEX(0, 107); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_execution.m b/interfaces/matlab/interface/+helics/helics_state_execution.m index 6354a491a2..1aaf4238b5 100644 --- a/interfaces/matlab/interface/+helics/helics_state_execution.m +++ b/interfaces/matlab/interface/+helics/helics_state_execution.m @@ -1,7 +1,7 @@ function v = helics_state_execution() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 103); + vInitialized = helicsMEX(0, 105); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_finalize.m b/interfaces/matlab/interface/+helics/helics_state_finalize.m index 395c60818b..f911acab49 100644 --- a/interfaces/matlab/interface/+helics/helics_state_finalize.m +++ b/interfaces/matlab/interface/+helics/helics_state_finalize.m @@ -1,7 +1,7 @@ function v = helics_state_finalize() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 104); + vInitialized = helicsMEX(0, 106); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_initialization.m b/interfaces/matlab/interface/+helics/helics_state_initialization.m index 76f3a0833f..9a2c4a5a2d 100644 --- a/interfaces/matlab/interface/+helics/helics_state_initialization.m +++ b/interfaces/matlab/interface/+helics/helics_state_initialization.m @@ -1,7 +1,7 @@ function v = helics_state_initialization() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 102); + vInitialized = helicsMEX(0, 104); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_pending_exec.m b/interfaces/matlab/interface/+helics/helics_state_pending_exec.m index 253df446b6..3d282db5bd 100644 --- a/interfaces/matlab/interface/+helics/helics_state_pending_exec.m +++ b/interfaces/matlab/interface/+helics/helics_state_pending_exec.m @@ -1,7 +1,7 @@ function v = helics_state_pending_exec() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 107); + vInitialized = helicsMEX(0, 109); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_pending_finalize.m b/interfaces/matlab/interface/+helics/helics_state_pending_finalize.m index 0af363f3f4..edca0fc7e9 100644 --- a/interfaces/matlab/interface/+helics/helics_state_pending_finalize.m +++ b/interfaces/matlab/interface/+helics/helics_state_pending_finalize.m @@ -1,7 +1,7 @@ function v = helics_state_pending_finalize() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 110); + vInitialized = helicsMEX(0, 112); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_pending_init.m b/interfaces/matlab/interface/+helics/helics_state_pending_init.m index bb4e494576..916c185e76 100644 --- a/interfaces/matlab/interface/+helics/helics_state_pending_init.m +++ b/interfaces/matlab/interface/+helics/helics_state_pending_init.m @@ -1,7 +1,7 @@ function v = helics_state_pending_init() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 106); + vInitialized = helicsMEX(0, 108); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_pending_iterative_time.m b/interfaces/matlab/interface/+helics/helics_state_pending_iterative_time.m index 93daf61f5a..8167bbbf7c 100644 --- a/interfaces/matlab/interface/+helics/helics_state_pending_iterative_time.m +++ b/interfaces/matlab/interface/+helics/helics_state_pending_iterative_time.m @@ -1,7 +1,7 @@ function v = helics_state_pending_iterative_time() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 109); + vInitialized = helicsMEX(0, 111); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_pending_time.m b/interfaces/matlab/interface/+helics/helics_state_pending_time.m index e6236ee341..635dfdfb12 100644 --- a/interfaces/matlab/interface/+helics/helics_state_pending_time.m +++ b/interfaces/matlab/interface/+helics/helics_state_pending_time.m @@ -1,7 +1,7 @@ function v = helics_state_pending_time() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 108); + vInitialized = helicsMEX(0, 110); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_state_startup.m b/interfaces/matlab/interface/+helics/helics_state_startup.m index 9525d565ec..f877df07c4 100644 --- a/interfaces/matlab/interface/+helics/helics_state_startup.m +++ b/interfaces/matlab/interface/+helics/helics_state_startup.m @@ -1,7 +1,7 @@ function v = helics_state_startup() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 101); + vInitialized = helicsMEX(0, 103); end v = vInitialized; end diff --git a/interfaces/matlab/interface/+helics/helics_warning.m b/interfaces/matlab/interface/+helics/helics_warning.m index a3f21ab95b..0d34ee56ab 100644 --- a/interfaces/matlab/interface/+helics/helics_warning.m +++ b/interfaces/matlab/interface/+helics/helics_warning.m @@ -1,7 +1,7 @@ function v = helics_warning() persistent vInitialized; if isempty(vInitialized) - vInitialized = helicsMEX(0, 58); + vInitialized = helicsMEX(0, 59); end v = vInitialized; end diff --git a/interfaces/matlab/interface/helicsMEX.cpp b/interfaces/matlab/interface/helicsMEX.cpp index ec043ff788..13e3abceea 100644 --- a/interfaces/matlab/interface/helicsMEX.cpp +++ b/interfaces/matlab/interface/helicsMEX.cpp @@ -4942,6 +4942,86 @@ int _wrap_helicsFederateRegisterInterfaces(int resc, mxArray *resv[], int argc, } +int _wrap_helicsFederateGlobalError(int resc, mxArray *resv[], int argc, mxArray *argv[]) { + helics_federate arg1 = (helics_federate) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int res1 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + mxArray * _out; + + if (!SWIG_check_num_args("helicsFederateGlobalError",argc,3,3,0)) { + SWIG_fail; + } + res1 = SWIG_ConvertPtr(argv[0],SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "helicsFederateGlobalError" "', argument " "1"" of type '" "helics_federate""'"); + } + ecode2 = SWIG_AsVal_int(argv[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "helicsFederateGlobalError" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + res3 = SWIG_AsCharPtrAndSize(argv[2], &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "helicsFederateGlobalError" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + helicsFederateGlobalError(arg1,arg2,(char const *)arg3); + _out = (mxArray*)0; + if (_out) --resc, *resv++ = _out; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + return 0; +fail: + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + return 1; +} + + +int _wrap_helicsFederateLocalError(int resc, mxArray *resv[], int argc, mxArray *argv[]) { + helics_federate arg1 = (helics_federate) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int res1 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + mxArray * _out; + + if (!SWIG_check_num_args("helicsFederateLocalError",argc,3,3,0)) { + SWIG_fail; + } + res1 = SWIG_ConvertPtr(argv[0],SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "helicsFederateLocalError" "', argument " "1"" of type '" "helics_federate""'"); + } + ecode2 = SWIG_AsVal_int(argv[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "helicsFederateLocalError" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + res3 = SWIG_AsCharPtrAndSize(argv[2], &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "helicsFederateLocalError" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + helicsFederateLocalError(arg1,arg2,(char const *)arg3); + _out = (mxArray*)0; + if (_out) --resc, *resv++ = _out; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + return 0; +fail: + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + return 1; +} + + int _wrap_helicsFederateFinalize(int resc, mxArray *resv[], int argc, mxArray *argv[]) { helics_federate arg1 = (helics_federate) 0 ; helics_error *arg2 = (helics_error *) 0 ; @@ -14035,75 +14115,77 @@ SWIGINTERN const char* SwigConstantName(int con_id) { case 39: return "helics_flag_delay_init_entry"; case 40: return "helics_flag_enable_init_entry"; case 41: return "helics_flag_ignore_time_mismatch_warnings"; - case 42: return "helics_log_level_no_print"; - case 43: return "helics_log_level_error"; - case 44: return "helics_log_level_warning"; - case 45: return "helics_log_level_summary"; - case 46: return "helics_log_level_connections"; - case 47: return "helics_log_level_interfaces"; - case 48: return "helics_log_level_timing"; - case 49: return "helics_log_level_data"; - case 50: return "helics_log_level_trace"; - case 51: return "helics_ok"; - case 52: return "helics_error_registration_failure"; - case 53: return "helics_error_connection_failure"; - case 54: return "helics_error_invalid_object"; - case 55: return "helics_error_invalid_argument"; - case 56: return "helics_error_discard"; - case 57: return "helics_error_system_failure"; - case 58: return "helics_warning"; - case 59: return "helics_error_invalid_state_transition"; - case 60: return "helics_error_invalid_function_call"; - case 61: return "helics_error_execution_failure"; - case 62: return "helics_error_insufficient_space"; - case 63: return "helics_error_other"; - case 64: return "helics_error_external_type"; - case 65: return "helics_property_time_delta"; - case 66: return "helics_property_time_period"; - case 67: return "helics_property_time_offset"; - case 68: return "helics_property_time_rt_lag"; - case 69: return "helics_property_time_rt_lead"; - case 70: return "helics_property_time_rt_tolerance"; - case 71: return "helics_property_time_input_delay"; - case 72: return "helics_property_time_output_delay"; - case 73: return "helics_property_int_max_iterations"; - case 74: return "helics_property_int_log_level"; - case 75: return "helics_property_int_file_log_level"; - case 76: return "helics_property_int_console_log_level"; - case 77: return "helics_handle_option_connection_required"; - case 78: return "helics_handle_option_connection_optional"; - case 79: return "helics_handle_option_single_connection_only"; - case 80: return "helics_handle_option_multiple_connections_allowed"; - case 81: return "helics_handle_option_buffer_data"; - case 82: return "helics_handle_option_strict_type_checking"; - case 83: return "helics_handle_option_ignore_unit_mismatch"; - case 84: return "helics_handle_option_only_transmit_on_change"; - case 85: return "helics_handle_option_only_update_on_change"; - case 86: return "helics_handle_option_ignore_interrupts"; - case 87: return "helics_filter_type_custom"; - case 88: return "helics_filter_type_delay"; - case 89: return "helics_filter_type_random_delay"; - case 90: return "helics_filter_type_random_drop"; - case 91: return "helics_filter_type_reroute"; - case 92: return "helics_filter_type_clone"; - case 93: return "helics_filter_type_firewall"; - case 94: return "helics_iteration_request_no_iteration"; - case 95: return "helics_iteration_request_force_iteration"; - case 96: return "helics_iteration_request_iterate_if_needed"; - case 97: return "helics_iteration_result_next_step"; - case 98: return "helics_iteration_result_error"; - case 99: return "helics_iteration_result_halted"; - case 100: return "helics_iteration_result_iterating"; - case 101: return "helics_state_startup"; - case 102: return "helics_state_initialization"; - case 103: return "helics_state_execution"; - case 104: return "helics_state_finalize"; - case 105: return "helics_state_error"; - case 106: return "helics_state_pending_init"; - case 107: return "helics_state_pending_exec"; - case 108: return "helics_state_pending_time"; - case 109: return "helics_state_pending_iterative_time"; - case 110: return "helics_state_pending_finalize"; + case 42: return "helics_flag_terminate_on_error"; + case 43: return "helics_log_level_no_print"; + case 44: return "helics_log_level_error"; + case 45: return "helics_log_level_warning"; + case 46: return "helics_log_level_summary"; + case 47: return "helics_log_level_connections"; + case 48: return "helics_log_level_interfaces"; + case 49: return "helics_log_level_timing"; + case 50: return "helics_log_level_data"; + case 51: return "helics_log_level_trace"; + case 52: return "helics_ok"; + case 53: return "helics_error_registration_failure"; + case 54: return "helics_error_connection_failure"; + case 55: return "helics_error_invalid_object"; + case 56: return "helics_error_invalid_argument"; + case 57: return "helics_error_discard"; + case 58: return "helics_error_system_failure"; + case 59: return "helics_warning"; + case 60: return "helics_error_invalid_state_transition"; + case 61: return "helics_error_invalid_function_call"; + case 62: return "helics_error_execution_failure"; + case 63: return "helics_error_insufficient_space"; + case 64: return "helics_error_other"; + case 65: return "helics_error_fatal"; + case 66: return "helics_error_external_type"; + case 67: return "helics_property_time_delta"; + case 68: return "helics_property_time_period"; + case 69: return "helics_property_time_offset"; + case 70: return "helics_property_time_rt_lag"; + case 71: return "helics_property_time_rt_lead"; + case 72: return "helics_property_time_rt_tolerance"; + case 73: return "helics_property_time_input_delay"; + case 74: return "helics_property_time_output_delay"; + case 75: return "helics_property_int_max_iterations"; + case 76: return "helics_property_int_log_level"; + case 77: return "helics_property_int_file_log_level"; + case 78: return "helics_property_int_console_log_level"; + case 79: return "helics_handle_option_connection_required"; + case 80: return "helics_handle_option_connection_optional"; + case 81: return "helics_handle_option_single_connection_only"; + case 82: return "helics_handle_option_multiple_connections_allowed"; + case 83: return "helics_handle_option_buffer_data"; + case 84: return "helics_handle_option_strict_type_checking"; + case 85: return "helics_handle_option_ignore_unit_mismatch"; + case 86: return "helics_handle_option_only_transmit_on_change"; + case 87: return "helics_handle_option_only_update_on_change"; + case 88: return "helics_handle_option_ignore_interrupts"; + case 89: return "helics_filter_type_custom"; + case 90: return "helics_filter_type_delay"; + case 91: return "helics_filter_type_random_delay"; + case 92: return "helics_filter_type_random_drop"; + case 93: return "helics_filter_type_reroute"; + case 94: return "helics_filter_type_clone"; + case 95: return "helics_filter_type_firewall"; + case 96: return "helics_iteration_request_no_iteration"; + case 97: return "helics_iteration_request_force_iteration"; + case 98: return "helics_iteration_request_iterate_if_needed"; + case 99: return "helics_iteration_result_next_step"; + case 100: return "helics_iteration_result_error"; + case 101: return "helics_iteration_result_halted"; + case 102: return "helics_iteration_result_iterating"; + case 103: return "helics_state_startup"; + case 104: return "helics_state_initialization"; + case 105: return "helics_state_execution"; + case 106: return "helics_state_finalize"; + case 107: return "helics_state_error"; + case 108: return "helics_state_pending_init"; + case 109: return "helics_state_pending_exec"; + case 110: return "helics_state_pending_time"; + case 111: return "helics_state_pending_iterative_time"; + case 112: return "helics_state_pending_finalize"; default: return 0; } } @@ -14176,75 +14258,77 @@ SWIGINTERN int swigConstant(int SWIGUNUSEDPARM(resc), mxArray *resv[], int argc, case 39: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_delay_init_entry",SWIG_From_int(static_cast< int >(helics_flag_delay_init_entry)));; break; case 40: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_enable_init_entry",SWIG_From_int(static_cast< int >(helics_flag_enable_init_entry)));; break; case 41: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_ignore_time_mismatch_warnings",SWIG_From_int(static_cast< int >(helics_flag_ignore_time_mismatch_warnings)));; break; - case 42: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_no_print",SWIG_From_int(static_cast< int >(helics_log_level_no_print)));; break; - case 43: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_error",SWIG_From_int(static_cast< int >(helics_log_level_error)));; break; - case 44: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_warning",SWIG_From_int(static_cast< int >(helics_log_level_warning)));; break; - case 45: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_summary",SWIG_From_int(static_cast< int >(helics_log_level_summary)));; break; - case 46: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_connections",SWIG_From_int(static_cast< int >(helics_log_level_connections)));; break; - case 47: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_interfaces",SWIG_From_int(static_cast< int >(helics_log_level_interfaces)));; break; - case 48: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_timing",SWIG_From_int(static_cast< int >(helics_log_level_timing)));; break; - case 49: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_data",SWIG_From_int(static_cast< int >(helics_log_level_data)));; break; - case 50: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_trace",SWIG_From_int(static_cast< int >(helics_log_level_trace)));; break; - case 51: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_ok",SWIG_From_int(static_cast< int >(helics_ok)));; break; - case 52: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_registration_failure",SWIG_From_int(static_cast< int >(helics_error_registration_failure)));; break; - case 53: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_connection_failure",SWIG_From_int(static_cast< int >(helics_error_connection_failure)));; break; - case 54: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_object",SWIG_From_int(static_cast< int >(helics_error_invalid_object)));; break; - case 55: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_argument",SWIG_From_int(static_cast< int >(helics_error_invalid_argument)));; break; - case 56: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_discard",SWIG_From_int(static_cast< int >(helics_error_discard)));; break; - case 57: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_system_failure",SWIG_From_int(static_cast< int >(helics_error_system_failure)));; break; - case 58: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_warning",SWIG_From_int(static_cast< int >(helics_warning)));; break; - case 59: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_state_transition",SWIG_From_int(static_cast< int >(helics_error_invalid_state_transition)));; break; - case 60: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_function_call",SWIG_From_int(static_cast< int >(helics_error_invalid_function_call)));; break; - case 61: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_execution_failure",SWIG_From_int(static_cast< int >(helics_error_execution_failure)));; break; - case 62: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_insufficient_space",SWIG_From_int(static_cast< int >(helics_error_insufficient_space)));; break; - case 63: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_other",SWIG_From_int(static_cast< int >(helics_error_other)));; break; - case 64: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_external_type",SWIG_From_int(static_cast< int >(helics_error_external_type)));; break; - case 65: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_delta",SWIG_From_int(static_cast< int >(helics_property_time_delta)));; break; - case 66: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_period",SWIG_From_int(static_cast< int >(helics_property_time_period)));; break; - case 67: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_offset",SWIG_From_int(static_cast< int >(helics_property_time_offset)));; break; - case 68: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lag",SWIG_From_int(static_cast< int >(helics_property_time_rt_lag)));; break; - case 69: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lead",SWIG_From_int(static_cast< int >(helics_property_time_rt_lead)));; break; - case 70: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_tolerance",SWIG_From_int(static_cast< int >(helics_property_time_rt_tolerance)));; break; - case 71: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_input_delay",SWIG_From_int(static_cast< int >(helics_property_time_input_delay)));; break; - case 72: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_output_delay",SWIG_From_int(static_cast< int >(helics_property_time_output_delay)));; break; - case 73: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_max_iterations",SWIG_From_int(static_cast< int >(helics_property_int_max_iterations)));; break; - case 74: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_log_level",SWIG_From_int(static_cast< int >(helics_property_int_log_level)));; break; - case 75: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_file_log_level",SWIG_From_int(static_cast< int >(helics_property_int_file_log_level)));; break; - case 76: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_console_log_level",SWIG_From_int(static_cast< int >(helics_property_int_console_log_level)));; break; - case 77: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_required",SWIG_From_int(static_cast< int >(helics_handle_option_connection_required)));; break; - case 78: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_optional",SWIG_From_int(static_cast< int >(helics_handle_option_connection_optional)));; break; - case 79: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_single_connection_only",SWIG_From_int(static_cast< int >(helics_handle_option_single_connection_only)));; break; - case 80: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_multiple_connections_allowed",SWIG_From_int(static_cast< int >(helics_handle_option_multiple_connections_allowed)));; break; - case 81: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_buffer_data",SWIG_From_int(static_cast< int >(helics_handle_option_buffer_data)));; break; - case 82: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_strict_type_checking",SWIG_From_int(static_cast< int >(helics_handle_option_strict_type_checking)));; break; - case 83: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_unit_mismatch",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_unit_mismatch)));; break; - case 84: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_transmit_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_transmit_on_change)));; break; - case 85: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_update_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_update_on_change)));; break; - case 86: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_interrupts",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_interrupts)));; break; - case 87: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_custom",SWIG_From_int(static_cast< int >(helics_filter_type_custom)));; break; - case 88: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_delay",SWIG_From_int(static_cast< int >(helics_filter_type_delay)));; break; - case 89: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_delay",SWIG_From_int(static_cast< int >(helics_filter_type_random_delay)));; break; - case 90: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_drop",SWIG_From_int(static_cast< int >(helics_filter_type_random_drop)));; break; - case 91: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_reroute",SWIG_From_int(static_cast< int >(helics_filter_type_reroute)));; break; - case 92: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_clone",SWIG_From_int(static_cast< int >(helics_filter_type_clone)));; break; - case 93: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_firewall",SWIG_From_int(static_cast< int >(helics_filter_type_firewall)));; break; - case 94: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_no_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_no_iteration)));; break; - case 95: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_force_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_force_iteration)));; break; - case 96: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_iterate_if_needed",SWIG_From_int(static_cast< int >(helics_iteration_request_iterate_if_needed)));; break; - case 97: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_next_step",SWIG_From_int(static_cast< int >(helics_iteration_result_next_step)));; break; - case 98: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_error",SWIG_From_int(static_cast< int >(helics_iteration_result_error)));; break; - case 99: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_halted",SWIG_From_int(static_cast< int >(helics_iteration_result_halted)));; break; - case 100: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_iterating",SWIG_From_int(static_cast< int >(helics_iteration_result_iterating)));; break; - case 101: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_startup",SWIG_From_int(static_cast< int >(helics_state_startup)));; break; - case 102: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_initialization",SWIG_From_int(static_cast< int >(helics_state_initialization)));; break; - case 103: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_execution",SWIG_From_int(static_cast< int >(helics_state_execution)));; break; - case 104: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_finalize",SWIG_From_int(static_cast< int >(helics_state_finalize)));; break; - case 105: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_error",SWIG_From_int(static_cast< int >(helics_state_error)));; break; - case 106: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_init",SWIG_From_int(static_cast< int >(helics_state_pending_init)));; break; - case 107: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_exec",SWIG_From_int(static_cast< int >(helics_state_pending_exec)));; break; - case 108: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_time",SWIG_From_int(static_cast< int >(helics_state_pending_time)));; break; - case 109: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_iterative_time",SWIG_From_int(static_cast< int >(helics_state_pending_iterative_time)));; break; - case 110: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_finalize",SWIG_From_int(static_cast< int >(helics_state_pending_finalize)));; break; + case 42: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_flag_terminate_on_error",SWIG_From_int(static_cast< int >(helics_flag_terminate_on_error)));; break; + case 43: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_no_print",SWIG_From_int(static_cast< int >(helics_log_level_no_print)));; break; + case 44: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_error",SWIG_From_int(static_cast< int >(helics_log_level_error)));; break; + case 45: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_warning",SWIG_From_int(static_cast< int >(helics_log_level_warning)));; break; + case 46: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_summary",SWIG_From_int(static_cast< int >(helics_log_level_summary)));; break; + case 47: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_connections",SWIG_From_int(static_cast< int >(helics_log_level_connections)));; break; + case 48: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_interfaces",SWIG_From_int(static_cast< int >(helics_log_level_interfaces)));; break; + case 49: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_timing",SWIG_From_int(static_cast< int >(helics_log_level_timing)));; break; + case 50: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_data",SWIG_From_int(static_cast< int >(helics_log_level_data)));; break; + case 51: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_log_level_trace",SWIG_From_int(static_cast< int >(helics_log_level_trace)));; break; + case 52: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_ok",SWIG_From_int(static_cast< int >(helics_ok)));; break; + case 53: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_registration_failure",SWIG_From_int(static_cast< int >(helics_error_registration_failure)));; break; + case 54: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_connection_failure",SWIG_From_int(static_cast< int >(helics_error_connection_failure)));; break; + case 55: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_object",SWIG_From_int(static_cast< int >(helics_error_invalid_object)));; break; + case 56: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_argument",SWIG_From_int(static_cast< int >(helics_error_invalid_argument)));; break; + case 57: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_discard",SWIG_From_int(static_cast< int >(helics_error_discard)));; break; + case 58: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_system_failure",SWIG_From_int(static_cast< int >(helics_error_system_failure)));; break; + case 59: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_warning",SWIG_From_int(static_cast< int >(helics_warning)));; break; + case 60: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_state_transition",SWIG_From_int(static_cast< int >(helics_error_invalid_state_transition)));; break; + case 61: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_invalid_function_call",SWIG_From_int(static_cast< int >(helics_error_invalid_function_call)));; break; + case 62: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_execution_failure",SWIG_From_int(static_cast< int >(helics_error_execution_failure)));; break; + case 63: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_insufficient_space",SWIG_From_int(static_cast< int >(helics_error_insufficient_space)));; break; + case 64: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_other",SWIG_From_int(static_cast< int >(helics_error_other)));; break; + case 65: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_fatal",SWIG_From_int(static_cast< int >(helics_error_fatal)));; break; + case 66: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_error_external_type",SWIG_From_int(static_cast< int >(helics_error_external_type)));; break; + case 67: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_delta",SWIG_From_int(static_cast< int >(helics_property_time_delta)));; break; + case 68: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_period",SWIG_From_int(static_cast< int >(helics_property_time_period)));; break; + case 69: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_offset",SWIG_From_int(static_cast< int >(helics_property_time_offset)));; break; + case 70: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lag",SWIG_From_int(static_cast< int >(helics_property_time_rt_lag)));; break; + case 71: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_lead",SWIG_From_int(static_cast< int >(helics_property_time_rt_lead)));; break; + case 72: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_rt_tolerance",SWIG_From_int(static_cast< int >(helics_property_time_rt_tolerance)));; break; + case 73: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_input_delay",SWIG_From_int(static_cast< int >(helics_property_time_input_delay)));; break; + case 74: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_time_output_delay",SWIG_From_int(static_cast< int >(helics_property_time_output_delay)));; break; + case 75: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_max_iterations",SWIG_From_int(static_cast< int >(helics_property_int_max_iterations)));; break; + case 76: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_log_level",SWIG_From_int(static_cast< int >(helics_property_int_log_level)));; break; + case 77: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_file_log_level",SWIG_From_int(static_cast< int >(helics_property_int_file_log_level)));; break; + case 78: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_property_int_console_log_level",SWIG_From_int(static_cast< int >(helics_property_int_console_log_level)));; break; + case 79: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_required",SWIG_From_int(static_cast< int >(helics_handle_option_connection_required)));; break; + case 80: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_connection_optional",SWIG_From_int(static_cast< int >(helics_handle_option_connection_optional)));; break; + case 81: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_single_connection_only",SWIG_From_int(static_cast< int >(helics_handle_option_single_connection_only)));; break; + case 82: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_multiple_connections_allowed",SWIG_From_int(static_cast< int >(helics_handle_option_multiple_connections_allowed)));; break; + case 83: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_buffer_data",SWIG_From_int(static_cast< int >(helics_handle_option_buffer_data)));; break; + case 84: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_strict_type_checking",SWIG_From_int(static_cast< int >(helics_handle_option_strict_type_checking)));; break; + case 85: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_unit_mismatch",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_unit_mismatch)));; break; + case 86: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_transmit_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_transmit_on_change)));; break; + case 87: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_only_update_on_change",SWIG_From_int(static_cast< int >(helics_handle_option_only_update_on_change)));; break; + case 88: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_handle_option_ignore_interrupts",SWIG_From_int(static_cast< int >(helics_handle_option_ignore_interrupts)));; break; + case 89: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_custom",SWIG_From_int(static_cast< int >(helics_filter_type_custom)));; break; + case 90: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_delay",SWIG_From_int(static_cast< int >(helics_filter_type_delay)));; break; + case 91: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_delay",SWIG_From_int(static_cast< int >(helics_filter_type_random_delay)));; break; + case 92: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_random_drop",SWIG_From_int(static_cast< int >(helics_filter_type_random_drop)));; break; + case 93: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_reroute",SWIG_From_int(static_cast< int >(helics_filter_type_reroute)));; break; + case 94: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_clone",SWIG_From_int(static_cast< int >(helics_filter_type_clone)));; break; + case 95: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_filter_type_firewall",SWIG_From_int(static_cast< int >(helics_filter_type_firewall)));; break; + case 96: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_no_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_no_iteration)));; break; + case 97: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_force_iteration",SWIG_From_int(static_cast< int >(helics_iteration_request_force_iteration)));; break; + case 98: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_request_iterate_if_needed",SWIG_From_int(static_cast< int >(helics_iteration_request_iterate_if_needed)));; break; + case 99: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_next_step",SWIG_From_int(static_cast< int >(helics_iteration_result_next_step)));; break; + case 100: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_error",SWIG_From_int(static_cast< int >(helics_iteration_result_error)));; break; + case 101: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_halted",SWIG_From_int(static_cast< int >(helics_iteration_result_halted)));; break; + case 102: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_iteration_result_iterating",SWIG_From_int(static_cast< int >(helics_iteration_result_iterating)));; break; + case 103: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_startup",SWIG_From_int(static_cast< int >(helics_state_startup)));; break; + case 104: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_initialization",SWIG_From_int(static_cast< int >(helics_state_initialization)));; break; + case 105: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_execution",SWIG_From_int(static_cast< int >(helics_state_execution)));; break; + case 106: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_finalize",SWIG_From_int(static_cast< int >(helics_state_finalize)));; break; + case 107: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_error",SWIG_From_int(static_cast< int >(helics_state_error)));; break; + case 108: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_init",SWIG_From_int(static_cast< int >(helics_state_pending_init)));; break; + case 109: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_exec",SWIG_From_int(static_cast< int >(helics_state_pending_exec)));; break; + case 110: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_time",SWIG_From_int(static_cast< int >(helics_state_pending_time)));; break; + case 111: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_iterative_time",SWIG_From_int(static_cast< int >(helics_state_pending_iterative_time)));; break; + case 112: *resv = SWIG_Matlab_SetConstant(module_ns,"helics_state_pending_finalize",SWIG_From_int(static_cast< int >(helics_state_pending_finalize)));; break; default: SWIG_Error(SWIG_RuntimeError, "No such constant."); return 1; @@ -14349,210 +14433,212 @@ SWIGINTERN const char* SwigFunctionName(int fcn_id) { case 92: return "_wrap_helicsFederateInfoSetTimeProperty"; case 93: return "_wrap_helicsFederateInfoSetIntegerProperty"; case 94: return "_wrap_helicsFederateRegisterInterfaces"; - case 95: return "_wrap_helicsFederateFinalize"; - case 96: return "_wrap_helicsFederateFinalizeAsync"; - case 97: return "_wrap_helicsFederateFinalizeComplete"; - case 98: return "_wrap_helicsFederateFree"; - case 99: return "_wrap_helicsCloseLibrary"; - case 100: return "_wrap_helicsFederateEnterInitializingMode"; - case 101: return "_wrap_helicsFederateEnterInitializingModeAsync"; - case 102: return "_wrap_helicsFederateIsAsyncOperationCompleted"; - case 103: return "_wrap_helicsFederateEnterInitializingModeComplete"; - case 104: return "_wrap_helicsFederateEnterExecutingMode"; - case 105: return "_wrap_helicsFederateEnterExecutingModeAsync"; - case 106: return "_wrap_helicsFederateEnterExecutingModeComplete"; - case 107: return "_wrap_helicsFederateEnterExecutingModeIterative"; - case 108: return "_wrap_helicsFederateEnterExecutingModeIterativeAsync"; - case 109: return "_wrap_helicsFederateEnterExecutingModeIterativeComplete"; - case 110: return "_wrap_helicsFederateGetState"; - case 111: return "_wrap_helicsFederateGetCoreObject"; - case 112: return "_wrap_helicsFederateRequestTime"; - case 113: return "_wrap_helicsFederateRequestTimeAdvance"; - case 114: return "_wrap_helicsFederateRequestNextStep"; - case 115: return "_wrap_helicsFederateRequestTimeIterative"; - case 116: return "_wrap_helicsFederateRequestTimeAsync"; - case 117: return "_wrap_helicsFederateRequestTimeComplete"; - case 118: return "_wrap_helicsFederateRequestTimeIterativeAsync"; - case 119: return "_wrap_helicsFederateRequestTimeIterativeComplete"; - case 120: return "_wrap_helicsFederateGetName"; - case 121: return "_wrap_helicsFederateSetTimeProperty"; - case 122: return "_wrap_helicsFederateSetFlagOption"; - case 123: return "_wrap_helicsFederateSetSeparator"; - case 124: return "_wrap_helicsFederateSetIntegerProperty"; - case 125: return "_wrap_helicsFederateGetTimeProperty"; - case 126: return "_wrap_helicsFederateGetFlagOption"; - case 127: return "_wrap_helicsFederateGetIntegerProperty"; - case 128: return "_wrap_helicsFederateGetCurrentTime"; - case 129: return "_wrap_helicsFederateSetGlobal"; - case 130: return "_wrap_helicsFederateSetLogFile"; - case 131: return "_wrap_helicsFederateLogErrorMessage"; - case 132: return "_wrap_helicsFederateLogWarningMessage"; - case 133: return "_wrap_helicsFederateLogInfoMessage"; - case 134: return "_wrap_helicsFederateLogDebugMessage"; - case 135: return "_wrap_helicsFederateLogLevelMessage"; - case 136: return "_wrap_helicsCoreSetGlobal"; - case 137: return "_wrap_helicsBrokerSetGlobal"; - case 138: return "_wrap_helicsCoreSetLogFile"; - case 139: return "_wrap_helicsBrokerSetLogFile"; - case 140: return "_wrap_helicsCreateQuery"; - case 141: return "_wrap_helicsQueryExecute"; - case 142: return "_wrap_helicsQueryCoreExecute"; - case 143: return "_wrap_helicsQueryBrokerExecute"; - case 144: return "_wrap_helicsQueryExecuteAsync"; - case 145: return "_wrap_helicsQueryExecuteComplete"; - case 146: return "_wrap_helicsQueryIsCompleted"; - case 147: return "_wrap_helicsQueryFree"; - case 148: return "_wrap_helicsCleanupLibrary"; - case 149: return "_wrap_helicsFederateRegisterSubscription"; - case 150: return "_wrap_helicsFederateRegisterPublication"; - case 151: return "_wrap_helicsFederateRegisterTypePublication"; - case 152: return "_wrap_helicsFederateRegisterGlobalPublication"; - case 153: return "_wrap_helicsFederateRegisterGlobalTypePublication"; - case 154: return "_wrap_helicsFederateRegisterInput"; - case 155: return "_wrap_helicsFederateRegisterTypeInput"; - case 156: return "_wrap_helicsFederateRegisterGlobalInput"; - case 157: return "_wrap_helicsFederateRegisterGlobalTypeInput"; - case 158: return "_wrap_helicsFederateGetPublication"; - case 159: return "_wrap_helicsFederateGetPublicationByIndex"; - case 160: return "_wrap_helicsFederateGetInput"; - case 161: return "_wrap_helicsFederateGetInputByIndex"; - case 162: return "_wrap_helicsFederateGetSubscription"; - case 163: return "_wrap_helicsFederateClearUpdates"; - case 164: return "_wrap_helicsFederateRegisterFromPublicationJSON"; - case 165: return "_wrap_helicsFederatePublishJSON"; - case 166: return "_wrap_helicsPublicationPublishRaw"; - case 167: return "_wrap_helicsPublicationPublishString"; - case 168: return "_wrap_helicsPublicationPublishInteger"; - case 169: return "_wrap_helicsPublicationPublishBoolean"; - case 170: return "_wrap_helicsPublicationPublishDouble"; - case 171: return "_wrap_helicsPublicationPublishTime"; - case 172: return "_wrap_helicsPublicationPublishChar"; - case 173: return "_wrap_helicsPublicationPublishComplex"; - case 174: return "_wrap_helicsPublicationPublishVector"; - case 175: return "_wrap_helicsPublicationPublishNamedPoint"; - case 176: return "_wrap_helicsPublicationAddTarget"; - case 177: return "_wrap_helicsInputAddTarget"; - case 178: return "_wrap_helicsInputGetRawValueSize"; - case 179: return "_wrap_helicsInputGetRawValue"; - case 180: return "_wrap_helicsInputGetStringSize"; - case 181: return "_wrap_helicsInputGetString"; - case 182: return "_wrap_helicsInputGetInteger"; - case 183: return "_wrap_helicsInputGetBoolean"; - case 184: return "_wrap_helicsInputGetDouble"; - case 185: return "_wrap_helicsInputGetTime"; - case 186: return "_wrap_helicsInputGetChar"; - case 187: return "_wrap_helicsInputGetComplex"; - case 188: return "_wrap_helicsInputGetVectorSize"; - case 189: return "_wrap_helicsInputGetVector"; - case 190: return "_wrap_helicsInputGetNamedPoint"; - case 191: return "_wrap_helicsInputSetDefaultRaw"; - case 192: return "_wrap_helicsInputSetDefaultString"; - case 193: return "_wrap_helicsInputSetDefaultInteger"; - case 194: return "_wrap_helicsInputSetDefaultBoolean"; - case 195: return "_wrap_helicsInputSetDefaultTime"; - case 196: return "_wrap_helicsInputSetDefaultChar"; - case 197: return "_wrap_helicsInputSetDefaultDouble"; - case 198: return "_wrap_helicsInputSetDefaultComplex"; - case 199: return "_wrap_helicsInputSetDefaultVector"; - case 200: return "_wrap_helicsInputSetDefaultNamedPoint"; - case 201: return "_wrap_helicsInputGetType"; - case 202: return "_wrap_helicsInputGetPublicationType"; - case 203: return "_wrap_helicsPublicationGetType"; - case 204: return "_wrap_helicsInputGetKey"; - case 205: return "_wrap_helicsSubscriptionGetKey"; - case 206: return "_wrap_helicsPublicationGetKey"; - case 207: return "_wrap_helicsInputGetUnits"; - case 208: return "_wrap_helicsInputGetInjectionUnits"; - case 209: return "_wrap_helicsInputGetExtractionUnits"; - case 210: return "_wrap_helicsPublicationGetUnits"; - case 211: return "_wrap_helicsInputGetInfo"; - case 212: return "_wrap_helicsInputSetInfo"; - case 213: return "_wrap_helicsPublicationGetInfo"; - case 214: return "_wrap_helicsPublicationSetInfo"; - case 215: return "_wrap_helicsInputGetOption"; - case 216: return "_wrap_helicsInputSetOption"; - case 217: return "_wrap_helicsPublicationGetOption"; - case 218: return "_wrap_helicsPublicationSetOption"; - case 219: return "_wrap_helicsPublicationSetMinimumChange"; - case 220: return "_wrap_helicsInputSetMinimumChange"; - case 221: return "_wrap_helicsInputIsUpdated"; - case 222: return "_wrap_helicsInputLastUpdateTime"; - case 223: return "_wrap_helicsInputClearUpdate"; - case 224: return "_wrap_helicsFederateGetPublicationCount"; - case 225: return "_wrap_helicsFederateGetInputCount"; - case 226: return "_wrap_helicsFederateRegisterEndpoint"; - case 227: return "_wrap_helicsFederateRegisterGlobalEndpoint"; - case 228: return "_wrap_helicsFederateGetEndpoint"; - case 229: return "_wrap_helicsFederateGetEndpointByIndex"; - case 230: return "_wrap_helicsEndpointSetDefaultDestination"; - case 231: return "_wrap_helicsEndpointGetDefaultDestination"; - case 232: return "_wrap_helicsEndpointSendMessageRaw"; - case 233: return "_wrap_helicsEndpointSendEventRaw"; - case 234: return "_wrap_helicsEndpointSendMessage"; - case 235: return "_wrap_helicsEndpointSendMessageObject"; - case 236: return "_wrap_helicsEndpointSubscribe"; - case 237: return "_wrap_helicsFederateHasMessage"; - case 238: return "_wrap_helicsEndpointHasMessage"; - case 239: return "_wrap_helicsFederatePendingMessages"; - case 240: return "_wrap_helicsEndpointPendingMessages"; - case 241: return "_wrap_helicsEndpointGetMessage"; - case 242: return "_wrap_helicsEndpointGetMessageObject"; - case 243: return "_wrap_helicsFederateGetMessage"; - case 244: return "_wrap_helicsFederateGetMessageObject"; - case 245: return "_wrap_helicsFederateCreateMessageObject"; - case 246: return "_wrap_helicsFederateClearMessages"; - case 247: return "_wrap_helicsEndpointClearMessages"; - case 248: return "_wrap_helicsEndpointGetType"; - case 249: return "_wrap_helicsEndpointGetName"; - case 250: return "_wrap_helicsFederateGetEndpointCount"; - case 251: return "_wrap_helicsEndpointGetInfo"; - case 252: return "_wrap_helicsEndpointSetInfo"; - case 253: return "_wrap_helicsEndpointSetOption"; - case 254: return "_wrap_helicsEndpointGetOption"; - case 255: return "_wrap_helicsMessageGetSource"; - case 256: return "_wrap_helicsMessageGetDestination"; - case 257: return "_wrap_helicsMessageGetOriginalSource"; - case 258: return "_wrap_helicsMessageGetOriginalDestination"; - case 259: return "_wrap_helicsMessageGetTime"; - case 260: return "_wrap_helicsMessageGetString"; - case 261: return "_wrap_helicsMessageGetMessageID"; - case 262: return "_wrap_helicsMessageCheckFlag"; - case 263: return "_wrap_helicsMessageGetRawDataSize"; - case 264: return "_wrap_helicsMessageGetRawData"; - case 265: return "_wrap_helicsMessageIsValid"; - case 266: return "_wrap_helicsMessageSetSource"; - case 267: return "_wrap_helicsMessageSetDestination"; - case 268: return "_wrap_helicsMessageSetOriginalSource"; - case 269: return "_wrap_helicsMessageSetOriginalDestination"; - case 270: return "_wrap_helicsMessageSetTime"; - case 271: return "_wrap_helicsMessageReserve"; - case 272: return "_wrap_helicsMessageSetMessageID"; - case 273: return "_wrap_helicsMessageClearFlags"; - case 274: return "_wrap_helicsMessageSetFlagOption"; - case 275: return "_wrap_helicsMessageSetString"; - case 276: return "_wrap_helicsMessageSetData"; - case 277: return "_wrap_helicsMessageAppendData"; - case 278: return "_wrap_helicsFederateRegisterFilter"; - case 279: return "_wrap_helicsFederateRegisterGlobalFilter"; - case 280: return "_wrap_helicsFederateRegisterCloningFilter"; - case 281: return "_wrap_helicsFederateRegisterGlobalCloningFilter"; - case 282: return "_wrap_helicsCoreRegisterFilter"; - case 283: return "_wrap_helicsCoreRegisterCloningFilter"; - case 284: return "_wrap_helicsFederateGetFilterCount"; - case 285: return "_wrap_helicsFederateGetFilter"; - case 286: return "_wrap_helicsFederateGetFilterByIndex"; - case 287: return "_wrap_helicsFilterGetName"; - case 288: return "_wrap_helicsFilterSet"; - case 289: return "_wrap_helicsFilterSetString"; - case 290: return "_wrap_helicsFilterAddDestinationTarget"; - case 291: return "_wrap_helicsFilterAddSourceTarget"; - case 292: return "_wrap_helicsFilterAddDeliveryEndpoint"; - case 293: return "_wrap_helicsFilterRemoveTarget"; - case 294: return "_wrap_helicsFilterRemoveDeliveryEndpoint"; - case 295: return "_wrap_helicsFilterGetInfo"; - case 296: return "_wrap_helicsFilterSetInfo"; - case 297: return "_wrap_helicsFilterSetOption"; - case 298: return "_wrap_helicsFilterGetOption"; + case 95: return "_wrap_helicsFederateGlobalError"; + case 96: return "_wrap_helicsFederateLocalError"; + case 97: return "_wrap_helicsFederateFinalize"; + case 98: return "_wrap_helicsFederateFinalizeAsync"; + case 99: return "_wrap_helicsFederateFinalizeComplete"; + case 100: return "_wrap_helicsFederateFree"; + case 101: return "_wrap_helicsCloseLibrary"; + case 102: return "_wrap_helicsFederateEnterInitializingMode"; + case 103: return "_wrap_helicsFederateEnterInitializingModeAsync"; + case 104: return "_wrap_helicsFederateIsAsyncOperationCompleted"; + case 105: return "_wrap_helicsFederateEnterInitializingModeComplete"; + case 106: return "_wrap_helicsFederateEnterExecutingMode"; + case 107: return "_wrap_helicsFederateEnterExecutingModeAsync"; + case 108: return "_wrap_helicsFederateEnterExecutingModeComplete"; + case 109: return "_wrap_helicsFederateEnterExecutingModeIterative"; + case 110: return "_wrap_helicsFederateEnterExecutingModeIterativeAsync"; + case 111: return "_wrap_helicsFederateEnterExecutingModeIterativeComplete"; + case 112: return "_wrap_helicsFederateGetState"; + case 113: return "_wrap_helicsFederateGetCoreObject"; + case 114: return "_wrap_helicsFederateRequestTime"; + case 115: return "_wrap_helicsFederateRequestTimeAdvance"; + case 116: return "_wrap_helicsFederateRequestNextStep"; + case 117: return "_wrap_helicsFederateRequestTimeIterative"; + case 118: return "_wrap_helicsFederateRequestTimeAsync"; + case 119: return "_wrap_helicsFederateRequestTimeComplete"; + case 120: return "_wrap_helicsFederateRequestTimeIterativeAsync"; + case 121: return "_wrap_helicsFederateRequestTimeIterativeComplete"; + case 122: return "_wrap_helicsFederateGetName"; + case 123: return "_wrap_helicsFederateSetTimeProperty"; + case 124: return "_wrap_helicsFederateSetFlagOption"; + case 125: return "_wrap_helicsFederateSetSeparator"; + case 126: return "_wrap_helicsFederateSetIntegerProperty"; + case 127: return "_wrap_helicsFederateGetTimeProperty"; + case 128: return "_wrap_helicsFederateGetFlagOption"; + case 129: return "_wrap_helicsFederateGetIntegerProperty"; + case 130: return "_wrap_helicsFederateGetCurrentTime"; + case 131: return "_wrap_helicsFederateSetGlobal"; + case 132: return "_wrap_helicsFederateSetLogFile"; + case 133: return "_wrap_helicsFederateLogErrorMessage"; + case 134: return "_wrap_helicsFederateLogWarningMessage"; + case 135: return "_wrap_helicsFederateLogInfoMessage"; + case 136: return "_wrap_helicsFederateLogDebugMessage"; + case 137: return "_wrap_helicsFederateLogLevelMessage"; + case 138: return "_wrap_helicsCoreSetGlobal"; + case 139: return "_wrap_helicsBrokerSetGlobal"; + case 140: return "_wrap_helicsCoreSetLogFile"; + case 141: return "_wrap_helicsBrokerSetLogFile"; + case 142: return "_wrap_helicsCreateQuery"; + case 143: return "_wrap_helicsQueryExecute"; + case 144: return "_wrap_helicsQueryCoreExecute"; + case 145: return "_wrap_helicsQueryBrokerExecute"; + case 146: return "_wrap_helicsQueryExecuteAsync"; + case 147: return "_wrap_helicsQueryExecuteComplete"; + case 148: return "_wrap_helicsQueryIsCompleted"; + case 149: return "_wrap_helicsQueryFree"; + case 150: return "_wrap_helicsCleanupLibrary"; + case 151: return "_wrap_helicsFederateRegisterSubscription"; + case 152: return "_wrap_helicsFederateRegisterPublication"; + case 153: return "_wrap_helicsFederateRegisterTypePublication"; + case 154: return "_wrap_helicsFederateRegisterGlobalPublication"; + case 155: return "_wrap_helicsFederateRegisterGlobalTypePublication"; + case 156: return "_wrap_helicsFederateRegisterInput"; + case 157: return "_wrap_helicsFederateRegisterTypeInput"; + case 158: return "_wrap_helicsFederateRegisterGlobalInput"; + case 159: return "_wrap_helicsFederateRegisterGlobalTypeInput"; + case 160: return "_wrap_helicsFederateGetPublication"; + case 161: return "_wrap_helicsFederateGetPublicationByIndex"; + case 162: return "_wrap_helicsFederateGetInput"; + case 163: return "_wrap_helicsFederateGetInputByIndex"; + case 164: return "_wrap_helicsFederateGetSubscription"; + case 165: return "_wrap_helicsFederateClearUpdates"; + case 166: return "_wrap_helicsFederateRegisterFromPublicationJSON"; + case 167: return "_wrap_helicsFederatePublishJSON"; + case 168: return "_wrap_helicsPublicationPublishRaw"; + case 169: return "_wrap_helicsPublicationPublishString"; + case 170: return "_wrap_helicsPublicationPublishInteger"; + case 171: return "_wrap_helicsPublicationPublishBoolean"; + case 172: return "_wrap_helicsPublicationPublishDouble"; + case 173: return "_wrap_helicsPublicationPublishTime"; + case 174: return "_wrap_helicsPublicationPublishChar"; + case 175: return "_wrap_helicsPublicationPublishComplex"; + case 176: return "_wrap_helicsPublicationPublishVector"; + case 177: return "_wrap_helicsPublicationPublishNamedPoint"; + case 178: return "_wrap_helicsPublicationAddTarget"; + case 179: return "_wrap_helicsInputAddTarget"; + case 180: return "_wrap_helicsInputGetRawValueSize"; + case 181: return "_wrap_helicsInputGetRawValue"; + case 182: return "_wrap_helicsInputGetStringSize"; + case 183: return "_wrap_helicsInputGetString"; + case 184: return "_wrap_helicsInputGetInteger"; + case 185: return "_wrap_helicsInputGetBoolean"; + case 186: return "_wrap_helicsInputGetDouble"; + case 187: return "_wrap_helicsInputGetTime"; + case 188: return "_wrap_helicsInputGetChar"; + case 189: return "_wrap_helicsInputGetComplex"; + case 190: return "_wrap_helicsInputGetVectorSize"; + case 191: return "_wrap_helicsInputGetVector"; + case 192: return "_wrap_helicsInputGetNamedPoint"; + case 193: return "_wrap_helicsInputSetDefaultRaw"; + case 194: return "_wrap_helicsInputSetDefaultString"; + case 195: return "_wrap_helicsInputSetDefaultInteger"; + case 196: return "_wrap_helicsInputSetDefaultBoolean"; + case 197: return "_wrap_helicsInputSetDefaultTime"; + case 198: return "_wrap_helicsInputSetDefaultChar"; + case 199: return "_wrap_helicsInputSetDefaultDouble"; + case 200: return "_wrap_helicsInputSetDefaultComplex"; + case 201: return "_wrap_helicsInputSetDefaultVector"; + case 202: return "_wrap_helicsInputSetDefaultNamedPoint"; + case 203: return "_wrap_helicsInputGetType"; + case 204: return "_wrap_helicsInputGetPublicationType"; + case 205: return "_wrap_helicsPublicationGetType"; + case 206: return "_wrap_helicsInputGetKey"; + case 207: return "_wrap_helicsSubscriptionGetKey"; + case 208: return "_wrap_helicsPublicationGetKey"; + case 209: return "_wrap_helicsInputGetUnits"; + case 210: return "_wrap_helicsInputGetInjectionUnits"; + case 211: return "_wrap_helicsInputGetExtractionUnits"; + case 212: return "_wrap_helicsPublicationGetUnits"; + case 213: return "_wrap_helicsInputGetInfo"; + case 214: return "_wrap_helicsInputSetInfo"; + case 215: return "_wrap_helicsPublicationGetInfo"; + case 216: return "_wrap_helicsPublicationSetInfo"; + case 217: return "_wrap_helicsInputGetOption"; + case 218: return "_wrap_helicsInputSetOption"; + case 219: return "_wrap_helicsPublicationGetOption"; + case 220: return "_wrap_helicsPublicationSetOption"; + case 221: return "_wrap_helicsPublicationSetMinimumChange"; + case 222: return "_wrap_helicsInputSetMinimumChange"; + case 223: return "_wrap_helicsInputIsUpdated"; + case 224: return "_wrap_helicsInputLastUpdateTime"; + case 225: return "_wrap_helicsInputClearUpdate"; + case 226: return "_wrap_helicsFederateGetPublicationCount"; + case 227: return "_wrap_helicsFederateGetInputCount"; + case 228: return "_wrap_helicsFederateRegisterEndpoint"; + case 229: return "_wrap_helicsFederateRegisterGlobalEndpoint"; + case 230: return "_wrap_helicsFederateGetEndpoint"; + case 231: return "_wrap_helicsFederateGetEndpointByIndex"; + case 232: return "_wrap_helicsEndpointSetDefaultDestination"; + case 233: return "_wrap_helicsEndpointGetDefaultDestination"; + case 234: return "_wrap_helicsEndpointSendMessageRaw"; + case 235: return "_wrap_helicsEndpointSendEventRaw"; + case 236: return "_wrap_helicsEndpointSendMessage"; + case 237: return "_wrap_helicsEndpointSendMessageObject"; + case 238: return "_wrap_helicsEndpointSubscribe"; + case 239: return "_wrap_helicsFederateHasMessage"; + case 240: return "_wrap_helicsEndpointHasMessage"; + case 241: return "_wrap_helicsFederatePendingMessages"; + case 242: return "_wrap_helicsEndpointPendingMessages"; + case 243: return "_wrap_helicsEndpointGetMessage"; + case 244: return "_wrap_helicsEndpointGetMessageObject"; + case 245: return "_wrap_helicsFederateGetMessage"; + case 246: return "_wrap_helicsFederateGetMessageObject"; + case 247: return "_wrap_helicsFederateCreateMessageObject"; + case 248: return "_wrap_helicsFederateClearMessages"; + case 249: return "_wrap_helicsEndpointClearMessages"; + case 250: return "_wrap_helicsEndpointGetType"; + case 251: return "_wrap_helicsEndpointGetName"; + case 252: return "_wrap_helicsFederateGetEndpointCount"; + case 253: return "_wrap_helicsEndpointGetInfo"; + case 254: return "_wrap_helicsEndpointSetInfo"; + case 255: return "_wrap_helicsEndpointSetOption"; + case 256: return "_wrap_helicsEndpointGetOption"; + case 257: return "_wrap_helicsMessageGetSource"; + case 258: return "_wrap_helicsMessageGetDestination"; + case 259: return "_wrap_helicsMessageGetOriginalSource"; + case 260: return "_wrap_helicsMessageGetOriginalDestination"; + case 261: return "_wrap_helicsMessageGetTime"; + case 262: return "_wrap_helicsMessageGetString"; + case 263: return "_wrap_helicsMessageGetMessageID"; + case 264: return "_wrap_helicsMessageCheckFlag"; + case 265: return "_wrap_helicsMessageGetRawDataSize"; + case 266: return "_wrap_helicsMessageGetRawData"; + case 267: return "_wrap_helicsMessageIsValid"; + case 268: return "_wrap_helicsMessageSetSource"; + case 269: return "_wrap_helicsMessageSetDestination"; + case 270: return "_wrap_helicsMessageSetOriginalSource"; + case 271: return "_wrap_helicsMessageSetOriginalDestination"; + case 272: return "_wrap_helicsMessageSetTime"; + case 273: return "_wrap_helicsMessageReserve"; + case 274: return "_wrap_helicsMessageSetMessageID"; + case 275: return "_wrap_helicsMessageClearFlags"; + case 276: return "_wrap_helicsMessageSetFlagOption"; + case 277: return "_wrap_helicsMessageSetString"; + case 278: return "_wrap_helicsMessageSetData"; + case 279: return "_wrap_helicsMessageAppendData"; + case 280: return "_wrap_helicsFederateRegisterFilter"; + case 281: return "_wrap_helicsFederateRegisterGlobalFilter"; + case 282: return "_wrap_helicsFederateRegisterCloningFilter"; + case 283: return "_wrap_helicsFederateRegisterGlobalCloningFilter"; + case 284: return "_wrap_helicsCoreRegisterFilter"; + case 285: return "_wrap_helicsCoreRegisterCloningFilter"; + case 286: return "_wrap_helicsFederateGetFilterCount"; + case 287: return "_wrap_helicsFederateGetFilter"; + case 288: return "_wrap_helicsFederateGetFilterByIndex"; + case 289: return "_wrap_helicsFilterGetName"; + case 290: return "_wrap_helicsFilterSet"; + case 291: return "_wrap_helicsFilterSetString"; + case 292: return "_wrap_helicsFilterAddDestinationTarget"; + case 293: return "_wrap_helicsFilterAddSourceTarget"; + case 294: return "_wrap_helicsFilterAddDeliveryEndpoint"; + case 295: return "_wrap_helicsFilterRemoveTarget"; + case 296: return "_wrap_helicsFilterRemoveDeliveryEndpoint"; + case 297: return "_wrap_helicsFilterGetInfo"; + case 298: return "_wrap_helicsFilterSetInfo"; + case 299: return "_wrap_helicsFilterSetOption"; + case 300: return "_wrap_helicsFilterGetOption"; default: return 0; } } @@ -14704,210 +14790,212 @@ void mexFunction(int resc, mxArray *resv[], int argc, const mxArray *argv[]) { case 92: flag=_wrap_helicsFederateInfoSetTimeProperty(resc,resv,argc,(mxArray**)(argv)); break; case 93: flag=_wrap_helicsFederateInfoSetIntegerProperty(resc,resv,argc,(mxArray**)(argv)); break; case 94: flag=_wrap_helicsFederateRegisterInterfaces(resc,resv,argc,(mxArray**)(argv)); break; - case 95: flag=_wrap_helicsFederateFinalize(resc,resv,argc,(mxArray**)(argv)); break; - case 96: flag=_wrap_helicsFederateFinalizeAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 97: flag=_wrap_helicsFederateFinalizeComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 98: flag=_wrap_helicsFederateFree(resc,resv,argc,(mxArray**)(argv)); break; - case 99: flag=_wrap_helicsCloseLibrary(resc,resv,argc,(mxArray**)(argv)); break; - case 100: flag=_wrap_helicsFederateEnterInitializingMode(resc,resv,argc,(mxArray**)(argv)); break; - case 101: flag=_wrap_helicsFederateEnterInitializingModeAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 102: flag=_wrap_helicsFederateIsAsyncOperationCompleted(resc,resv,argc,(mxArray**)(argv)); break; - case 103: flag=_wrap_helicsFederateEnterInitializingModeComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 104: flag=_wrap_helicsFederateEnterExecutingMode(resc,resv,argc,(mxArray**)(argv)); break; - case 105: flag=_wrap_helicsFederateEnterExecutingModeAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 106: flag=_wrap_helicsFederateEnterExecutingModeComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 107: flag=_wrap_helicsFederateEnterExecutingModeIterative(resc,resv,argc,(mxArray**)(argv)); break; - case 108: flag=_wrap_helicsFederateEnterExecutingModeIterativeAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 109: flag=_wrap_helicsFederateEnterExecutingModeIterativeComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 110: flag=_wrap_helicsFederateGetState(resc,resv,argc,(mxArray**)(argv)); break; - case 111: flag=_wrap_helicsFederateGetCoreObject(resc,resv,argc,(mxArray**)(argv)); break; - case 112: flag=_wrap_helicsFederateRequestTime(resc,resv,argc,(mxArray**)(argv)); break; - case 113: flag=_wrap_helicsFederateRequestTimeAdvance(resc,resv,argc,(mxArray**)(argv)); break; - case 114: flag=_wrap_helicsFederateRequestNextStep(resc,resv,argc,(mxArray**)(argv)); break; - case 115: flag=_wrap_helicsFederateRequestTimeIterative(resc,resv,argc,(mxArray**)(argv)); break; - case 116: flag=_wrap_helicsFederateRequestTimeAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 117: flag=_wrap_helicsFederateRequestTimeComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 118: flag=_wrap_helicsFederateRequestTimeIterativeAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 119: flag=_wrap_helicsFederateRequestTimeIterativeComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 120: flag=_wrap_helicsFederateGetName(resc,resv,argc,(mxArray**)(argv)); break; - case 121: flag=_wrap_helicsFederateSetTimeProperty(resc,resv,argc,(mxArray**)(argv)); break; - case 122: flag=_wrap_helicsFederateSetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; - case 123: flag=_wrap_helicsFederateSetSeparator(resc,resv,argc,(mxArray**)(argv)); break; - case 124: flag=_wrap_helicsFederateSetIntegerProperty(resc,resv,argc,(mxArray**)(argv)); break; - case 125: flag=_wrap_helicsFederateGetTimeProperty(resc,resv,argc,(mxArray**)(argv)); break; - case 126: flag=_wrap_helicsFederateGetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; - case 127: flag=_wrap_helicsFederateGetIntegerProperty(resc,resv,argc,(mxArray**)(argv)); break; - case 128: flag=_wrap_helicsFederateGetCurrentTime(resc,resv,argc,(mxArray**)(argv)); break; - case 129: flag=_wrap_helicsFederateSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; - case 130: flag=_wrap_helicsFederateSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; - case 131: flag=_wrap_helicsFederateLogErrorMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 132: flag=_wrap_helicsFederateLogWarningMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 133: flag=_wrap_helicsFederateLogInfoMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 134: flag=_wrap_helicsFederateLogDebugMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 135: flag=_wrap_helicsFederateLogLevelMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 136: flag=_wrap_helicsCoreSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; - case 137: flag=_wrap_helicsBrokerSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; - case 138: flag=_wrap_helicsCoreSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; - case 139: flag=_wrap_helicsBrokerSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; - case 140: flag=_wrap_helicsCreateQuery(resc,resv,argc,(mxArray**)(argv)); break; - case 141: flag=_wrap_helicsQueryExecute(resc,resv,argc,(mxArray**)(argv)); break; - case 142: flag=_wrap_helicsQueryCoreExecute(resc,resv,argc,(mxArray**)(argv)); break; - case 143: flag=_wrap_helicsQueryBrokerExecute(resc,resv,argc,(mxArray**)(argv)); break; - case 144: flag=_wrap_helicsQueryExecuteAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 145: flag=_wrap_helicsQueryExecuteComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 146: flag=_wrap_helicsQueryIsCompleted(resc,resv,argc,(mxArray**)(argv)); break; - case 147: flag=_wrap_helicsQueryFree(resc,resv,argc,(mxArray**)(argv)); break; - case 148: flag=_wrap_helicsCleanupLibrary(resc,resv,argc,(mxArray**)(argv)); break; - case 149: flag=_wrap_helicsFederateRegisterSubscription(resc,resv,argc,(mxArray**)(argv)); break; - case 150: flag=_wrap_helicsFederateRegisterPublication(resc,resv,argc,(mxArray**)(argv)); break; - case 151: flag=_wrap_helicsFederateRegisterTypePublication(resc,resv,argc,(mxArray**)(argv)); break; - case 152: flag=_wrap_helicsFederateRegisterGlobalPublication(resc,resv,argc,(mxArray**)(argv)); break; - case 153: flag=_wrap_helicsFederateRegisterGlobalTypePublication(resc,resv,argc,(mxArray**)(argv)); break; - case 154: flag=_wrap_helicsFederateRegisterInput(resc,resv,argc,(mxArray**)(argv)); break; - case 155: flag=_wrap_helicsFederateRegisterTypeInput(resc,resv,argc,(mxArray**)(argv)); break; - case 156: flag=_wrap_helicsFederateRegisterGlobalInput(resc,resv,argc,(mxArray**)(argv)); break; - case 157: flag=_wrap_helicsFederateRegisterGlobalTypeInput(resc,resv,argc,(mxArray**)(argv)); break; - case 158: flag=_wrap_helicsFederateGetPublication(resc,resv,argc,(mxArray**)(argv)); break; - case 159: flag=_wrap_helicsFederateGetPublicationByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 160: flag=_wrap_helicsFederateGetInput(resc,resv,argc,(mxArray**)(argv)); break; - case 161: flag=_wrap_helicsFederateGetInputByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 162: flag=_wrap_helicsFederateGetSubscription(resc,resv,argc,(mxArray**)(argv)); break; - case 163: flag=_wrap_helicsFederateClearUpdates(resc,resv,argc,(mxArray**)(argv)); break; - case 164: flag=_wrap_helicsFederateRegisterFromPublicationJSON(resc,resv,argc,(mxArray**)(argv)); break; - case 165: flag=_wrap_helicsFederatePublishJSON(resc,resv,argc,(mxArray**)(argv)); break; - case 166: flag=_wrap_helicsPublicationPublishRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 167: flag=_wrap_helicsPublicationPublishString(resc,resv,argc,(mxArray**)(argv)); break; - case 168: flag=_wrap_helicsPublicationPublishInteger(resc,resv,argc,(mxArray**)(argv)); break; - case 169: flag=_wrap_helicsPublicationPublishBoolean(resc,resv,argc,(mxArray**)(argv)); break; - case 170: flag=_wrap_helicsPublicationPublishDouble(resc,resv,argc,(mxArray**)(argv)); break; - case 171: flag=_wrap_helicsPublicationPublishTime(resc,resv,argc,(mxArray**)(argv)); break; - case 172: flag=_wrap_helicsPublicationPublishChar(resc,resv,argc,(mxArray**)(argv)); break; - case 173: flag=_wrap_helicsPublicationPublishComplex(resc,resv,argc,(mxArray**)(argv)); break; - case 174: flag=_wrap_helicsPublicationPublishVector(resc,resv,argc,(mxArray**)(argv)); break; - case 175: flag=_wrap_helicsPublicationPublishNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; - case 176: flag=_wrap_helicsPublicationAddTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 177: flag=_wrap_helicsInputAddTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 178: flag=_wrap_helicsInputGetRawValueSize(resc,resv,argc,(mxArray**)(argv)); break; - case 179: flag=_wrap_helicsInputGetRawValue(resc,resv,argc,(mxArray**)(argv)); break; - case 180: flag=_wrap_helicsInputGetStringSize(resc,resv,argc,(mxArray**)(argv)); break; - case 181: flag=_wrap_helicsInputGetString(resc,resv,argc,(mxArray**)(argv)); break; - case 182: flag=_wrap_helicsInputGetInteger(resc,resv,argc,(mxArray**)(argv)); break; - case 183: flag=_wrap_helicsInputGetBoolean(resc,resv,argc,(mxArray**)(argv)); break; - case 184: flag=_wrap_helicsInputGetDouble(resc,resv,argc,(mxArray**)(argv)); break; - case 185: flag=_wrap_helicsInputGetTime(resc,resv,argc,(mxArray**)(argv)); break; - case 186: flag=_wrap_helicsInputGetChar(resc,resv,argc,(mxArray**)(argv)); break; - case 187: flag=_wrap_helicsInputGetComplex(resc,resv,argc,(mxArray**)(argv)); break; - case 188: flag=_wrap_helicsInputGetVectorSize(resc,resv,argc,(mxArray**)(argv)); break; - case 189: flag=_wrap_helicsInputGetVector(resc,resv,argc,(mxArray**)(argv)); break; - case 190: flag=_wrap_helicsInputGetNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; - case 191: flag=_wrap_helicsInputSetDefaultRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 192: flag=_wrap_helicsInputSetDefaultString(resc,resv,argc,(mxArray**)(argv)); break; - case 193: flag=_wrap_helicsInputSetDefaultInteger(resc,resv,argc,(mxArray**)(argv)); break; - case 194: flag=_wrap_helicsInputSetDefaultBoolean(resc,resv,argc,(mxArray**)(argv)); break; - case 195: flag=_wrap_helicsInputSetDefaultTime(resc,resv,argc,(mxArray**)(argv)); break; - case 196: flag=_wrap_helicsInputSetDefaultChar(resc,resv,argc,(mxArray**)(argv)); break; - case 197: flag=_wrap_helicsInputSetDefaultDouble(resc,resv,argc,(mxArray**)(argv)); break; - case 198: flag=_wrap_helicsInputSetDefaultComplex(resc,resv,argc,(mxArray**)(argv)); break; - case 199: flag=_wrap_helicsInputSetDefaultVector(resc,resv,argc,(mxArray**)(argv)); break; - case 200: flag=_wrap_helicsInputSetDefaultNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; - case 201: flag=_wrap_helicsInputGetType(resc,resv,argc,(mxArray**)(argv)); break; - case 202: flag=_wrap_helicsInputGetPublicationType(resc,resv,argc,(mxArray**)(argv)); break; - case 203: flag=_wrap_helicsPublicationGetType(resc,resv,argc,(mxArray**)(argv)); break; - case 204: flag=_wrap_helicsInputGetKey(resc,resv,argc,(mxArray**)(argv)); break; - case 205: flag=_wrap_helicsSubscriptionGetKey(resc,resv,argc,(mxArray**)(argv)); break; - case 206: flag=_wrap_helicsPublicationGetKey(resc,resv,argc,(mxArray**)(argv)); break; - case 207: flag=_wrap_helicsInputGetUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 208: flag=_wrap_helicsInputGetInjectionUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 209: flag=_wrap_helicsInputGetExtractionUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 210: flag=_wrap_helicsPublicationGetUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 211: flag=_wrap_helicsInputGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 212: flag=_wrap_helicsInputSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 213: flag=_wrap_helicsPublicationGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 214: flag=_wrap_helicsPublicationSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 215: flag=_wrap_helicsInputGetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 216: flag=_wrap_helicsInputSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 217: flag=_wrap_helicsPublicationGetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 218: flag=_wrap_helicsPublicationSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 219: flag=_wrap_helicsPublicationSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; - case 220: flag=_wrap_helicsInputSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; - case 221: flag=_wrap_helicsInputIsUpdated(resc,resv,argc,(mxArray**)(argv)); break; - case 222: flag=_wrap_helicsInputLastUpdateTime(resc,resv,argc,(mxArray**)(argv)); break; - case 223: flag=_wrap_helicsInputClearUpdate(resc,resv,argc,(mxArray**)(argv)); break; - case 224: flag=_wrap_helicsFederateGetPublicationCount(resc,resv,argc,(mxArray**)(argv)); break; - case 225: flag=_wrap_helicsFederateGetInputCount(resc,resv,argc,(mxArray**)(argv)); break; - case 226: flag=_wrap_helicsFederateRegisterEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 227: flag=_wrap_helicsFederateRegisterGlobalEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 228: flag=_wrap_helicsFederateGetEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 229: flag=_wrap_helicsFederateGetEndpointByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 230: flag=_wrap_helicsEndpointSetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 231: flag=_wrap_helicsEndpointGetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 232: flag=_wrap_helicsEndpointSendMessageRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 233: flag=_wrap_helicsEndpointSendEventRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 234: flag=_wrap_helicsEndpointSendMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 235: flag=_wrap_helicsEndpointSendMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 236: flag=_wrap_helicsEndpointSubscribe(resc,resv,argc,(mxArray**)(argv)); break; - case 237: flag=_wrap_helicsFederateHasMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 238: flag=_wrap_helicsEndpointHasMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 239: flag=_wrap_helicsFederatePendingMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 240: flag=_wrap_helicsEndpointPendingMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 241: flag=_wrap_helicsEndpointGetMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 242: flag=_wrap_helicsEndpointGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 243: flag=_wrap_helicsFederateGetMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 244: flag=_wrap_helicsFederateGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 245: flag=_wrap_helicsFederateCreateMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 246: flag=_wrap_helicsFederateClearMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 247: flag=_wrap_helicsEndpointClearMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 248: flag=_wrap_helicsEndpointGetType(resc,resv,argc,(mxArray**)(argv)); break; - case 249: flag=_wrap_helicsEndpointGetName(resc,resv,argc,(mxArray**)(argv)); break; - case 250: flag=_wrap_helicsFederateGetEndpointCount(resc,resv,argc,(mxArray**)(argv)); break; - case 251: flag=_wrap_helicsEndpointGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 252: flag=_wrap_helicsEndpointSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 253: flag=_wrap_helicsEndpointSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 254: flag=_wrap_helicsEndpointGetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 255: flag=_wrap_helicsMessageGetSource(resc,resv,argc,(mxArray**)(argv)); break; - case 256: flag=_wrap_helicsMessageGetDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 257: flag=_wrap_helicsMessageGetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; - case 258: flag=_wrap_helicsMessageGetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 259: flag=_wrap_helicsMessageGetTime(resc,resv,argc,(mxArray**)(argv)); break; - case 260: flag=_wrap_helicsMessageGetString(resc,resv,argc,(mxArray**)(argv)); break; - case 261: flag=_wrap_helicsMessageGetMessageID(resc,resv,argc,(mxArray**)(argv)); break; - case 262: flag=_wrap_helicsMessageCheckFlag(resc,resv,argc,(mxArray**)(argv)); break; - case 263: flag=_wrap_helicsMessageGetRawDataSize(resc,resv,argc,(mxArray**)(argv)); break; - case 264: flag=_wrap_helicsMessageGetRawData(resc,resv,argc,(mxArray**)(argv)); break; - case 265: flag=_wrap_helicsMessageIsValid(resc,resv,argc,(mxArray**)(argv)); break; - case 266: flag=_wrap_helicsMessageSetSource(resc,resv,argc,(mxArray**)(argv)); break; - case 267: flag=_wrap_helicsMessageSetDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 268: flag=_wrap_helicsMessageSetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; - case 269: flag=_wrap_helicsMessageSetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 270: flag=_wrap_helicsMessageSetTime(resc,resv,argc,(mxArray**)(argv)); break; - case 271: flag=_wrap_helicsMessageReserve(resc,resv,argc,(mxArray**)(argv)); break; - case 272: flag=_wrap_helicsMessageSetMessageID(resc,resv,argc,(mxArray**)(argv)); break; - case 273: flag=_wrap_helicsMessageClearFlags(resc,resv,argc,(mxArray**)(argv)); break; - case 274: flag=_wrap_helicsMessageSetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; - case 275: flag=_wrap_helicsMessageSetString(resc,resv,argc,(mxArray**)(argv)); break; - case 276: flag=_wrap_helicsMessageSetData(resc,resv,argc,(mxArray**)(argv)); break; - case 277: flag=_wrap_helicsMessageAppendData(resc,resv,argc,(mxArray**)(argv)); break; - case 278: flag=_wrap_helicsFederateRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 279: flag=_wrap_helicsFederateRegisterGlobalFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 280: flag=_wrap_helicsFederateRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 281: flag=_wrap_helicsFederateRegisterGlobalCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 282: flag=_wrap_helicsCoreRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 283: flag=_wrap_helicsCoreRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 284: flag=_wrap_helicsFederateGetFilterCount(resc,resv,argc,(mxArray**)(argv)); break; - case 285: flag=_wrap_helicsFederateGetFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 286: flag=_wrap_helicsFederateGetFilterByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 287: flag=_wrap_helicsFilterGetName(resc,resv,argc,(mxArray**)(argv)); break; - case 288: flag=_wrap_helicsFilterSet(resc,resv,argc,(mxArray**)(argv)); break; - case 289: flag=_wrap_helicsFilterSetString(resc,resv,argc,(mxArray**)(argv)); break; - case 290: flag=_wrap_helicsFilterAddDestinationTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 291: flag=_wrap_helicsFilterAddSourceTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 292: flag=_wrap_helicsFilterAddDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 293: flag=_wrap_helicsFilterRemoveTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 294: flag=_wrap_helicsFilterRemoveDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 295: flag=_wrap_helicsFilterGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 296: flag=_wrap_helicsFilterSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 297: flag=_wrap_helicsFilterSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 298: flag=_wrap_helicsFilterGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 95: flag=_wrap_helicsFederateGlobalError(resc,resv,argc,(mxArray**)(argv)); break; + case 96: flag=_wrap_helicsFederateLocalError(resc,resv,argc,(mxArray**)(argv)); break; + case 97: flag=_wrap_helicsFederateFinalize(resc,resv,argc,(mxArray**)(argv)); break; + case 98: flag=_wrap_helicsFederateFinalizeAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 99: flag=_wrap_helicsFederateFinalizeComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 100: flag=_wrap_helicsFederateFree(resc,resv,argc,(mxArray**)(argv)); break; + case 101: flag=_wrap_helicsCloseLibrary(resc,resv,argc,(mxArray**)(argv)); break; + case 102: flag=_wrap_helicsFederateEnterInitializingMode(resc,resv,argc,(mxArray**)(argv)); break; + case 103: flag=_wrap_helicsFederateEnterInitializingModeAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 104: flag=_wrap_helicsFederateIsAsyncOperationCompleted(resc,resv,argc,(mxArray**)(argv)); break; + case 105: flag=_wrap_helicsFederateEnterInitializingModeComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 106: flag=_wrap_helicsFederateEnterExecutingMode(resc,resv,argc,(mxArray**)(argv)); break; + case 107: flag=_wrap_helicsFederateEnterExecutingModeAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 108: flag=_wrap_helicsFederateEnterExecutingModeComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 109: flag=_wrap_helicsFederateEnterExecutingModeIterative(resc,resv,argc,(mxArray**)(argv)); break; + case 110: flag=_wrap_helicsFederateEnterExecutingModeIterativeAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 111: flag=_wrap_helicsFederateEnterExecutingModeIterativeComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 112: flag=_wrap_helicsFederateGetState(resc,resv,argc,(mxArray**)(argv)); break; + case 113: flag=_wrap_helicsFederateGetCoreObject(resc,resv,argc,(mxArray**)(argv)); break; + case 114: flag=_wrap_helicsFederateRequestTime(resc,resv,argc,(mxArray**)(argv)); break; + case 115: flag=_wrap_helicsFederateRequestTimeAdvance(resc,resv,argc,(mxArray**)(argv)); break; + case 116: flag=_wrap_helicsFederateRequestNextStep(resc,resv,argc,(mxArray**)(argv)); break; + case 117: flag=_wrap_helicsFederateRequestTimeIterative(resc,resv,argc,(mxArray**)(argv)); break; + case 118: flag=_wrap_helicsFederateRequestTimeAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 119: flag=_wrap_helicsFederateRequestTimeComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 120: flag=_wrap_helicsFederateRequestTimeIterativeAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 121: flag=_wrap_helicsFederateRequestTimeIterativeComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 122: flag=_wrap_helicsFederateGetName(resc,resv,argc,(mxArray**)(argv)); break; + case 123: flag=_wrap_helicsFederateSetTimeProperty(resc,resv,argc,(mxArray**)(argv)); break; + case 124: flag=_wrap_helicsFederateSetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; + case 125: flag=_wrap_helicsFederateSetSeparator(resc,resv,argc,(mxArray**)(argv)); break; + case 126: flag=_wrap_helicsFederateSetIntegerProperty(resc,resv,argc,(mxArray**)(argv)); break; + case 127: flag=_wrap_helicsFederateGetTimeProperty(resc,resv,argc,(mxArray**)(argv)); break; + case 128: flag=_wrap_helicsFederateGetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; + case 129: flag=_wrap_helicsFederateGetIntegerProperty(resc,resv,argc,(mxArray**)(argv)); break; + case 130: flag=_wrap_helicsFederateGetCurrentTime(resc,resv,argc,(mxArray**)(argv)); break; + case 131: flag=_wrap_helicsFederateSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; + case 132: flag=_wrap_helicsFederateSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; + case 133: flag=_wrap_helicsFederateLogErrorMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 134: flag=_wrap_helicsFederateLogWarningMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 135: flag=_wrap_helicsFederateLogInfoMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 136: flag=_wrap_helicsFederateLogDebugMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 137: flag=_wrap_helicsFederateLogLevelMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 138: flag=_wrap_helicsCoreSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; + case 139: flag=_wrap_helicsBrokerSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; + case 140: flag=_wrap_helicsCoreSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; + case 141: flag=_wrap_helicsBrokerSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; + case 142: flag=_wrap_helicsCreateQuery(resc,resv,argc,(mxArray**)(argv)); break; + case 143: flag=_wrap_helicsQueryExecute(resc,resv,argc,(mxArray**)(argv)); break; + case 144: flag=_wrap_helicsQueryCoreExecute(resc,resv,argc,(mxArray**)(argv)); break; + case 145: flag=_wrap_helicsQueryBrokerExecute(resc,resv,argc,(mxArray**)(argv)); break; + case 146: flag=_wrap_helicsQueryExecuteAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 147: flag=_wrap_helicsQueryExecuteComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 148: flag=_wrap_helicsQueryIsCompleted(resc,resv,argc,(mxArray**)(argv)); break; + case 149: flag=_wrap_helicsQueryFree(resc,resv,argc,(mxArray**)(argv)); break; + case 150: flag=_wrap_helicsCleanupLibrary(resc,resv,argc,(mxArray**)(argv)); break; + case 151: flag=_wrap_helicsFederateRegisterSubscription(resc,resv,argc,(mxArray**)(argv)); break; + case 152: flag=_wrap_helicsFederateRegisterPublication(resc,resv,argc,(mxArray**)(argv)); break; + case 153: flag=_wrap_helicsFederateRegisterTypePublication(resc,resv,argc,(mxArray**)(argv)); break; + case 154: flag=_wrap_helicsFederateRegisterGlobalPublication(resc,resv,argc,(mxArray**)(argv)); break; + case 155: flag=_wrap_helicsFederateRegisterGlobalTypePublication(resc,resv,argc,(mxArray**)(argv)); break; + case 156: flag=_wrap_helicsFederateRegisterInput(resc,resv,argc,(mxArray**)(argv)); break; + case 157: flag=_wrap_helicsFederateRegisterTypeInput(resc,resv,argc,(mxArray**)(argv)); break; + case 158: flag=_wrap_helicsFederateRegisterGlobalInput(resc,resv,argc,(mxArray**)(argv)); break; + case 159: flag=_wrap_helicsFederateRegisterGlobalTypeInput(resc,resv,argc,(mxArray**)(argv)); break; + case 160: flag=_wrap_helicsFederateGetPublication(resc,resv,argc,(mxArray**)(argv)); break; + case 161: flag=_wrap_helicsFederateGetPublicationByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 162: flag=_wrap_helicsFederateGetInput(resc,resv,argc,(mxArray**)(argv)); break; + case 163: flag=_wrap_helicsFederateGetInputByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 164: flag=_wrap_helicsFederateGetSubscription(resc,resv,argc,(mxArray**)(argv)); break; + case 165: flag=_wrap_helicsFederateClearUpdates(resc,resv,argc,(mxArray**)(argv)); break; + case 166: flag=_wrap_helicsFederateRegisterFromPublicationJSON(resc,resv,argc,(mxArray**)(argv)); break; + case 167: flag=_wrap_helicsFederatePublishJSON(resc,resv,argc,(mxArray**)(argv)); break; + case 168: flag=_wrap_helicsPublicationPublishRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 169: flag=_wrap_helicsPublicationPublishString(resc,resv,argc,(mxArray**)(argv)); break; + case 170: flag=_wrap_helicsPublicationPublishInteger(resc,resv,argc,(mxArray**)(argv)); break; + case 171: flag=_wrap_helicsPublicationPublishBoolean(resc,resv,argc,(mxArray**)(argv)); break; + case 172: flag=_wrap_helicsPublicationPublishDouble(resc,resv,argc,(mxArray**)(argv)); break; + case 173: flag=_wrap_helicsPublicationPublishTime(resc,resv,argc,(mxArray**)(argv)); break; + case 174: flag=_wrap_helicsPublicationPublishChar(resc,resv,argc,(mxArray**)(argv)); break; + case 175: flag=_wrap_helicsPublicationPublishComplex(resc,resv,argc,(mxArray**)(argv)); break; + case 176: flag=_wrap_helicsPublicationPublishVector(resc,resv,argc,(mxArray**)(argv)); break; + case 177: flag=_wrap_helicsPublicationPublishNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; + case 178: flag=_wrap_helicsPublicationAddTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 179: flag=_wrap_helicsInputAddTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 180: flag=_wrap_helicsInputGetRawValueSize(resc,resv,argc,(mxArray**)(argv)); break; + case 181: flag=_wrap_helicsInputGetRawValue(resc,resv,argc,(mxArray**)(argv)); break; + case 182: flag=_wrap_helicsInputGetStringSize(resc,resv,argc,(mxArray**)(argv)); break; + case 183: flag=_wrap_helicsInputGetString(resc,resv,argc,(mxArray**)(argv)); break; + case 184: flag=_wrap_helicsInputGetInteger(resc,resv,argc,(mxArray**)(argv)); break; + case 185: flag=_wrap_helicsInputGetBoolean(resc,resv,argc,(mxArray**)(argv)); break; + case 186: flag=_wrap_helicsInputGetDouble(resc,resv,argc,(mxArray**)(argv)); break; + case 187: flag=_wrap_helicsInputGetTime(resc,resv,argc,(mxArray**)(argv)); break; + case 188: flag=_wrap_helicsInputGetChar(resc,resv,argc,(mxArray**)(argv)); break; + case 189: flag=_wrap_helicsInputGetComplex(resc,resv,argc,(mxArray**)(argv)); break; + case 190: flag=_wrap_helicsInputGetVectorSize(resc,resv,argc,(mxArray**)(argv)); break; + case 191: flag=_wrap_helicsInputGetVector(resc,resv,argc,(mxArray**)(argv)); break; + case 192: flag=_wrap_helicsInputGetNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; + case 193: flag=_wrap_helicsInputSetDefaultRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 194: flag=_wrap_helicsInputSetDefaultString(resc,resv,argc,(mxArray**)(argv)); break; + case 195: flag=_wrap_helicsInputSetDefaultInteger(resc,resv,argc,(mxArray**)(argv)); break; + case 196: flag=_wrap_helicsInputSetDefaultBoolean(resc,resv,argc,(mxArray**)(argv)); break; + case 197: flag=_wrap_helicsInputSetDefaultTime(resc,resv,argc,(mxArray**)(argv)); break; + case 198: flag=_wrap_helicsInputSetDefaultChar(resc,resv,argc,(mxArray**)(argv)); break; + case 199: flag=_wrap_helicsInputSetDefaultDouble(resc,resv,argc,(mxArray**)(argv)); break; + case 200: flag=_wrap_helicsInputSetDefaultComplex(resc,resv,argc,(mxArray**)(argv)); break; + case 201: flag=_wrap_helicsInputSetDefaultVector(resc,resv,argc,(mxArray**)(argv)); break; + case 202: flag=_wrap_helicsInputSetDefaultNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; + case 203: flag=_wrap_helicsInputGetType(resc,resv,argc,(mxArray**)(argv)); break; + case 204: flag=_wrap_helicsInputGetPublicationType(resc,resv,argc,(mxArray**)(argv)); break; + case 205: flag=_wrap_helicsPublicationGetType(resc,resv,argc,(mxArray**)(argv)); break; + case 206: flag=_wrap_helicsInputGetKey(resc,resv,argc,(mxArray**)(argv)); break; + case 207: flag=_wrap_helicsSubscriptionGetKey(resc,resv,argc,(mxArray**)(argv)); break; + case 208: flag=_wrap_helicsPublicationGetKey(resc,resv,argc,(mxArray**)(argv)); break; + case 209: flag=_wrap_helicsInputGetUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 210: flag=_wrap_helicsInputGetInjectionUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 211: flag=_wrap_helicsInputGetExtractionUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 212: flag=_wrap_helicsPublicationGetUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 213: flag=_wrap_helicsInputGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 214: flag=_wrap_helicsInputSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 215: flag=_wrap_helicsPublicationGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 216: flag=_wrap_helicsPublicationSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 217: flag=_wrap_helicsInputGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 218: flag=_wrap_helicsInputSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 219: flag=_wrap_helicsPublicationGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 220: flag=_wrap_helicsPublicationSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 221: flag=_wrap_helicsPublicationSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; + case 222: flag=_wrap_helicsInputSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; + case 223: flag=_wrap_helicsInputIsUpdated(resc,resv,argc,(mxArray**)(argv)); break; + case 224: flag=_wrap_helicsInputLastUpdateTime(resc,resv,argc,(mxArray**)(argv)); break; + case 225: flag=_wrap_helicsInputClearUpdate(resc,resv,argc,(mxArray**)(argv)); break; + case 226: flag=_wrap_helicsFederateGetPublicationCount(resc,resv,argc,(mxArray**)(argv)); break; + case 227: flag=_wrap_helicsFederateGetInputCount(resc,resv,argc,(mxArray**)(argv)); break; + case 228: flag=_wrap_helicsFederateRegisterEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 229: flag=_wrap_helicsFederateRegisterGlobalEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 230: flag=_wrap_helicsFederateGetEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 231: flag=_wrap_helicsFederateGetEndpointByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 232: flag=_wrap_helicsEndpointSetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 233: flag=_wrap_helicsEndpointGetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 234: flag=_wrap_helicsEndpointSendMessageRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 235: flag=_wrap_helicsEndpointSendEventRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 236: flag=_wrap_helicsEndpointSendMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 237: flag=_wrap_helicsEndpointSendMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 238: flag=_wrap_helicsEndpointSubscribe(resc,resv,argc,(mxArray**)(argv)); break; + case 239: flag=_wrap_helicsFederateHasMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 240: flag=_wrap_helicsEndpointHasMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 241: flag=_wrap_helicsFederatePendingMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 242: flag=_wrap_helicsEndpointPendingMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 243: flag=_wrap_helicsEndpointGetMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 244: flag=_wrap_helicsEndpointGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 245: flag=_wrap_helicsFederateGetMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 246: flag=_wrap_helicsFederateGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 247: flag=_wrap_helicsFederateCreateMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 248: flag=_wrap_helicsFederateClearMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 249: flag=_wrap_helicsEndpointClearMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 250: flag=_wrap_helicsEndpointGetType(resc,resv,argc,(mxArray**)(argv)); break; + case 251: flag=_wrap_helicsEndpointGetName(resc,resv,argc,(mxArray**)(argv)); break; + case 252: flag=_wrap_helicsFederateGetEndpointCount(resc,resv,argc,(mxArray**)(argv)); break; + case 253: flag=_wrap_helicsEndpointGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 254: flag=_wrap_helicsEndpointSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 255: flag=_wrap_helicsEndpointSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 256: flag=_wrap_helicsEndpointGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 257: flag=_wrap_helicsMessageGetSource(resc,resv,argc,(mxArray**)(argv)); break; + case 258: flag=_wrap_helicsMessageGetDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 259: flag=_wrap_helicsMessageGetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; + case 260: flag=_wrap_helicsMessageGetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 261: flag=_wrap_helicsMessageGetTime(resc,resv,argc,(mxArray**)(argv)); break; + case 262: flag=_wrap_helicsMessageGetString(resc,resv,argc,(mxArray**)(argv)); break; + case 263: flag=_wrap_helicsMessageGetMessageID(resc,resv,argc,(mxArray**)(argv)); break; + case 264: flag=_wrap_helicsMessageCheckFlag(resc,resv,argc,(mxArray**)(argv)); break; + case 265: flag=_wrap_helicsMessageGetRawDataSize(resc,resv,argc,(mxArray**)(argv)); break; + case 266: flag=_wrap_helicsMessageGetRawData(resc,resv,argc,(mxArray**)(argv)); break; + case 267: flag=_wrap_helicsMessageIsValid(resc,resv,argc,(mxArray**)(argv)); break; + case 268: flag=_wrap_helicsMessageSetSource(resc,resv,argc,(mxArray**)(argv)); break; + case 269: flag=_wrap_helicsMessageSetDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 270: flag=_wrap_helicsMessageSetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; + case 271: flag=_wrap_helicsMessageSetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 272: flag=_wrap_helicsMessageSetTime(resc,resv,argc,(mxArray**)(argv)); break; + case 273: flag=_wrap_helicsMessageReserve(resc,resv,argc,(mxArray**)(argv)); break; + case 274: flag=_wrap_helicsMessageSetMessageID(resc,resv,argc,(mxArray**)(argv)); break; + case 275: flag=_wrap_helicsMessageClearFlags(resc,resv,argc,(mxArray**)(argv)); break; + case 276: flag=_wrap_helicsMessageSetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; + case 277: flag=_wrap_helicsMessageSetString(resc,resv,argc,(mxArray**)(argv)); break; + case 278: flag=_wrap_helicsMessageSetData(resc,resv,argc,(mxArray**)(argv)); break; + case 279: flag=_wrap_helicsMessageAppendData(resc,resv,argc,(mxArray**)(argv)); break; + case 280: flag=_wrap_helicsFederateRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 281: flag=_wrap_helicsFederateRegisterGlobalFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 282: flag=_wrap_helicsFederateRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 283: flag=_wrap_helicsFederateRegisterGlobalCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 284: flag=_wrap_helicsCoreRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 285: flag=_wrap_helicsCoreRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 286: flag=_wrap_helicsFederateGetFilterCount(resc,resv,argc,(mxArray**)(argv)); break; + case 287: flag=_wrap_helicsFederateGetFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 288: flag=_wrap_helicsFederateGetFilterByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 289: flag=_wrap_helicsFilterGetName(resc,resv,argc,(mxArray**)(argv)); break; + case 290: flag=_wrap_helicsFilterSet(resc,resv,argc,(mxArray**)(argv)); break; + case 291: flag=_wrap_helicsFilterSetString(resc,resv,argc,(mxArray**)(argv)); break; + case 292: flag=_wrap_helicsFilterAddDestinationTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 293: flag=_wrap_helicsFilterAddSourceTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 294: flag=_wrap_helicsFilterAddDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 295: flag=_wrap_helicsFilterRemoveTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 296: flag=_wrap_helicsFilterRemoveDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 297: flag=_wrap_helicsFilterGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 298: flag=_wrap_helicsFilterSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 299: flag=_wrap_helicsFilterSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 300: flag=_wrap_helicsFilterGetOption(resc,resv,argc,(mxArray**)(argv)); break; default: flag=1, SWIG_Error(SWIG_RuntimeError, "No function id %d.", fcn_id); } if (flag) { diff --git a/interfaces/python/interface/helics.py b/interfaces/python/interface/helics.py index da7ddd14d7..035174377e 100644 --- a/interfaces/python/interface/helics.py +++ b/interfaces/python/interface/helics.py @@ -170,6 +170,8 @@ class _SwigNonDynamicMeta(type): r""" used to clear the HELICS_DELAY_INIT_ENTRY flag in cores""" helics_flag_ignore_time_mismatch_warnings = _helics.helics_flag_ignore_time_mismatch_warnings r""" used to not display warnings on mismatched requested times""" +helics_flag_terminate_on_error = _helics.helics_flag_terminate_on_error +r""" specify that a federate error should terminate the federation""" helics_log_level_no_print = _helics.helics_log_level_no_print r""" don't print anything except a few catastrophic errors""" helics_log_level_error = _helics.helics_log_level_error @@ -214,6 +216,8 @@ class _SwigNonDynamicMeta(type): r""" insufficient space is available to store requested data""" helics_error_other = _helics.helics_error_other r""" the function produced a helics error of some other type""" +helics_error_fatal = _helics.helics_error_fatal +r""" global fatal error for federation""" helics_error_external_type = _helics.helics_error_external_type r""" an unknown non-helics error was produced""" helics_property_time_delta = _helics.helics_property_time_delta @@ -1040,6 +1044,33 @@ def helicsFederateRegisterInterfaces(fed: "helics_federate", file: "char const * """ return _helics.helicsFederateRegisterInterfaces(fed, file) +def helicsFederateGlobalError(fed: "helics_federate", error_code: "int", error_string: "char const *") -> "void": + r""" + generate a global Error from a federate + A global error halts the co-simulation completely + :type fed: void + :param fed: the federate to create an error in + :type error_code: int + :param error_code: the integer code for the error + :type error_string: string + :param error_string: a string describing the error + """ + return _helics.helicsFederateGlobalError(fed, error_code, error_string) + +def helicsFederateLocalError(fed: "helics_federate", error_code: "int", error_string: "char const *") -> "void": + r""" + generate a local error in a federate + this will propagate through the co-simulation but not necessarily halt the co-simulation, it has a similar effect to finalize but does + allow some interaction with a core for a brief time. + :type fed: void + :param fed: the federate to create an error in + :type error_code: int + :param error_code: the integer code for the error + :type error_string: string + :param error_string: a string describing the error + """ + return _helics.helicsFederateLocalError(fed, error_code, error_string) + def helicsFederateFinalize(fed: "helics_federate") -> "void": r""" finalize the federate this function halts all communication in the federate and disconnects it from the core""" return _helics.helicsFederateFinalize(fed) diff --git a/interfaces/python/interface/helicsPython.c b/interfaces/python/interface/helicsPython.c index dfc9805c62..7ca45b9f63 100644 --- a/interfaces/python/interface/helicsPython.c +++ b/interfaces/python/interface/helicsPython.c @@ -6708,6 +6708,82 @@ SWIGINTERN PyObject *_wrap_helicsFederateRegisterInterfaces(PyObject *SWIGUNUSED } +SWIGINTERN PyObject *_wrap_helicsFederateGlobalError(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + helics_federate arg1 = (helics_federate) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int res1 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + PyObject *swig_obj[3] ; + + if (!SWIG_Python_UnpackTuple(args, "helicsFederateGlobalError", 3, 3, swig_obj)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0],SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "helicsFederateGlobalError" "', argument " "1"" of type '" "helics_federate""'"); + } + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "helicsFederateGlobalError" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_AsCharPtrAndSize(swig_obj[2], &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "helicsFederateGlobalError" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = (char *)(buf3); + helicsFederateGlobalError(arg1,arg2,(char const *)arg3); + resultobj = SWIG_Py_Void(); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_helicsFederateLocalError(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + helics_federate arg1 = (helics_federate) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int res1 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + PyObject *swig_obj[3] ; + + if (!SWIG_Python_UnpackTuple(args, "helicsFederateLocalError", 3, 3, swig_obj)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0],SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "helicsFederateLocalError" "', argument " "1"" of type '" "helics_federate""'"); + } + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "helicsFederateLocalError" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_AsCharPtrAndSize(swig_obj[2], &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "helicsFederateLocalError" "', argument " "3"" of type '" "char const *""'"); + } + arg3 = (char *)(buf3); + helicsFederateLocalError(arg1,arg2,(char const *)arg3); + resultobj = SWIG_Py_Void(); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + SWIGINTERN PyObject *_wrap_helicsFederateFinalize(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; helics_federate arg1 = (helics_federate) 0 ; @@ -16095,6 +16171,27 @@ static PyMethodDef SwigMethods[] = { " :type file: string\n" " :param file: the name of a file to load the interfaces from either JSON, or TOML\n" ""}, + { "helicsFederateGlobalError", _wrap_helicsFederateGlobalError, METH_VARARGS, "\n" + " generate a global Error from a federate\n" + "A global error halts the co-simulation completely\n" + ":type fed: void\n" + ":param fed: the federate to create an error in\n" + ":type error_code: int\n" + ":param error_code: the integer code for the error\n" + ":type error_string: string\n" + ":param error_string: a string describing the error\n" + ""}, + { "helicsFederateLocalError", _wrap_helicsFederateLocalError, METH_VARARGS, "\n" + " generate a local error in a federate\n" + "this will propagate through the co-simulation but not necessarily halt the co-simulation, it has a similar effect to finalize but does\n" + "allow some interaction with a core for a brief time.\n" + ":type fed: void\n" + ":param fed: the federate to create an error in\n" + ":type error_code: int\n" + ":param error_code: the integer code for the error\n" + ":type error_string: string\n" + ":param error_string: a string describing the error\n" + ""}, { "helicsFederateFinalize", _wrap_helicsFederateFinalize, METH_O, " finalize the federate this function halts all communication in the federate and disconnects it from the core"}, { "helicsFederateFinalizeAsync", _wrap_helicsFederateFinalizeAsync, METH_O, " finalize the federate in an async call"}, { "helicsFederateFinalizeComplete", _wrap_helicsFederateFinalizeComplete, METH_O, " complete the asynchronous finalize call"}, @@ -18647,6 +18744,7 @@ SWIG_init(void) { SWIG_Python_SetConstant(d, "helics_flag_delay_init_entry",SWIG_From_int((int)(helics_flag_delay_init_entry))); SWIG_Python_SetConstant(d, "helics_flag_enable_init_entry",SWIG_From_int((int)(helics_flag_enable_init_entry))); SWIG_Python_SetConstant(d, "helics_flag_ignore_time_mismatch_warnings",SWIG_From_int((int)(helics_flag_ignore_time_mismatch_warnings))); + SWIG_Python_SetConstant(d, "helics_flag_terminate_on_error",SWIG_From_int((int)(helics_flag_terminate_on_error))); SWIG_Python_SetConstant(d, "helics_log_level_no_print",SWIG_From_int((int)(helics_log_level_no_print))); SWIG_Python_SetConstant(d, "helics_log_level_error",SWIG_From_int((int)(helics_log_level_error))); SWIG_Python_SetConstant(d, "helics_log_level_warning",SWIG_From_int((int)(helics_log_level_warning))); @@ -18669,6 +18767,7 @@ SWIG_init(void) { SWIG_Python_SetConstant(d, "helics_error_execution_failure",SWIG_From_int((int)(helics_error_execution_failure))); SWIG_Python_SetConstant(d, "helics_error_insufficient_space",SWIG_From_int((int)(helics_error_insufficient_space))); SWIG_Python_SetConstant(d, "helics_error_other",SWIG_From_int((int)(helics_error_other))); + SWIG_Python_SetConstant(d, "helics_error_fatal",SWIG_From_int((int)(helics_error_fatal))); SWIG_Python_SetConstant(d, "helics_error_external_type",SWIG_From_int((int)(helics_error_external_type))); SWIG_Python_SetConstant(d, "helics_property_time_delta",SWIG_From_int((int)(helics_property_time_delta))); SWIG_Python_SetConstant(d, "helics_property_time_period",SWIG_From_int((int)(helics_property_time_period))); From 972fe3b8ac99e373251ef0de133d28936135ed8d Mon Sep 17 00:00:00 2001 From: Philip Top Date: Fri, 6 Mar 2020 10:57:40 -0800 Subject: [PATCH 26/32] Add dependency (#1119) * add an addDependency function to the Federate API * Some additional tweaks and update to the changelog * update the API doc with the new function calls * Automated formatting of source files (#1120) Co-authored-by: HELICS-bot Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: HELICS-bot --- CHANGELOG.md | 10 +++-- src/docs/c_api_reference.dox | 6 +++ src/helics/application_api/Federate.cpp | 12 ++++- src/helics/application_api/Federate.hpp | 7 +++ src/helics/core/TimeCoordinator.cpp | 16 +++---- src/helics/cpp98/Federate.hpp | 9 ++++ .../shared_api_library/FederateExport.cpp | 33 +++++++++++++- src/helics/shared_api_library/helics.h | 9 ++++ .../helics/application_api/FederateTests.cpp | 1 + tests/helics/shared_library/SystemTests.cpp | 44 +++++++++++++++++++ .../helics/shared_library/evilInputTests.cpp | 15 +++++++ 11 files changed, 148 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7830b1eebe..07cc1c2ed5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,17 +7,18 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm A note on future revisions. Everything within a major version number should be code compatible (with the exception of experimental interfaces). The most notable example of an experimental interface is the support for multiple source inputs. The APIs to deal with this will change in future minor releases. Everything within a single minor release should be network compatible with other federates on the same minor release number. Compatibility across minor release numbers may be possible in some situations but we are not going to guarantee this as those components are subject to performance improvements and may need to be modified at some point. Patch releases will be limited to bug fixes and other improvements not impacting the public API or network compatibility. Check the [Public API](./docs/Public_API.md) for details on what is included and excluded from the public API and version stability. -## [2.4.1][] - 2020-03-04 -Increased code coverage and additional bug fixes. The error propagation in HELICS was improved such that local errors can be escaled to global errors, and a federate can define errors coming from the federate that are handled appropriately and can halt a co-simulation. +## [2.4.1][] - 2020-03-06 +Increased code coverage and additional bug fixes. The error propagation in HELICS was improved such that local errors can be escalated to global errors, and a federate can define errors coming from the federate that are handled appropriately and can halt a co-simulation. ### Changed - The helics webserver will build by default if the conditions are met - Update filesystem library to [v1.3.0](https://github.com/gulrak/filesystem/releases/tag/v1.3.0) -- The behavior of the Federate *Complete operations to be uniform and consistent -- Configuration of flags and targets for interfaces in json and toml files can be done in multiple sections +- The behavior of the `Federate*Complete` slightly modified to be uniform and consistent, no API changes +- Configuration of flags and targets for interfaces in JSON and TOML files can be done in multiple sections - The benchmark federates have been changed to use a common base benchmark federate class for more consistent behavior - Switched to including netif as a git submodule +- the `error` Function in the C++ API is now the same as `localError` previously it was primary useful for logging and didn't do much, and will be deprecated in the next release. - Updated the GitHub actions (clang-format, swig interface updates, and release builds) to use actions/checkout@v2 - Cleaned up the Windows installer (better component names/descriptions and groups, link to Gitter, and require installing Headers to install SWIG) @@ -37,6 +38,7 @@ Increased code coverage and additional bug fixes. The error propagation in HELI - Sending an event from GitHub Actions release builds to trigger updating additional HELICS packages when a new release is made - `localError`, and `GlobalError` function calls the Federate API and in the C++ and sharedLibrary. - `helics_terminate_on_error` flag to escalate what would be a local error into a global one that will halt the co-simulation. This flag can be specified through the flag to federates or to brokers and cores through a command line option `--terminate_on_error` +- `addDependency` function was added to the C++ Federate API and shared library API, it can add a direct dependency between federates manually. - A 32-bit Windows zip install archive for releases ### Deprecated diff --git a/src/docs/c_api_reference.dox b/src/docs/c_api_reference.dox index d3a50eb633..18efa5ce50 100644 --- a/src/docs/c_api_reference.dox +++ b/src/docs/c_api_reference.dox @@ -43,6 +43,7 @@ functions applying to a \ref helics_core object - \ref helicsCoreGetIdentifier - \ref helicsCoreGetAddress - \ref helicsCoreSetReadyToInit + - \ref helicsCoreConnect - \ref helicsCoreDisconnect - \ref helicsCoreDestroy - \ref helicsCoreFree @@ -96,6 +97,8 @@ Functions applying to all \ref helics_federate objects - \ref helicsFederateClone - \ref helicsFederateIsValid - \ref helicsFederateRegisterInterfaces + - \ref helicsFederateGlobalError + - \ref helicsFederateLocalError - \ref helicsFederateFinalize - \ref helicsFederateFinalizeAsync - \ref helicsFederateFinalizeComplete @@ -130,6 +133,7 @@ Functions applying to all \ref helics_federate objects - \ref helicsFederateGetIntegerProperty - \ref helicsFederateGetCurrentTime - \ref helicsFederateSetGlobal + - \ref helicsFederateAddDependency - \ref helicsFederateSetLogFile - \ref helicsFederateLogErrorMessage - \ref helicsFederateLogWarningMessage @@ -180,6 +184,7 @@ functions applying to a \ref helics_publication object - \ref helicsPublicationSetInfo - \ref helicsPublicationGetOption - \ref helicsPublicationSetOption + - \ref helicsPublicationSetMinimumChange \section input Input interface Functions functions applying to a \ref helics_input object @@ -219,6 +224,7 @@ functions applying to a \ref helics_input object - \ref helicsInputSetInfo - \ref helicsInputGetOption - \ref helicsInputSetOption + - \ref helicsInputSetMinimumChange - \ref helicsInputIsUpdated - \ref helicsInputLastUpdateTime - \ref helicsInputClearUpdate diff --git a/src/helics/application_api/Federate.cpp b/src/helics/application_api/Federate.cpp index b07b2370f3..c754207f5e 100644 --- a/src/helics/application_api/Federate.cpp +++ b/src/helics/application_api/Federate.cpp @@ -1094,7 +1094,17 @@ void Federate::setGlobal(const std::string& valueName, const std::string& value) coreObject->setGlobal(valueName, value); } else { throw(InvalidFunctionCall( - "set set Global cannot be called on uninitialized federate or after finalize call")); + " setGlobal cannot be called on uninitialized federate or after finalize call")); + } +} + +void Federate::addDependency(const std::string& fedName) +{ + if (coreObject) { + coreObject->addDependency(fedID, fedName); + } else { + throw(InvalidFunctionCall( + "addDependency cannot be called on uninitialized federate or after finalize call")); } } diff --git a/src/helics/application_api/Federate.hpp b/src/helics/application_api/Federate.hpp index cb4ba61352..06dd29982d 100644 --- a/src/helics/application_api/Federate.hpp +++ b/src/helics/application_api/Federate.hpp @@ -332,6 +332,13 @@ class HELICS_CXX_EXPORT Federate { @param value the value of the global */ void setGlobal(const std::string& valueName, const std::string& value); + + /** add a dependency for this federate + @details adds an additional internal time dependency for the federate + @param federateName the name of the federate to add a dependency on + */ + void addDependency(const std::string& fedName); + /** define a named global filter interface @param filterName the name of the globally visible filter @param inputType the inputType which the filter can handle diff --git a/src/helics/core/TimeCoordinator.cpp b/src/helics/core/TimeCoordinator.cpp index f85a7bbb56..d1fdbcce25 100644 --- a/src/helics/core/TimeCoordinator.cpp +++ b/src/helics/core/TimeCoordinator.cpp @@ -737,24 +737,24 @@ void TimeCoordinator::processDependencyUpdateMessage(const ActionMessage& cmd) { switch (cmd.action()) { case CMD_ADD_DEPENDENCY: - addDependency(global_federate_id(cmd.source_id)); + addDependency(cmd.source_id); break; case CMD_REMOVE_DEPENDENCY: - removeDependency(global_federate_id(cmd.source_id)); + removeDependency(cmd.source_id); break; case CMD_ADD_DEPENDENT: - addDependent(global_federate_id(cmd.source_id)); + addDependent(cmd.source_id); break; case CMD_REMOVE_DEPENDENT: - removeDependent(global_federate_id(cmd.source_id)); + removeDependent(cmd.source_id); break; case CMD_ADD_INTERDEPENDENCY: - addDependency(global_federate_id(cmd.source_id)); - addDependent(global_federate_id(cmd.source_id)); + addDependency(cmd.source_id); + addDependent(cmd.source_id); break; case CMD_REMOVE_INTERDEPENDENCY: - removeDependency(global_federate_id(cmd.source_id)); - removeDependent(global_federate_id(cmd.source_id)); + removeDependency(cmd.source_id); + removeDependent(cmd.source_id); break; default: break; diff --git a/src/helics/cpp98/Federate.hpp b/src/helics/cpp98/Federate.hpp index baa4736d15..074554964d 100644 --- a/src/helics/cpp98/Federate.hpp +++ b/src/helics/cpp98/Federate.hpp @@ -502,6 +502,15 @@ class Federate { helicsFederateSetGlobal(fed, valueName.c_str(), value.c_str(), hThrowOnError()); } + /** add a dependency for this federate + @details adds an additional internal time dependency for the federate + @param federateName the name of the federate to add a dependency on + */ + void addDependency(const std::string& fedName) + { + helicsFederateAddDependency(fed, fedName.c_str(), hThrowOnError()); + } + /** generate a local federate error @param error_code an error code to give to the error @param error_string a string message associated with the error diff --git a/src/helics/shared_api_library/FederateExport.cpp b/src/helics/shared_api_library/FederateExport.cpp index 8fbbec7b32..b2444bc64f 100644 --- a/src/helics/shared_api_library/FederateExport.cpp +++ b/src/helics/shared_api_library/FederateExport.cpp @@ -1161,7 +1161,38 @@ void helicsFederateSetGlobal(helics_federate fed, const char* valueName, const c } return; } - fedObj->setGlobal(valueName, AS_STRING(value)); + try { + fedObj->setGlobal(valueName, AS_STRING(value)); + } + // LCOV_EXCL_START + catch (...) { + helicsErrorHandler(err); + } + // LCOV_EXCL_STOP +} + +static constexpr char invalidFedNameString[] = "Federate name for dependency cannot be null"; +void helicsFederateAddDependency(helics_federate fed, const char* fedName, helics_error* err) +{ + auto fedObj = getFed(fed, err); + if (fedObj == nullptr) { + return; + } + if (fedName == nullptr) { + if (err != nullptr) { + err->error_code = helics_error_invalid_argument; + err->message = invalidFedNameString; + } + return; + } + try { + fedObj->addDependency(fedName); + } + // LCOV_EXCL_START + catch (...) { + helicsErrorHandler(err); + } + // LCOV_EXCL_STOP } static constexpr char invalidFederateCore[] = "Federate core is not connected"; diff --git a/src/helics/shared_api_library/helics.h b/src/helics/shared_api_library/helics.h index ebdab44f8d..7c4e452a51 100644 --- a/src/helics/shared_api_library/helics.h +++ b/src/helics/shared_api_library/helics.h @@ -909,6 +909,15 @@ HELICS_EXPORT helics_time helicsFederateGetCurrentTime(helics_federate fed, heli */ HELICS_EXPORT void helicsFederateSetGlobal(helics_federate fed, const char* valueName, const char* value, helics_error* err); +/** add a time dependency for a federate. The federate will depend on the given named federate for time synchronization + @param fed the federate to add the dependency for + @param fedName the name of the federate to depend on + @forcpponly + @param[in,out] err a pointer to an error object for catching errors + @endforcpponly + */ +HELICS_EXPORT void helicsFederateAddDependency(helics_federate fed, const char* fedName, helics_error* err); + /** set the logging file for a federate(actually on the core associated with a federate) @param fed the federate to set the log file for @param logFile the name of the log file diff --git a/tests/helics/application_api/FederateTests.cpp b/tests/helics/application_api/FederateTests.cpp index 1e235a021b..56f01ffb6a 100644 --- a/tests/helics/application_api/FederateTests.cpp +++ b/tests/helics/application_api/FederateTests.cpp @@ -968,6 +968,7 @@ TEST(federate_tests, error_after_disconnect) EXPECT_THROW(Fed1->setGlobal("global1", "global1"), helics::InvalidFunctionCall); EXPECT_THROW(Fed1->addSourceTarget(f1, "ept"), helics::InvalidFunctionCall); + EXPECT_THROW(Fed1->addDependency("otherFed"), helics::InvalidFunctionCall); EXPECT_THROW(Fed1->addDestinationTarget(f1, "ept"), helics::InvalidFunctionCall); EXPECT_THROW(Fed1->setFilterOperator(f1, {}), helics::InvalidFunctionCall); diff --git a/tests/helics/shared_library/SystemTests.cpp b/tests/helics/shared_library/SystemTests.cpp index 5f6e8418e6..630ca05342 100644 --- a/tests/helics/shared_library/SystemTests.cpp +++ b/tests/helics/shared_library/SystemTests.cpp @@ -198,6 +198,50 @@ TEST(other_tests, federate_global_value) EXPECT_EQ(helicsBrokerIsConnected(brk), helics_false); } +// test global value creation from a federate and some error pathways for queries and global creation +TEST(other_tests, federate_add_dependency) +{ + auto err = helicsErrorInitialize(); + auto brk = helicsCreateBroker("test", "gbrokerd", "--root", &err); + + auto cr = helicsCreateCore("test", "dcore", "--broker=gbrokerd", &err); + + // test creation of federateInfo from command line arguments + const char* argv[4]; + argv[0] = ""; + argv[1] = "--corename=dcore"; + argv[2] = "--type=test"; + argv[3] = "--period=1.0"; + + auto fi = helicsCreateFederateInfo(); + helicsFederateInfoLoadFromArgs(fi, 4, argv, &err); + helicsFederateInfoSetFlagOption(fi, helics_flag_source_only, true, &err); + + auto fed1 = helicsCreateMessageFederate("fed1", fi, &err); + EXPECT_EQ(err.error_code, 0); + + auto fi2 = helicsCreateFederateInfo(); + helicsFederateInfoLoadFromArgs(fi2, 4, argv, &err); + auto fed2 = helicsCreateMessageFederate("fed2", fi2, &err); + helicsFederateRegisterGlobalEndpoint(fed2, "ept2", nullptr, &err); + + helicsFederateRegisterGlobalEndpoint(fed1, "ept1", nullptr, &err); + + helicsFederateAddDependency(fed1, "fed2", &err); + EXPECT_EQ(err.error_code, 0); + + helicsFederateEnterExecutingModeAsync(fed1, &err); + helicsFederateEnterExecutingMode(fed2, &err); + helicsFederateEnterExecutingModeComplete(fed1, &err); + + helicsFederateInfoFree(fi); + helicsFederateInfoFree(fi2); + helicsFederateFinalize(fed1, &err); + helicsFederateFinalize(fed2, &err); + helicsBrokerFree(brk); + helicsCoreFree(cr); +} + // test core creation from command line arguments TEST(other_tests, core_creation) { diff --git a/tests/helics/shared_library/evilInputTests.cpp b/tests/helics/shared_library/evilInputTests.cpp index 427ee8e656..982b363715 100644 --- a/tests/helics/shared_library/evilInputTests.cpp +++ b/tests/helics/shared_library/evilInputTests.cpp @@ -1668,6 +1668,21 @@ TEST(evil_federate_test, helicsFederateSetGlobal) EXPECT_NE(err.error_code, 0); } +TEST(evil_federate_test, helicsFederateAddDependency) +{ + //void helicsFederateAddDependency(helics_federate fed, const char* fedName, helics_error* err); + char rdata[256]; + helics_federate evil_federate = reinterpret_cast(rdata); + auto err = helicsErrorInitialize(); + err.error_code = 45; + helicsFederateAddDependency(nullptr, nullptr, &err); + EXPECT_EQ(err.error_code, 45); + helicsErrorClear(&err); + //auto res2=helicsFederateSetGlobal(helics_federate fed, const char* valueName, const char* value, nullptr); + helicsFederateAddDependency(evil_federate, "fed", &err); + EXPECT_NE(err.error_code, 0); +} + TEST(evil_federate_test, helicsFederateSetLogFile) { //void helicsFederateSetLogFile(helics_federate fed, const char* logFile, helics_error* err); From 5857a77296fa7ca3026273550b2095a7a4da88ce Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Fri, 6 Mar 2020 11:04:22 -0800 Subject: [PATCH 27/32] Add 'helics-release-build' dispatch event trigger (#1123) * Add a helics-release-build event to build release binaries * Try without wrapping event context in ${{}} * Remove use of matrix for conditional builds * Use no tag for on-demand source archive builds * Switch 'all' keyword to 'everything' 'all' collided with 'installer' * Update CHANGELOG.md --- .github/workflows/release-build.yml | 36 ++++++++++++++++++++++++----- CHANGELOG.md | 1 + 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 6e21c30d5c..30bf23da59 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -1,6 +1,11 @@ name: Build release artifacts on: + # Handles a 'helics-release-build' dispatch event type + # The event payload should contain these fields: + # packages - a list of which packages to build (everything, archive, msvc, installer, sharedlib) + # commit (optional) - the commit-ish to do a release build with + repository_dispatch: schedule: - cron: '15 09 * * *' # Run at in the early hours of the morning (UTC) release: @@ -13,15 +18,25 @@ jobs: create-all-submodule-archive: name: Create all submodule archive runs-on: ubuntu-latest - if: github.event.action == 'published' + if: (github.event.action == 'published') || (github.event.action == 'helics-release-build' && (contains(github.event.client_payload.packages, 'archive') || contains(github.event.client_payload.packages, 'everything'))) steps: - - uses: actions/checkout@v2 + - name: Checkout event ref + uses: actions/checkout@v2 + with: + ref: ${{ github.event.client_payload.commit }} + if: github.event.action == 'published' || github.event.action == 'helics-release-build' - name: Create archive + if: github.event.action != 'helics-release-build' # Creates the archive then moves it to an artifact subfolder run: ./scripts/_git-all-archive.sh -l "$(git rev-parse --abbrev-ref "${GITHUB_REF}")" && mkdir artifact && mv "Helics-$(git rev-parse --abbrev-ref "${GITHUB_REF}")-source.tar.gz" artifact/ - + - name: Create archive (no version) + if: github.event.action == 'helics-release-build' + # Creates the archive then moves it to an artifact subfolder + run: ./scripts/_git-all-archive.sh && mkdir artifact && mv "Helics-source.tar.gz" artifact/ + - name: Upload archive to release + if: github.event.action != 'helics-release-build' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} UPLOAD_URL: ${{ github.event.release.upload_url }} @@ -38,6 +53,7 @@ jobs: ##################################### build-windows-msvc: runs-on: ${{ matrix.os }} + if: (github.event.action != 'helics-release-build') || (contains(github.event.client_payload.packages, 'msvc') || contains(github.event.client_payload.packages, 'everything')) strategy: matrix: os: [windows-2016, windows-latest] @@ -52,7 +68,9 @@ jobs: steps: - name: Checkout event ref uses: actions/checkout@v2 - if: github.event.action == 'published' + with: + ref: ${{ github.event.client_payload.commit }} + if: github.event.action == 'published' || github.event.action == 'helics-release-build' - name: Checkout develop branch uses: actions/checkout@v2 @@ -96,6 +114,7 @@ jobs: build-installers: runs-on: ${{ matrix.os }} name: Build ${{ matrix.os }} ${{ matrix.arch }} ${{ matrix.cpack_gen }} Installer + if: (github.event.action != 'helics-release-build') || (contains(github.event.client_payload.packages, 'installer') || contains(github.event.client_payload.packages, 'everything')) strategy: matrix: id: [windows-x64, windows-x86, macos-x64, linux-x64] @@ -125,7 +144,9 @@ jobs: steps: - name: Checkout event ref uses: actions/checkout@v2 - if: github.event.action == 'published' + with: + ref: ${{ github.event.client_payload.commit }} + if: github.event.action == 'published' || github.event.action == 'helics-release-build' - name: Checkout develop branch uses: actions/checkout@v2 @@ -183,6 +204,7 @@ jobs: ##################################### build-sharedlibs: runs-on: ${{ matrix.os }} + if: (github.event.action != 'helics-release-build') || (contains(github.event.client_payload.packages, 'sharedlib') || contains(github.event.client_payload.packages, 'everything')) name: Build ${{ matrix.os }} ${{ matrix.arch }} Shared Library strategy: matrix: @@ -209,7 +231,9 @@ jobs: steps: - name: Checkout event ref uses: actions/checkout@v2 - if: github.event.action == 'published' + with: + ref: ${{ github.event.client_payload.commit }} + if: github.event.action == 'published' || github.event.action == 'helics-release-build' - name: Checkout develop branch uses: actions/checkout@v2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 07cc1c2ed5..1bf7b061aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Increased code coverage and additional bug fixes. The error propagation in HELI - `helics_terminate_on_error` flag to escalate what would be a local error into a global one that will halt the co-simulation. This flag can be specified through the flag to federates or to brokers and cores through a command line option `--terminate_on_error` - `addDependency` function was added to the C++ Federate API and shared library API, it can add a direct dependency between federates manually. - A 32-bit Windows zip install archive for releases +- Support for a 'helics-release-build' event trigger to the release build GitHub Actions workflow ### Deprecated From 3687fe99d72141b27099ccca2b90d275150f212f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2020 13:40:21 -0800 Subject: [PATCH 28/32] Automated update to SWIG generated interface files (#1124) --- interfaces/java/interface/helics.java | 9 + interfaces/java/interface/helicsJNI.java | 1 + interfaces/java/interface/helicsJava.c | 30 + .../interface/+helics/helicsBrokerSetGlobal.m | 2 +- .../+helics/helicsBrokerSetLogFile.m | 2 +- .../interface/+helics/helicsCleanupLibrary.m | 2 +- .../+helics/helicsCoreRegisterCloningFilter.m | 2 +- .../+helics/helicsCoreRegisterFilter.m | 2 +- .../interface/+helics/helicsCoreSetGlobal.m | 2 +- .../interface/+helics/helicsCoreSetLogFile.m | 2 +- .../interface/+helics/helicsCreateQuery.m | 2 +- .../+helics/helicsEndpointClearMessages.m | 2 +- .../helicsEndpointGetDefaultDestination.m | 2 +- .../interface/+helics/helicsEndpointGetInfo.m | 2 +- .../+helics/helicsEndpointGetMessage.m | 2 +- .../+helics/helicsEndpointGetMessageObject.m | 2 +- .../interface/+helics/helicsEndpointGetName.m | 2 +- .../+helics/helicsEndpointGetOption.m | 2 +- .../interface/+helics/helicsEndpointGetType.m | 2 +- .../+helics/helicsEndpointHasMessage.m | 2 +- .../+helics/helicsEndpointPendingMessages.m | 2 +- .../+helics/helicsEndpointSendEventRaw.m | 2 +- .../+helics/helicsEndpointSendMessage.m | 2 +- .../+helics/helicsEndpointSendMessageObject.m | 2 +- .../+helics/helicsEndpointSendMessageRaw.m | 2 +- .../helicsEndpointSetDefaultDestination.m | 2 +- .../interface/+helics/helicsEndpointSetInfo.m | 2 +- .../+helics/helicsEndpointSetOption.m | 2 +- .../+helics/helicsEndpointSubscribe.m | 2 +- .../+helics/helicsFederateAddDependency.m | 3 + .../+helics/helicsFederateClearMessages.m | 2 +- .../+helics/helicsFederateClearUpdates.m | 2 +- .../helicsFederateCreateMessageObject.m | 2 +- .../+helics/helicsFederateGetEndpoint.m | 2 +- .../helicsFederateGetEndpointByIndex.m | 2 +- .../+helics/helicsFederateGetEndpointCount.m | 2 +- .../+helics/helicsFederateGetFilter.m | 2 +- .../+helics/helicsFederateGetFilterByIndex.m | 2 +- .../+helics/helicsFederateGetFilterCount.m | 2 +- .../+helics/helicsFederateGetInput.m | 2 +- .../+helics/helicsFederateGetInputByIndex.m | 2 +- .../+helics/helicsFederateGetInputCount.m | 2 +- .../+helics/helicsFederateGetMessage.m | 2 +- .../+helics/helicsFederateGetMessageObject.m | 2 +- .../+helics/helicsFederateGetPublication.m | 2 +- .../helicsFederateGetPublicationByIndex.m | 2 +- .../helicsFederateGetPublicationCount.m | 2 +- .../+helics/helicsFederateGetSubscription.m | 2 +- .../+helics/helicsFederateHasMessage.m | 2 +- .../+helics/helicsFederateLogDebugMessage.m | 2 +- .../+helics/helicsFederateLogErrorMessage.m | 2 +- .../+helics/helicsFederateLogInfoMessage.m | 2 +- .../+helics/helicsFederateLogLevelMessage.m | 2 +- .../+helics/helicsFederateLogWarningMessage.m | 2 +- .../+helics/helicsFederatePendingMessages.m | 2 +- .../+helics/helicsFederatePublishJSON.m | 2 +- .../helicsFederateRegisterCloningFilter.m | 2 +- .../+helics/helicsFederateRegisterEndpoint.m | 2 +- .../+helics/helicsFederateRegisterFilter.m | 2 +- ...elicsFederateRegisterFromPublicationJSON.m | 2 +- ...elicsFederateRegisterGlobalCloningFilter.m | 2 +- .../helicsFederateRegisterGlobalEndpoint.m | 2 +- .../helicsFederateRegisterGlobalFilter.m | 2 +- .../helicsFederateRegisterGlobalInput.m | 2 +- .../helicsFederateRegisterGlobalPublication.m | 2 +- .../helicsFederateRegisterGlobalTypeInput.m | 2 +- ...icsFederateRegisterGlobalTypePublication.m | 2 +- .../+helics/helicsFederateRegisterInput.m | 2 +- .../helicsFederateRegisterPublication.m | 2 +- .../helicsFederateRegisterSubscription.m | 2 +- .../+helics/helicsFederateRegisterTypeInput.m | 2 +- .../helicsFederateRegisterTypePublication.m | 2 +- .../+helics/helicsFederateSetLogFile.m | 2 +- .../+helics/helicsFilterAddDeliveryEndpoint.m | 2 +- .../helicsFilterAddDestinationTarget.m | 2 +- .../+helics/helicsFilterAddSourceTarget.m | 2 +- .../interface/+helics/helicsFilterGetInfo.m | 2 +- .../interface/+helics/helicsFilterGetName.m | 2 +- .../interface/+helics/helicsFilterGetOption.m | 2 +- .../helicsFilterRemoveDeliveryEndpoint.m | 2 +- .../+helics/helicsFilterRemoveTarget.m | 2 +- .../interface/+helics/helicsFilterSet.m | 2 +- .../interface/+helics/helicsFilterSetInfo.m | 2 +- .../interface/+helics/helicsFilterSetOption.m | 2 +- .../interface/+helics/helicsFilterSetString.m | 2 +- .../interface/+helics/helicsInputAddTarget.m | 2 +- .../+helics/helicsInputClearUpdate.m | 2 +- .../interface/+helics/helicsInputGetBoolean.m | 2 +- .../interface/+helics/helicsInputGetChar.m | 2 +- .../interface/+helics/helicsInputGetComplex.m | 2 +- .../interface/+helics/helicsInputGetDouble.m | 2 +- .../+helics/helicsInputGetExtractionUnits.m | 2 +- .../interface/+helics/helicsInputGetInfo.m | 2 +- .../+helics/helicsInputGetInjectionUnits.m | 2 +- .../interface/+helics/helicsInputGetInteger.m | 2 +- .../interface/+helics/helicsInputGetKey.m | 2 +- .../+helics/helicsInputGetNamedPoint.m | 2 +- .../interface/+helics/helicsInputGetOption.m | 2 +- .../+helics/helicsInputGetPublicationType.m | 2 +- .../+helics/helicsInputGetRawValue.m | 2 +- .../+helics/helicsInputGetRawValueSize.m | 2 +- .../interface/+helics/helicsInputGetString.m | 2 +- .../+helics/helicsInputGetStringSize.m | 2 +- .../interface/+helics/helicsInputGetTime.m | 2 +- .../interface/+helics/helicsInputGetType.m | 2 +- .../interface/+helics/helicsInputGetUnits.m | 2 +- .../interface/+helics/helicsInputGetVector.m | 2 +- .../+helics/helicsInputGetVectorSize.m | 2 +- .../interface/+helics/helicsInputIsUpdated.m | 2 +- .../+helics/helicsInputLastUpdateTime.m | 2 +- .../+helics/helicsInputSetDefaultBoolean.m | 2 +- .../+helics/helicsInputSetDefaultChar.m | 2 +- .../+helics/helicsInputSetDefaultComplex.m | 2 +- .../+helics/helicsInputSetDefaultDouble.m | 2 +- .../+helics/helicsInputSetDefaultInteger.m | 2 +- .../+helics/helicsInputSetDefaultNamedPoint.m | 2 +- .../+helics/helicsInputSetDefaultRaw.m | 2 +- .../+helics/helicsInputSetDefaultString.m | 2 +- .../+helics/helicsInputSetDefaultTime.m | 2 +- .../+helics/helicsInputSetDefaultVector.m | 2 +- .../interface/+helics/helicsInputSetInfo.m | 2 +- .../+helics/helicsInputSetMinimumChange.m | 2 +- .../interface/+helics/helicsInputSetOption.m | 2 +- .../+helics/helicsMessageAppendData.m | 2 +- .../+helics/helicsMessageCheckFlag.m | 2 +- .../+helics/helicsMessageClearFlags.m | 2 +- .../+helics/helicsMessageGetDestination.m | 2 +- .../+helics/helicsMessageGetMessageID.m | 2 +- .../helicsMessageGetOriginalDestination.m | 2 +- .../+helics/helicsMessageGetOriginalSource.m | 2 +- .../+helics/helicsMessageGetRawData.m | 2 +- .../+helics/helicsMessageGetRawDataSize.m | 2 +- .../+helics/helicsMessageGetSource.m | 2 +- .../+helics/helicsMessageGetString.m | 2 +- .../interface/+helics/helicsMessageGetTime.m | 2 +- .../interface/+helics/helicsMessageIsValid.m | 2 +- .../interface/+helics/helicsMessageReserve.m | 2 +- .../interface/+helics/helicsMessageSetData.m | 2 +- .../+helics/helicsMessageSetDestination.m | 2 +- .../+helics/helicsMessageSetFlagOption.m | 2 +- .../+helics/helicsMessageSetMessageID.m | 2 +- .../helicsMessageSetOriginalDestination.m | 2 +- .../+helics/helicsMessageSetOriginalSource.m | 2 +- .../+helics/helicsMessageSetSource.m | 2 +- .../+helics/helicsMessageSetString.m | 2 +- .../interface/+helics/helicsMessageSetTime.m | 2 +- .../+helics/helicsPublicationAddTarget.m | 2 +- .../+helics/helicsPublicationGetInfo.m | 2 +- .../+helics/helicsPublicationGetKey.m | 2 +- .../+helics/helicsPublicationGetOption.m | 2 +- .../+helics/helicsPublicationGetType.m | 2 +- .../+helics/helicsPublicationGetUnits.m | 2 +- .../+helics/helicsPublicationPublishBoolean.m | 2 +- .../+helics/helicsPublicationPublishChar.m | 2 +- .../+helics/helicsPublicationPublishComplex.m | 2 +- .../+helics/helicsPublicationPublishDouble.m | 2 +- .../+helics/helicsPublicationPublishInteger.m | 2 +- .../helicsPublicationPublishNamedPoint.m | 2 +- .../+helics/helicsPublicationPublishRaw.m | 2 +- .../+helics/helicsPublicationPublishString.m | 2 +- .../+helics/helicsPublicationPublishTime.m | 2 +- .../+helics/helicsPublicationPublishVector.m | 2 +- .../+helics/helicsPublicationSetInfo.m | 2 +- .../helicsPublicationSetMinimumChange.m | 2 +- .../+helics/helicsPublicationSetOption.m | 2 +- .../+helics/helicsQueryBrokerExecute.m | 2 +- .../+helics/helicsQueryCoreExecute.m | 2 +- .../interface/+helics/helicsQueryExecute.m | 2 +- .../+helics/helicsQueryExecuteAsync.m | 2 +- .../+helics/helicsQueryExecuteComplete.m | 2 +- .../interface/+helics/helicsQueryFree.m | 2 +- .../+helics/helicsQueryIsCompleted.m | 2 +- .../+helics/helicsSubscriptionGetKey.m | 2 +- interfaces/matlab/interface/helicsMEX.cpp | 728 ++++++++++-------- interfaces/python/interface/helics.py | 10 + interfaces/python/interface/helicsPython.c | 57 ++ 176 files changed, 669 insertions(+), 507 deletions(-) create mode 100644 interfaces/matlab/interface/+helics/helicsFederateAddDependency.m diff --git a/interfaces/java/interface/helics.java b/interfaces/java/interface/helics.java index c7f4f61227..7a51dae0e3 100644 --- a/interfaces/java/interface/helics.java +++ b/interfaces/java/interface/helics.java @@ -1072,6 +1072,15 @@ public static void helicsFederateSetGlobal(SWIGTYPE_p_void fed, String valueName helicsJNI.helicsFederateSetGlobal(SWIGTYPE_p_void.getCPtr(fed), valueName, value); } + /** + * add a time dependency for a federate. The federate will depend on the given named federate for time synchronization
+ * @param fed the federate to add the dependency for
+ * @param fedName the name of the federate to depend on + */ + public static void helicsFederateAddDependency(SWIGTYPE_p_void fed, String fedName) { + helicsJNI.helicsFederateAddDependency(SWIGTYPE_p_void.getCPtr(fed), fedName); + } + /** * set the logging file for a federate(actually on the core associated with a federate)
* @param fed the federate to set the log file for
diff --git a/interfaces/java/interface/helicsJNI.java b/interfaces/java/interface/helicsJNI.java index f1f790bde8..71176da40a 100644 --- a/interfaces/java/interface/helicsJNI.java +++ b/interfaces/java/interface/helicsJNI.java @@ -239,6 +239,7 @@ public class helicsJNI { public final static native int helicsFederateGetIntegerProperty(long jarg1, int jarg2); public final static native double helicsFederateGetCurrentTime(long jarg1); public final static native void helicsFederateSetGlobal(long jarg1, String jarg2, String jarg3); + public final static native void helicsFederateAddDependency(long jarg1, String jarg2); public final static native void helicsFederateSetLogFile(long jarg1, String jarg2); public final static native void helicsFederateLogErrorMessage(long jarg1, String jarg2); public final static native void helicsFederateLogWarningMessage(long jarg1, String jarg2); diff --git a/interfaces/java/interface/helicsJava.c b/interfaces/java/interface/helicsJava.c index 9a0a11e94f..8c2b86673d 100644 --- a/interfaces/java/interface/helicsJava.c +++ b/interfaces/java/interface/helicsJava.c @@ -4543,6 +4543,36 @@ SWIGEXPORT void JNICALL Java_com_java_helics_helicsJNI_helicsFederateSetGlobal(J } +SWIGEXPORT void JNICALL Java_com_java_helics_helicsJNI_helicsFederateAddDependency(JNIEnv *jenv, jclass jcls, jlong jarg1, jstring jarg2) { + helics_federate arg1 = (helics_federate) 0 ; + char *arg2 = (char *) 0 ; + helics_error *arg3 = (helics_error *) 0 ; + helics_error etemp3 ; + + (void)jenv; + (void)jcls; + { + etemp3=helicsErrorInitialize(); + arg3=&etemp3; + } + arg1 = *(helics_federate *)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)(*jenv)->GetStringUTFChars(jenv, jarg2, 0); + if (!arg2) return ; + } + helicsFederateAddDependency(arg1,(char const *)arg2,arg3); + if (arg2) (*jenv)->ReleaseStringUTFChars(jenv, jarg2, (const char *)arg2); + { + if (arg3->error_code!=helics_ok) + { + jclass clazz = (*jenv)->FindClass(jenv, "java/lang/Exception"); + (*jenv)->ThrowNew(jenv, clazz, arg3->message); + } + } +} + + SWIGEXPORT void JNICALL Java_com_java_helics_helicsJNI_helicsFederateSetLogFile(JNIEnv *jenv, jclass jcls, jlong jarg1, jstring jarg2) { helics_federate arg1 = (helics_federate) 0 ; char *arg2 = (char *) 0 ; diff --git a/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m b/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m index 0162464b76..62f48c3283 100644 --- a/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m +++ b/interfaces/matlab/interface/+helics/helicsBrokerSetGlobal.m @@ -1,3 +1,3 @@ function varargout = helicsBrokerSetGlobal(varargin) - [varargout{1:nargout}] = helicsMEX(139, varargin{:}); + [varargout{1:nargout}] = helicsMEX(140, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m b/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m index f72d4f4d8c..a3ba0f9e41 100644 --- a/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m +++ b/interfaces/matlab/interface/+helics/helicsBrokerSetLogFile.m @@ -1,3 +1,3 @@ function varargout = helicsBrokerSetLogFile(varargin) - [varargout{1:nargout}] = helicsMEX(141, varargin{:}); + [varargout{1:nargout}] = helicsMEX(142, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m b/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m index 7ca0390970..dbbdf28af7 100644 --- a/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m +++ b/interfaces/matlab/interface/+helics/helicsCleanupLibrary.m @@ -1,3 +1,3 @@ function varargout = helicsCleanupLibrary(varargin) - [varargout{1:nargout}] = helicsMEX(150, varargin{:}); + [varargout{1:nargout}] = helicsMEX(151, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m b/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m index a8a867049f..0dc33d82a2 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m +++ b/interfaces/matlab/interface/+helics/helicsCoreRegisterCloningFilter.m @@ -1,3 +1,3 @@ function varargout = helicsCoreRegisterCloningFilter(varargin) - [varargout{1:nargout}] = helicsMEX(285, varargin{:}); + [varargout{1:nargout}] = helicsMEX(286, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m b/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m index 7ffe5a05d7..00b18872f7 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m +++ b/interfaces/matlab/interface/+helics/helicsCoreRegisterFilter.m @@ -1,3 +1,3 @@ function varargout = helicsCoreRegisterFilter(varargin) - [varargout{1:nargout}] = helicsMEX(284, varargin{:}); + [varargout{1:nargout}] = helicsMEX(285, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m b/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m index 52c93012d4..1379754a97 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m +++ b/interfaces/matlab/interface/+helics/helicsCoreSetGlobal.m @@ -1,3 +1,3 @@ function varargout = helicsCoreSetGlobal(varargin) - [varargout{1:nargout}] = helicsMEX(138, varargin{:}); + [varargout{1:nargout}] = helicsMEX(139, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m b/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m index 5f2e14cba7..76bfc19e00 100644 --- a/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m +++ b/interfaces/matlab/interface/+helics/helicsCoreSetLogFile.m @@ -1,3 +1,3 @@ function varargout = helicsCoreSetLogFile(varargin) - [varargout{1:nargout}] = helicsMEX(140, varargin{:}); + [varargout{1:nargout}] = helicsMEX(141, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsCreateQuery.m b/interfaces/matlab/interface/+helics/helicsCreateQuery.m index 8dd58948ca..5b1958cd46 100644 --- a/interfaces/matlab/interface/+helics/helicsCreateQuery.m +++ b/interfaces/matlab/interface/+helics/helicsCreateQuery.m @@ -1,3 +1,3 @@ function varargout = helicsCreateQuery(varargin) - [varargout{1:nargout}] = helicsMEX(142, varargin{:}); + [varargout{1:nargout}] = helicsMEX(143, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m b/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m index d2d4460a25..ba93ce94ca 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointClearMessages.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointClearMessages(varargin) - [varargout{1:nargout}] = helicsMEX(249, varargin{:}); + [varargout{1:nargout}] = helicsMEX(250, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m b/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m index aed076aad7..4ed25134d3 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetDefaultDestination.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetDefaultDestination(varargin) - [varargout{1:nargout}] = helicsMEX(233, varargin{:}); + [varargout{1:nargout}] = helicsMEX(234, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m b/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m index f7fe43a031..fd1f635777 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(253, varargin{:}); + [varargout{1:nargout}] = helicsMEX(254, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m index e09cb25921..08b5114d91 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetMessage.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetMessage(varargin) - [varargout{1:nargout}] = helicsMEX(243, varargin{:}); + [varargout{1:nargout}] = helicsMEX(244, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m b/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m index a661292731..97f1409990 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(244, varargin{:}); + [varargout{1:nargout}] = helicsMEX(245, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetName.m b/interfaces/matlab/interface/+helics/helicsEndpointGetName.m index d974da0ca6..8530092a19 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetName.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetName.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetName(varargin) - [varargout{1:nargout}] = helicsMEX(251, varargin{:}); + [varargout{1:nargout}] = helicsMEX(252, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m b/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m index 8e2f1b5179..6f02672574 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(256, varargin{:}); + [varargout{1:nargout}] = helicsMEX(257, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointGetType.m b/interfaces/matlab/interface/+helics/helicsEndpointGetType.m index 01786d65a7..407f7f96bc 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointGetType.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointGetType.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointGetType(varargin) - [varargout{1:nargout}] = helicsMEX(250, varargin{:}); + [varargout{1:nargout}] = helicsMEX(251, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m index 2b7fa8153a..5fd809f4e5 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointHasMessage.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointHasMessage(varargin) - [varargout{1:nargout}] = helicsMEX(240, varargin{:}); + [varargout{1:nargout}] = helicsMEX(241, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m b/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m index 77fd155c14..20107ac248 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointPendingMessages.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointPendingMessages(varargin) - [varargout{1:nargout}] = helicsMEX(242, varargin{:}); + [varargout{1:nargout}] = helicsMEX(243, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m b/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m index f43b3f52d4..843e07c2c6 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendEventRaw.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendEventRaw(varargin) - [varargout{1:nargout}] = helicsMEX(235, varargin{:}); + [varargout{1:nargout}] = helicsMEX(236, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m index 2ec4495e61..7e148dd314 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendMessage.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendMessage(varargin) - [varargout{1:nargout}] = helicsMEX(236, varargin{:}); + [varargout{1:nargout}] = helicsMEX(237, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m index 66ae86cb60..bf8948a186 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(237, varargin{:}); + [varargout{1:nargout}] = helicsMEX(238, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m index e0ec788f1e..fd85d1f37c 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSendMessageRaw.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSendMessageRaw(varargin) - [varargout{1:nargout}] = helicsMEX(234, varargin{:}); + [varargout{1:nargout}] = helicsMEX(235, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m b/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m index ca5183d98e..190bb373ce 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSetDefaultDestination.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSetDefaultDestination(varargin) - [varargout{1:nargout}] = helicsMEX(232, varargin{:}); + [varargout{1:nargout}] = helicsMEX(233, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m b/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m index 949af3265a..7c261b7f4e 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(254, varargin{:}); + [varargout{1:nargout}] = helicsMEX(255, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m b/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m index b2c9ac23b1..24c48550a2 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(255, varargin{:}); + [varargout{1:nargout}] = helicsMEX(256, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m b/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m index 0112f733ec..07839a24de 100644 --- a/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m +++ b/interfaces/matlab/interface/+helics/helicsEndpointSubscribe.m @@ -1,3 +1,3 @@ function varargout = helicsEndpointSubscribe(varargin) - [varargout{1:nargout}] = helicsMEX(238, varargin{:}); + [varargout{1:nargout}] = helicsMEX(239, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateAddDependency.m b/interfaces/matlab/interface/+helics/helicsFederateAddDependency.m new file mode 100644 index 0000000000..ed0f867404 --- /dev/null +++ b/interfaces/matlab/interface/+helics/helicsFederateAddDependency.m @@ -0,0 +1,3 @@ +function varargout = helicsFederateAddDependency(varargin) + [varargout{1:nargout}] = helicsMEX(132, varargin{:}); +end diff --git a/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m b/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m index 2839ec304a..1bf325bc31 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m +++ b/interfaces/matlab/interface/+helics/helicsFederateClearMessages.m @@ -1,3 +1,3 @@ function varargout = helicsFederateClearMessages(varargin) - [varargout{1:nargout}] = helicsMEX(248, varargin{:}); + [varargout{1:nargout}] = helicsMEX(249, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m b/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m index fe48f64394..604bf4fef8 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m +++ b/interfaces/matlab/interface/+helics/helicsFederateClearUpdates.m @@ -1,3 +1,3 @@ function varargout = helicsFederateClearUpdates(varargin) - [varargout{1:nargout}] = helicsMEX(165, varargin{:}); + [varargout{1:nargout}] = helicsMEX(166, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m b/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m index ee36638fb7..3d65a484d7 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsFederateCreateMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsFederateCreateMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(247, varargin{:}); + [varargout{1:nargout}] = helicsMEX(248, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m index 1df22ae5f5..455f445b22 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(230, varargin{:}); + [varargout{1:nargout}] = helicsMEX(231, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m index 36ade67b54..32457684ce 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetEndpointByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(231, varargin{:}); + [varargout{1:nargout}] = helicsMEX(232, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m index f8343a87f3..fad0d7229f 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetEndpointCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetEndpointCount(varargin) - [varargout{1:nargout}] = helicsMEX(252, varargin{:}); + [varargout{1:nargout}] = helicsMEX(253, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m index 0823689f4c..9eb69cbabf 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetFilter(varargin) - [varargout{1:nargout}] = helicsMEX(287, varargin{:}); + [varargout{1:nargout}] = helicsMEX(288, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m index 707a3c85a9..2f256f2f6e 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetFilterByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetFilterByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(288, varargin{:}); + [varargout{1:nargout}] = helicsMEX(289, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m index 9cd074d91d..374030e4d9 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetFilterCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetFilterCount(varargin) - [varargout{1:nargout}] = helicsMEX(286, varargin{:}); + [varargout{1:nargout}] = helicsMEX(287, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetInput.m b/interfaces/matlab/interface/+helics/helicsFederateGetInput.m index 368994b8b2..70a69403d8 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetInput(varargin) - [varargout{1:nargout}] = helicsMEX(162, varargin{:}); + [varargout{1:nargout}] = helicsMEX(163, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m index ed3f057031..724d1fbba4 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetInputByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetInputByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(163, varargin{:}); + [varargout{1:nargout}] = helicsMEX(164, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m index 939bdd6358..dae594fa88 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetInputCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetInputCount(varargin) - [varargout{1:nargout}] = helicsMEX(227, varargin{:}); + [varargout{1:nargout}] = helicsMEX(228, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m b/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m index e4910f9e6b..82679a68bc 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetMessage(varargin) - [varargout{1:nargout}] = helicsMEX(245, varargin{:}); + [varargout{1:nargout}] = helicsMEX(246, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m b/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m index 2a4429614c..d31dc9c1b1 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetMessageObject.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetMessageObject(varargin) - [varargout{1:nargout}] = helicsMEX(246, varargin{:}); + [varargout{1:nargout}] = helicsMEX(247, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m index da2c181f67..c4cca17c6a 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetPublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetPublication(varargin) - [varargout{1:nargout}] = helicsMEX(160, varargin{:}); + [varargout{1:nargout}] = helicsMEX(161, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m index 6dd2b79c10..04ef54c231 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationByIndex.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetPublicationByIndex(varargin) - [varargout{1:nargout}] = helicsMEX(161, varargin{:}); + [varargout{1:nargout}] = helicsMEX(162, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m index 7077f0e6d4..f98416fcd9 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetPublicationCount.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetPublicationCount(varargin) - [varargout{1:nargout}] = helicsMEX(226, varargin{:}); + [varargout{1:nargout}] = helicsMEX(227, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m b/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m index 08bd4a2a6b..42e7c9e7bc 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m +++ b/interfaces/matlab/interface/+helics/helicsFederateGetSubscription.m @@ -1,3 +1,3 @@ function varargout = helicsFederateGetSubscription(varargin) - [varargout{1:nargout}] = helicsMEX(164, varargin{:}); + [varargout{1:nargout}] = helicsMEX(165, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m b/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m index d6fc9bd9e7..fc42df93d4 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateHasMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateHasMessage(varargin) - [varargout{1:nargout}] = helicsMEX(239, varargin{:}); + [varargout{1:nargout}] = helicsMEX(240, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m index f4865f53e2..61a8cf8162 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogDebugMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogDebugMessage(varargin) - [varargout{1:nargout}] = helicsMEX(136, varargin{:}); + [varargout{1:nargout}] = helicsMEX(137, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m index 1de1ad71e7..c286e873f3 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogErrorMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogErrorMessage(varargin) - [varargout{1:nargout}] = helicsMEX(133, varargin{:}); + [varargout{1:nargout}] = helicsMEX(134, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m index 85197c9a4b..e9023dadd1 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogInfoMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogInfoMessage(varargin) - [varargout{1:nargout}] = helicsMEX(135, varargin{:}); + [varargout{1:nargout}] = helicsMEX(136, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m index a3513edfa2..f775b7de5f 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogLevelMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogLevelMessage(varargin) - [varargout{1:nargout}] = helicsMEX(137, varargin{:}); + [varargout{1:nargout}] = helicsMEX(138, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m b/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m index 2d045c831c..5626774f90 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m +++ b/interfaces/matlab/interface/+helics/helicsFederateLogWarningMessage.m @@ -1,3 +1,3 @@ function varargout = helicsFederateLogWarningMessage(varargin) - [varargout{1:nargout}] = helicsMEX(134, varargin{:}); + [varargout{1:nargout}] = helicsMEX(135, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m b/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m index f14081a952..7da3d470d3 100644 --- a/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m +++ b/interfaces/matlab/interface/+helics/helicsFederatePendingMessages.m @@ -1,3 +1,3 @@ function varargout = helicsFederatePendingMessages(varargin) - [varargout{1:nargout}] = helicsMEX(241, varargin{:}); + [varargout{1:nargout}] = helicsMEX(242, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m b/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m index b3443d90d7..241192252e 100644 --- a/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m +++ b/interfaces/matlab/interface/+helics/helicsFederatePublishJSON.m @@ -1,3 +1,3 @@ function varargout = helicsFederatePublishJSON(varargin) - [varargout{1:nargout}] = helicsMEX(167, varargin{:}); + [varargout{1:nargout}] = helicsMEX(168, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m index faffa096e1..ae2108a6e3 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterCloningFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterCloningFilter(varargin) - [varargout{1:nargout}] = helicsMEX(282, varargin{:}); + [varargout{1:nargout}] = helicsMEX(283, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m index 9b1ce21667..2e7cffb873 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(228, varargin{:}); + [varargout{1:nargout}] = helicsMEX(229, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m index d9c3fb124e..5ff948d4de 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterFilter(varargin) - [varargout{1:nargout}] = helicsMEX(280, varargin{:}); + [varargout{1:nargout}] = helicsMEX(281, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m index c3ed8d1641..0a010a3062 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterFromPublicationJSON.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterFromPublicationJSON(varargin) - [varargout{1:nargout}] = helicsMEX(166, varargin{:}); + [varargout{1:nargout}] = helicsMEX(167, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m index 0e4237f27e..b8a9b5278c 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalCloningFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalCloningFilter(varargin) - [varargout{1:nargout}] = helicsMEX(283, varargin{:}); + [varargout{1:nargout}] = helicsMEX(284, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m index b8baed8cec..762df96116 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(229, varargin{:}); + [varargout{1:nargout}] = helicsMEX(230, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m index fcea094738..44490f4708 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalFilter.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalFilter(varargin) - [varargout{1:nargout}] = helicsMEX(281, varargin{:}); + [varargout{1:nargout}] = helicsMEX(282, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m index bbded0298a..1c84bf5c6f 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalInput(varargin) - [varargout{1:nargout}] = helicsMEX(158, varargin{:}); + [varargout{1:nargout}] = helicsMEX(159, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m index be121633f4..2eec7fea52 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalPublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalPublication(varargin) - [varargout{1:nargout}] = helicsMEX(154, varargin{:}); + [varargout{1:nargout}] = helicsMEX(155, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m index b506b6e0bd..53b8c867b6 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypeInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalTypeInput(varargin) - [varargout{1:nargout}] = helicsMEX(159, varargin{:}); + [varargout{1:nargout}] = helicsMEX(160, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m index e802022912..f856696297 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterGlobalTypePublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterGlobalTypePublication(varargin) - [varargout{1:nargout}] = helicsMEX(155, varargin{:}); + [varargout{1:nargout}] = helicsMEX(156, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m index 517787ddff..7e427b7a1c 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterInput(varargin) - [varargout{1:nargout}] = helicsMEX(156, varargin{:}); + [varargout{1:nargout}] = helicsMEX(157, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m index 8c1ee7b636..5e5547888a 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterPublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterPublication(varargin) - [varargout{1:nargout}] = helicsMEX(152, varargin{:}); + [varargout{1:nargout}] = helicsMEX(153, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m index 7a47061b86..9c6599d55c 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterSubscription.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterSubscription(varargin) - [varargout{1:nargout}] = helicsMEX(151, varargin{:}); + [varargout{1:nargout}] = helicsMEX(152, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m index 42dafa894e..7677dd9161 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypeInput.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterTypeInput(varargin) - [varargout{1:nargout}] = helicsMEX(157, varargin{:}); + [varargout{1:nargout}] = helicsMEX(158, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m index 3b2c013720..1a64bbfaa7 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m +++ b/interfaces/matlab/interface/+helics/helicsFederateRegisterTypePublication.m @@ -1,3 +1,3 @@ function varargout = helicsFederateRegisterTypePublication(varargin) - [varargout{1:nargout}] = helicsMEX(153, varargin{:}); + [varargout{1:nargout}] = helicsMEX(154, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m b/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m index e1a41b6376..a49188b6cd 100644 --- a/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m +++ b/interfaces/matlab/interface/+helics/helicsFederateSetLogFile.m @@ -1,3 +1,3 @@ function varargout = helicsFederateSetLogFile(varargin) - [varargout{1:nargout}] = helicsMEX(132, varargin{:}); + [varargout{1:nargout}] = helicsMEX(133, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m b/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m index 3d32b16f50..9ef103df02 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFilterAddDeliveryEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFilterAddDeliveryEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(294, varargin{:}); + [varargout{1:nargout}] = helicsMEX(295, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m b/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m index 1fe06a4027..1fedda13e7 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m +++ b/interfaces/matlab/interface/+helics/helicsFilterAddDestinationTarget.m @@ -1,3 +1,3 @@ function varargout = helicsFilterAddDestinationTarget(varargin) - [varargout{1:nargout}] = helicsMEX(292, varargin{:}); + [varargout{1:nargout}] = helicsMEX(293, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m b/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m index e8ab866177..149e6a1042 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m +++ b/interfaces/matlab/interface/+helics/helicsFilterAddSourceTarget.m @@ -1,3 +1,3 @@ function varargout = helicsFilterAddSourceTarget(varargin) - [varargout{1:nargout}] = helicsMEX(293, varargin{:}); + [varargout{1:nargout}] = helicsMEX(294, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m b/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m index f3a5dfc73b..d6a8e633ab 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsFilterGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsFilterGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(297, varargin{:}); + [varargout{1:nargout}] = helicsMEX(298, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterGetName.m b/interfaces/matlab/interface/+helics/helicsFilterGetName.m index c4d5890f7f..7881335729 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterGetName.m +++ b/interfaces/matlab/interface/+helics/helicsFilterGetName.m @@ -1,3 +1,3 @@ function varargout = helicsFilterGetName(varargin) - [varargout{1:nargout}] = helicsMEX(289, varargin{:}); + [varargout{1:nargout}] = helicsMEX(290, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterGetOption.m b/interfaces/matlab/interface/+helics/helicsFilterGetOption.m index e45135985e..d41507aca1 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsFilterGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsFilterGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(300, varargin{:}); + [varargout{1:nargout}] = helicsMEX(301, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m b/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m index c721eafba0..be1e7e0fd3 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m +++ b/interfaces/matlab/interface/+helics/helicsFilterRemoveDeliveryEndpoint.m @@ -1,3 +1,3 @@ function varargout = helicsFilterRemoveDeliveryEndpoint(varargin) - [varargout{1:nargout}] = helicsMEX(296, varargin{:}); + [varargout{1:nargout}] = helicsMEX(297, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m b/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m index 9ddb624afd..05e6adbdc1 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m +++ b/interfaces/matlab/interface/+helics/helicsFilterRemoveTarget.m @@ -1,3 +1,3 @@ function varargout = helicsFilterRemoveTarget(varargin) - [varargout{1:nargout}] = helicsMEX(295, varargin{:}); + [varargout{1:nargout}] = helicsMEX(296, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSet.m b/interfaces/matlab/interface/+helics/helicsFilterSet.m index 23b1cc0e9d..124a704380 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSet.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSet.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSet(varargin) - [varargout{1:nargout}] = helicsMEX(290, varargin{:}); + [varargout{1:nargout}] = helicsMEX(291, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m b/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m index e530df5f14..12a7ed8eeb 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(298, varargin{:}); + [varargout{1:nargout}] = helicsMEX(299, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSetOption.m b/interfaces/matlab/interface/+helics/helicsFilterSetOption.m index 43cf8bd64c..f15897c75b 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(299, varargin{:}); + [varargout{1:nargout}] = helicsMEX(300, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsFilterSetString.m b/interfaces/matlab/interface/+helics/helicsFilterSetString.m index cb257ca61b..c76ebe0e77 100644 --- a/interfaces/matlab/interface/+helics/helicsFilterSetString.m +++ b/interfaces/matlab/interface/+helics/helicsFilterSetString.m @@ -1,3 +1,3 @@ function varargout = helicsFilterSetString(varargin) - [varargout{1:nargout}] = helicsMEX(291, varargin{:}); + [varargout{1:nargout}] = helicsMEX(292, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputAddTarget.m b/interfaces/matlab/interface/+helics/helicsInputAddTarget.m index 1596c16fd5..eda59bd868 100644 --- a/interfaces/matlab/interface/+helics/helicsInputAddTarget.m +++ b/interfaces/matlab/interface/+helics/helicsInputAddTarget.m @@ -1,3 +1,3 @@ function varargout = helicsInputAddTarget(varargin) - [varargout{1:nargout}] = helicsMEX(179, varargin{:}); + [varargout{1:nargout}] = helicsMEX(180, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m b/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m index f67c80b8fc..612234d76c 100644 --- a/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m +++ b/interfaces/matlab/interface/+helics/helicsInputClearUpdate.m @@ -1,3 +1,3 @@ function varargout = helicsInputClearUpdate(varargin) - [varargout{1:nargout}] = helicsMEX(225, varargin{:}); + [varargout{1:nargout}] = helicsMEX(226, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m b/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m index adece9569f..5e2666369a 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetBoolean.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetBoolean(varargin) - [varargout{1:nargout}] = helicsMEX(185, varargin{:}); + [varargout{1:nargout}] = helicsMEX(186, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetChar.m b/interfaces/matlab/interface/+helics/helicsInputGetChar.m index c36d962ba0..546691f0da 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetChar.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetChar.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetChar(varargin) - [varargout{1:nargout}] = helicsMEX(188, varargin{:}); + [varargout{1:nargout}] = helicsMEX(189, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetComplex.m b/interfaces/matlab/interface/+helics/helicsInputGetComplex.m index 87ec098836..646374afbc 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetComplex.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetComplex.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetComplex(varargin) - [varargout{1:nargout}] = helicsMEX(189, varargin{:}); + [varargout{1:nargout}] = helicsMEX(190, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetDouble.m b/interfaces/matlab/interface/+helics/helicsInputGetDouble.m index 0c96bf91f2..f808dea2aa 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetDouble.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetDouble.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetDouble(varargin) - [varargout{1:nargout}] = helicsMEX(186, varargin{:}); + [varargout{1:nargout}] = helicsMEX(187, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m index f3f9630a75..9f4c560e37 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetExtractionUnits.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetExtractionUnits(varargin) - [varargout{1:nargout}] = helicsMEX(211, varargin{:}); + [varargout{1:nargout}] = helicsMEX(212, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetInfo.m b/interfaces/matlab/interface/+helics/helicsInputGetInfo.m index 6da40fa45e..b2c41da6ef 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(213, varargin{:}); + [varargout{1:nargout}] = helicsMEX(214, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m index 739f260522..f650e788f4 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetInjectionUnits.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetInjectionUnits(varargin) - [varargout{1:nargout}] = helicsMEX(210, varargin{:}); + [varargout{1:nargout}] = helicsMEX(211, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetInteger.m b/interfaces/matlab/interface/+helics/helicsInputGetInteger.m index 40bc9e9c3d..a6c2ca571a 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetInteger.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetInteger.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetInteger(varargin) - [varargout{1:nargout}] = helicsMEX(184, varargin{:}); + [varargout{1:nargout}] = helicsMEX(185, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetKey.m b/interfaces/matlab/interface/+helics/helicsInputGetKey.m index 67ae02c778..29efedade3 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetKey.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetKey.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetKey(varargin) - [varargout{1:nargout}] = helicsMEX(206, varargin{:}); + [varargout{1:nargout}] = helicsMEX(207, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m b/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m index 5a4bcdb4b6..7acf64116f 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetNamedPoint.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetNamedPoint(varargin) - [varargout{1:nargout}] = helicsMEX(192, varargin{:}); + [varargout{1:nargout}] = helicsMEX(193, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetOption.m b/interfaces/matlab/interface/+helics/helicsInputGetOption.m index e2214e22db..c5f30400e4 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(217, varargin{:}); + [varargout{1:nargout}] = helicsMEX(218, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m b/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m index 562fd5f750..3d22ef2ca7 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetPublicationType.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetPublicationType(varargin) - [varargout{1:nargout}] = helicsMEX(204, varargin{:}); + [varargout{1:nargout}] = helicsMEX(205, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m b/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m index 7f05f3c5bf..0f942e10f0 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetRawValue.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetRawValue(varargin) - [varargout{1:nargout}] = helicsMEX(181, varargin{:}); + [varargout{1:nargout}] = helicsMEX(182, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m b/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m index ff421c4d7f..7e9cf8de78 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetRawValueSize.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetRawValueSize(varargin) - [varargout{1:nargout}] = helicsMEX(180, varargin{:}); + [varargout{1:nargout}] = helicsMEX(181, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetString.m b/interfaces/matlab/interface/+helics/helicsInputGetString.m index 81c70e467e..1cce1f59c5 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetString.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetString.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetString(varargin) - [varargout{1:nargout}] = helicsMEX(183, varargin{:}); + [varargout{1:nargout}] = helicsMEX(184, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m b/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m index c908bc4e34..0904399c48 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetStringSize.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetStringSize(varargin) - [varargout{1:nargout}] = helicsMEX(182, varargin{:}); + [varargout{1:nargout}] = helicsMEX(183, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetTime.m b/interfaces/matlab/interface/+helics/helicsInputGetTime.m index 3c2ef6ff7c..e88c7fec1c 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetTime.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetTime.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetTime(varargin) - [varargout{1:nargout}] = helicsMEX(187, varargin{:}); + [varargout{1:nargout}] = helicsMEX(188, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetType.m b/interfaces/matlab/interface/+helics/helicsInputGetType.m index 6ffc152b07..8924e62b7c 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetType.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetType.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetType(varargin) - [varargout{1:nargout}] = helicsMEX(203, varargin{:}); + [varargout{1:nargout}] = helicsMEX(204, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetUnits.m b/interfaces/matlab/interface/+helics/helicsInputGetUnits.m index 5b1efb4d31..9fbf45b01b 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetUnits.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetUnits.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetUnits(varargin) - [varargout{1:nargout}] = helicsMEX(209, varargin{:}); + [varargout{1:nargout}] = helicsMEX(210, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetVector.m b/interfaces/matlab/interface/+helics/helicsInputGetVector.m index 452bd863de..82e939497b 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetVector.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetVector.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetVector(varargin) - [varargout{1:nargout}] = helicsMEX(191, varargin{:}); + [varargout{1:nargout}] = helicsMEX(192, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m b/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m index a474d4bd0b..80e7718190 100644 --- a/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m +++ b/interfaces/matlab/interface/+helics/helicsInputGetVectorSize.m @@ -1,3 +1,3 @@ function varargout = helicsInputGetVectorSize(varargin) - [varargout{1:nargout}] = helicsMEX(190, varargin{:}); + [varargout{1:nargout}] = helicsMEX(191, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m b/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m index df34cfd325..7de9531d7e 100644 --- a/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m +++ b/interfaces/matlab/interface/+helics/helicsInputIsUpdated.m @@ -1,3 +1,3 @@ function varargout = helicsInputIsUpdated(varargin) - [varargout{1:nargout}] = helicsMEX(223, varargin{:}); + [varargout{1:nargout}] = helicsMEX(224, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m b/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m index efce08ed3d..b78e26c800 100644 --- a/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m +++ b/interfaces/matlab/interface/+helics/helicsInputLastUpdateTime.m @@ -1,3 +1,3 @@ function varargout = helicsInputLastUpdateTime(varargin) - [varargout{1:nargout}] = helicsMEX(224, varargin{:}); + [varargout{1:nargout}] = helicsMEX(225, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m index 1999a3f4ec..aa70934ebc 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultBoolean.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultBoolean(varargin) - [varargout{1:nargout}] = helicsMEX(196, varargin{:}); + [varargout{1:nargout}] = helicsMEX(197, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m index 5c832ecc87..874891ecf5 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultChar.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultChar(varargin) - [varargout{1:nargout}] = helicsMEX(198, varargin{:}); + [varargout{1:nargout}] = helicsMEX(199, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m index ffc2730a21..cd2a60698f 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultComplex.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultComplex(varargin) - [varargout{1:nargout}] = helicsMEX(200, varargin{:}); + [varargout{1:nargout}] = helicsMEX(201, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m index 0da2c7f629..e7f5aced12 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultDouble.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultDouble(varargin) - [varargout{1:nargout}] = helicsMEX(199, varargin{:}); + [varargout{1:nargout}] = helicsMEX(200, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m index f05950cfef..1da7868db3 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultInteger.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultInteger(varargin) - [varargout{1:nargout}] = helicsMEX(195, varargin{:}); + [varargout{1:nargout}] = helicsMEX(196, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m index ffafcb5392..a1edc7704d 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultNamedPoint.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultNamedPoint(varargin) - [varargout{1:nargout}] = helicsMEX(202, varargin{:}); + [varargout{1:nargout}] = helicsMEX(203, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m index cc49a9367d..c8a06f95ac 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultRaw.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultRaw(varargin) - [varargout{1:nargout}] = helicsMEX(193, varargin{:}); + [varargout{1:nargout}] = helicsMEX(194, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m index 0cd1edb75d..8d6737c761 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultString.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultString(varargin) - [varargout{1:nargout}] = helicsMEX(194, varargin{:}); + [varargout{1:nargout}] = helicsMEX(195, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m index 55ca277c44..1fad696ce1 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultTime.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultTime(varargin) - [varargout{1:nargout}] = helicsMEX(197, varargin{:}); + [varargout{1:nargout}] = helicsMEX(198, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m b/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m index 9542a5ed39..d7f8d523e7 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetDefaultVector.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetDefaultVector(varargin) - [varargout{1:nargout}] = helicsMEX(201, varargin{:}); + [varargout{1:nargout}] = helicsMEX(202, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetInfo.m b/interfaces/matlab/interface/+helics/helicsInputSetInfo.m index fa69eeab11..f31d84ef8d 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(214, varargin{:}); + [varargout{1:nargout}] = helicsMEX(215, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m b/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m index d5f148ce1f..67bb0e50e2 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetMinimumChange.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetMinimumChange(varargin) - [varargout{1:nargout}] = helicsMEX(222, varargin{:}); + [varargout{1:nargout}] = helicsMEX(223, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsInputSetOption.m b/interfaces/matlab/interface/+helics/helicsInputSetOption.m index 0a4860ada6..535db95e19 100644 --- a/interfaces/matlab/interface/+helics/helicsInputSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsInputSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsInputSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(218, varargin{:}); + [varargout{1:nargout}] = helicsMEX(219, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageAppendData.m b/interfaces/matlab/interface/+helics/helicsMessageAppendData.m index 470e0342f1..951a79f41d 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageAppendData.m +++ b/interfaces/matlab/interface/+helics/helicsMessageAppendData.m @@ -1,3 +1,3 @@ function varargout = helicsMessageAppendData(varargin) - [varargout{1:nargout}] = helicsMEX(279, varargin{:}); + [varargout{1:nargout}] = helicsMEX(280, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m b/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m index de47268bda..acb55c736a 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m +++ b/interfaces/matlab/interface/+helics/helicsMessageCheckFlag.m @@ -1,3 +1,3 @@ function varargout = helicsMessageCheckFlag(varargin) - [varargout{1:nargout}] = helicsMEX(264, varargin{:}); + [varargout{1:nargout}] = helicsMEX(265, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m b/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m index 5ce71840d2..8a3c572726 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m +++ b/interfaces/matlab/interface/+helics/helicsMessageClearFlags.m @@ -1,3 +1,3 @@ function varargout = helicsMessageClearFlags(varargin) - [varargout{1:nargout}] = helicsMEX(275, varargin{:}); + [varargout{1:nargout}] = helicsMEX(276, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m b/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m index b4854c834f..696a90bc21 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetDestination(varargin) - [varargout{1:nargout}] = helicsMEX(258, varargin{:}); + [varargout{1:nargout}] = helicsMEX(259, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m b/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m index 1d664ca6ed..dcd6dc1c0b 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetMessageID.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetMessageID(varargin) - [varargout{1:nargout}] = helicsMEX(263, varargin{:}); + [varargout{1:nargout}] = helicsMEX(264, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m index 94c98b4527..8cec554b02 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetOriginalDestination(varargin) - [varargout{1:nargout}] = helicsMEX(260, varargin{:}); + [varargout{1:nargout}] = helicsMEX(261, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m index 5cd6bc9275..dc3aa0a7bb 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetOriginalSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetOriginalSource(varargin) - [varargout{1:nargout}] = helicsMEX(259, varargin{:}); + [varargout{1:nargout}] = helicsMEX(260, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m b/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m index 0522720c90..6ee06d243a 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetRawData.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetRawData(varargin) - [varargout{1:nargout}] = helicsMEX(266, varargin{:}); + [varargout{1:nargout}] = helicsMEX(267, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m b/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m index d048a9fee3..38a9648e46 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetRawDataSize.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetRawDataSize(varargin) - [varargout{1:nargout}] = helicsMEX(265, varargin{:}); + [varargout{1:nargout}] = helicsMEX(266, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetSource.m b/interfaces/matlab/interface/+helics/helicsMessageGetSource.m index d319b0ffdc..f4790bc73c 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetSource(varargin) - [varargout{1:nargout}] = helicsMEX(257, varargin{:}); + [varargout{1:nargout}] = helicsMEX(258, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetString.m b/interfaces/matlab/interface/+helics/helicsMessageGetString.m index eff9a50b45..b1c65e5e0b 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetString.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetString.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetString(varargin) - [varargout{1:nargout}] = helicsMEX(262, varargin{:}); + [varargout{1:nargout}] = helicsMEX(263, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageGetTime.m b/interfaces/matlab/interface/+helics/helicsMessageGetTime.m index b428ebafad..c39f54e4a6 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageGetTime.m +++ b/interfaces/matlab/interface/+helics/helicsMessageGetTime.m @@ -1,3 +1,3 @@ function varargout = helicsMessageGetTime(varargin) - [varargout{1:nargout}] = helicsMEX(261, varargin{:}); + [varargout{1:nargout}] = helicsMEX(262, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageIsValid.m b/interfaces/matlab/interface/+helics/helicsMessageIsValid.m index 7ccd0fed8d..aa1d2b1b75 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageIsValid.m +++ b/interfaces/matlab/interface/+helics/helicsMessageIsValid.m @@ -1,3 +1,3 @@ function varargout = helicsMessageIsValid(varargin) - [varargout{1:nargout}] = helicsMEX(267, varargin{:}); + [varargout{1:nargout}] = helicsMEX(268, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageReserve.m b/interfaces/matlab/interface/+helics/helicsMessageReserve.m index 528bbcd8fe..7c9d9fc4fc 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageReserve.m +++ b/interfaces/matlab/interface/+helics/helicsMessageReserve.m @@ -1,3 +1,3 @@ function varargout = helicsMessageReserve(varargin) - [varargout{1:nargout}] = helicsMEX(273, varargin{:}); + [varargout{1:nargout}] = helicsMEX(274, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetData.m b/interfaces/matlab/interface/+helics/helicsMessageSetData.m index b2e16bc865..fc7871f40e 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetData.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetData.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetData(varargin) - [varargout{1:nargout}] = helicsMEX(278, varargin{:}); + [varargout{1:nargout}] = helicsMEX(279, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m b/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m index 3b78090770..50ed6c6048 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetDestination(varargin) - [varargout{1:nargout}] = helicsMEX(269, varargin{:}); + [varargout{1:nargout}] = helicsMEX(270, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m b/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m index 2d4b54deaa..f212a0ee15 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetFlagOption.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetFlagOption(varargin) - [varargout{1:nargout}] = helicsMEX(276, varargin{:}); + [varargout{1:nargout}] = helicsMEX(277, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m b/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m index aae4462e3c..59d4aa1b2b 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetMessageID.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetMessageID(varargin) - [varargout{1:nargout}] = helicsMEX(274, varargin{:}); + [varargout{1:nargout}] = helicsMEX(275, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m index 727fb3e89f..9af25562fa 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalDestination.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetOriginalDestination(varargin) - [varargout{1:nargout}] = helicsMEX(271, varargin{:}); + [varargout{1:nargout}] = helicsMEX(272, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m index af2687822d..b164544907 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetOriginalSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetOriginalSource(varargin) - [varargout{1:nargout}] = helicsMEX(270, varargin{:}); + [varargout{1:nargout}] = helicsMEX(271, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetSource.m b/interfaces/matlab/interface/+helics/helicsMessageSetSource.m index 0ea0de03ee..db6f062a26 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetSource.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetSource.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetSource(varargin) - [varargout{1:nargout}] = helicsMEX(268, varargin{:}); + [varargout{1:nargout}] = helicsMEX(269, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetString.m b/interfaces/matlab/interface/+helics/helicsMessageSetString.m index ca2d18722d..99b9b69aef 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetString.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetString.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetString(varargin) - [varargout{1:nargout}] = helicsMEX(277, varargin{:}); + [varargout{1:nargout}] = helicsMEX(278, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsMessageSetTime.m b/interfaces/matlab/interface/+helics/helicsMessageSetTime.m index a1c8bcf037..46a4497d3a 100644 --- a/interfaces/matlab/interface/+helics/helicsMessageSetTime.m +++ b/interfaces/matlab/interface/+helics/helicsMessageSetTime.m @@ -1,3 +1,3 @@ function varargout = helicsMessageSetTime(varargin) - [varargout{1:nargout}] = helicsMEX(272, varargin{:}); + [varargout{1:nargout}] = helicsMEX(273, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m b/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m index bf99a26c09..e3782a2c4e 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationAddTarget.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationAddTarget(varargin) - [varargout{1:nargout}] = helicsMEX(178, varargin{:}); + [varargout{1:nargout}] = helicsMEX(179, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m b/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m index 61041adbde..f4a45f4c6b 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(215, varargin{:}); + [varargout{1:nargout}] = helicsMEX(216, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m b/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m index 5647a4918d..bc16edd973 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetKey.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetKey(varargin) - [varargout{1:nargout}] = helicsMEX(208, varargin{:}); + [varargout{1:nargout}] = helicsMEX(209, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m b/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m index e5ea391f76..5be25f1b02 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetOption.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetOption(varargin) - [varargout{1:nargout}] = helicsMEX(219, varargin{:}); + [varargout{1:nargout}] = helicsMEX(220, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetType.m b/interfaces/matlab/interface/+helics/helicsPublicationGetType.m index d9894296bc..bc2fcd4a9f 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetType.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetType.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetType(varargin) - [varargout{1:nargout}] = helicsMEX(205, varargin{:}); + [varargout{1:nargout}] = helicsMEX(206, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m b/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m index 230a204331..84b59f0faf 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationGetUnits.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationGetUnits(varargin) - [varargout{1:nargout}] = helicsMEX(212, varargin{:}); + [varargout{1:nargout}] = helicsMEX(213, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m index 8e2095f31c..e98150ea8f 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishBoolean.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishBoolean(varargin) - [varargout{1:nargout}] = helicsMEX(171, varargin{:}); + [varargout{1:nargout}] = helicsMEX(172, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m index 7d79da30d0..fdcccdc520 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishChar.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishChar(varargin) - [varargout{1:nargout}] = helicsMEX(174, varargin{:}); + [varargout{1:nargout}] = helicsMEX(175, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m index 06addfdcc0..a4da43949d 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishComplex.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishComplex(varargin) - [varargout{1:nargout}] = helicsMEX(175, varargin{:}); + [varargout{1:nargout}] = helicsMEX(176, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m index 759f564260..1cde258153 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishDouble.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishDouble(varargin) - [varargout{1:nargout}] = helicsMEX(172, varargin{:}); + [varargout{1:nargout}] = helicsMEX(173, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m index 681a1a4158..827863292c 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishInteger.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishInteger(varargin) - [varargout{1:nargout}] = helicsMEX(170, varargin{:}); + [varargout{1:nargout}] = helicsMEX(171, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m index 95f0e993e5..2ebf80c44e 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishNamedPoint.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishNamedPoint(varargin) - [varargout{1:nargout}] = helicsMEX(177, varargin{:}); + [varargout{1:nargout}] = helicsMEX(178, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m index 467d032839..65b04cb5ee 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishRaw.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishRaw(varargin) - [varargout{1:nargout}] = helicsMEX(168, varargin{:}); + [varargout{1:nargout}] = helicsMEX(169, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m index 623431826b..818544d0c6 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishString.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishString(varargin) - [varargout{1:nargout}] = helicsMEX(169, varargin{:}); + [varargout{1:nargout}] = helicsMEX(170, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m index 313459f901..ead58d7258 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishTime.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishTime(varargin) - [varargout{1:nargout}] = helicsMEX(173, varargin{:}); + [varargout{1:nargout}] = helicsMEX(174, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m b/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m index a41e036e36..e2b4442c0e 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationPublishVector.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationPublishVector(varargin) - [varargout{1:nargout}] = helicsMEX(176, varargin{:}); + [varargout{1:nargout}] = helicsMEX(177, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m b/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m index 13c0df6b97..97bac67c86 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationSetInfo.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationSetInfo(varargin) - [varargout{1:nargout}] = helicsMEX(216, varargin{:}); + [varargout{1:nargout}] = helicsMEX(217, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m b/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m index 660367bc59..1caa9f9d11 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationSetMinimumChange.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationSetMinimumChange(varargin) - [varargout{1:nargout}] = helicsMEX(221, varargin{:}); + [varargout{1:nargout}] = helicsMEX(222, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m b/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m index 2d7d0d380a..a88a583c99 100644 --- a/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m +++ b/interfaces/matlab/interface/+helics/helicsPublicationSetOption.m @@ -1,3 +1,3 @@ function varargout = helicsPublicationSetOption(varargin) - [varargout{1:nargout}] = helicsMEX(220, varargin{:}); + [varargout{1:nargout}] = helicsMEX(221, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m b/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m index a4db18d4d6..19de1dede1 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m +++ b/interfaces/matlab/interface/+helics/helicsQueryBrokerExecute.m @@ -1,3 +1,3 @@ function varargout = helicsQueryBrokerExecute(varargin) - [varargout{1:nargout}] = helicsMEX(145, varargin{:}); + [varargout{1:nargout}] = helicsMEX(146, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m b/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m index 4e3b2ba409..53c3c1ac25 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m +++ b/interfaces/matlab/interface/+helics/helicsQueryCoreExecute.m @@ -1,3 +1,3 @@ function varargout = helicsQueryCoreExecute(varargin) - [varargout{1:nargout}] = helicsMEX(144, varargin{:}); + [varargout{1:nargout}] = helicsMEX(145, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryExecute.m b/interfaces/matlab/interface/+helics/helicsQueryExecute.m index ef86a162a5..98382f89ef 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryExecute.m +++ b/interfaces/matlab/interface/+helics/helicsQueryExecute.m @@ -1,3 +1,3 @@ function varargout = helicsQueryExecute(varargin) - [varargout{1:nargout}] = helicsMEX(143, varargin{:}); + [varargout{1:nargout}] = helicsMEX(144, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m b/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m index a795bfc506..7b864b616c 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m +++ b/interfaces/matlab/interface/+helics/helicsQueryExecuteAsync.m @@ -1,3 +1,3 @@ function varargout = helicsQueryExecuteAsync(varargin) - [varargout{1:nargout}] = helicsMEX(146, varargin{:}); + [varargout{1:nargout}] = helicsMEX(147, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m b/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m index 29e1587533..7fa31fdbd7 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m +++ b/interfaces/matlab/interface/+helics/helicsQueryExecuteComplete.m @@ -1,3 +1,3 @@ function varargout = helicsQueryExecuteComplete(varargin) - [varargout{1:nargout}] = helicsMEX(147, varargin{:}); + [varargout{1:nargout}] = helicsMEX(148, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryFree.m b/interfaces/matlab/interface/+helics/helicsQueryFree.m index 6ec4b93855..a6651f04d9 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryFree.m +++ b/interfaces/matlab/interface/+helics/helicsQueryFree.m @@ -1,3 +1,3 @@ function varargout = helicsQueryFree(varargin) - [varargout{1:nargout}] = helicsMEX(149, varargin{:}); + [varargout{1:nargout}] = helicsMEX(150, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m b/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m index 6fea8236da..d1a7d5cb07 100644 --- a/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m +++ b/interfaces/matlab/interface/+helics/helicsQueryIsCompleted.m @@ -1,3 +1,3 @@ function varargout = helicsQueryIsCompleted(varargin) - [varargout{1:nargout}] = helicsMEX(148, varargin{:}); + [varargout{1:nargout}] = helicsMEX(149, varargin{:}); end diff --git a/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m b/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m index 34dabdabb4..2038e5e534 100644 --- a/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m +++ b/interfaces/matlab/interface/+helics/helicsSubscriptionGetKey.m @@ -1,3 +1,3 @@ function varargout = helicsSubscriptionGetKey(varargin) - [varargout{1:nargout}] = helicsMEX(207, varargin{:}); + [varargout{1:nargout}] = helicsMEX(208, varargin{:}); end diff --git a/interfaces/matlab/interface/helicsMEX.cpp b/interfaces/matlab/interface/helicsMEX.cpp index 13e3abceea..856dedf342 100644 --- a/interfaces/matlab/interface/helicsMEX.cpp +++ b/interfaces/matlab/interface/helicsMEX.cpp @@ -6538,6 +6538,56 @@ int _wrap_helicsFederateSetGlobal(int resc, mxArray *resv[], int argc, mxArray * } +int _wrap_helicsFederateAddDependency(int resc, mxArray *resv[], int argc, mxArray *argv[]) { + helics_federate arg1 = (helics_federate) 0 ; + char *arg2 = (char *) 0 ; + helics_error *arg3 = (helics_error *) 0 ; + int res1 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + helics_error etemp3 ; + mxArray * _out; + + { + etemp3=helicsErrorInitialize(); + arg3=&etemp3; + } + if (!SWIG_check_num_args("helicsFederateAddDependency",argc,2,2,0)) { + SWIG_fail; + } + res1 = SWIG_ConvertPtr(argv[0],SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "helicsFederateAddDependency" "', argument " "1"" of type '" "helics_federate""'"); + } + res2 = SWIG_AsCharPtrAndSize(argv[1], &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "helicsFederateAddDependency" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + helicsFederateAddDependency(arg1,(char const *)arg2,arg3); + _out = (mxArray*)0; + if (_out) --resc, *resv++ = _out; + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + { + if (arg3->error_code!=helics_ok) + { + throwHelicsMatlabError(arg3); + } + } + return 0; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + { + if (arg3->error_code!=helics_ok) + { + throwHelicsMatlabError(arg3); + } + } + return 1; +} + + int _wrap_helicsFederateSetLogFile(int resc, mxArray *resv[], int argc, mxArray *argv[]) { helics_federate arg1 = (helics_federate) 0 ; char *arg2 = (char *) 0 ; @@ -14470,175 +14520,176 @@ SWIGINTERN const char* SwigFunctionName(int fcn_id) { case 129: return "_wrap_helicsFederateGetIntegerProperty"; case 130: return "_wrap_helicsFederateGetCurrentTime"; case 131: return "_wrap_helicsFederateSetGlobal"; - case 132: return "_wrap_helicsFederateSetLogFile"; - case 133: return "_wrap_helicsFederateLogErrorMessage"; - case 134: return "_wrap_helicsFederateLogWarningMessage"; - case 135: return "_wrap_helicsFederateLogInfoMessage"; - case 136: return "_wrap_helicsFederateLogDebugMessage"; - case 137: return "_wrap_helicsFederateLogLevelMessage"; - case 138: return "_wrap_helicsCoreSetGlobal"; - case 139: return "_wrap_helicsBrokerSetGlobal"; - case 140: return "_wrap_helicsCoreSetLogFile"; - case 141: return "_wrap_helicsBrokerSetLogFile"; - case 142: return "_wrap_helicsCreateQuery"; - case 143: return "_wrap_helicsQueryExecute"; - case 144: return "_wrap_helicsQueryCoreExecute"; - case 145: return "_wrap_helicsQueryBrokerExecute"; - case 146: return "_wrap_helicsQueryExecuteAsync"; - case 147: return "_wrap_helicsQueryExecuteComplete"; - case 148: return "_wrap_helicsQueryIsCompleted"; - case 149: return "_wrap_helicsQueryFree"; - case 150: return "_wrap_helicsCleanupLibrary"; - case 151: return "_wrap_helicsFederateRegisterSubscription"; - case 152: return "_wrap_helicsFederateRegisterPublication"; - case 153: return "_wrap_helicsFederateRegisterTypePublication"; - case 154: return "_wrap_helicsFederateRegisterGlobalPublication"; - case 155: return "_wrap_helicsFederateRegisterGlobalTypePublication"; - case 156: return "_wrap_helicsFederateRegisterInput"; - case 157: return "_wrap_helicsFederateRegisterTypeInput"; - case 158: return "_wrap_helicsFederateRegisterGlobalInput"; - case 159: return "_wrap_helicsFederateRegisterGlobalTypeInput"; - case 160: return "_wrap_helicsFederateGetPublication"; - case 161: return "_wrap_helicsFederateGetPublicationByIndex"; - case 162: return "_wrap_helicsFederateGetInput"; - case 163: return "_wrap_helicsFederateGetInputByIndex"; - case 164: return "_wrap_helicsFederateGetSubscription"; - case 165: return "_wrap_helicsFederateClearUpdates"; - case 166: return "_wrap_helicsFederateRegisterFromPublicationJSON"; - case 167: return "_wrap_helicsFederatePublishJSON"; - case 168: return "_wrap_helicsPublicationPublishRaw"; - case 169: return "_wrap_helicsPublicationPublishString"; - case 170: return "_wrap_helicsPublicationPublishInteger"; - case 171: return "_wrap_helicsPublicationPublishBoolean"; - case 172: return "_wrap_helicsPublicationPublishDouble"; - case 173: return "_wrap_helicsPublicationPublishTime"; - case 174: return "_wrap_helicsPublicationPublishChar"; - case 175: return "_wrap_helicsPublicationPublishComplex"; - case 176: return "_wrap_helicsPublicationPublishVector"; - case 177: return "_wrap_helicsPublicationPublishNamedPoint"; - case 178: return "_wrap_helicsPublicationAddTarget"; - case 179: return "_wrap_helicsInputAddTarget"; - case 180: return "_wrap_helicsInputGetRawValueSize"; - case 181: return "_wrap_helicsInputGetRawValue"; - case 182: return "_wrap_helicsInputGetStringSize"; - case 183: return "_wrap_helicsInputGetString"; - case 184: return "_wrap_helicsInputGetInteger"; - case 185: return "_wrap_helicsInputGetBoolean"; - case 186: return "_wrap_helicsInputGetDouble"; - case 187: return "_wrap_helicsInputGetTime"; - case 188: return "_wrap_helicsInputGetChar"; - case 189: return "_wrap_helicsInputGetComplex"; - case 190: return "_wrap_helicsInputGetVectorSize"; - case 191: return "_wrap_helicsInputGetVector"; - case 192: return "_wrap_helicsInputGetNamedPoint"; - case 193: return "_wrap_helicsInputSetDefaultRaw"; - case 194: return "_wrap_helicsInputSetDefaultString"; - case 195: return "_wrap_helicsInputSetDefaultInteger"; - case 196: return "_wrap_helicsInputSetDefaultBoolean"; - case 197: return "_wrap_helicsInputSetDefaultTime"; - case 198: return "_wrap_helicsInputSetDefaultChar"; - case 199: return "_wrap_helicsInputSetDefaultDouble"; - case 200: return "_wrap_helicsInputSetDefaultComplex"; - case 201: return "_wrap_helicsInputSetDefaultVector"; - case 202: return "_wrap_helicsInputSetDefaultNamedPoint"; - case 203: return "_wrap_helicsInputGetType"; - case 204: return "_wrap_helicsInputGetPublicationType"; - case 205: return "_wrap_helicsPublicationGetType"; - case 206: return "_wrap_helicsInputGetKey"; - case 207: return "_wrap_helicsSubscriptionGetKey"; - case 208: return "_wrap_helicsPublicationGetKey"; - case 209: return "_wrap_helicsInputGetUnits"; - case 210: return "_wrap_helicsInputGetInjectionUnits"; - case 211: return "_wrap_helicsInputGetExtractionUnits"; - case 212: return "_wrap_helicsPublicationGetUnits"; - case 213: return "_wrap_helicsInputGetInfo"; - case 214: return "_wrap_helicsInputSetInfo"; - case 215: return "_wrap_helicsPublicationGetInfo"; - case 216: return "_wrap_helicsPublicationSetInfo"; - case 217: return "_wrap_helicsInputGetOption"; - case 218: return "_wrap_helicsInputSetOption"; - case 219: return "_wrap_helicsPublicationGetOption"; - case 220: return "_wrap_helicsPublicationSetOption"; - case 221: return "_wrap_helicsPublicationSetMinimumChange"; - case 222: return "_wrap_helicsInputSetMinimumChange"; - case 223: return "_wrap_helicsInputIsUpdated"; - case 224: return "_wrap_helicsInputLastUpdateTime"; - case 225: return "_wrap_helicsInputClearUpdate"; - case 226: return "_wrap_helicsFederateGetPublicationCount"; - case 227: return "_wrap_helicsFederateGetInputCount"; - case 228: return "_wrap_helicsFederateRegisterEndpoint"; - case 229: return "_wrap_helicsFederateRegisterGlobalEndpoint"; - case 230: return "_wrap_helicsFederateGetEndpoint"; - case 231: return "_wrap_helicsFederateGetEndpointByIndex"; - case 232: return "_wrap_helicsEndpointSetDefaultDestination"; - case 233: return "_wrap_helicsEndpointGetDefaultDestination"; - case 234: return "_wrap_helicsEndpointSendMessageRaw"; - case 235: return "_wrap_helicsEndpointSendEventRaw"; - case 236: return "_wrap_helicsEndpointSendMessage"; - case 237: return "_wrap_helicsEndpointSendMessageObject"; - case 238: return "_wrap_helicsEndpointSubscribe"; - case 239: return "_wrap_helicsFederateHasMessage"; - case 240: return "_wrap_helicsEndpointHasMessage"; - case 241: return "_wrap_helicsFederatePendingMessages"; - case 242: return "_wrap_helicsEndpointPendingMessages"; - case 243: return "_wrap_helicsEndpointGetMessage"; - case 244: return "_wrap_helicsEndpointGetMessageObject"; - case 245: return "_wrap_helicsFederateGetMessage"; - case 246: return "_wrap_helicsFederateGetMessageObject"; - case 247: return "_wrap_helicsFederateCreateMessageObject"; - case 248: return "_wrap_helicsFederateClearMessages"; - case 249: return "_wrap_helicsEndpointClearMessages"; - case 250: return "_wrap_helicsEndpointGetType"; - case 251: return "_wrap_helicsEndpointGetName"; - case 252: return "_wrap_helicsFederateGetEndpointCount"; - case 253: return "_wrap_helicsEndpointGetInfo"; - case 254: return "_wrap_helicsEndpointSetInfo"; - case 255: return "_wrap_helicsEndpointSetOption"; - case 256: return "_wrap_helicsEndpointGetOption"; - case 257: return "_wrap_helicsMessageGetSource"; - case 258: return "_wrap_helicsMessageGetDestination"; - case 259: return "_wrap_helicsMessageGetOriginalSource"; - case 260: return "_wrap_helicsMessageGetOriginalDestination"; - case 261: return "_wrap_helicsMessageGetTime"; - case 262: return "_wrap_helicsMessageGetString"; - case 263: return "_wrap_helicsMessageGetMessageID"; - case 264: return "_wrap_helicsMessageCheckFlag"; - case 265: return "_wrap_helicsMessageGetRawDataSize"; - case 266: return "_wrap_helicsMessageGetRawData"; - case 267: return "_wrap_helicsMessageIsValid"; - case 268: return "_wrap_helicsMessageSetSource"; - case 269: return "_wrap_helicsMessageSetDestination"; - case 270: return "_wrap_helicsMessageSetOriginalSource"; - case 271: return "_wrap_helicsMessageSetOriginalDestination"; - case 272: return "_wrap_helicsMessageSetTime"; - case 273: return "_wrap_helicsMessageReserve"; - case 274: return "_wrap_helicsMessageSetMessageID"; - case 275: return "_wrap_helicsMessageClearFlags"; - case 276: return "_wrap_helicsMessageSetFlagOption"; - case 277: return "_wrap_helicsMessageSetString"; - case 278: return "_wrap_helicsMessageSetData"; - case 279: return "_wrap_helicsMessageAppendData"; - case 280: return "_wrap_helicsFederateRegisterFilter"; - case 281: return "_wrap_helicsFederateRegisterGlobalFilter"; - case 282: return "_wrap_helicsFederateRegisterCloningFilter"; - case 283: return "_wrap_helicsFederateRegisterGlobalCloningFilter"; - case 284: return "_wrap_helicsCoreRegisterFilter"; - case 285: return "_wrap_helicsCoreRegisterCloningFilter"; - case 286: return "_wrap_helicsFederateGetFilterCount"; - case 287: return "_wrap_helicsFederateGetFilter"; - case 288: return "_wrap_helicsFederateGetFilterByIndex"; - case 289: return "_wrap_helicsFilterGetName"; - case 290: return "_wrap_helicsFilterSet"; - case 291: return "_wrap_helicsFilterSetString"; - case 292: return "_wrap_helicsFilterAddDestinationTarget"; - case 293: return "_wrap_helicsFilterAddSourceTarget"; - case 294: return "_wrap_helicsFilterAddDeliveryEndpoint"; - case 295: return "_wrap_helicsFilterRemoveTarget"; - case 296: return "_wrap_helicsFilterRemoveDeliveryEndpoint"; - case 297: return "_wrap_helicsFilterGetInfo"; - case 298: return "_wrap_helicsFilterSetInfo"; - case 299: return "_wrap_helicsFilterSetOption"; - case 300: return "_wrap_helicsFilterGetOption"; + case 132: return "_wrap_helicsFederateAddDependency"; + case 133: return "_wrap_helicsFederateSetLogFile"; + case 134: return "_wrap_helicsFederateLogErrorMessage"; + case 135: return "_wrap_helicsFederateLogWarningMessage"; + case 136: return "_wrap_helicsFederateLogInfoMessage"; + case 137: return "_wrap_helicsFederateLogDebugMessage"; + case 138: return "_wrap_helicsFederateLogLevelMessage"; + case 139: return "_wrap_helicsCoreSetGlobal"; + case 140: return "_wrap_helicsBrokerSetGlobal"; + case 141: return "_wrap_helicsCoreSetLogFile"; + case 142: return "_wrap_helicsBrokerSetLogFile"; + case 143: return "_wrap_helicsCreateQuery"; + case 144: return "_wrap_helicsQueryExecute"; + case 145: return "_wrap_helicsQueryCoreExecute"; + case 146: return "_wrap_helicsQueryBrokerExecute"; + case 147: return "_wrap_helicsQueryExecuteAsync"; + case 148: return "_wrap_helicsQueryExecuteComplete"; + case 149: return "_wrap_helicsQueryIsCompleted"; + case 150: return "_wrap_helicsQueryFree"; + case 151: return "_wrap_helicsCleanupLibrary"; + case 152: return "_wrap_helicsFederateRegisterSubscription"; + case 153: return "_wrap_helicsFederateRegisterPublication"; + case 154: return "_wrap_helicsFederateRegisterTypePublication"; + case 155: return "_wrap_helicsFederateRegisterGlobalPublication"; + case 156: return "_wrap_helicsFederateRegisterGlobalTypePublication"; + case 157: return "_wrap_helicsFederateRegisterInput"; + case 158: return "_wrap_helicsFederateRegisterTypeInput"; + case 159: return "_wrap_helicsFederateRegisterGlobalInput"; + case 160: return "_wrap_helicsFederateRegisterGlobalTypeInput"; + case 161: return "_wrap_helicsFederateGetPublication"; + case 162: return "_wrap_helicsFederateGetPublicationByIndex"; + case 163: return "_wrap_helicsFederateGetInput"; + case 164: return "_wrap_helicsFederateGetInputByIndex"; + case 165: return "_wrap_helicsFederateGetSubscription"; + case 166: return "_wrap_helicsFederateClearUpdates"; + case 167: return "_wrap_helicsFederateRegisterFromPublicationJSON"; + case 168: return "_wrap_helicsFederatePublishJSON"; + case 169: return "_wrap_helicsPublicationPublishRaw"; + case 170: return "_wrap_helicsPublicationPublishString"; + case 171: return "_wrap_helicsPublicationPublishInteger"; + case 172: return "_wrap_helicsPublicationPublishBoolean"; + case 173: return "_wrap_helicsPublicationPublishDouble"; + case 174: return "_wrap_helicsPublicationPublishTime"; + case 175: return "_wrap_helicsPublicationPublishChar"; + case 176: return "_wrap_helicsPublicationPublishComplex"; + case 177: return "_wrap_helicsPublicationPublishVector"; + case 178: return "_wrap_helicsPublicationPublishNamedPoint"; + case 179: return "_wrap_helicsPublicationAddTarget"; + case 180: return "_wrap_helicsInputAddTarget"; + case 181: return "_wrap_helicsInputGetRawValueSize"; + case 182: return "_wrap_helicsInputGetRawValue"; + case 183: return "_wrap_helicsInputGetStringSize"; + case 184: return "_wrap_helicsInputGetString"; + case 185: return "_wrap_helicsInputGetInteger"; + case 186: return "_wrap_helicsInputGetBoolean"; + case 187: return "_wrap_helicsInputGetDouble"; + case 188: return "_wrap_helicsInputGetTime"; + case 189: return "_wrap_helicsInputGetChar"; + case 190: return "_wrap_helicsInputGetComplex"; + case 191: return "_wrap_helicsInputGetVectorSize"; + case 192: return "_wrap_helicsInputGetVector"; + case 193: return "_wrap_helicsInputGetNamedPoint"; + case 194: return "_wrap_helicsInputSetDefaultRaw"; + case 195: return "_wrap_helicsInputSetDefaultString"; + case 196: return "_wrap_helicsInputSetDefaultInteger"; + case 197: return "_wrap_helicsInputSetDefaultBoolean"; + case 198: return "_wrap_helicsInputSetDefaultTime"; + case 199: return "_wrap_helicsInputSetDefaultChar"; + case 200: return "_wrap_helicsInputSetDefaultDouble"; + case 201: return "_wrap_helicsInputSetDefaultComplex"; + case 202: return "_wrap_helicsInputSetDefaultVector"; + case 203: return "_wrap_helicsInputSetDefaultNamedPoint"; + case 204: return "_wrap_helicsInputGetType"; + case 205: return "_wrap_helicsInputGetPublicationType"; + case 206: return "_wrap_helicsPublicationGetType"; + case 207: return "_wrap_helicsInputGetKey"; + case 208: return "_wrap_helicsSubscriptionGetKey"; + case 209: return "_wrap_helicsPublicationGetKey"; + case 210: return "_wrap_helicsInputGetUnits"; + case 211: return "_wrap_helicsInputGetInjectionUnits"; + case 212: return "_wrap_helicsInputGetExtractionUnits"; + case 213: return "_wrap_helicsPublicationGetUnits"; + case 214: return "_wrap_helicsInputGetInfo"; + case 215: return "_wrap_helicsInputSetInfo"; + case 216: return "_wrap_helicsPublicationGetInfo"; + case 217: return "_wrap_helicsPublicationSetInfo"; + case 218: return "_wrap_helicsInputGetOption"; + case 219: return "_wrap_helicsInputSetOption"; + case 220: return "_wrap_helicsPublicationGetOption"; + case 221: return "_wrap_helicsPublicationSetOption"; + case 222: return "_wrap_helicsPublicationSetMinimumChange"; + case 223: return "_wrap_helicsInputSetMinimumChange"; + case 224: return "_wrap_helicsInputIsUpdated"; + case 225: return "_wrap_helicsInputLastUpdateTime"; + case 226: return "_wrap_helicsInputClearUpdate"; + case 227: return "_wrap_helicsFederateGetPublicationCount"; + case 228: return "_wrap_helicsFederateGetInputCount"; + case 229: return "_wrap_helicsFederateRegisterEndpoint"; + case 230: return "_wrap_helicsFederateRegisterGlobalEndpoint"; + case 231: return "_wrap_helicsFederateGetEndpoint"; + case 232: return "_wrap_helicsFederateGetEndpointByIndex"; + case 233: return "_wrap_helicsEndpointSetDefaultDestination"; + case 234: return "_wrap_helicsEndpointGetDefaultDestination"; + case 235: return "_wrap_helicsEndpointSendMessageRaw"; + case 236: return "_wrap_helicsEndpointSendEventRaw"; + case 237: return "_wrap_helicsEndpointSendMessage"; + case 238: return "_wrap_helicsEndpointSendMessageObject"; + case 239: return "_wrap_helicsEndpointSubscribe"; + case 240: return "_wrap_helicsFederateHasMessage"; + case 241: return "_wrap_helicsEndpointHasMessage"; + case 242: return "_wrap_helicsFederatePendingMessages"; + case 243: return "_wrap_helicsEndpointPendingMessages"; + case 244: return "_wrap_helicsEndpointGetMessage"; + case 245: return "_wrap_helicsEndpointGetMessageObject"; + case 246: return "_wrap_helicsFederateGetMessage"; + case 247: return "_wrap_helicsFederateGetMessageObject"; + case 248: return "_wrap_helicsFederateCreateMessageObject"; + case 249: return "_wrap_helicsFederateClearMessages"; + case 250: return "_wrap_helicsEndpointClearMessages"; + case 251: return "_wrap_helicsEndpointGetType"; + case 252: return "_wrap_helicsEndpointGetName"; + case 253: return "_wrap_helicsFederateGetEndpointCount"; + case 254: return "_wrap_helicsEndpointGetInfo"; + case 255: return "_wrap_helicsEndpointSetInfo"; + case 256: return "_wrap_helicsEndpointSetOption"; + case 257: return "_wrap_helicsEndpointGetOption"; + case 258: return "_wrap_helicsMessageGetSource"; + case 259: return "_wrap_helicsMessageGetDestination"; + case 260: return "_wrap_helicsMessageGetOriginalSource"; + case 261: return "_wrap_helicsMessageGetOriginalDestination"; + case 262: return "_wrap_helicsMessageGetTime"; + case 263: return "_wrap_helicsMessageGetString"; + case 264: return "_wrap_helicsMessageGetMessageID"; + case 265: return "_wrap_helicsMessageCheckFlag"; + case 266: return "_wrap_helicsMessageGetRawDataSize"; + case 267: return "_wrap_helicsMessageGetRawData"; + case 268: return "_wrap_helicsMessageIsValid"; + case 269: return "_wrap_helicsMessageSetSource"; + case 270: return "_wrap_helicsMessageSetDestination"; + case 271: return "_wrap_helicsMessageSetOriginalSource"; + case 272: return "_wrap_helicsMessageSetOriginalDestination"; + case 273: return "_wrap_helicsMessageSetTime"; + case 274: return "_wrap_helicsMessageReserve"; + case 275: return "_wrap_helicsMessageSetMessageID"; + case 276: return "_wrap_helicsMessageClearFlags"; + case 277: return "_wrap_helicsMessageSetFlagOption"; + case 278: return "_wrap_helicsMessageSetString"; + case 279: return "_wrap_helicsMessageSetData"; + case 280: return "_wrap_helicsMessageAppendData"; + case 281: return "_wrap_helicsFederateRegisterFilter"; + case 282: return "_wrap_helicsFederateRegisterGlobalFilter"; + case 283: return "_wrap_helicsFederateRegisterCloningFilter"; + case 284: return "_wrap_helicsFederateRegisterGlobalCloningFilter"; + case 285: return "_wrap_helicsCoreRegisterFilter"; + case 286: return "_wrap_helicsCoreRegisterCloningFilter"; + case 287: return "_wrap_helicsFederateGetFilterCount"; + case 288: return "_wrap_helicsFederateGetFilter"; + case 289: return "_wrap_helicsFederateGetFilterByIndex"; + case 290: return "_wrap_helicsFilterGetName"; + case 291: return "_wrap_helicsFilterSet"; + case 292: return "_wrap_helicsFilterSetString"; + case 293: return "_wrap_helicsFilterAddDestinationTarget"; + case 294: return "_wrap_helicsFilterAddSourceTarget"; + case 295: return "_wrap_helicsFilterAddDeliveryEndpoint"; + case 296: return "_wrap_helicsFilterRemoveTarget"; + case 297: return "_wrap_helicsFilterRemoveDeliveryEndpoint"; + case 298: return "_wrap_helicsFilterGetInfo"; + case 299: return "_wrap_helicsFilterSetInfo"; + case 300: return "_wrap_helicsFilterSetOption"; + case 301: return "_wrap_helicsFilterGetOption"; default: return 0; } } @@ -14827,175 +14878,176 @@ void mexFunction(int resc, mxArray *resv[], int argc, const mxArray *argv[]) { case 129: flag=_wrap_helicsFederateGetIntegerProperty(resc,resv,argc,(mxArray**)(argv)); break; case 130: flag=_wrap_helicsFederateGetCurrentTime(resc,resv,argc,(mxArray**)(argv)); break; case 131: flag=_wrap_helicsFederateSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; - case 132: flag=_wrap_helicsFederateSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; - case 133: flag=_wrap_helicsFederateLogErrorMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 134: flag=_wrap_helicsFederateLogWarningMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 135: flag=_wrap_helicsFederateLogInfoMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 136: flag=_wrap_helicsFederateLogDebugMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 137: flag=_wrap_helicsFederateLogLevelMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 138: flag=_wrap_helicsCoreSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; - case 139: flag=_wrap_helicsBrokerSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; - case 140: flag=_wrap_helicsCoreSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; - case 141: flag=_wrap_helicsBrokerSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; - case 142: flag=_wrap_helicsCreateQuery(resc,resv,argc,(mxArray**)(argv)); break; - case 143: flag=_wrap_helicsQueryExecute(resc,resv,argc,(mxArray**)(argv)); break; - case 144: flag=_wrap_helicsQueryCoreExecute(resc,resv,argc,(mxArray**)(argv)); break; - case 145: flag=_wrap_helicsQueryBrokerExecute(resc,resv,argc,(mxArray**)(argv)); break; - case 146: flag=_wrap_helicsQueryExecuteAsync(resc,resv,argc,(mxArray**)(argv)); break; - case 147: flag=_wrap_helicsQueryExecuteComplete(resc,resv,argc,(mxArray**)(argv)); break; - case 148: flag=_wrap_helicsQueryIsCompleted(resc,resv,argc,(mxArray**)(argv)); break; - case 149: flag=_wrap_helicsQueryFree(resc,resv,argc,(mxArray**)(argv)); break; - case 150: flag=_wrap_helicsCleanupLibrary(resc,resv,argc,(mxArray**)(argv)); break; - case 151: flag=_wrap_helicsFederateRegisterSubscription(resc,resv,argc,(mxArray**)(argv)); break; - case 152: flag=_wrap_helicsFederateRegisterPublication(resc,resv,argc,(mxArray**)(argv)); break; - case 153: flag=_wrap_helicsFederateRegisterTypePublication(resc,resv,argc,(mxArray**)(argv)); break; - case 154: flag=_wrap_helicsFederateRegisterGlobalPublication(resc,resv,argc,(mxArray**)(argv)); break; - case 155: flag=_wrap_helicsFederateRegisterGlobalTypePublication(resc,resv,argc,(mxArray**)(argv)); break; - case 156: flag=_wrap_helicsFederateRegisterInput(resc,resv,argc,(mxArray**)(argv)); break; - case 157: flag=_wrap_helicsFederateRegisterTypeInput(resc,resv,argc,(mxArray**)(argv)); break; - case 158: flag=_wrap_helicsFederateRegisterGlobalInput(resc,resv,argc,(mxArray**)(argv)); break; - case 159: flag=_wrap_helicsFederateRegisterGlobalTypeInput(resc,resv,argc,(mxArray**)(argv)); break; - case 160: flag=_wrap_helicsFederateGetPublication(resc,resv,argc,(mxArray**)(argv)); break; - case 161: flag=_wrap_helicsFederateGetPublicationByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 162: flag=_wrap_helicsFederateGetInput(resc,resv,argc,(mxArray**)(argv)); break; - case 163: flag=_wrap_helicsFederateGetInputByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 164: flag=_wrap_helicsFederateGetSubscription(resc,resv,argc,(mxArray**)(argv)); break; - case 165: flag=_wrap_helicsFederateClearUpdates(resc,resv,argc,(mxArray**)(argv)); break; - case 166: flag=_wrap_helicsFederateRegisterFromPublicationJSON(resc,resv,argc,(mxArray**)(argv)); break; - case 167: flag=_wrap_helicsFederatePublishJSON(resc,resv,argc,(mxArray**)(argv)); break; - case 168: flag=_wrap_helicsPublicationPublishRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 169: flag=_wrap_helicsPublicationPublishString(resc,resv,argc,(mxArray**)(argv)); break; - case 170: flag=_wrap_helicsPublicationPublishInteger(resc,resv,argc,(mxArray**)(argv)); break; - case 171: flag=_wrap_helicsPublicationPublishBoolean(resc,resv,argc,(mxArray**)(argv)); break; - case 172: flag=_wrap_helicsPublicationPublishDouble(resc,resv,argc,(mxArray**)(argv)); break; - case 173: flag=_wrap_helicsPublicationPublishTime(resc,resv,argc,(mxArray**)(argv)); break; - case 174: flag=_wrap_helicsPublicationPublishChar(resc,resv,argc,(mxArray**)(argv)); break; - case 175: flag=_wrap_helicsPublicationPublishComplex(resc,resv,argc,(mxArray**)(argv)); break; - case 176: flag=_wrap_helicsPublicationPublishVector(resc,resv,argc,(mxArray**)(argv)); break; - case 177: flag=_wrap_helicsPublicationPublishNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; - case 178: flag=_wrap_helicsPublicationAddTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 179: flag=_wrap_helicsInputAddTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 180: flag=_wrap_helicsInputGetRawValueSize(resc,resv,argc,(mxArray**)(argv)); break; - case 181: flag=_wrap_helicsInputGetRawValue(resc,resv,argc,(mxArray**)(argv)); break; - case 182: flag=_wrap_helicsInputGetStringSize(resc,resv,argc,(mxArray**)(argv)); break; - case 183: flag=_wrap_helicsInputGetString(resc,resv,argc,(mxArray**)(argv)); break; - case 184: flag=_wrap_helicsInputGetInteger(resc,resv,argc,(mxArray**)(argv)); break; - case 185: flag=_wrap_helicsInputGetBoolean(resc,resv,argc,(mxArray**)(argv)); break; - case 186: flag=_wrap_helicsInputGetDouble(resc,resv,argc,(mxArray**)(argv)); break; - case 187: flag=_wrap_helicsInputGetTime(resc,resv,argc,(mxArray**)(argv)); break; - case 188: flag=_wrap_helicsInputGetChar(resc,resv,argc,(mxArray**)(argv)); break; - case 189: flag=_wrap_helicsInputGetComplex(resc,resv,argc,(mxArray**)(argv)); break; - case 190: flag=_wrap_helicsInputGetVectorSize(resc,resv,argc,(mxArray**)(argv)); break; - case 191: flag=_wrap_helicsInputGetVector(resc,resv,argc,(mxArray**)(argv)); break; - case 192: flag=_wrap_helicsInputGetNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; - case 193: flag=_wrap_helicsInputSetDefaultRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 194: flag=_wrap_helicsInputSetDefaultString(resc,resv,argc,(mxArray**)(argv)); break; - case 195: flag=_wrap_helicsInputSetDefaultInteger(resc,resv,argc,(mxArray**)(argv)); break; - case 196: flag=_wrap_helicsInputSetDefaultBoolean(resc,resv,argc,(mxArray**)(argv)); break; - case 197: flag=_wrap_helicsInputSetDefaultTime(resc,resv,argc,(mxArray**)(argv)); break; - case 198: flag=_wrap_helicsInputSetDefaultChar(resc,resv,argc,(mxArray**)(argv)); break; - case 199: flag=_wrap_helicsInputSetDefaultDouble(resc,resv,argc,(mxArray**)(argv)); break; - case 200: flag=_wrap_helicsInputSetDefaultComplex(resc,resv,argc,(mxArray**)(argv)); break; - case 201: flag=_wrap_helicsInputSetDefaultVector(resc,resv,argc,(mxArray**)(argv)); break; - case 202: flag=_wrap_helicsInputSetDefaultNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; - case 203: flag=_wrap_helicsInputGetType(resc,resv,argc,(mxArray**)(argv)); break; - case 204: flag=_wrap_helicsInputGetPublicationType(resc,resv,argc,(mxArray**)(argv)); break; - case 205: flag=_wrap_helicsPublicationGetType(resc,resv,argc,(mxArray**)(argv)); break; - case 206: flag=_wrap_helicsInputGetKey(resc,resv,argc,(mxArray**)(argv)); break; - case 207: flag=_wrap_helicsSubscriptionGetKey(resc,resv,argc,(mxArray**)(argv)); break; - case 208: flag=_wrap_helicsPublicationGetKey(resc,resv,argc,(mxArray**)(argv)); break; - case 209: flag=_wrap_helicsInputGetUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 210: flag=_wrap_helicsInputGetInjectionUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 211: flag=_wrap_helicsInputGetExtractionUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 212: flag=_wrap_helicsPublicationGetUnits(resc,resv,argc,(mxArray**)(argv)); break; - case 213: flag=_wrap_helicsInputGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 214: flag=_wrap_helicsInputSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 215: flag=_wrap_helicsPublicationGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 216: flag=_wrap_helicsPublicationSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 217: flag=_wrap_helicsInputGetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 218: flag=_wrap_helicsInputSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 219: flag=_wrap_helicsPublicationGetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 220: flag=_wrap_helicsPublicationSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 221: flag=_wrap_helicsPublicationSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; - case 222: flag=_wrap_helicsInputSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; - case 223: flag=_wrap_helicsInputIsUpdated(resc,resv,argc,(mxArray**)(argv)); break; - case 224: flag=_wrap_helicsInputLastUpdateTime(resc,resv,argc,(mxArray**)(argv)); break; - case 225: flag=_wrap_helicsInputClearUpdate(resc,resv,argc,(mxArray**)(argv)); break; - case 226: flag=_wrap_helicsFederateGetPublicationCount(resc,resv,argc,(mxArray**)(argv)); break; - case 227: flag=_wrap_helicsFederateGetInputCount(resc,resv,argc,(mxArray**)(argv)); break; - case 228: flag=_wrap_helicsFederateRegisterEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 229: flag=_wrap_helicsFederateRegisterGlobalEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 230: flag=_wrap_helicsFederateGetEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 231: flag=_wrap_helicsFederateGetEndpointByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 232: flag=_wrap_helicsEndpointSetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 233: flag=_wrap_helicsEndpointGetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 234: flag=_wrap_helicsEndpointSendMessageRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 235: flag=_wrap_helicsEndpointSendEventRaw(resc,resv,argc,(mxArray**)(argv)); break; - case 236: flag=_wrap_helicsEndpointSendMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 237: flag=_wrap_helicsEndpointSendMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 238: flag=_wrap_helicsEndpointSubscribe(resc,resv,argc,(mxArray**)(argv)); break; - case 239: flag=_wrap_helicsFederateHasMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 240: flag=_wrap_helicsEndpointHasMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 241: flag=_wrap_helicsFederatePendingMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 242: flag=_wrap_helicsEndpointPendingMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 243: flag=_wrap_helicsEndpointGetMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 244: flag=_wrap_helicsEndpointGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 245: flag=_wrap_helicsFederateGetMessage(resc,resv,argc,(mxArray**)(argv)); break; - case 246: flag=_wrap_helicsFederateGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 247: flag=_wrap_helicsFederateCreateMessageObject(resc,resv,argc,(mxArray**)(argv)); break; - case 248: flag=_wrap_helicsFederateClearMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 249: flag=_wrap_helicsEndpointClearMessages(resc,resv,argc,(mxArray**)(argv)); break; - case 250: flag=_wrap_helicsEndpointGetType(resc,resv,argc,(mxArray**)(argv)); break; - case 251: flag=_wrap_helicsEndpointGetName(resc,resv,argc,(mxArray**)(argv)); break; - case 252: flag=_wrap_helicsFederateGetEndpointCount(resc,resv,argc,(mxArray**)(argv)); break; - case 253: flag=_wrap_helicsEndpointGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 254: flag=_wrap_helicsEndpointSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 255: flag=_wrap_helicsEndpointSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 256: flag=_wrap_helicsEndpointGetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 257: flag=_wrap_helicsMessageGetSource(resc,resv,argc,(mxArray**)(argv)); break; - case 258: flag=_wrap_helicsMessageGetDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 259: flag=_wrap_helicsMessageGetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; - case 260: flag=_wrap_helicsMessageGetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 261: flag=_wrap_helicsMessageGetTime(resc,resv,argc,(mxArray**)(argv)); break; - case 262: flag=_wrap_helicsMessageGetString(resc,resv,argc,(mxArray**)(argv)); break; - case 263: flag=_wrap_helicsMessageGetMessageID(resc,resv,argc,(mxArray**)(argv)); break; - case 264: flag=_wrap_helicsMessageCheckFlag(resc,resv,argc,(mxArray**)(argv)); break; - case 265: flag=_wrap_helicsMessageGetRawDataSize(resc,resv,argc,(mxArray**)(argv)); break; - case 266: flag=_wrap_helicsMessageGetRawData(resc,resv,argc,(mxArray**)(argv)); break; - case 267: flag=_wrap_helicsMessageIsValid(resc,resv,argc,(mxArray**)(argv)); break; - case 268: flag=_wrap_helicsMessageSetSource(resc,resv,argc,(mxArray**)(argv)); break; - case 269: flag=_wrap_helicsMessageSetDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 270: flag=_wrap_helicsMessageSetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; - case 271: flag=_wrap_helicsMessageSetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; - case 272: flag=_wrap_helicsMessageSetTime(resc,resv,argc,(mxArray**)(argv)); break; - case 273: flag=_wrap_helicsMessageReserve(resc,resv,argc,(mxArray**)(argv)); break; - case 274: flag=_wrap_helicsMessageSetMessageID(resc,resv,argc,(mxArray**)(argv)); break; - case 275: flag=_wrap_helicsMessageClearFlags(resc,resv,argc,(mxArray**)(argv)); break; - case 276: flag=_wrap_helicsMessageSetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; - case 277: flag=_wrap_helicsMessageSetString(resc,resv,argc,(mxArray**)(argv)); break; - case 278: flag=_wrap_helicsMessageSetData(resc,resv,argc,(mxArray**)(argv)); break; - case 279: flag=_wrap_helicsMessageAppendData(resc,resv,argc,(mxArray**)(argv)); break; - case 280: flag=_wrap_helicsFederateRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 281: flag=_wrap_helicsFederateRegisterGlobalFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 282: flag=_wrap_helicsFederateRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 283: flag=_wrap_helicsFederateRegisterGlobalCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 284: flag=_wrap_helicsCoreRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 285: flag=_wrap_helicsCoreRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 286: flag=_wrap_helicsFederateGetFilterCount(resc,resv,argc,(mxArray**)(argv)); break; - case 287: flag=_wrap_helicsFederateGetFilter(resc,resv,argc,(mxArray**)(argv)); break; - case 288: flag=_wrap_helicsFederateGetFilterByIndex(resc,resv,argc,(mxArray**)(argv)); break; - case 289: flag=_wrap_helicsFilterGetName(resc,resv,argc,(mxArray**)(argv)); break; - case 290: flag=_wrap_helicsFilterSet(resc,resv,argc,(mxArray**)(argv)); break; - case 291: flag=_wrap_helicsFilterSetString(resc,resv,argc,(mxArray**)(argv)); break; - case 292: flag=_wrap_helicsFilterAddDestinationTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 293: flag=_wrap_helicsFilterAddSourceTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 294: flag=_wrap_helicsFilterAddDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 295: flag=_wrap_helicsFilterRemoveTarget(resc,resv,argc,(mxArray**)(argv)); break; - case 296: flag=_wrap_helicsFilterRemoveDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; - case 297: flag=_wrap_helicsFilterGetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 298: flag=_wrap_helicsFilterSetInfo(resc,resv,argc,(mxArray**)(argv)); break; - case 299: flag=_wrap_helicsFilterSetOption(resc,resv,argc,(mxArray**)(argv)); break; - case 300: flag=_wrap_helicsFilterGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 132: flag=_wrap_helicsFederateAddDependency(resc,resv,argc,(mxArray**)(argv)); break; + case 133: flag=_wrap_helicsFederateSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; + case 134: flag=_wrap_helicsFederateLogErrorMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 135: flag=_wrap_helicsFederateLogWarningMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 136: flag=_wrap_helicsFederateLogInfoMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 137: flag=_wrap_helicsFederateLogDebugMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 138: flag=_wrap_helicsFederateLogLevelMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 139: flag=_wrap_helicsCoreSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; + case 140: flag=_wrap_helicsBrokerSetGlobal(resc,resv,argc,(mxArray**)(argv)); break; + case 141: flag=_wrap_helicsCoreSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; + case 142: flag=_wrap_helicsBrokerSetLogFile(resc,resv,argc,(mxArray**)(argv)); break; + case 143: flag=_wrap_helicsCreateQuery(resc,resv,argc,(mxArray**)(argv)); break; + case 144: flag=_wrap_helicsQueryExecute(resc,resv,argc,(mxArray**)(argv)); break; + case 145: flag=_wrap_helicsQueryCoreExecute(resc,resv,argc,(mxArray**)(argv)); break; + case 146: flag=_wrap_helicsQueryBrokerExecute(resc,resv,argc,(mxArray**)(argv)); break; + case 147: flag=_wrap_helicsQueryExecuteAsync(resc,resv,argc,(mxArray**)(argv)); break; + case 148: flag=_wrap_helicsQueryExecuteComplete(resc,resv,argc,(mxArray**)(argv)); break; + case 149: flag=_wrap_helicsQueryIsCompleted(resc,resv,argc,(mxArray**)(argv)); break; + case 150: flag=_wrap_helicsQueryFree(resc,resv,argc,(mxArray**)(argv)); break; + case 151: flag=_wrap_helicsCleanupLibrary(resc,resv,argc,(mxArray**)(argv)); break; + case 152: flag=_wrap_helicsFederateRegisterSubscription(resc,resv,argc,(mxArray**)(argv)); break; + case 153: flag=_wrap_helicsFederateRegisterPublication(resc,resv,argc,(mxArray**)(argv)); break; + case 154: flag=_wrap_helicsFederateRegisterTypePublication(resc,resv,argc,(mxArray**)(argv)); break; + case 155: flag=_wrap_helicsFederateRegisterGlobalPublication(resc,resv,argc,(mxArray**)(argv)); break; + case 156: flag=_wrap_helicsFederateRegisterGlobalTypePublication(resc,resv,argc,(mxArray**)(argv)); break; + case 157: flag=_wrap_helicsFederateRegisterInput(resc,resv,argc,(mxArray**)(argv)); break; + case 158: flag=_wrap_helicsFederateRegisterTypeInput(resc,resv,argc,(mxArray**)(argv)); break; + case 159: flag=_wrap_helicsFederateRegisterGlobalInput(resc,resv,argc,(mxArray**)(argv)); break; + case 160: flag=_wrap_helicsFederateRegisterGlobalTypeInput(resc,resv,argc,(mxArray**)(argv)); break; + case 161: flag=_wrap_helicsFederateGetPublication(resc,resv,argc,(mxArray**)(argv)); break; + case 162: flag=_wrap_helicsFederateGetPublicationByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 163: flag=_wrap_helicsFederateGetInput(resc,resv,argc,(mxArray**)(argv)); break; + case 164: flag=_wrap_helicsFederateGetInputByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 165: flag=_wrap_helicsFederateGetSubscription(resc,resv,argc,(mxArray**)(argv)); break; + case 166: flag=_wrap_helicsFederateClearUpdates(resc,resv,argc,(mxArray**)(argv)); break; + case 167: flag=_wrap_helicsFederateRegisterFromPublicationJSON(resc,resv,argc,(mxArray**)(argv)); break; + case 168: flag=_wrap_helicsFederatePublishJSON(resc,resv,argc,(mxArray**)(argv)); break; + case 169: flag=_wrap_helicsPublicationPublishRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 170: flag=_wrap_helicsPublicationPublishString(resc,resv,argc,(mxArray**)(argv)); break; + case 171: flag=_wrap_helicsPublicationPublishInteger(resc,resv,argc,(mxArray**)(argv)); break; + case 172: flag=_wrap_helicsPublicationPublishBoolean(resc,resv,argc,(mxArray**)(argv)); break; + case 173: flag=_wrap_helicsPublicationPublishDouble(resc,resv,argc,(mxArray**)(argv)); break; + case 174: flag=_wrap_helicsPublicationPublishTime(resc,resv,argc,(mxArray**)(argv)); break; + case 175: flag=_wrap_helicsPublicationPublishChar(resc,resv,argc,(mxArray**)(argv)); break; + case 176: flag=_wrap_helicsPublicationPublishComplex(resc,resv,argc,(mxArray**)(argv)); break; + case 177: flag=_wrap_helicsPublicationPublishVector(resc,resv,argc,(mxArray**)(argv)); break; + case 178: flag=_wrap_helicsPublicationPublishNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; + case 179: flag=_wrap_helicsPublicationAddTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 180: flag=_wrap_helicsInputAddTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 181: flag=_wrap_helicsInputGetRawValueSize(resc,resv,argc,(mxArray**)(argv)); break; + case 182: flag=_wrap_helicsInputGetRawValue(resc,resv,argc,(mxArray**)(argv)); break; + case 183: flag=_wrap_helicsInputGetStringSize(resc,resv,argc,(mxArray**)(argv)); break; + case 184: flag=_wrap_helicsInputGetString(resc,resv,argc,(mxArray**)(argv)); break; + case 185: flag=_wrap_helicsInputGetInteger(resc,resv,argc,(mxArray**)(argv)); break; + case 186: flag=_wrap_helicsInputGetBoolean(resc,resv,argc,(mxArray**)(argv)); break; + case 187: flag=_wrap_helicsInputGetDouble(resc,resv,argc,(mxArray**)(argv)); break; + case 188: flag=_wrap_helicsInputGetTime(resc,resv,argc,(mxArray**)(argv)); break; + case 189: flag=_wrap_helicsInputGetChar(resc,resv,argc,(mxArray**)(argv)); break; + case 190: flag=_wrap_helicsInputGetComplex(resc,resv,argc,(mxArray**)(argv)); break; + case 191: flag=_wrap_helicsInputGetVectorSize(resc,resv,argc,(mxArray**)(argv)); break; + case 192: flag=_wrap_helicsInputGetVector(resc,resv,argc,(mxArray**)(argv)); break; + case 193: flag=_wrap_helicsInputGetNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; + case 194: flag=_wrap_helicsInputSetDefaultRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 195: flag=_wrap_helicsInputSetDefaultString(resc,resv,argc,(mxArray**)(argv)); break; + case 196: flag=_wrap_helicsInputSetDefaultInteger(resc,resv,argc,(mxArray**)(argv)); break; + case 197: flag=_wrap_helicsInputSetDefaultBoolean(resc,resv,argc,(mxArray**)(argv)); break; + case 198: flag=_wrap_helicsInputSetDefaultTime(resc,resv,argc,(mxArray**)(argv)); break; + case 199: flag=_wrap_helicsInputSetDefaultChar(resc,resv,argc,(mxArray**)(argv)); break; + case 200: flag=_wrap_helicsInputSetDefaultDouble(resc,resv,argc,(mxArray**)(argv)); break; + case 201: flag=_wrap_helicsInputSetDefaultComplex(resc,resv,argc,(mxArray**)(argv)); break; + case 202: flag=_wrap_helicsInputSetDefaultVector(resc,resv,argc,(mxArray**)(argv)); break; + case 203: flag=_wrap_helicsInputSetDefaultNamedPoint(resc,resv,argc,(mxArray**)(argv)); break; + case 204: flag=_wrap_helicsInputGetType(resc,resv,argc,(mxArray**)(argv)); break; + case 205: flag=_wrap_helicsInputGetPublicationType(resc,resv,argc,(mxArray**)(argv)); break; + case 206: flag=_wrap_helicsPublicationGetType(resc,resv,argc,(mxArray**)(argv)); break; + case 207: flag=_wrap_helicsInputGetKey(resc,resv,argc,(mxArray**)(argv)); break; + case 208: flag=_wrap_helicsSubscriptionGetKey(resc,resv,argc,(mxArray**)(argv)); break; + case 209: flag=_wrap_helicsPublicationGetKey(resc,resv,argc,(mxArray**)(argv)); break; + case 210: flag=_wrap_helicsInputGetUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 211: flag=_wrap_helicsInputGetInjectionUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 212: flag=_wrap_helicsInputGetExtractionUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 213: flag=_wrap_helicsPublicationGetUnits(resc,resv,argc,(mxArray**)(argv)); break; + case 214: flag=_wrap_helicsInputGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 215: flag=_wrap_helicsInputSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 216: flag=_wrap_helicsPublicationGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 217: flag=_wrap_helicsPublicationSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 218: flag=_wrap_helicsInputGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 219: flag=_wrap_helicsInputSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 220: flag=_wrap_helicsPublicationGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 221: flag=_wrap_helicsPublicationSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 222: flag=_wrap_helicsPublicationSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; + case 223: flag=_wrap_helicsInputSetMinimumChange(resc,resv,argc,(mxArray**)(argv)); break; + case 224: flag=_wrap_helicsInputIsUpdated(resc,resv,argc,(mxArray**)(argv)); break; + case 225: flag=_wrap_helicsInputLastUpdateTime(resc,resv,argc,(mxArray**)(argv)); break; + case 226: flag=_wrap_helicsInputClearUpdate(resc,resv,argc,(mxArray**)(argv)); break; + case 227: flag=_wrap_helicsFederateGetPublicationCount(resc,resv,argc,(mxArray**)(argv)); break; + case 228: flag=_wrap_helicsFederateGetInputCount(resc,resv,argc,(mxArray**)(argv)); break; + case 229: flag=_wrap_helicsFederateRegisterEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 230: flag=_wrap_helicsFederateRegisterGlobalEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 231: flag=_wrap_helicsFederateGetEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 232: flag=_wrap_helicsFederateGetEndpointByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 233: flag=_wrap_helicsEndpointSetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 234: flag=_wrap_helicsEndpointGetDefaultDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 235: flag=_wrap_helicsEndpointSendMessageRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 236: flag=_wrap_helicsEndpointSendEventRaw(resc,resv,argc,(mxArray**)(argv)); break; + case 237: flag=_wrap_helicsEndpointSendMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 238: flag=_wrap_helicsEndpointSendMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 239: flag=_wrap_helicsEndpointSubscribe(resc,resv,argc,(mxArray**)(argv)); break; + case 240: flag=_wrap_helicsFederateHasMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 241: flag=_wrap_helicsEndpointHasMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 242: flag=_wrap_helicsFederatePendingMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 243: flag=_wrap_helicsEndpointPendingMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 244: flag=_wrap_helicsEndpointGetMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 245: flag=_wrap_helicsEndpointGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 246: flag=_wrap_helicsFederateGetMessage(resc,resv,argc,(mxArray**)(argv)); break; + case 247: flag=_wrap_helicsFederateGetMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 248: flag=_wrap_helicsFederateCreateMessageObject(resc,resv,argc,(mxArray**)(argv)); break; + case 249: flag=_wrap_helicsFederateClearMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 250: flag=_wrap_helicsEndpointClearMessages(resc,resv,argc,(mxArray**)(argv)); break; + case 251: flag=_wrap_helicsEndpointGetType(resc,resv,argc,(mxArray**)(argv)); break; + case 252: flag=_wrap_helicsEndpointGetName(resc,resv,argc,(mxArray**)(argv)); break; + case 253: flag=_wrap_helicsFederateGetEndpointCount(resc,resv,argc,(mxArray**)(argv)); break; + case 254: flag=_wrap_helicsEndpointGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 255: flag=_wrap_helicsEndpointSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 256: flag=_wrap_helicsEndpointSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 257: flag=_wrap_helicsEndpointGetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 258: flag=_wrap_helicsMessageGetSource(resc,resv,argc,(mxArray**)(argv)); break; + case 259: flag=_wrap_helicsMessageGetDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 260: flag=_wrap_helicsMessageGetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; + case 261: flag=_wrap_helicsMessageGetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 262: flag=_wrap_helicsMessageGetTime(resc,resv,argc,(mxArray**)(argv)); break; + case 263: flag=_wrap_helicsMessageGetString(resc,resv,argc,(mxArray**)(argv)); break; + case 264: flag=_wrap_helicsMessageGetMessageID(resc,resv,argc,(mxArray**)(argv)); break; + case 265: flag=_wrap_helicsMessageCheckFlag(resc,resv,argc,(mxArray**)(argv)); break; + case 266: flag=_wrap_helicsMessageGetRawDataSize(resc,resv,argc,(mxArray**)(argv)); break; + case 267: flag=_wrap_helicsMessageGetRawData(resc,resv,argc,(mxArray**)(argv)); break; + case 268: flag=_wrap_helicsMessageIsValid(resc,resv,argc,(mxArray**)(argv)); break; + case 269: flag=_wrap_helicsMessageSetSource(resc,resv,argc,(mxArray**)(argv)); break; + case 270: flag=_wrap_helicsMessageSetDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 271: flag=_wrap_helicsMessageSetOriginalSource(resc,resv,argc,(mxArray**)(argv)); break; + case 272: flag=_wrap_helicsMessageSetOriginalDestination(resc,resv,argc,(mxArray**)(argv)); break; + case 273: flag=_wrap_helicsMessageSetTime(resc,resv,argc,(mxArray**)(argv)); break; + case 274: flag=_wrap_helicsMessageReserve(resc,resv,argc,(mxArray**)(argv)); break; + case 275: flag=_wrap_helicsMessageSetMessageID(resc,resv,argc,(mxArray**)(argv)); break; + case 276: flag=_wrap_helicsMessageClearFlags(resc,resv,argc,(mxArray**)(argv)); break; + case 277: flag=_wrap_helicsMessageSetFlagOption(resc,resv,argc,(mxArray**)(argv)); break; + case 278: flag=_wrap_helicsMessageSetString(resc,resv,argc,(mxArray**)(argv)); break; + case 279: flag=_wrap_helicsMessageSetData(resc,resv,argc,(mxArray**)(argv)); break; + case 280: flag=_wrap_helicsMessageAppendData(resc,resv,argc,(mxArray**)(argv)); break; + case 281: flag=_wrap_helicsFederateRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 282: flag=_wrap_helicsFederateRegisterGlobalFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 283: flag=_wrap_helicsFederateRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 284: flag=_wrap_helicsFederateRegisterGlobalCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 285: flag=_wrap_helicsCoreRegisterFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 286: flag=_wrap_helicsCoreRegisterCloningFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 287: flag=_wrap_helicsFederateGetFilterCount(resc,resv,argc,(mxArray**)(argv)); break; + case 288: flag=_wrap_helicsFederateGetFilter(resc,resv,argc,(mxArray**)(argv)); break; + case 289: flag=_wrap_helicsFederateGetFilterByIndex(resc,resv,argc,(mxArray**)(argv)); break; + case 290: flag=_wrap_helicsFilterGetName(resc,resv,argc,(mxArray**)(argv)); break; + case 291: flag=_wrap_helicsFilterSet(resc,resv,argc,(mxArray**)(argv)); break; + case 292: flag=_wrap_helicsFilterSetString(resc,resv,argc,(mxArray**)(argv)); break; + case 293: flag=_wrap_helicsFilterAddDestinationTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 294: flag=_wrap_helicsFilterAddSourceTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 295: flag=_wrap_helicsFilterAddDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 296: flag=_wrap_helicsFilterRemoveTarget(resc,resv,argc,(mxArray**)(argv)); break; + case 297: flag=_wrap_helicsFilterRemoveDeliveryEndpoint(resc,resv,argc,(mxArray**)(argv)); break; + case 298: flag=_wrap_helicsFilterGetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 299: flag=_wrap_helicsFilterSetInfo(resc,resv,argc,(mxArray**)(argv)); break; + case 300: flag=_wrap_helicsFilterSetOption(resc,resv,argc,(mxArray**)(argv)); break; + case 301: flag=_wrap_helicsFilterGetOption(resc,resv,argc,(mxArray**)(argv)); break; default: flag=1, SWIG_Error(SWIG_RuntimeError, "No function id %d.", fcn_id); } if (flag) { diff --git a/interfaces/python/interface/helics.py b/interfaces/python/interface/helics.py index 035174377e..a9c216c26b 100644 --- a/interfaces/python/interface/helics.py +++ b/interfaces/python/interface/helics.py @@ -1448,6 +1448,16 @@ def helicsFederateSetGlobal(fed: "helics_federate", valueName: "char const *", v """ return _helics.helicsFederateSetGlobal(fed, valueName, value) +def helicsFederateAddDependency(fed: "helics_federate", fedName: "char const *") -> "void": + r""" + add a time dependency for a federate. The federate will depend on the given named federate for time synchronization + :type fed: void + :param fed: the federate to add the dependency for + :type fedName: string + :param fedName: the name of the federate to depend on + """ + return _helics.helicsFederateAddDependency(fed, fedName) + def helicsFederateSetLogFile(fed: "helics_federate", logFile: "char const *") -> "void": r""" set the logging file for a federate(actually on the core associated with a federate) diff --git a/interfaces/python/interface/helicsPython.c b/interfaces/python/interface/helicsPython.c index 7ca45b9f63..cce36d7d0e 100644 --- a/interfaces/python/interface/helicsPython.c +++ b/interfaces/python/interface/helicsPython.c @@ -8311,6 +8311,56 @@ SWIGINTERN PyObject *_wrap_helicsFederateSetGlobal(PyObject *SWIGUNUSEDPARM(self } +SWIGINTERN PyObject *_wrap_helicsFederateAddDependency(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + helics_federate arg1 = (helics_federate) 0 ; + char *arg2 = (char *) 0 ; + helics_error *arg3 = (helics_error *) 0 ; + int res1 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + helics_error etemp3 ; + PyObject *swig_obj[2] ; + + { + etemp3=helicsErrorInitialize(); + arg3=&etemp3; + } + if (!SWIG_Python_UnpackTuple(args, "helicsFederateAddDependency", 2, 2, swig_obj)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0],SWIG_as_voidptrptr(&arg1), 0, 0); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "helicsFederateAddDependency" "', argument " "1"" of type '" "helics_federate""'"); + } + res2 = SWIG_AsCharPtrAndSize(swig_obj[1], &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "helicsFederateAddDependency" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = (char *)(buf2); + helicsFederateAddDependency(arg1,(char const *)arg2,arg3); + resultobj = SWIG_Py_Void(); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + { + if (arg3->error_code!=helics_ok) + { + throwHelicsPythonException(arg3); + return NULL; + } + } + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + { + if (arg3->error_code!=helics_ok) + { + throwHelicsPythonException(arg3); + return NULL; + } + } + return NULL; +} + + SWIGINTERN PyObject *_wrap_helicsFederateSetLogFile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; helics_federate arg1 = (helics_federate) 0 ; @@ -16464,6 +16514,13 @@ static PyMethodDef SwigMethods[] = { " :type value: string\n" " :param value: the value of the global\n" ""}, + { "helicsFederateAddDependency", _wrap_helicsFederateAddDependency, METH_VARARGS, "\n" + "add a time dependency for a federate. The federate will depend on the given named federate for time synchronization\n" + " :type fed: void\n" + " :param fed: the federate to add the dependency for\n" + " :type fedName: string\n" + " :param fedName: the name of the federate to depend on\n" + ""}, { "helicsFederateSetLogFile", _wrap_helicsFederateSetLogFile, METH_VARARGS, "\n" "set the logging file for a federate(actually on the core associated with a federate)\n" " :type fed: void\n" From 236a9fed5f91109d20196ad6336b50c9a5ee14fd Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Fri, 6 Mar 2020 16:04:04 -0800 Subject: [PATCH 29/32] Update generated HELICS apps manpages (#1125) * Generate updated HELICS manpages * Update CHANGELOG.md --- CHANGELOG.md | 1 + docs/man/manpage_out/helics_app-broker.1 | 17 +++++++++++++++-- docs/man/manpage_out/helics_app-clone.1 | 4 ++-- docs/man/manpage_out/helics_app-echo.1 | 4 ++-- docs/man/manpage_out/helics_app-player.1 | 4 ++-- docs/man/manpage_out/helics_app-recorder.1 | 4 ++-- docs/man/manpage_out/helics_app-source.1 | 4 ++-- docs/man/manpage_out/helics_app-tracer.1 | 4 ++-- docs/man/manpage_out/helics_app.1 | 4 ++-- docs/man/manpage_out/helics_broker-term.1 | 4 ++-- docs/man/manpage_out/helics_broker.1 | 17 +++++++++++++++-- docs/man/manpage_out/helics_player.1 | 4 ++-- 12 files changed, 49 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bf7b061aa..2b134dca6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ Increased code coverage and additional bug fixes. The error propagation in HELI - the `error` Function in the C++ API is now the same as `localError` previously it was primary useful for logging and didn't do much, and will be deprecated in the next release. - Updated the GitHub actions (clang-format, swig interface updates, and release builds) to use actions/checkout@v2 - Cleaned up the Windows installer (better component names/descriptions and groups, link to Gitter, and require installing Headers to install SWIG) +- Updated the HELICS apps manpages with new options ### Fixed - Issue with iterative requests that were not being honored if the federate was acting in isolation diff --git a/docs/man/manpage_out/helics_app-broker.1 b/docs/man/manpage_out/helics_app-broker.1 index 549fcf5c06..954e942c89 100644 --- a/docs/man/manpage_out/helics_app-broker.1 +++ b/docs/man/manpage_out/helics_app-broker.1 @@ -2,12 +2,12 @@ .\" Title: helics_app-broker .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP\-BROKER" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP\-BROKER" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -202,6 +202,11 @@ Specify a key to use to verify all connections to/from a broker\&. Specify that a broker might be slow or unresponsive to ping requests from other brokers\&. .RE .PP +\-\-terminate_on_error +.RS 4 +Specify that a broker should treat all errors as global errors and terminate the co\-simulation if an error is encountered +.RE +.PP \-\-restrictive_time_policy, \-\-conservative_time_policy .RS 4 Specify that a broker should use a conservative time policy in the time coordinator\&. @@ -263,6 +268,14 @@ Time to wait for a broker connection\&. Can be entered as a time like or \fI45ms\fR\&. Default unit is ms\&. .RE +.PP +\-\-errortimeout +.RS 4 +Time to wait after an error has occured before disconnecting\&. Can be entered as a time like +\fI10s\fR +or +\fI45ms\fR\&. Default unit is ms\&. +.RE .SH "SEE ALSO" .sp helics_broker(1) diff --git a/docs/man/manpage_out/helics_app-clone.1 b/docs/man/manpage_out/helics_app-clone.1 index 4ae32f943c..e5781b2dee 100644 --- a/docs/man/manpage_out/helics_app-clone.1 +++ b/docs/man/manpage_out/helics_app-clone.1 @@ -2,12 +2,12 @@ .\" Title: helics_app-clone .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP\-CLONE" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP\-CLONE" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_app-echo.1 b/docs/man/manpage_out/helics_app-echo.1 index b66e826475..e4b88f4504 100644 --- a/docs/man/manpage_out/helics_app-echo.1 +++ b/docs/man/manpage_out/helics_app-echo.1 @@ -2,12 +2,12 @@ .\" Title: helics_app-echo .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP\-ECHO" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP\-ECHO" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_app-player.1 b/docs/man/manpage_out/helics_app-player.1 index 11b3229292..11b97dceaa 100644 --- a/docs/man/manpage_out/helics_app-player.1 +++ b/docs/man/manpage_out/helics_app-player.1 @@ -2,12 +2,12 @@ .\" Title: helics_app-player .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP\-PLAYER" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP\-PLAYER" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_app-recorder.1 b/docs/man/manpage_out/helics_app-recorder.1 index 7e738c5ba6..d1853c8bee 100644 --- a/docs/man/manpage_out/helics_app-recorder.1 +++ b/docs/man/manpage_out/helics_app-recorder.1 @@ -2,12 +2,12 @@ .\" Title: helics_app-recorder .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP\-RECORDER" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP\-RECORDER" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_app-source.1 b/docs/man/manpage_out/helics_app-source.1 index 875bdd4e8d..ab5c1b839e 100644 --- a/docs/man/manpage_out/helics_app-source.1 +++ b/docs/man/manpage_out/helics_app-source.1 @@ -2,12 +2,12 @@ .\" Title: helics_app-source .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP\-SOURCE" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP\-SOURCE" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_app-tracer.1 b/docs/man/manpage_out/helics_app-tracer.1 index 8783467fb7..281acf13b1 100644 --- a/docs/man/manpage_out/helics_app-tracer.1 +++ b/docs/man/manpage_out/helics_app-tracer.1 @@ -2,12 +2,12 @@ .\" Title: helics_app-tracer .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP\-TRACER" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP\-TRACER" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_app.1 b/docs/man/manpage_out/helics_app.1 index 6d7c14ed95..0a1f0d353a 100644 --- a/docs/man/manpage_out/helics_app.1 +++ b/docs/man/manpage_out/helics_app.1 @@ -2,12 +2,12 @@ .\" Title: helics_app .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_APP" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_APP" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_broker-term.1 b/docs/man/manpage_out/helics_broker-term.1 index 814192a011..e03bd369bd 100644 --- a/docs/man/manpage_out/helics_broker-term.1 +++ b/docs/man/manpage_out/helics_broker-term.1 @@ -2,12 +2,12 @@ .\" Title: helics_broker-term .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_BROKER\-TERM" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_BROKER\-TERM" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/docs/man/manpage_out/helics_broker.1 b/docs/man/manpage_out/helics_broker.1 index cc9424fabf..2a04ce092e 100644 --- a/docs/man/manpage_out/helics_broker.1 +++ b/docs/man/manpage_out/helics_broker.1 @@ -2,12 +2,12 @@ .\" Title: helics_broker .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_BROKER" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_BROKER" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -208,6 +208,11 @@ Specify a key to use to verify all connections to/from a broker\&. Specify that a broker might be slow or unresponsive to ping requests from other brokers\&. .RE .PP +\-\-terminate_on_error +.RS 4 +Specify that a broker should treat all errors as global errors and terminate the co\-simulation if an error is encountered +.RE +.PP \-\-restrictive_time_policy, \-\-conservative_time_policy .RS 4 Specify that a broker should use a conservative time policy in the time coordinator\&. @@ -269,6 +274,14 @@ Time to wait for a broker connection\&. Can be entered as a time like or \fI45ms\fR\&. Default unit is ms\&. .RE +.PP +\-\-errortimeout +.RS 4 +Time to wait after an error has occured before disconnecting\&. Can be entered as a time like +\fI10s\fR +or +\fI45ms\fR\&. Default unit is ms\&. +.RE .SH "SUBCOMMANDS" .PP helics_broker\-term(1) diff --git a/docs/man/manpage_out/helics_player.1 b/docs/man/manpage_out/helics_player.1 index 5618614a4d..248b4b2314 100644 --- a/docs/man/manpage_out/helics_player.1 +++ b/docs/man/manpage_out/helics_player.1 @@ -2,12 +2,12 @@ .\" Title: helics_player .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.78.1 -.\" Date: 01/24/2020 +.\" Date: 03/06/2020 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" -.TH "HELICS_PLAYER" "1" "01/24/2020" "\ \&" "\ \&" +.TH "HELICS_PLAYER" "1" "03/06/2020" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- From 89a3cea8dd8d08899d069862504b4cd94d858e30 Mon Sep 17 00:00:00 2001 From: Ryan Mast Date: Fri, 6 Mar 2020 16:48:29 -0800 Subject: [PATCH 30/32] Add pip to install docs (#1127) * Update the SWIG developer guide on Python * Add HELICS Python interface install instructions using pip --- docs/developer-guide/swig.md | 10 ++++++---- docs/installation/index.md | 11 ++++++++++- docs/installation/package_manager.md | 15 +++++++++++++++ docs/introduction/python.md | 6 ++---- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/docs/developer-guide/swig.md b/docs/developer-guide/swig.md index 06adf05b9d..8bd2bb5468 100644 --- a/docs/developer-guide/swig.md +++ b/docs/developer-guide/swig.md @@ -5,13 +5,13 @@ Generating SWIG extension **Python** The easiest way to generate the latest C files for the Python extension is to use CMake itself. -For example, you can run the following on an OSX machine where you have `swig` installed. +For example, you can run the following in a POSIX/Unix environment where you have `swig` installed with Python 3.6. ```bash git clone https://github.com/GMLC-TDC/HELICS cd HELICS -mkdir build-osx -cmake -DBUILD_PYTHON_INTERFACE=ON -DPYTHON_INCLUDE_DIR=$(python3-config --prefix)/include/python3.6m/ -DCMAKE_INSTALL_PREFIX=/Users/$(whoami)/local/helics-develop/ .. && make -j 8 && make install +mkdir build +cmake -DBUILD_PYTHON_INTERFACE=ON -DPYTHON_INCLUDE_DIR=$(python3-config --prefix)/include/python3.6m/ -DCMAKE_INSTALL_PREFIX=$HOME/local/helics-develop/ .. && make -j 8 && make install cd swig/python cp helicsPYTHON_wrap.c ../../../swig/python/helics_wrap.c cp helics.py ../../../swig/python/helics.py @@ -19,6 +19,8 @@ cp helics.py ../../../swig/python/helics.py This method verifies that the C file generated from CMake using SWIG compiles correctly into a Python extension. +For building a Python 2 compatible interface, use BUILD_PYTHON2_INTERFACE instead of BUILD_PYTHON_INTERFACE. + **MATLAB** For the MATLAB extension, you need a special version of SWIG. Get it [here](https://github.com/jaeandersson/swig). @@ -33,7 +35,7 @@ The matlab interface can be built using BUILD_MATLAB_INTERFACE in the cmake bui **Octave** [Octave](https://www.gnu.org/software/octave/) is a free program that works similarly to MATLAB -Building the octave interface requires swig, and currently will work with Octave 4.0 through 4.2. 4.4 is not currently supported by SWIG unless you build from the current master of the swig repo and use that version. The next release of swig will likely support it. It does work on windows, though the actual generation is not fully operational for unknown reasons and will be investigated at some point. A mkhelicsOCTFile.m is generated in the build directory this needs to be executed in octave, then a helics.oct file should be generated, the libHelicsShared.dll needs to be copied along with the libzmq.dll files Once this is done the library can be loaded by calling helics. On linux this build step is done for you. with the BUILD_OCTAVE_INTERFACE. +Building the octave interface requires swig, and currently will work with Octave 4.0 through 4.2. 4.4 is not currently supported by SWIG unless you build from the current master of the swig repo and use that version. The next release of swig will likely support it. It does work on windows, though the actual generation is not fully operational for unknown reasons and will be investigated at some point. A mkhelicsOCTFile.m is generated in the build directory this needs to be executed in octave, then a helics.oct file should be generated, the libHelicsShared.dll needs to be copied along with the libzmq.dll files Once this is done the library can be loaded by calling helics. On linux this build step is done for you with BUILD_OCTAVE_INTERFACE. **C#** A C# interface can be generated using swig and enabling BUILD_CSHARP_INTERFACE in the CMake. The support is partial; it builds and can be run but not all the functions are completely usable and it hasn't been fully tested. diff --git a/docs/installation/index.md b/docs/installation/index.md index f8e7188ad2..4c0b9330bd 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -14,12 +14,21 @@ Get the latest installers from [GitHub Releases](https://github.com/GMLC-TDC/HEL OR -Use conda to install helics: +Use conda to install the HELICS Python interface and apps: ```bash conda install -c gmlc-tdc helics ``` +OR + +Use pip to install the HELICS Python interface and apps: + +```bash +pip install helics +pip install helics-apps +``` + ### Using an installer for your operating system Download pre-compiled libraries from the [releases page](https://github.com/GMLC-TDC/HELICS/releases/latest) and add them to your path. diff --git a/docs/installation/package_manager.md b/docs/installation/package_manager.md index dbc661669a..347f62ce39 100644 --- a/docs/installation/package_manager.md +++ b/docs/installation/package_manager.md @@ -12,3 +12,18 @@ You can then use `conda` to install HELICS. conda install -c gmlc-tdc helics ``` +## Install using pip (Windows, macOS, Linux, other) + +Install Python with pip. Upgrade pip to a recent version using `python -m pip install --upgrade`. + +If you're on a supported version of Windows, macOS, or Linux (see the [HELICS PyPI page](https://pypi.org/project/helics/) for details) you can then use `pip` to install the HELICS Python interface and helics-apps. + +```bash +pip install helics +pip install helics-apps +``` + +If you are on an unsupported OS or Python version, you will need to install a copy of HELICS first. +Depending on your OS, there could be a copy in the package manager, or you may need to build HELICS from source. +From there, you can use `pip install helics` as above (NOTE: `pip install helics-apps` *will not work*, your package manager or HELICS build from source should install these). +The [source distributions section of the PyPI page](https://pypi.org/project/helics/) has some additional useful information on this process. diff --git a/docs/introduction/python.md b/docs/introduction/python.md index a26009c731..0380d9ad35 100644 --- a/docs/introduction/python.md +++ b/docs/introduction/python.md @@ -8,12 +8,10 @@ We will create a simple `pi-exchange` federation in Python with 2 federates. Before we run the Python `pi-exchange` federation, it is necessary to ensure that we have Python installed and that we have the HELICS Python built successfully and correctly on the machine. -We recommend using Anaconda3/Miniconda3, although this should work with most versions of Python. -To make an interface that is similar across different languages, we use SWIG to generate the Python bindings to the `helicsSharedLib` shared library. +We recommend using pip with Python (version 2.7 or 3.5+) or Anaconda3/Miniconda3 to install a copy of the HELICS Python interface, although this should work with most versions of Python if you build the interface yourself using SWIG to generate the Python bindings to the `helicsSharedLib` shared library. SWIG claims to be compatible with most Python versions, dating back to Python 2.0. And recommends that for the best results, one should consider using Python 2.3 or newer. -HELICS can also be built from source and linked with the required Python version. -See the page on the Installation instructions for more information regarding this. +See the Installation instructions page for more information regarding this. **Create a federations directory** From 82839b1b7b4010a2b69e231b07c7417dfa03d1a4 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Fri, 6 Mar 2020 17:36:14 -0800 Subject: [PATCH 31/32] Final Version and doc update to roadmap and readme and date. (#1126) * Final Version and doc update to roadmap and readme and date. * suggested updates --- CMakeLists.txt | 2 +- README.md | 7 +++++-- docs/ROADMAP.md | 16 ++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff6000c158..0f7b2225e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ project(HELICS VERSION 2.4.1) # ----------------------------------------------------------------------------- set(HELICS_VERSION_BUILD) # use ISO date YYYY-MM-DD -set(HELICS_DATE "2020-03-05") +set(HELICS_DATE "2020-03-06") set(HELICS_VERSION_UNDERSCORE "${HELICS_VERSION_MAJOR}_${HELICS_VERSION_MINOR}_${HELICS_VERSION_PATCH}" diff --git a/README.md b/README.md index 1f9d6128df..66b85fbb16 100644 --- a/README.md +++ b/README.md @@ -150,10 +150,13 @@ A list of optional component that are not included in HELICS but are optionally ## Publications -### General HELICS - \[1\] B. Palmintier, D. Krishnamurthy, P. Top, S. Smith, J. Daily, and J. Fuller, “Design of the HELICS High-Performance Transmission-Distribution-Communication-Market Co-Simulation Framework,” in *Proc. of the 2017 Workshop on Modeling and Simulation of Cyber-Physical Energy Systems*, Pittsburgh, PA, 2017. [pre-print](https://www.nrel.gov/docs/fy17osti/67928.pdf) | [published](https://ieeexplore.ieee.org/document/8064542/) +## In the News + +HELICS was selected as an [R&D 100 Award Finalist](https://www.rdworldonline.com/finalists-announced-for-2019-rd-100-awards/). + + ## Source Repo The HELICS source code is hosted on GitHub: [https://github.com/GMLC-TDC/HELICS](https://github.com/GMLC-TDC/HELICS) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 5c03738dfa..cd2cb7520d 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -4,15 +4,14 @@ This document contains tentative plans for changes and improvements of note in upcoming versions of the HELICS library. All dates are approximate and subject to change, but this is a snapshot of the current planning thoughts. See the [projects](https://github.com/GMLC-TDC/HELICS/projects) for additional details -## \[2.5\] ~ 2020-05-01 +## \[2.5\] ~ 2020-04-15 - Multi-broker to allow multiple communication cores to be connected in the same federation - Some dynamic federation support - C API callbacks for custom filters -- improved REST API support +- Improved REST API support - Clarification and API support for multiple publications to a single input N-1 value based - Websocket based core type -- Internal text based(probably JSON) message format option for general backwards compatibility -- Separate out networking library +- Separate out additional networking library components - Split core library between comms layer components and actual core API - Debugging tools (Global time synchronization points) - Additional package manager integration @@ -20,8 +19,12 @@ This document contains tentative plans for changes and improvements of note in u - Increased code Coverage (target 80%) - Deprecate C api message structure -## \[2.6\] ~ 2020-07-31 -It is unclear if there will be a 2.6 release or the changes would just get rolled into a 3.0 release. If there is it would be the last of the 2.X series and would likely be released in late July, 2020. +## \[2.6\] ~ 2020-07-15 +This will be the last of the 2.X series releases, there will likely be at least one patch release after this before fully moving to 3.0 +- Internal text based (probably JSON) message format option for general backwards compatibility +- Debugging tools +- Additional package manager integration +- Performance improvements and tests ## \[3.0\] ~ 2020-08-26 - Upgrade minimum compilers and build systems. Currently planned targets are gcc 7.0, clang 5.0, MSVC 2017 15.7, CMake 3.10. This is a setup which should be supported on Ubuntu 18.04 repositories. Minimum Boost version will also be updated though Boost is becoming less critical for the HELICS core so may not be that important. The likely minimum tested target will likely be 1.65.1 though the core make work with older versions and can be disabled completely. Certain features may require a newer boost version(1.70) than what would be available on Ubuntu 18.04. HELICS 3.0 will not be released until Ubuntu 20.04 LTS is out and RHEL 8.0 has been out for a year, and RHEL 8.1 is released, and probably 8.2. Minimum required compilers for building on macOS and systems using ICC will include Xcode 10 and ICC 19. The minimum ZMQ version will also be bumped up to 4.2. General policy for Mac builds will be supporting Xcode compilers on versions of MacOS that receive security upgrades which is generally the last 3 versions, though 11 and 10 will likely be the only 2 supported at HELICS 3.0 release. MSVC compilers will be supported for at least 2 years from release date, an appropriate CMake (meaning slightly newer than the compiler) will also be required for Visual studio builds. @@ -29,6 +32,7 @@ It is unclear if there will be a 2.6 release or the changes would just get rolle - Full Dynamic Federation support - Much more general debugging support - Targeted endpoints +- General API changes based on feedback - SSL capable core - Single thread cores - Plugin architecture for user defined cores From 2374227c4729a25ba7e0044e1b7af4f6b720dc71 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Fri, 6 Mar 2020 18:30:27 -0800 Subject: [PATCH 32/32] New queries (#1121) * add some broker queries * add some new queries and capabilities * update the queries and add a test [codecov] * update the current_state query * update formatting and docs * fix test issue with certain error generation sequences * fix codacy issue about unused variable * Automated formatting of source files (#1122) Co-authored-by: HELICS-bot * Apply suggestions from code review Co-Authored-By: Ryan Mast * add enumeration of cascading queries for processing. * Automated formatting of source files (#1128) Co-authored-by: HELICS-bot * remove static qualifier from enumeration definition Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: HELICS-bot Co-authored-by: Ryan Mast --- CHANGELOG.md | 1 + docs/user-guide/queries.md | 16 ++ src/helics/application_api/Federate.cpp | 2 + src/helics/core/CommonCore.cpp | 68 ++++++- src/helics/core/CommonCore.hpp | 3 + src/helics/core/CoreBroker.cpp | 187 +++++++++++++++++- src/helics/core/CoreBroker.hpp | 7 + src/helics/core/FederateState.cpp | 5 +- src/helics/core/ForwardingTimeCoordinator.cpp | 3 +- src/helics/core/ForwardingTimeCoordinator.hpp | 2 + src/helics/core/TimeCoordinator.cpp | 3 +- tests/helics/system_tests/QueryTests.cpp | 172 ++++++++++++++-- 12 files changed, 444 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b134dca6c..d37a10b62a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ Increased code coverage and additional bug fixes. The error propagation in HELI - `helics_terminate_on_error` flag to escalate what would be a local error into a global one that will halt the co-simulation. This flag can be specified through the flag to federates or to brokers and cores through a command line option `--terminate_on_error` - `addDependency` function was added to the C++ Federate API and shared library API, it can add a direct dependency between federates manually. - A 32-bit Windows zip install archive for releases +- "global_time", "current_time", and "state" queries for brokers and cores, and "current_time" query for federates. - Support for a 'helics-release-build' event trigger to the release build GitHub Actions workflow ### Deprecated diff --git a/docs/user-guide/queries.md b/docs/user-guide/queries.md index 14408bc145..19a4195d06 100644 --- a/docs/user-guide/queries.md +++ b/docs/user-guide/queries.md @@ -68,6 +68,8 @@ The following queries are defined for federates. Federates may specify a callba +--------------------+------------------------------------------------------------+ | ``dependents`` | list of dependent objects [sv] | +--------------------+------------------------------------------------------------+ +| ``current_time`` | the current time of the federate [JSON] | ++--------------------+------------------------------------------------------------+ |``endpoint_filters``| data structure containing the filters on endpoints[JSON] | +--------------------+------------------------------------------------------------+ | ``queries`` | list of available queries [sv] | @@ -89,6 +91,8 @@ The following queries are defined for federates but can only be queried on the l +---------------------------+------------------------------------------------------------+ | ``values`` | current values of all inputs [JSON] | +---------------------------+------------------------------------------------------------+ +| ``time`` | the current granted time [string] | ++---------------------------+------------------------------------------------------------+ ``` Other strings may be defined for specific federates. @@ -126,6 +130,12 @@ The following queries will be answered by a core. +----------------------+-------------------------------------------------------------------------------------+ | ``federate_map`` | a Hierarchical map of the federates contained in a core [JSON] | +----------------------+-------------------------------------------------------------------------------------+ +| ``federation_state`` | a structure with the current known status of the brokers and federates [JSON] | ++----------------------+-------------------------------------------------------------------------------------+ +| ``current_time`` | if a time is computed locally that time sequence is returned, otherwise #na [JSON] | ++----------------------+-------------------------------------------------------------------------------------+ +| ``global_time`` | get a structure with the current time status of all the federates/cores [JSON] | ++----------------------+-------------------------------------------------------------------------------------+ | ``dependency_graph`` | a representation of the dependencies in the core and its contained federates [JSON] | +----------------------+-------------------------------------------------------------------------------------+ |``endpoint_filters`` | data structure containing the filters on endpoints for the core[JSON] | @@ -167,6 +177,12 @@ The Following queries will be answered by a broker. +----------------------+-------------------------------------------------------------------------------------+ | ``counts`` | a simple count of the number of brokers, federates, and handles [JSON] | +----------------------+-------------------------------------------------------------------------------------+ +| ``federation_state`` | a structure with the current known status of the brokers and federates [JSON] | ++----------------------+-------------------------------------------------------------------------------------+ +| ``current_time`` | if a time is computed locally that time sequence is returned, otherwise #na [string] | ++----------------------+-------------------------------------------------------------------------------------+ +| ``global_time`` | get a structure with the current time status of all the federates/cores [JSON] | ++----------------------+-------------------------------------------------------------------------------------+ | ``federate_map`` | a Hierarchical map of the federates contained in a broker [JSON] | +----------------------+-------------------------------------------------------------------------------------+ | ``dependency_graph`` | a representation of the dependencies in the broker and all contained members [JSON] | diff --git a/src/helics/application_api/Federate.cpp b/src/helics/application_api/Federate.cpp index c754207f5e..fbbcefe0e7 100644 --- a/src/helics/application_api/Federate.cpp +++ b/src/helics/application_api/Federate.cpp @@ -1018,6 +1018,8 @@ std::string Federate::query(const std::string& queryStr) } else { res = "#unknown"; } + } else if (queryStr == "time") { + res = std::to_string(currentTime); } else { res = localQuery(queryStr); } diff --git a/src/helics/core/CommonCore.cpp b/src/helics/core/CommonCore.cpp index 73064e066b..25c8e46e29 100644 --- a/src/helics/core/CommonCore.cpp +++ b/src/helics/core/CommonCore.cpp @@ -36,6 +36,22 @@ SPDX-License-Identifier: BSD-3-Clause #include namespace helics { + +const std::string& state_string(operation_state state) +{ + static const std::string c1{"connected"}; + static const std::string estate{"error"}; + static const std::string dis{"disconnected"}; + switch (state) { + case operation_state::operating: + return c1; + case operation_state::disconnected: + return dis; + case operation_state::error: + default: + return estate; + } +} // timeoutMon is a unique_ptr CommonCore::CommonCore() noexcept: timeoutMon(new TimeoutMonitor) {} @@ -2009,7 +2025,7 @@ std::string CommonCore::federateQuery(const FederateState* fed, const std::strin return filteredEndpointQuery(fed); } if ((queryStr == "queries") || (queryStr == "available_queries")) { - return std::string("[exists;isinit;state;queries;filtered_endpoints;") + + return std::string("[exists;isinit;state;queries;filtered_endpoints;current_time;") + fed->processQuery(queryStr) + "]"; } return fed->processQuery(queryStr); @@ -2019,7 +2035,7 @@ std::string CommonCore::quickCoreQueries(const std::string& queryStr) const { if ((queryStr == "queries") || (queryStr == "available_queries")) { return "[isinit;isconnected;name;address;queries;address;federates;inputs;endpoints;filtered_endpoints;" - "publications;filters;federate_map;dependency_graph;dependencies;dependson;dependents]"; + "publications;filters;federate_map;dependency_graph;dependencies;dependson;dependents;current_time;global_time;current_state]"; } if (queryStr == "isconnected") { return (isConnected()) ? "true" : "false"; @@ -2090,6 +2106,48 @@ std::string CommonCore::coreQuery(const std::string& queryStr) const if (queryStr == "filtered_endpoints") { return filteredEndpointQuery(nullptr); } + if (queryStr == "current_time") { + if (hasTimeDependency) { + return timeCoord->printTimeStatus(); + } else { + return "{}"; + } + } + if (queryStr == "current_state") { + Json::Value base; + base["name"] = getIdentifier(); + base["id"] = global_broker_id_local.baseValue(); + base["state"] = brokerStateName(brokerState.load()); + base["federates"] = Json::arrayValue; + for (auto& fed : loopFederates) { + Json::Value fedstate; + fedstate["state"] = state_string(fed.state); + fedstate["id"] = fed.fed->global_id.load().baseValue(); + fedstate["name"] = fed.fed->getIdentifier(); + base["federates"].append(std::move(fedstate)); + } + return generateJsonString(base); + } + + if (queryStr == "global_time") { + Json::Value block; + block["name"] = getIdentifier(); + block["id"] = global_broker_id_local.baseValue(); + block["parent"] = higher_broker_id.baseValue(); + block["federates"] = Json::arrayValue; + if (hasTimeDependency) { + block["next_time"] = static_cast(timeCoord->getNextTime()); + } + for (auto fed : loopFederates) { + Json::Value fedBlock; + fedBlock["name"] = fed->getIdentifier(); + fedBlock["id"] = fed->global_id.load().baseValue(); + fedBlock["granted_time"] = static_cast(fed->grantedTime()); + fedBlock["send_time"] = static_cast(fed->nextAllowedSendTime()); + block["federates"].append(fedBlock); + } + return generateJsonString(block); + } if (queryStr == "dependencies") { Json::Value base; base["name"] = getIdentifier(); @@ -2807,7 +2865,11 @@ void CommonCore::processCommand(ActionMessage&& command) command.dest_id = root_broker_id; transmit(parent_route_id, std::move(command)); break; - } else { + } else if (command.source_id.isValid()) { + auto fed = loopFederates.find(command.source_id); + if (fed != loopFederates.end()) { + fed->state = operation_state::error; + } } } routeMessage(command); diff --git a/src/helics/core/CommonCore.hpp b/src/helics/core/CommonCore.hpp index 0020280764..b0066753e9 100644 --- a/src/helics/core/CommonCore.hpp +++ b/src/helics/core/CommonCore.hpp @@ -38,6 +38,9 @@ enum class handle_type : char; /** enumeration of possible operating conditions for a federate*/ enum class operation_state : std::uint8_t { operating = 0, error = 5, disconnected = 10 }; +/** function to print string for the state*/ +const std::string& state_string(operation_state state); + /** helper class for containing some wrapper around a federate for the core*/ class FedInfo { public: diff --git a/src/helics/core/CoreBroker.cpp b/src/helics/core/CoreBroker.cpp index a5a8f7b8f2..1badacc0c5 100644 --- a/src/helics/core/CoreBroker.cpp +++ b/src/helics/core/CoreBroker.cpp @@ -27,6 +27,29 @@ using namespace std::string_literals; constexpr char universalKey[] = "**"; +const std::string& state_string(connection_state state) +{ + static const std::string c1{"connected"}; + static const std::string init{"init_requested"}; + static const std::string operating{"operating"}; + static const std::string estate{"error"}; + static const std::string dis{"disconnected"}; + switch (state) { + case connection_state::operating: + return operating; + case connection_state::init_requested: + return init; + case connection_state::connected: + return c1; + case connection_state::request_disconnect: + case connection_state::disconnected: + return dis; + case connection_state::error: + default: + return estate; + } +} + CoreBroker::~CoreBroker() { std::lock_guard lock(name_mutex_); @@ -2222,9 +2245,40 @@ void CoreBroker::processDisconnect(ActionMessage& command) } } +void CoreBroker::markAsDisconnected(global_broker_id brkid) +{ + bool isCore{false}; + for (size_t ii = 0; ii < _brokers.size(); ++ii) { + auto& brk = _brokers[ii]; + if (brk.global_id == brkid) { + if (brk.state != connection_state::error) { + brk.state = connection_state::disconnected; + isCore = brk._core; + } + } + if (brk.parent == brkid) { + if (brk.state != connection_state::error) { + brk.state = connection_state::disconnected; + markAsDisconnected(brk.global_id); + } + } + } + if (isCore) { + for (size_t ii = 0; ii < _federates.size(); ++ii) { + auto& fed = _federates[ii]; + + if (fed.parent == brkid) { + if (fed.state != connection_state::error) { + fed.state = connection_state::disconnected; + } + } + } + } +} + void CoreBroker::disconnectBroker(BasicBrokerInfo& brk) { - brk.state = connection_state::disconnected; + markAsDisconnected(brk.global_id); if (brokerState < broker_state_t::operating) { if (isRootc) { ActionMessage dis(CMD_BROADCAST_DISCONNECT); @@ -2336,7 +2390,8 @@ std::string CoreBroker::generateQueryAnswer(const std::string& request) } if ((request == "queries") || (request == "available_queries")) { return "[isinit;isconnected;name;address;queries;address;counts;summary;federates;brokers;inputs;endpoints;" - "publications;filters;federate_map;dependency_graph;dependencies;dependson;dependents]"; + "publications;filters;federate_map;dependency_graph;dependencies;dependson;dependents;" + "current_time;current_state;global_time]"; } if (request == "address") { return getAddress(); @@ -2362,6 +2417,51 @@ std::string CoreBroker::generateQueryAnswer(const std::string& request) if (request == "brokers") { return generateStringVector(_brokers, [](auto& brk) { return brk.name; }); } + if (request == "current_state") { + Json::Value base; + base["name"] = getIdentifier(); + base["id"] = global_broker_id_local.baseValue(); + base["state"] = brokerStateName(brokerState.load()); + base["federates"] = Json::arrayValue; + for (auto& fed : _federates) { + Json::Value fedstate; + fedstate["name"] = fed.name; + fedstate["state"] = state_string(fed.state); + fedstate["id"] = fed.global_id.baseValue(); + base["federates"].append(std::move(fedstate)); + } + base["brokers"] = Json::arrayValue; + base["cores"] = Json::arrayValue; + for (auto& brk : _brokers) { + Json::Value brkstate; + brkstate["state"] = state_string(brk.state); + brkstate["name"] = brk.name; + brkstate["id"] = brk.global_id.baseValue(); + if (brk._core) { + base["cores"].append(std::move(brkstate)); + } else { + base["brokers"].append(std::move(brkstate)); + } + } + return generateJsonString(base); + } + if (request == "current_time") { + if (hasTimeDependency) { + return timeCoord->printTimeStatus(); + } else { + return "{}"; + } + } + if (request == "global_time") { + if (currentTimeMap.isActive()) { + return "#wait"; + } + initializeCurrentTimeMap(); + if (currentTimeMap.isCompleted()) { + return currentTimeMap.generate(); + } + return "#wait"; + } if (request == "inputs") { return generateStringVector_if( handles, @@ -2442,6 +2542,15 @@ std::string CoreBroker::generateQueryAnswer(const std::string& request) return "#invalid"; } +//enumeration of subqueries that cascade and need multiple levels of processing +enum subqueries : std::uint16_t { + general_query = 0, + federate_map = 2, + dependency_graph = 4, + current_time_map = 6, + data_flow_graph = 8 +}; + std::string CoreBroker::getNameList(std::string gidString) const { if (gidString.back() == ']') { @@ -2482,7 +2591,7 @@ void CoreBroker::initializeFederateMap() ActionMessage queryReq(CMD_BROKER_QUERY); queryReq.payload = "federate_map"; queryReq.source_id = global_broker_id_local; - queryReq.counter = 2; // indicating which processing to use + queryReq.counter = federate_map; // indicating which processing to use bool hasCores = false; for (auto& broker : _brokers) { if (broker.parent == global_broker_id_local) { @@ -2515,7 +2624,7 @@ void CoreBroker::initializeDependencyGraph() ActionMessage queryReq(CMD_BROKER_QUERY); queryReq.payload = "dependency_graph"; queryReq.source_id = global_broker_id_local; - queryReq.counter = 4; // indicating which processing to use + queryReq.counter = dependency_graph; // indicating which processing to use bool hasCores = false; for (auto& broker : _brokers) { int index; @@ -2545,6 +2654,7 @@ void CoreBroker::initializeDependencyGraph() void CoreBroker::initializeDataFlowGraph() { + //TODO:: this query is not fully formed yet and is a work in progress Json::Value& base = depMap.getJValue(); base["name"] = getIdentifier(); base["id"] = global_broker_id_local.baseValue(); @@ -2555,7 +2665,7 @@ void CoreBroker::initializeDataFlowGraph() ActionMessage queryReq(CMD_BROKER_QUERY); queryReq.payload = "dependency_graph"; queryReq.source_id = global_broker_id_local; - queryReq.counter = 4; // indicating which processing to use + queryReq.counter = dependency_graph; // indicating which processing to use bool hasCores = false; for (auto& broker : _brokers) { int index; @@ -2583,6 +2693,40 @@ void CoreBroker::initializeDataFlowGraph() } } +void CoreBroker::initializeCurrentTimeMap() +{ + Json::Value& base = currentTimeMap.getJValue(); + base["name"] = getIdentifier(); + base["id"] = global_broker_id_local.baseValue(); + if (!isRootc) { + base["parent"] = higher_broker_id.baseValue(); + } + base["brokers"] = Json::arrayValue; + ActionMessage queryReq(CMD_BROKER_QUERY); + queryReq.payload = "global_time"; + queryReq.source_id = global_broker_id_local; + queryReq.counter = current_time_map; // indicating which processing to use + bool hasCores = false; + for (auto& broker : _brokers) { + if (broker._nonLocal) { + continue; + } + int index; + if (broker._core) { + if (!hasCores) { + hasCores = true; + base["cores"] = Json::arrayValue; + } + index = currentTimeMap.generatePlaceHolder("cores"); + } else { + index = currentTimeMap.generatePlaceHolder("brokers"); + } + queryReq.messageID = index; + queryReq.dest_id = broker.global_id; + transmit(broker.route, queryReq); + } +} + void CoreBroker::processLocalQuery(const ActionMessage& m) { ActionMessage queryRep(CMD_QUERY_REPLY); @@ -2598,6 +2742,8 @@ void CoreBroker::processLocalQuery(const ActionMessage& m) fedMapRequestors.push_back(queryRep); } else if (m.payload == "data_flow_graph") { dataflowMapRequestors.push_back(queryRep); + } else if (m.payload == "global_time") { + ctimeRequestors.push_back(queryRep); } } else if (queryRep.dest_id == global_broker_id_local) { ActiveQueries.setDelayedValue(m.messageID, queryRep.payload); @@ -2683,11 +2829,11 @@ void CoreBroker::processQuery(const ActionMessage& m) void CoreBroker::processQueryResponse(const ActionMessage& m) { switch (m.counter) { - case 0: + case general_query: default: ActiveQueries.setDelayedValue(m.messageID, m.payload); break; - case 2: + case federate_map: if (fedMap.addComponent(m.payload, m.messageID)) { if (fedMapRequestors.size() == 1) { if (fedMapRequestors.front().dest_id == global_broker_id_local) { @@ -2711,7 +2857,7 @@ void CoreBroker::processQueryResponse(const ActionMessage& m) fedMapRequestors.clear(); } break; - case 4: + case dependency_graph: if (depMap.addComponent(m.payload, m.messageID)) { if (depMapRequestors.size() == 1) { if (depMapRequestors.front().dest_id == global_broker_id_local) { @@ -2735,6 +2881,31 @@ void CoreBroker::processQueryResponse(const ActionMessage& m) depMapRequestors.clear(); } break; + case current_time_map: + if (currentTimeMap.addComponent(m.payload, m.messageID)) { + if (ctimeRequestors.size() == 1) { + if (ctimeRequestors.front().dest_id == global_broker_id_local) { + ActiveQueries.setDelayedValue( + ctimeRequestors.front().messageID, currentTimeMap.generate()); + } else { + ctimeRequestors.front().payload = currentTimeMap.generate(); + routeMessage(std::move(ctimeRequestors.front())); + } + } else { + auto str = currentTimeMap.generate(); + for (auto& resp : ctimeRequestors) { + if (resp.dest_id == global_broker_id_local) { + ActiveQueries.setDelayedValue(resp.messageID, str); + } else { + resp.payload = str; + routeMessage(std::move(resp)); + } + } + } + ctimeRequestors.clear(); + currentTimeMap.reset(); + } + break; } } diff --git a/src/helics/core/CoreBroker.hpp b/src/helics/core/CoreBroker.hpp index 2ed797b3d3..cb109f2113 100644 --- a/src/helics/core/CoreBroker.hpp +++ b/src/helics/core/CoreBroker.hpp @@ -116,6 +116,9 @@ class CoreBroker: public Broker, public BrokerBase { gmlc::concurrency::DelayedObjects ActiveQueries; //!< holder for active queries JsonMapBuilder fedMap; //!< builder for the federate_map std::vector fedMapRequestors; //!< list of requesters for the active federate map + JsonMapBuilder currentTimeMap; //!< builder for the current time graph + std::vector + ctimeRequestors; //!< list of requesters for the active current time status JsonMapBuilder depMap; //!< builder for the dependency graph std::vector depMapRequestors; //!< list of requesters for the dependency graph JsonMapBuilder dataflowMap; //!< builder for the dependency graph @@ -303,6 +306,8 @@ class CoreBroker: public Broker, public BrokerBase { void processError(ActionMessage& command); /** disconnect a broker/core*/ void disconnectBroker(BasicBrokerInfo& brk); + /** mark this broker and all other that have this as a parent as disconnected*/ + void markAsDisconnected(global_broker_id brkid); /** run a check for a named interface*/ void checkForNamedInterface(ActionMessage& command); /** remove a named target from an interface*/ @@ -339,6 +344,8 @@ class CoreBroker: public Broker, public BrokerBase { void initializeDependencyGraph(); /** generate a json string containing the data flow information for all federation object*/ void initializeDataFlowGraph(); + /** generate a json string containing the time information for the federation */ + void initializeCurrentTimeMap(); /** send an error code to all direct cores*/ void sendErrorToImmediateBrokers(int error_code); diff --git a/src/helics/core/FederateState.cpp b/src/helics/core/FederateState.cpp index 9e53f35b37..88ad478913 100644 --- a/src/helics/core/FederateState.cpp +++ b/src/helics/core/FederateState.cpp @@ -1657,6 +1657,9 @@ std::string FederateState::processQueryActual(const std::string& query) const return std::to_string(dep.baseValue()); }); } + if (query == "current_time") { + return timeCoord->printTimeStatus(); + } if (query == "timeconfig") { std::ostringstream s; s << "{\n" << timeCoord->generateConfig(); @@ -1691,7 +1694,7 @@ std::string FederateState::processQuery(const std::string& query) const qstring = processQueryActual(query); } else if ((query == "queries") || (query == "available_queries")) { qstring = - "publications;inputs;endpoints;interfaces;subscriptions;dependencies;timeconfig;config;dependents"; + "publications;inputs;endpoints;interfaces;subscriptions;dependencies;timeconfig;config;dependents;current_time"; } else { // the rest might to prevent a race condition if (try_lock()) { qstring = processQueryActual(query); diff --git a/src/helics/core/ForwardingTimeCoordinator.cpp b/src/helics/core/ForwardingTimeCoordinator.cpp index 0b6af5b001..633a01b2c3 100644 --- a/src/helics/core/ForwardingTimeCoordinator.cpp +++ b/src/helics/core/ForwardingTimeCoordinator.cpp @@ -197,7 +197,8 @@ void ForwardingTimeCoordinator::sendTimeRequest() const std::string ForwardingTimeCoordinator::printTimeStatus() const { return fmt::format( - " minDe={} minminDe={}", + R"raw({{"time_next":{}, "minDe":{}, "minminDe":{}}})raw", + static_cast(time_next), static_cast(time_minDe), static_cast(time_minminDe)); } diff --git a/src/helics/core/ForwardingTimeCoordinator.hpp b/src/helics/core/ForwardingTimeCoordinator.hpp index 4a0cde108f..5b31f9799b 100644 --- a/src/helics/core/ForwardingTimeCoordinator.hpp +++ b/src/helics/core/ForwardingTimeCoordinator.hpp @@ -119,5 +119,7 @@ class ForwardingTimeCoordinator { /** check if there are any active Time dependencies*/ bool hasActiveTimeDependencies() const; + /** get the current next time*/ + Time getNextTime() const { return time_next; }; }; } // namespace helics diff --git a/src/helics/core/TimeCoordinator.cpp b/src/helics/core/TimeCoordinator.cpp index d1fdbcce25..0aac946b7f 100644 --- a/src/helics/core/TimeCoordinator.cpp +++ b/src/helics/core/TimeCoordinator.cpp @@ -480,7 +480,8 @@ void TimeCoordinator::updateTimeGrant() std::string TimeCoordinator::printTimeStatus() const { return fmt::format( - "exec={} allow={}, value={}, message={}, minDe={} minminDe={}", + R"raw({{"granted_time":{}, "exec":{}, "allow":{}, "value":{}, "message":{}, "minDe":{}, "minminDe":{}}})raw", + static_cast(time_granted), static_cast(time_exec), static_cast(time_allow), static_cast(time_value), diff --git a/tests/helics/system_tests/QueryTests.cpp b/tests/helics/system_tests/QueryTests.cpp index ffe3f340f0..57a1737dde 100644 --- a/tests/helics/system_tests/QueryTests.cpp +++ b/tests/helics/system_tests/QueryTests.cpp @@ -13,6 +13,7 @@ the top-level NOTICE for additional details. All rights reserved. SPDX-License-I #include "helics/common/JsonProcessingFunctions.hpp" #include "gtest/gtest.h" +#include struct query_tests: public FederateTestFixture, public ::testing::Test { }; @@ -108,7 +109,7 @@ TEST_P(query_type_tests, publication_fed_queries) INSTANTIATE_TEST_SUITE_P(query_tests, query_type_tests, ::testing::ValuesIn(core_types)); -TEST_F(query_tests, test_federate_map) +TEST_F(query_tests, federate_map) { SetupTest("test", 2); auto vFed1 = GetFederateAs(0); @@ -130,7 +131,7 @@ TEST_F(query_tests, test_federate_map) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_federate_map2) +TEST_F(query_tests, federate_map2) { SetupTest("test_2", 2); auto vFed1 = GetFederateAs(0); @@ -152,7 +153,7 @@ TEST_F(query_tests, test_federate_map2) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_federate_map3) +TEST_F(query_tests, federate_map3) { SetupTest("test_3", 2); auto vFed1 = GetFederateAs(0); @@ -179,7 +180,7 @@ TEST_F(query_tests, test_federate_map3) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_dependency_graph) +TEST_F(query_tests, dependency_graph) { SetupTest("test", 2); auto vFed1 = GetFederateAs(0); @@ -201,7 +202,156 @@ TEST_F(query_tests, test_dependency_graph) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_updates_indices) +TEST_F(query_tests, global_time) +{ + SetupTest("test_3", 2); + auto vFed1 = GetFederateAs(0); + auto vFed2 = GetFederateAs(1); + auto core = vFed1->getCorePointer(); + + vFed1->enterExecutingModeAsync(); + vFed2->enterExecutingMode(); + vFed1->enterExecutingModeComplete(); + + auto res = core->query("root", "global_time"); + + auto val = loadJsonStr(res); + EXPECT_EQ(val["cores"].size(), 0u); + EXPECT_EQ(val["brokers"].size(), 1u); + ASSERT_EQ(val["brokers"][0]["cores"].size(), 2u); + EXPECT_EQ(val["brokers"][0]["cores"][0]["federates"].size(), 1u); + EXPECT_EQ(val["brokers"][0]["cores"][1]["federates"].size(), 1u); + EXPECT_EQ(val["brokers"][0]["cores"][0]["federates"][0]["send_time"].asDouble(), 0.0); + EXPECT_EQ(val["brokers"][0]["cores"][0]["federates"][0]["granted_time"].asDouble(), 0.0); + + vFed2->requestTimeAsync(1.0); + vFed1->requestTime(1.0); + vFed2->requestTimeComplete(); + + res = core->query("root", "global_time"); + + val = loadJsonStr(res); + EXPECT_EQ(val["cores"].size(), 0u); + EXPECT_EQ(val["brokers"].size(), 1u); + ASSERT_EQ(val["brokers"][0]["cores"].size(), 2u); + EXPECT_EQ(val["brokers"][0]["cores"][0]["federates"].size(), 1u); + EXPECT_EQ(val["brokers"][0]["cores"][1]["federates"].size(), 1u); + EXPECT_EQ(val["brokers"][0]["cores"][0]["federates"][0]["send_time"].asDouble(), 1.0); + EXPECT_EQ(val["brokers"][0]["cores"][0]["federates"][0]["granted_time"].asDouble(), 1.0); + + core = nullptr; + vFed1->finalize(); + vFed2->finalize(); + helics::cleanupHelicsLibrary(); +} + +TEST_F(query_tests, current_time) +{ + SetupTest("test_3", 2); + auto mFed1 = GetFederateAs(0); + auto mFed2 = GetFederateAs(1); + + mFed1->registerEndpoint("ept1"); + mFed2->registerEndpoint("ept2"); + + mFed1->enterExecutingModeAsync(); + mFed2->enterExecutingMode(); + mFed1->enterExecutingModeComplete(); + + mFed1->requestTimeAsync(1.0); + mFed2->requestTime(1.0); + mFed1->requestTimeComplete(); + auto res = mFed1->query("time"); + EXPECT_EQ(std::stod(res), 1.0); + res = mFed1->query("current_time"); + auto val = loadJsonStr(res); + EXPECT_EQ(val["granted_time"].asDouble(), 1.0); + + res = mFed1->query("broker", "current_time"); + val = loadJsonStr(res); + EXPECT_EQ(val["time_next"].asDouble(), 1.0); + + res = mFed1->query("root", "current_time"); + EXPECT_EQ(res, "{}"); +} + +TEST_F(query_tests, current_state) +{ + SetupTest("test_2", 2); + auto vFed1 = GetFederateAs(0); + auto vFed2 = GetFederateAs(1); + auto core = vFed1->getCorePointer(); + + vFed1->enterExecutingModeAsync(); + vFed2->enterExecutingMode(); + vFed1->enterExecutingModeComplete(); + + auto res = core->query("root", "current_state"); + + auto val = loadJsonStr(res); + EXPECT_EQ(val["federates"].size(), 2u); + EXPECT_EQ(val["cores"].size(), 2u); + EXPECT_STREQ(val["federates"][0]["state"].asCString(), "connected"); + + vFed1->localError(-3, "test error"); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + + res = core->query("root", "current_state"); + + val = loadJsonStr(res); + EXPECT_EQ(val["federates"].size(), 2u); + EXPECT_EQ(val["cores"].size(), 2u); + EXPECT_EQ(val["brokers"].size(), 0u); + EXPECT_STREQ(val["federates"][0]["state"].asCString(), "error"); + + vFed2->finalize(); + + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + + res = core->query("root", "current_state"); + + val = loadJsonStr(res); + EXPECT_EQ(val["federates"].size(), 2u); + EXPECT_STREQ(val["federates"][1]["state"].asCString(), "disconnected"); + EXPECT_STREQ(val["cores"][1]["state"].asCString(), "disconnected"); + core = nullptr; + + vFed1->finalize(); + helics::cleanupHelicsLibrary(); +} + +TEST_F(query_tests, current_state_core) +{ + SetupTest("test_2", 2); + auto vFed1 = GetFederateAs(0); + auto vFed2 = GetFederateAs(1); + + vFed1->enterExecutingModeAsync(); + vFed2->enterExecutingMode(); + vFed1->enterExecutingModeComplete(); + + auto res = vFed1->query("core", "current_state"); + + auto val = loadJsonStr(res); + EXPECT_EQ(val["federates"].size(), 1u); + EXPECT_STREQ(val["federates"][0]["state"].asCString(), "connected"); + + vFed1->localError(-3, "test error"); + EXPECT_THROW(vFed1->requestTime(1.0), helics::HelicsException); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + res = vFed1->query("core", "current_state"); + + val = loadJsonStr(res); + EXPECT_EQ(val["federates"].size(), 1u); + EXPECT_STREQ(val["federates"][0]["state"].asCString(), "error"); + + vFed2->finalize(); + + vFed1->finalize(); + helics::cleanupHelicsLibrary(); +} + +TEST_F(query_tests, updates_indices) { SetupTest("test", 1); auto vFed1 = GetFederateAs(0); @@ -233,7 +383,7 @@ TEST_F(query_tests, test_updates_indices) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_updates_names) +TEST_F(query_tests, updates_names) { SetupTest("test", 1); auto vFed1 = GetFederateAs(0); @@ -265,7 +415,7 @@ TEST_F(query_tests, test_updates_names) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_update_values) +TEST_F(query_tests, update_values) { SetupTest("test", 1); auto vFed1 = GetFederateAs(0); @@ -305,7 +455,7 @@ TEST_F(query_tests, test_update_values) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_update_values_local) +TEST_F(query_tests, update_values_local) { SetupTest("test", 1); auto vFed1 = GetFederateAs(0); @@ -345,7 +495,7 @@ TEST_F(query_tests, test_update_values_local) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_update_values_all) +TEST_F(query_tests, update_values_all) { SetupTest("test", 1); auto vFed1 = GetFederateAs(0); @@ -385,7 +535,7 @@ TEST_F(query_tests, test_update_values_all) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_query_subscriptions) +TEST_F(query_tests, query_subscriptions) { SetupTest("zmq2", 2); auto vFed1 = GetFederateAs(0); @@ -408,7 +558,7 @@ TEST_F(query_tests, test_query_subscriptions) helics::cleanupHelicsLibrary(); } -TEST_F(query_tests, test_queries_query) +TEST_F(query_tests, queries_query) { SetupTest("zmq2", 2); auto vFed1 = GetFederateAs(0);