@@ -12660,6 +12660,25 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state,
1266012660 // now calculate the the mixer outlet air conditions (and the secondary air inlet flow rate). The mixer outlet flow rate has already
1266112661 // been set above (it is the "inlet" node flow rate)
1266212662 SimATMixer(state, this->ATMixerName, FirstHVACIteration, this->ATMixerIndex);
12663+ // inlet side ATMixer can change the VRF TU inlet condition and therefore the operating air flow rate
12664+ if (this->fanOp == HVAC::FanOp::Cycling && PartLoadRatio > 0) {
12665+ if (this->HeatingCoilPresent && state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) < Constant::MaxCap) {
12666+ // Only fix heating only mode for now
12667+ state.dataHVACVarRefFlow->CompOnMassFlow = CalVRFTUAirFlowRate_FluidTCtrl(
12668+ state, VRFTUNum, PartLoadRatio, FirstHVACIteration, state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond));
12669+ } else {
12670+ state.dataHVACVarRefFlow->CompOnMassFlow = CalVRFTUAirFlowRate_FluidTCtrl(state, VRFTUNum, PartLoadRatio, FirstHVACIteration, _);
12671+ }
12672+ if (std::abs(state.dataHVACVarRefFlow->CompOnMassFlow - AirMassFlow) > HVAC::SmallMassFlow) {
12673+ SetAverageAirFlow(state, VRFTUNum, PartLoadRatio, OnOffAirFlowRatio);
12674+ AirMassFlow = state.dataLoopNodes->Node(VRFTUInletNodeNum).MassFlowRate;
12675+ // set the primary air inlet mass flow rate
12676+ state.dataLoopNodes->Node(this->ATMixerPriNode).MassFlowRate =
12677+ min(state.dataLoopNodes->Node(this->ATMixerPriNode).MassFlowRateMaxAvail,
12678+ state.dataLoopNodes->Node(VRFTUInletNodeNum).MassFlowRate);
12679+ SimATMixer(state, this->ATMixerName, FirstHVACIteration, this->ATMixerIndex);
12680+ }
12681+ }
1266312682 }
1266412683 } else {
1266512684 state.dataHVACVarRefFlow->ATMixOutNode2 = 0;
0 commit comments