Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -615,11 +615,16 @@ if (WCS_HAS_ROSS)
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}>)
target_link_libraries(des-bin PRIVATE ROSS::ROSS MPI::MPI_CXX wcs ${LIB_FILESYSTEM})
target_link_libraries(des-bin PRIVATE wcs ROSS::ROSS MPI::MPI_CXX ${LIB_FILESYSTEM})
set_target_properties(des-bin PROPERTIES OUTPUT_NAME des)
list(APPEND WCS_EXEC_TARGETS des-bin)
endif (WCS_HAS_ROSS)

# add executable hybrid
if (WCS_HAS_ROSS)
list(APPEND WCS_EXEC_TARGETS hybrid-bin)
endif (WCS_HAS_ROSS)

# Build tests
add_executable( t_state_rngen-bin src/utils/unit_tests/t_state_rngen.cpp )
target_include_directories(t_state_rngen-bin PUBLIC
Expand Down Expand Up @@ -713,6 +718,7 @@ set(INCLUDE_INSTALL_DIRS
"${CMAKE_SOURCE_DIR}/src/proto"
"${CMAKE_SOURCE_DIR}/src/reaction_network"
"${CMAKE_SOURCE_DIR}/src/sim_methods"
"${CMAKE_SOURCE_DIR}/src/hybrid"
"${CMAKE_SOURCE_DIR}/src/utils")
set(LIB_INSTALL_DIR "${CMAKE_BINARY_DIR}")
set(EXTRA_CMAKE_MODULE_DIR "${CMAKE_SOURCE_DIR}/cmake/modules")
Expand Down Expand Up @@ -787,11 +793,16 @@ install(
DIRECTORY "${PROJECT_SOURCE_DIR}/src/utils"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")
install(
DIRECTORY "${PROJECT_SOURCE_DIR}/src/hybrid"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp" PATTERN "*.hh")
install(
FILES "${PROJECT_BINARY_DIR}/wcs_config.hpp"
"${PROJECT_SOURCE_DIR}/src/wcs_types.hpp"
"${PROJECT_SOURCE_DIR}/src/bgl.hpp"
"${PROJECT_SOURCE_DIR}/src/des.hpp"
"${PROJECT_SOURCE_DIR}/src/hybrid/hybrid.hpp"
"${PROJECT_SOURCE_DIR}/src/wcs-ross-bf.hpp"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")

Expand Down
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ add_subdirectory(proto)
add_subdirectory(reaction_network)
add_subdirectory(sim_methods)
add_subdirectory(utils)
add_subdirectory(hybrid)

# Propagate the files up the tree
set(WCS_HEADERS "${WCS_HEADERS}" "${THIS_DIR_HEADERS}" PARENT_SCOPE)
Expand Down
58 changes: 58 additions & 0 deletions src/hybrid/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# blt_add_executable(
# NAME hybrid
# SOURCES actor.cc
# DEPENDS_ON ROSS mpi
# )
# find_package(Python COMPONENTS Interpreter)

set(actor_srcs ${CMAKE_CURRENT_SOURCE_DIR}/Funnel.hh)

add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/actor.gen.cc
COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generateInfrastructure.py ${actor_srcs} > ${CMAKE_CURRENT_BINARY_DIR}/actor.gen.cc
MAIN_DEPENDENCY generateInfrastructure.py
DEPENDS generateInfrastructure.py ${actor_srcs}
VERBATIM)

set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/actor.gen.cc
PROPERTIES GENERATED TRUE
)

if (WCS_HAS_ROSS)
add_executable(hybrid-bin
hybrid.cpp
hybrid.hpp
actor.hh
Checkpoint.hh
simtime.hh
actor.cc
${actor_srcs}
${CMAKE_CURRENT_BINARY_DIR}/actor.gen.cc
)
target_link_libraries(hybrid-bin PUBLIC ROSS::ROSS MPI::MPI_CXX wcs ${LIB_FILESYSTEM})
target_include_directories(hybrid-bin SYSTEM PUBLIC ${ROSS_INCLUDE_DIRS})
target_include_directories(hybrid-bin PUBLIC
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}>)

set_target_properties(hybrid-bin PROPERTIES OUTPUT_NAME hybrid)
endif()

set_full_path(THIS_DIR_HEADERS
)

set_full_path(THIS_DIR_SOURCES
)

# # Add the subdirectories


# set(THIS_DIR_SOURCES "${THIS_DIR_SOURCES}" "${CMAKE_CURRENT_BINARY_DIR}/actor.gen.cc")

# # Propagate the files up the tree
set(WCS_HEADERS "${WCS_HEADERS}" "${THIS_DIR_HEADERS}" PARENT_SCOPE)
set(WCS_SOURCES "${WCS_SOURCES}" "${THIS_DIR_SOURCES}" PARENT_SCOPE)


46 changes: 46 additions & 0 deletions src/hybrid/Checkpoint.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#pragma once

#include <list>
#include <string>
#include <sstream>

// This could be done any number of ways faster/better than a list,
// but keep it for now. We can optimize this later, so long as we
// have the following interface.
class CHECKPOINTQueue {
public:
void push_back(std::string newString) { queue.push_back(newString); }
void pop_back() { queue.pop_back(); }
std::string back() { return queue.back(); }
std::string front() { return queue.front(); }
void pop_front() { queue.pop_front(); }

std::list<std::string> queue;
};

class InputCHECKPOINT {
public:
std::string str() { return sss.str(); }

template <typename TTT>
InputCHECKPOINT& operator&(const TTT& ttt) {
sss.write(reinterpret_cast<const char*>(&ttt), sizeof(TTT));
return *this;
}

std::stringstream sss;
};

class OutputCHECKPOINT {
public:
OutputCHECKPOINT(std::string newString) {
sss.str(newString);
}
template <typename TTT>
OutputCHECKPOINT& operator&(TTT& ttt) {
sss.read(reinterpret_cast<char *>(&ttt), sizeof(TTT));
return *this;
}

std::stringstream sss;
};
Loading