diff --git a/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.csproj b/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.csproj index 3449850d85..b1e710270f 100644 --- a/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.csproj +++ b/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.csproj @@ -1,7 +1,7 @@  - NET7 + NET8 false x64 diff --git a/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.x86.csproj b/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.x86.csproj index e1213dd540..642d926d3f 100644 --- a/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.x86.csproj +++ b/csharp/examples/OpenStudio.Tests/OpenStudio.Tests.x86.csproj @@ -1,7 +1,7 @@  - NET7 + NET8 false x86 diff --git a/developer/ruby/FindMissingSWIGTypes.rb b/developer/ruby/FindMissingSWIGTypes.rb index b047973ab5..0ea6775dd3 100644 --- a/developer/ruby/FindMissingSWIGTypes.rb +++ b/developer/ruby/FindMissingSWIGTypes.rb @@ -48,6 +48,12 @@ "OpenStudioUtilitiesData" => [ "SWIGTYPE_p_std__variantT_std__monostate_bool_double_int_unsigned_int_std__string_std__vectorT_openstudio__Attribute_t_t.cs", ], + "OpenStudioUtilitiesIdf" => [ + "SWIGTYPE_p_std__shared_ptrT_openstudio__detail__Workspace_Impl_t.cs" # Protected + ], + "OpenStudioModelCore" => [ + "SWIGTYPE_p_std__shared_ptrT_openstudio__model__detail__Model_Impl_t.cs" # Protected + ], } n_ignored = known_errors.sum{|k, v| v.size} diff --git a/src/alfalfa/Alfalfa.i b/src/alfalfa/Alfalfa.i index 37530704fc..29b393bf42 100644 --- a/src/alfalfa/Alfalfa.i +++ b/src/alfalfa/Alfalfa.i @@ -34,7 +34,7 @@ using namespace openstudio::alfalfa; %} -%ignore openstudio::alfalfa::AlfalfaComponentBase; +%ignore openstudio::alfalfa::AlfalfaComponentBase::clone; %ignore openstudio::alfalfa::AlfalfaActuator::clone; %ignore openstudio::alfalfa::AlfalfaConstant::clone; %ignore openstudio::alfalfa::AlfalfaMeter::clone; diff --git a/src/model/ModelCore.i b/src/model/ModelCore.i index 8929e7c45d..18e1f5863c 100644 --- a/src/model/ModelCore.i +++ b/src/model/ModelCore.i @@ -36,6 +36,7 @@ %ignore openstudio::model::Model::lightingSimulationControl; %ignore openstudio::model::Model::outputControlFiles; %ignore openstudio::model::Model::outputControlReportingTolerances; + %ignore openstudio::model::Model::outputControlResilienceSummaries; %ignore openstudio::model::Model::outputControlTableStyle; %ignore openstudio::model::Model::outputControlTimestamp; %ignore openstudio::model::Model::outputDebuggingData; @@ -85,6 +86,7 @@ const std::string& actuatedComponentType, const std::string& actuatedComponentControlType, const Space& space); + %ignore openstudio::model::EnergyManagementSystemActuator::space; %ignore openstudio::model::EnergyManagementSystemActuator::setSpace; // depends on ThermalZone (ModelHVAC.i) @@ -92,6 +94,7 @@ const std::string& actuatedComponentType, const std::string& actuatedComponentControlType, const ThermalZone& thermalZone); + %ignore openstudio::model::EnergyManagementSystemActuator::thermalZone; %ignore openstudio::model::EnergyManagementSystemActuator::setThermalZone; diff --git a/src/model/ModelGeometry.i b/src/model/ModelGeometry.i index 94bb4a0192..2207c80b6c 100644 --- a/src/model/ModelGeometry.i +++ b/src/model/ModelGeometry.i @@ -32,6 +32,10 @@ %ignore openstudio::model::Space::setThermalZone; %ignore openstudio::model::Space::waterUseEquipment; + %ignore openstudio::model::Space::zoneMixing; + %ignore openstudio::model::Space::supplyZoneMixing; + %ignore openstudio::model::Space::exhaustZoneMixing; + %ignore openstudio::model::DaylightingDeviceTubular::transitionZones; %ignore openstudio::model::DaylightingDeviceTubular::addTransitionZone; %ignore openstudio::model::DaylightingDeviceTubular::addTransitionZones; @@ -360,7 +364,11 @@ SWIG_MODELOBJECT(ExteriorWaterEquipment, 1); return sc.setSubSurfaces(subSurfaces); } - // EMS Actuator setter for Space (reimplemented from ModelCore.i) + // EMS Actuator getter/setter for Space (reimplemented from ModelCore.i) + boost::optional getSpaceForEMSActuator(const openstudio::model::EnergyManagementSystemActuator& actuator) { + return actuator.space(); + } + bool setSpaceForEMSActuator(openstudio::model::EnergyManagementSystemActuator actuator, openstudio::model::Space space) { return actuator.setSpace(space); } @@ -450,6 +458,11 @@ SWIG_MODELOBJECT(ExteriorWaterEquipment, 1); } public partial class EnergyManagementSystemActuator : ModelObject { + + public OptionalSpace space() { + return OpenStudio.OpenStudioModelGeometry.getSpaceForEMSActuator(this); + } + public bool setSpace(OpenStudio.Space space) { return OpenStudio.OpenStudioModelGeometry.setSpaceForEMSActuator(this, space); } diff --git a/src/model/ModelHVAC.i b/src/model/ModelHVAC.i index 230c86d9dd..356ce9c494 100644 --- a/src/model/ModelHVAC.i +++ b/src/model/ModelHVAC.i @@ -63,6 +63,13 @@ %ignore openstudio::model::CoilHeatingGasMultiStageStageData::parentCoil; %ignore openstudio::model::CoilHeatingElectricMultiStageStageData::parentCoil; + // AirCondVRF terminals: in ModelZoneHVAC.i + %ignore openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControl::addTerminal; + %ignore openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControl::removeTerminal; + %ignore openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControl::terminals; + %ignore openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControlHR::addTerminal; + %ignore openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControlHR::removeTerminal; + %ignore openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControlHR::terminals; #endif #if defined SWIGPYTHON @@ -394,18 +401,33 @@ SWIG_MODELOBJECT(LoadingIndex, 1); std::vector getThermalZones(const openstudio::model::Building& building){ return building.thermalZones(); } + + // Space (ModelGeometry.i) boost::optional getThermalZone(const openstudio::model::Space& space){ return space.thermalZone(); } bool setThermalZone(openstudio::model::Space space, openstudio::model::ThermalZone thermalZone){ return space.setThermalZone(thermalZone); } + std::vector getZoneMixing(const openstudio::model::Space& space){ + return space.zoneMixing(); + } + std::vector getSupplyZoneMixing(const openstudio::model::Space& space){ + return space.supplyZoneMixing(); + } + std::vector getExhaustZoneMixing(const openstudio::model::Space& space){ + return space.exhaustZoneMixing(); + } openstudio::model::ThermalZone getThermalZone(const openstudio::model::ZonePropertyUserViewFactorsBySurfaceName& zoneProp){ return zoneProp.thermalZone(); } - // EMS Actuator setter for ThermalZone (reimplemented from ModelCore.i) + // EMS Actuator getter/setter for ThermalZone (reimplemented from ModelCore.i) + boost::optional getThermalZoneForEMSActuator(const openstudio::model::EnergyManagementSystemActuator& actuator) { + return actuator.thermalZone(); + } + bool setThermalZoneForEMSActuator(openstudio::model::EnergyManagementSystemActuator actuator, openstudio::model::ThermalZone thermalZone) { return actuator.setThermalZone(thermalZone); } @@ -425,6 +447,11 @@ SWIG_MODELOBJECT(LoadingIndex, 1); return hxData.heatExchangerDesiccantBalancedFlows(); } + // Reimplemented from ModelResources.i + std::vector getChillerElectricASHRAE205s(const openstudio::model::ExternalFile& externalFile) { + return externalFile.chillerElectricASHRAE205s(); + } + // DaylightingDeviceTubular, reimplemented from ModelGeometry.i std::vector transitionZones(const openstudio::model::DaylightingDeviceTubular& tubular) { return tubular.transitionZones(); @@ -475,6 +502,15 @@ SWIG_MODELOBJECT(LoadingIndex, 1); { return OpenStudio.OpenStudioModelHVAC.setThermalZone(this, thermalZone); } + public ZoneMixingVector zoneMixing() { + return OpenStudio.OpenStudioModelHVAC.getZoneMixing(this); + } + public ZoneMixingVector supplyZoneMixing() { + return OpenStudio.OpenStudioModelHVAC.getSupplyZoneMixing(this); + } + public ZoneMixingVector exhaustZoneMixing() { + return OpenStudio.OpenStudioModelHVAC.getExhaustZoneMixing(this); + } } public partial class ZonePropertyUserViewFactorsBySurfaceName : ModelObject { @@ -485,6 +521,10 @@ SWIG_MODELOBJECT(LoadingIndex, 1); } public partial class EnergyManagementSystemActuator : ModelObject { + public OptionalThermalZone thermalZone() { + return OpenStudio.OpenStudioModelHVAC.getThermalZoneForEMSActuator(this); + } + public bool setThermalZone(OpenStudio.ThermalZone thermalZone) { return OpenStudio.OpenStudioModelHVAC.setThermalZoneForEMSActuator(this, thermalZone); } @@ -511,6 +551,12 @@ SWIG_MODELOBJECT(LoadingIndex, 1); } } + public partial class ExternalFile : ResourceObject { + public ChillerElectricASHRAE205Vector chillerElectricASHRAE205s() { + return OpenStudio.OpenStudioModelHVAC.getChillerElectricASHRAE205s(this); + } + } + public partial class DaylightingDeviceTubular : ModelObject { public TransitionZoneVector transitionZones(){ diff --git a/src/model/ModelResources.i b/src/model/ModelResources.i index af70e0167c..8acd51daec 100644 --- a/src/model/ModelResources.i +++ b/src/model/ModelResources.i @@ -39,9 +39,8 @@ // HeatExchangerDesiccantBalancedFlow is done later in ModelHVAC.i %ignore openstudio::model::HeatExchangerDesiccantBalancedFlowPerformanceDataType1::heatExchangerDesiccantBalancedFlows; - // TODO: why? - // ignore schedule type - // %ignore openstudio::model::ScheduleType; + // Done later in ModelHVAC.i + %ignore openstudio::model::ExternalFile::chillerElectricASHRAE205s; #endif @@ -339,7 +338,9 @@ SWIG_MODELOBJECT(HeatExchangerDesiccantBalancedFlowPerformanceDataType1, 1); : this(model) { this.setCurveOrTableObject(curve); } + } + public partial class Model : Workspace { public OptionalPythonPluginSearchPaths pythonPluginSearchPaths() { return OpenStudio.OpenStudioModelResources.pythonPluginSearchPaths(this); } diff --git a/src/model/ModelZoneHVAC.i b/src/model/ModelZoneHVAC.i index 2c9d85ae1f..2d0ee760dc 100644 --- a/src/model/ModelZoneHVAC.i +++ b/src/model/ModelZoneHVAC.i @@ -94,4 +94,73 @@ SWIG_MODELOBJECT(ZoneHVACUnitHeater,1); SWIG_MODELOBJECT(ZoneHVACUnitVentilator,1); SWIG_MODELOBJECT(ZoneHVACWaterToAirHeatPump,1); +#if defined(SWIGCSHARP) || defined(SWIGJAVA) + %inline { + namespace openstudio { + namespace model { + + // AirCondVRF, reimplemented from ModelHVAC.i + std::vector terminals(const openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControl& airCondVRF) { + return airCondVRF.terminals(); + } + bool addTerminal(openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControl airCondVRF, openstudio::model::ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + return airCondVRF.addTerminal(vrf); + } + void removeTerminal(openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControl airCondVRF, openstudio::model::ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + airCondVRF.removeTerminal(vrf); + } + + std::vector terminals(const openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControlHR& airCondVRF) { + return airCondVRF.terminals(); + } + bool addTerminal(openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControlHR airCondVRF, openstudio::model::ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + return airCondVRF.addTerminal(vrf); + } + void removeTerminal(openstudio::model::AirConditionerVariableRefrigerantFlowFluidTemperatureControlHR airCondVRF, openstudio::model::ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + airCondVRF.removeTerminal(vrf); + } + + } // namespace model + } // namespace openstudio + } // %inline +#endif + +#if defined(SWIGCSHARP) + //%pragma(csharp) imclassimports=%{ + %pragma(csharp) moduleimports=%{ + + using System; + using System.Runtime.InteropServices; + + public partial class AirConditionerVariableRefrigerantFlowFluidTemperatureControl : HVACComponent { + public ZoneHVACTerminalUnitVariableRefrigerantFlowVector terminals(){ + return OpenStudio.OpenStudioModelZoneHVAC.terminals(this); + } + + public bool addTerminal(OpenStudio.ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + return OpenStudio.OpenStudioModelZoneHVAC.addTerminal(this, vrf); + } + + public void removeTerminal(OpenStudio.ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + OpenStudio.OpenStudioModelZoneHVAC.removeTerminal(this, vrf); + } + } + + public partial class AirConditionerVariableRefrigerantFlowFluidTemperatureControlHR : HVACComponent { + public ZoneHVACTerminalUnitVariableRefrigerantFlowVector terminals(){ + return OpenStudio.OpenStudioModelZoneHVAC.terminals(this); + } + + public bool addTerminal(OpenStudio.ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + return OpenStudio.OpenStudioModelZoneHVAC.addTerminal(this, vrf); + } + + public void removeTerminal(OpenStudio.ZoneHVACTerminalUnitVariableRefrigerantFlow vrf) { + OpenStudio.OpenStudioModelZoneHVAC.removeTerminal(this, vrf); + } + } + + %} +#endif + #endif diff --git a/src/utilities/filetypes/Filetypes.i b/src/utilities/filetypes/Filetypes.i index 88fd5e0328..c8c246496f 100644 --- a/src/utilities/filetypes/Filetypes.i +++ b/src/utilities/filetypes/Filetypes.i @@ -80,6 +80,7 @@ %ignore std::vector::vector(size_type); %ignore std::vector::resize(size_type); %template(EpwGroundTemperatureDepthVector) std::vector; +%template(OptionalEpwGroundTemperatureDepth) boost::optional; %ignore std::vector::vector(size_type); %ignore std::vector::resize(size_type); @@ -118,6 +119,9 @@ %ignore std::vector::resize(size_type); %template(MeasureStepVector) std::vector; %template(OptionalMeasureStep) boost::optional; +// WorkflowJSON::getMeasureStepsWithIndex +%template(UIntMeasureStepPair) std::pair; +%template(UIntMeasureStepPairVector) std::vector >; %template(WorkflowJSONVector) std::vector; %template(OptionalWorkflowJSON) boost::optional; diff --git a/src/utilities/filetypes/WorkflowStep.cpp b/src/utilities/filetypes/WorkflowStep.cpp index d96d75bce1..542e89af71 100644 --- a/src/utilities/filetypes/WorkflowStep.cpp +++ b/src/utilities/filetypes/WorkflowStep.cpp @@ -275,12 +275,13 @@ bool WorkflowStep::operator==(const WorkflowStep& other) const { return m_impl == other.m_impl; } -MeasureStep::MeasureStep(const std::string& measureDirName) - : WorkflowStep(std::shared_ptr(new detail::MeasureStep_Impl(measureDirName))) { +MeasureStep::MeasureStep() : WorkflowStep(std::make_shared("")) {} + +MeasureStep::MeasureStep(const std::string& measureDirName) : WorkflowStep(std::make_shared(measureDirName)) { OS_ASSERT(getImpl()); } -MeasureStep::MeasureStep(std::shared_ptr impl) : WorkflowStep(impl) { +MeasureStep::MeasureStep(std::shared_ptr impl) : WorkflowStep(std::move(impl)) { OS_ASSERT(getImpl()); } diff --git a/src/utilities/filetypes/WorkflowStep.hpp b/src/utilities/filetypes/WorkflowStep.hpp index ea147dc0ba..69e2279fde 100644 --- a/src/utilities/filetypes/WorkflowStep.hpp +++ b/src/utilities/filetypes/WorkflowStep.hpp @@ -95,6 +95,9 @@ class UTILITIES_API WorkflowStep class UTILITIES_API MeasureStep : public WorkflowStep { public: + // Makes no sense really, providing it for SWIG only now, really for WorkflowJSON::getMeasureStepsWithIndex + MeasureStep(); + MeasureStep(const std::string& measureDirName); std::string measureDirName() const; diff --git a/src/utilities/xml/XMLValidator.i b/src/utilities/xml/XMLValidator.i index 402d81b862..2a6cf3e611 100644 --- a/src/utilities/xml/XMLValidator.i +++ b/src/utilities/xml/XMLValidator.i @@ -3,6 +3,7 @@ %include %import +%import %{ #include