diff --git a/src/EnergyPlus/DXCoils.cc b/src/EnergyPlus/DXCoils.cc index f38446adfdf..1ecbac367cd 100644 --- a/src/EnergyPlus/DXCoils.cc +++ b/src/EnergyPlus/DXCoils.cc @@ -232,21 +232,7 @@ void SimDXCoil(EnergyPlusData &state, } break; case HVAC::CoilVRF_FluidTCtrl_Cooling: { // fixme: this redefines the MaxCap, how should I go about changing it from optional arg to non-optional? - if (present(MaxCap)) { - CalcVRFCoolingCoil_FluidTCtrl( - state, DXCoilNum, HVAC::CompressorOp::On, FirstHVACIteration, PartLoadRatio, fanOp, CompCycRatio, MaxCap, _, _); - } else { - CalcVRFCoolingCoil_FluidTCtrl(state, - DXCoilNum, - HVAC::CompressorOp::On, - FirstHVACIteration, - PartLoadRatio, - fanOp, - CompCycRatio, - HVACVariableRefrigerantFlow::MaxCap, - _, - _); - } + CalcVRFCoolingCoil_FluidTCtrl(state, DXCoilNum, HVAC::CompressorOp::On, FirstHVACIteration, PartLoadRatio, fanOp, CompCycRatio, _, _, MaxCap); } break; case HVAC::CoilVRF_FluidTCtrl_Heating: { CalcVRFHeatingCoil_FluidTCtrl(state, compressorOp, DXCoilNum, PartLoadRatio, fanOp, _, MaxCap); @@ -6887,7 +6873,7 @@ void InitDXCoil(EnergyPlusData &state, int const DXCoilNum) // number of the cur CalcVRFCoolingCoil(state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, _, _, _); } else if (thisDXCoil.DXCoilType_Num == HVAC::CoilVRF_FluidTCtrl_Cooling) { CalcVRFCoolingCoil_FluidTCtrl( - state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, HVACVariableRefrigerantFlow::MaxCap, _, _); + state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, _, _, Constant::MaxCap); } // coil outlets @@ -16525,9 +16511,9 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state, Real64 const PartLoadRatio, // sensible cooling load / full load sensible cooling capacity HVAC::FanOp const fanOp, // Allows parent object to control fan operation Real64 const CompCycRatio, // cycling ratio of VRF condenser - Real64 MaxCoolCap, // maximum allowed cooling capacity ObjexxFCL::Optional_int_const PerfMode, // Performance mode for MultiMode DX coil; Always 1 for other coil types - ObjexxFCL::Optional OnOffAirFlowRatio // ratio of compressor on airflow to compressor off airflow + ObjexxFCL::Optional OnOffAirFlowRatio, // ratio of compressor on airflow to compressor off airflow + Real64 MaxCoolCap // maximum allowed cooling capacity ) { // SUBROUTINE INFORMATION: @@ -17356,6 +17342,8 @@ void ControlVRFIUCoil(EnergyPlusData &state, Garate = state.dataDXCoils->DXCoil(CoilIndex).RatedAirMassFlowRate(1); // why always limit the minimum fan speed ratio to 0.65? FanSpdRatioMin = min(max(OAMassFlow / Garate, 0.65), 1.0); // ensure that coil flow rate is higher than OA flow rate + // yujie: temporary remove this + FanSpdRatioMin = 0.0; if (QCoil == 0) { // No Heating or Cooling diff --git a/src/EnergyPlus/DXCoils.hh b/src/EnergyPlus/DXCoils.hh index 947adf08a48..e79a70ca309 100644 --- a/src/EnergyPlus/DXCoils.hh +++ b/src/EnergyPlus/DXCoils.hh @@ -541,7 +541,7 @@ namespace DXCoils { ObjexxFCL::Optional PartLoadRatio = _, // part load ratio (for single speed cycling unit) ObjexxFCL::Optional OnOffAFR = _, // ratio of compressor on airflow to compressor off airflow ObjexxFCL::Optional CoilCoolingHeatingPLRRatio = _, // used for cycling fan RH control - ObjexxFCL::Optional MaxCap = _, // maximum cooling capacity of VRF terminal units + ObjexxFCL::Optional MaxCap = Constant::MaxCap, // maximum cooling capacity of VRF terminal units ObjexxFCL::Optional CompCyclingRatio = _ // cycling ratio of VRF condenser connected to this TU ); @@ -877,9 +877,9 @@ namespace DXCoils { Real64 const PartLoadRatio, // sensible cooling load / full load sensible cooling capacity HVAC::FanOp const fanOp, // Allows parent object to control fan operation Real64 const CompCycRatio, // cycling ratio of VRF condenser - Real64 MaxCoolCap, // maximum allowed cooling capacity ObjexxFCL::Optional_int_const PerfMode, // Performance mode for MultiMode DX coil; Always 1 for other coil types - ObjexxFCL::Optional OnOffAirFlowRatio // ratio of compressor on airflow to compressor off airflow + ObjexxFCL::Optional OnOffAirFlowRatio, // ratio of compressor on airflow to compressor off airflow + Real64 MaxCoolCap = Constant::MaxCap // maximum allowed cooling capacity ); void diff --git a/src/EnergyPlus/DataGlobalConstants.hh b/src/EnergyPlus/DataGlobalConstants.hh index 26daeb678ae..5a940d4e907 100644 --- a/src/EnergyPlus/DataGlobalConstants.hh +++ b/src/EnergyPlus/DataGlobalConstants.hh @@ -603,6 +603,8 @@ namespace Constant { Real64 constexpr UniversalGasConst = 8314.462175; // Universal Gas Constant (J/mol*K) Real64 constexpr convertJtoGJ = 1.0E-9; // Conversion factor for J to GJ + Real64 constexpr MaxCap(1.0e+20); // limit of zone terminal unit capacity + } // namespace Constant } // namespace EnergyPlus diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc index 71021da4d9f..0ad0805e76b 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc @@ -1493,8 +1493,8 @@ void GetVRFInputData(EnergyPlusData &state, bool &ErrorsFound) state.dataHVACVarRefFlow->MaxHeatingCapacity.allocate(state.dataHVACVarRefFlow->NumVRFCond); state.dataHVACVarRefFlow->CoolCombinationRatio.allocate(state.dataHVACVarRefFlow->NumVRFCond); state.dataHVACVarRefFlow->HeatCombinationRatio.allocate(state.dataHVACVarRefFlow->NumVRFCond); - state.dataHVACVarRefFlow->MaxCoolingCapacity = MaxCap; - state.dataHVACVarRefFlow->MaxHeatingCapacity = MaxCap; + state.dataHVACVarRefFlow->MaxCoolingCapacity = Constant::MaxCap; + state.dataHVACVarRefFlow->MaxHeatingCapacity = Constant::MaxCap; state.dataHVACVarRefFlow->CoolCombinationRatio = 1.0; state.dataHVACVarRefFlow->HeatCombinationRatio = 1.0; } @@ -6608,8 +6608,8 @@ void InitVRF(EnergyPlusData &state, int const VRFTUNum, int const ZoneNum, bool // terminal unit will be limited to 3-tons (see SimVRFCondenser where this variable is calculated). if (CurrentEndTime > state.dataHVACVarRefFlow->CurrentEndTimeLast || TimeStepSysLast > state.dataHVACGlobal->TimeStepSys || (FirstHVACIteration && state.dataHVACVarRefFlow->MyBeginTimeStepFlag(VRFCond))) { - state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = MaxCap; - state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = MaxCap; + state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = Constant::MaxCap; + state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = Constant::MaxCap; state.dataHVACVarRefFlow->MyBeginTimeStepFlag(VRFCond) = false; } @@ -10596,7 +10596,7 @@ void LimitCoilCapacity(int const NumTUInList, // Number of terminal un // sort TU capacity from lowest to highest for (TempTUIndex = 1; TempTUIndex <= NumTUInList; ++TempTUIndex) { - MinOutput = MaxCap; + MinOutput = Constant::MaxCap; for (NumTU = 1; NumTU <= NumTUInList; ++NumTU) { if (Temp2(NumTU) < MinOutput) { MinOutput = Temp2(NumTU); @@ -10604,7 +10604,7 @@ void LimitCoilCapacity(int const NumTUInList, // Number of terminal un MinOutputIndex = NumTU; } } - Temp2(MinOutputIndex) = MaxCap; + Temp2(MinOutputIndex) = Constant::MaxCap; } // find limit of "terminal unit" capacity so that sum of all TU's does not exceed condenser capacity @@ -11784,7 +11784,7 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) this->CoolingCapacity = 0.0; // Include the piping loss this->PipingCorrectionCooling = 0.0; - state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = MaxCap; // for report . yujie: might be wrong here too, should be MaxCap = 1e+20 + state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = Constant::MaxCap; // for report this->OUCondHeatRate = 0; this->OUEvapHeatRate = Q_c_OU; @@ -12031,13 +12031,13 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state) this->OUFanPower = 0.0; this->VRFCondCyclingRatio = 0.0; - this->HeatingCapacity = 0.0; // Include the piping loss - this->PipingCorrectionHeating = 1.0; // 1 means no piping loss - state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = MaxCap; // yujie: default value is MaxCap = 1e+20, not 0 + this->HeatingCapacity = 0.0; // Include the piping loss + this->PipingCorrectionHeating = 1.0; // 1 means no piping loss + state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = Constant::MaxCap; // yujie: default value is MaxCap = 1e+20, not 0 this->CoolingCapacity = 0.0; // Include the piping loss this->PipingCorrectionCooling = 1.0; - state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = MaxCap; // for report + state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = Constant::MaxCap; // for report this->CondensingTemp = state.dataEnvrn->OutDryBulbTemp; this->EvaporatingTemp = state.dataEnvrn->OutDryBulbTemp; @@ -12774,7 +12774,7 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state, state.dataHVACVarRefFlow->CompOffMassFlow = state.dataHVACVarRefFlow->OACompOffMassFlow; } else { // identify the air flow rate corresponding to the coil load - if (this->HeatingCoilPresent && state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) < MaxCap) { + if (this->HeatingCoilPresent && state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) < Constant::MaxCap) { // Only fix heating only mode for now state.dataHVACVarRefFlow->CompOnMassFlow = CalVRFTUAirFlowRate_FluidTCtrl( state, VRFTUNum, PartLoadRatio, FirstHVACIteration, state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond)); diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh index 480aa67321a..eccf888b729 100644 --- a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh +++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh @@ -106,8 +106,6 @@ namespace HVACVariableRefrigerantFlow { Num }; - constexpr Real64 MaxCap(1.0e+20); // limit of zone terminal unit capacity - // VRF Algorithm Type enum class AlgorithmType {