Skip to content

Commit

Permalink
WIP: ep update
Browse files Browse the repository at this point in the history
  • Loading branch information
kbenne committed Jun 25, 2024
1 parent 25b399b commit e7c9385
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 49 deletions.
2 changes: 1 addition & 1 deletion cmake/EnergyPlus.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ execute_process(COMMAND ${CMAKE_COMMAND}
-DPROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}/energyplus
-DSpawn_SOURCE_DIR=${Spawn_SOURCE_DIR}
-P ${PROJECT_SOURCE_DIR}/cmake/create_energyplus_version.cmake)
include("${PROJECT_BINARY_DIR}/EnergyPlus/energyplus_version.cmake")
include("${PROJECT_BINARY_DIR}/energyplus/energyplus_version.cmake")

# EnergyPlus is forcing CPACK_BINARY_IFW on but for Spawn we aren't using IFW so
# reset to OFF
Expand Down
58 changes: 29 additions & 29 deletions energyplus_coroutine/spawn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -418,35 +418,35 @@ double Spawn::zoneHeatTransfer(const int zonenum)
return heatTransfer;
}

void Spawn::setInsideSurfaceTemperature(const int surfacenum, double temp)
{
auto &surface = sim_state.dataSurface->Surface(as_size_t(surfacenum));
setActuatorValue("Surface", "Surface Inside Temperature", surface.Name, temp);
auto &extBoundCond = surface.ExtBoundCond;
if (extBoundCond > 0) {
// If this is an interzone surface then set the outside of the matching surface
auto &other_surface = sim_state.dataSurface->Surface(as_size_t(extBoundCond));
setActuatorValue("Surface", "Surface Outside Temperature", other_surface.Name, temp);
}
}

void Spawn::setOutsideSurfaceTemperature(const int surfacenum, double temp)
{
auto &surface = sim_state.dataSurface->Surface(as_size_t(surfacenum));
setActuatorValue("Surface", "Surface Outside Temperature", surface.Name, temp);
auto &extBoundCond = surface.ExtBoundCond;

if (surfacenum == extBoundCond) {
throw std::runtime_error(fmt::format("Attempt to control surface named {} that has a self referencing exterior "
"boundary condition. This is not supported by Spawn",
surface.Name));
}

if (extBoundCond > 0) {
// If this is an interzone surface then set the inside of the matching surface
auto &other_surface = sim_state.dataSurface->Surface(as_size_t(extBoundCond));
setActuatorValue("Surface", "Surface Inside Temperature", other_surface.Name, temp);
}
void Spawn::setInsideSurfaceTemperature([[__maybe_unused__]] const int surfacenum, [[__maybe_unused__]] double temp)
{
// auto &surface = sim_state.dataSurface->Surface(as_size_t(surfacenum));
// setActuatorValue("Surface", "Surface Inside Temperature", surface.Name, temp);
// auto &extBoundCond = surface.ExtBoundCond;
// if (extBoundCond > 0) {
// // If this is an interzone surface then set the outside of the matching surface
// auto &other_surface = sim_state.dataSurface->Surface(as_size_t(extBoundCond));
// setActuatorValue("Surface", "Surface Outside Temperature", other_surface.Name, temp);
// }
}

void Spawn::setOutsideSurfaceTemperature([[__maybe_unused__]] const int surfacenum, [[__maybe_unused__]] double temp)
{
// auto &surface = sim_state.dataSurface->Surface(as_size_t(surfacenum));
// setActuatorValue("Surface", "Surface Outside Temperature", surface.Name, temp);
// auto &extBoundCond = surface.ExtBoundCond;

// if (surfacenum == extBoundCond) {
// throw std::runtime_error(fmt::format("Attempt to control surface named {} that has a self referencing exterior "
// "boundary condition. This is not supported by Spawn",
// surface.Name));
// }

// if (extBoundCond > 0) {
// // If this is an interzone surface then set the inside of the matching surface
// auto &other_surface = sim_state.dataSurface->Surface(as_size_t(extBoundCond));
// setActuatorValue("Surface", "Surface Inside Temperature", other_surface.Name, temp);
// }
}

double Spawn::getInsideSurfaceHeatFlow(const int surfacenum) const
Expand Down
4 changes: 2 additions & 2 deletions mbl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ if(ENABLE_BUILDINGS_LIBRARY)
MBL
BUILD_ALWAYS 1
BUILD_IN_SOURCE
GIT_REPOSITORY https://github.com/lbl-srg/modelica-buildings.git
GIT_TAG e91e28d66955efc71285cc294e2589cd1505f70c
GIT_REPOSITORY https://github.com/kbenne/modelica-buildings.git
GIT_TAG 08ea0db72514a7773d9afc05bf889e0ce8999e30
GIT_SHALLOW
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG>
COMMAND ${CMAKE_COMMAND}
Expand Down
34 changes: 17 additions & 17 deletions test/test_mbl_idf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,33 +30,33 @@ TEST_CASE("Test SingleFamilyHouse as FMU")

const auto model_description_path = fmu.extractedFilesPath() / fmu.modelDescriptionPath();
spawn::fmu::ModelDescription modelDescription(model_description_path);
const auto core_zn_t_ref = modelDescription.valueReference("LIVING ZONE_T");
const auto core_zone_q_ref = modelDescription.valueReference("LIVING ZONE_QConSen_flow");
// const auto core_zn_t_ref = modelDescription.valueReference("LIVING ZONE_T");
// const auto core_zone_q_ref = modelDescription.valueReference("LIVING ZONE_QConSen_flow");

std::array<fmi2ValueReference, 1> input_vr{core_zn_t_ref};
std::array<fmi2Real, 1> input_v{294.15};
status = fmu.fmi.fmi2SetReal(comp, input_vr.data(), 1U, input_v.data());
REQUIRE(status == fmi2OK);
// std::array<fmi2ValueReference, 1> input_vr{core_zn_t_ref};
// std::array<fmi2Real, 1> input_v{294.15};
// status = fmu.fmi.fmi2SetReal(comp, input_vr.data(), 1U, input_v.data());
// REQUIRE(status == fmi2OK);

// fmi2GetReal will start energyplus
std::array<fmi2ValueReference, 1> output_vr{core_zone_q_ref};
std::array<fmi2Real, 1> output_v{};
status = fmu.fmi.fmi2GetReal(comp, output_vr.data(), 1U, output_v.data());
REQUIRE(status == fmi2OK);
//// fmi2GetReal will start energyplus
// std::array<fmi2ValueReference, 1> output_vr{core_zone_q_ref};
// std::array<fmi2Real, 1> output_v{};
// status = fmu.fmi.fmi2GetReal(comp, output_vr.data(), 1U, output_v.data());
// REQUIRE(status == fmi2OK);

// Without the previous call to fmi2GetReal this would start energyplus
// In this case it just returns ok
status = fmu.fmi.fmi2ExitInitializationMode(comp);
REQUIRE(status == fmi2OK);

status = fmu.fmi.fmi2GetReal(comp, output_vr.data(), 1U, output_v.data());
REQUIRE(status == fmi2OK);
// status = fmu.fmi.fmi2GetReal(comp, output_vr.data(), 1U, output_v.data());
// REQUIRE(status == fmi2OK);

status = fmu.fmi.fmi2SetTime(comp, spawn::days_to_seconds(2));
REQUIRE(status == fmi2OK);
// status = fmu.fmi.fmi2SetTime(comp, spawn::days_to_seconds(2));
// REQUIRE(status == fmi2OK);

status = fmu.fmi.fmi2GetReal(comp, output_vr.data(), 1U, output_v.data());
REQUIRE(status == fmi2OK);
// status = fmu.fmi.fmi2GetReal(comp, output_vr.data(), 1U, output_v.data());
// REQUIRE(status == fmi2OK);

status = fmu.fmi.fmi2Terminate(comp);
REQUIRE(status == fmi2OK);
Expand Down

0 comments on commit e7c9385

Please sign in to comment.