Skip to content

Commit

Permalink
Merge branch 'VRFFluidFixCoolingTUCap' of https://github.com/NREL/Ene…
Browse files Browse the repository at this point in the history
…rgyPlus into VRFFluidFixCoolingTUCap
  • Loading branch information
yujiex committed Aug 27, 2024
2 parents 54f875d + 843d46c commit cf5f9b6
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 46 deletions.
18 changes: 9 additions & 9 deletions src/EnergyPlus/DXCoils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ void SimDXCoil(EnergyPlusData &state,
CalcDXHeatingCoil(state, DXCoilNum, PartLoadRatio, fanOp, AirFlowRatio, MaxCap);
} break;
case HVAC::CoilVRF_FluidTCtrl_Cooling: {
CalcVRFCoolingCoil_FluidTCtrl(state, DXCoilNum, HVAC::CompressorOp::On, FirstHVACIteration, PartLoadRatio, fanOp, CompCycRatio, _, _);
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);
Expand Down Expand Up @@ -6873,7 +6873,8 @@ void InitDXCoil(EnergyPlusData &state, int const DXCoilNum) // number of the cur
} else if (thisDXCoil.DXCoilType_Num == HVAC::CoilVRF_Cooling) {
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, _, _);
CalcVRFCoolingCoil_FluidTCtrl(
state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, _, _, Constant::MaxCap);
}

// coil outlets
Expand Down Expand Up @@ -16519,7 +16520,8 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state,
HVAC::FanOp const fanOp, // Allows parent object to control fan operation
Real64 const CompCycRatio, // cycling ratio of VRF condenser
ObjexxFCL::Optional_int_const PerfMode, // Performance mode for MultiMode DX coil; Always 1 for other coil types
ObjexxFCL::Optional<Real64 const> OnOffAirFlowRatio // ratio of compressor on airflow to compressor off airflow
ObjexxFCL::Optional<Real64 const> OnOffAirFlowRatio, // ratio of compressor on airflow to compressor off airflow
Real64 MaxCoolCap // maximum allowed cooling capacity
)
{
// SUBROUTINE INFORMATION:
Expand Down Expand Up @@ -16744,7 +16746,8 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state,
ShowFatalError(state, format("{} \"{}\" - Rated total cooling capacity is zero or less.", thisDXCoil.DXCoilType, thisDXCoil.Name));
}

TotCap = thisDXCoil.RatedTotCap(Mode);
TotCap = min(MaxCoolCap, thisDXCoil.RatedTotCap(Mode));

QCoilReq = -PartLoadRatio * TotCap;
if (PartLoadRatio == 0.0) {
AirMassFlowMin = state.dataHVACVarRefFlow->OACompOffMassFlow;
Expand Down Expand Up @@ -16913,10 +16916,8 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state,
}
}

// Coil total cooling
Real64 AirMassFlowRate = thisDXCoil.InletAirMassFlowRate;
// Coil total/sensible/latent cooling rates
CalcComponentSensibleLatentOutput(AirMassFlowRate,
CalcComponentSensibleLatentOutput(AirMassFlow * PartLoadRatio,
InletAirDryBulbTemp,
InletAirHumRat,
OutletAirTemp,
Expand Down Expand Up @@ -17347,8 +17348,7 @@ void ControlVRFIUCoil(EnergyPlusData &state,
MaxSH = 15;
MaxSC = 20;
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
FanSpdRatioMin = min(OAMassFlow / Garate, 1.0); // ensure that coil flow rate is higher than OA flow rate

if (QCoil == 0) {
// No Heating or Cooling
Expand Down
5 changes: 3 additions & 2 deletions src/EnergyPlus/DXCoils.hh
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ namespace DXCoils {
ObjexxFCL::Optional<Real64 const> PartLoadRatio = _, // part load ratio (for single speed cycling unit)
ObjexxFCL::Optional<Real64 const> OnOffAFR = _, // ratio of compressor on airflow to compressor off airflow
ObjexxFCL::Optional<Real64 const> CoilCoolingHeatingPLRRatio = _, // used for cycling fan RH control
ObjexxFCL::Optional<Real64 const> MaxCap = _, // maximum cooling capacity of VRF terminal units
ObjexxFCL::Optional<Real64 const> MaxCap = Constant::MaxCap, // maximum cooling capacity of VRF terminal units
ObjexxFCL::Optional<Real64 const> CompCyclingRatio = _ // cycling ratio of VRF condenser connected to this TU
);

Expand Down Expand Up @@ -878,7 +878,8 @@ namespace DXCoils {
HVAC::FanOp const fanOp, // Allows parent object to control fan operation
Real64 const CompCycRatio, // cycling ratio of VRF condenser
ObjexxFCL::Optional_int_const PerfMode, // Performance mode for MultiMode DX coil; Always 1 for other coil types
ObjexxFCL::Optional<Real64 const> OnOffAirFlowRatio // ratio of compressor on airflow to compressor off airflow
ObjexxFCL::Optional<Real64 const> OnOffAirFlowRatio, // ratio of compressor on airflow to compressor off airflow
Real64 MaxCoolCap = Constant::MaxCap // maximum allowed cooling capacity
);

void
Expand Down
2 changes: 2 additions & 0 deletions src/EnergyPlus/DataGlobalConstants.hh
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,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
Expand Down
50 changes: 24 additions & 26 deletions src/EnergyPlus/HVACVariableRefrigerantFlow.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1479,8 +1479,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;
}
Expand Down Expand Up @@ -6589,8 +6589,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;
}

Expand Down Expand Up @@ -9589,8 +9589,10 @@ void VRFTerminalUnitEquipment::CalcVRF(EnergyPlusData &state,
}
}
// calculate sensible load met using delta enthalpy
Real64 TotalOutput = AirMassFlow * (Psychrometrics::PsyHFnTdbW(TempOut, SpecHumOut) -
Psychrometrics::PsyHFnTdbW(TempIn, SpecHumIn)); // total addition/removal rate, {W};
LoadMet = AirMassFlow * PsyDeltaHSenFnTdb2W2Tdb1W1(TempOut, SpecHumOut, TempIn, SpecHumIn); // sensible {W}
LatentLoadMet = AirMassFlow * (SpecHumOut - SpecHumIn); // latent {kgWater/s}
LatentLoadMet = TotalOutput - LoadMet;
if (present(LatOutputProvided)) {
// CR9155 Remove specific humidity calculations
LatOutputProvided = LatentLoadMet;
Expand Down Expand Up @@ -9736,10 +9738,7 @@ void ReportVRFTerminalUnit(EnergyPlusData &state, int const VRFTUNum) // index t
TempOut = state.dataLoopNodes->Node(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).VRFTUOutletNodeNum).Temp;
TempIn = state.dataLoopNodes->Node(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).VRFTUInletNodeNum).Temp;
}
// latent heat vaporization/condensation used in moist air psychrometrics
Real64 const H2OHtOfVap = PsyHgAirFnWTdb(0.0, TempOut);
// convert latent in kg/s to watts
TotalConditioning = SensibleConditioning + (LatentConditioning * H2OHtOfVap);
TotalConditioning = SensibleConditioning + LatentConditioning;

if (TotalConditioning <= 0.0) {
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).TotalCoolingRate = std::abs(TotalConditioning);
Expand All @@ -9756,11 +9755,11 @@ void ReportVRFTerminalUnit(EnergyPlusData &state, int const VRFTUNum) // index t
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).SensibleHeatingRate = SensibleConditioning;
}
if (LatentConditioning <= 0.0) {
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentCoolingRate = std::abs(LatentConditioning) * H2OHtOfVap;
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentCoolingRate = std::abs(LatentConditioning);
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentHeatingRate = 0.0;
} else {
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentCoolingRate = 0.0;
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentHeatingRate = LatentConditioning * H2OHtOfVap;
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentHeatingRate = LatentConditioning;
}
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).TotalCoolingEnergy = state.dataHVACVarRefFlow->VRFTU(VRFTUNum).TotalCoolingRate * ReportingConstant;
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).SensibleCoolingEnergy =
Expand Down Expand Up @@ -10559,15 +10558,15 @@ 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);
Temp(TempTUIndex) = MinOutput;
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
Expand Down Expand Up @@ -11355,9 +11354,6 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state)
if (Q_c_TU_PL > CompEvaporatingCAPSpdMax) {
// Required load is beyond the max system capacity

Q_c_TU_PL = CompEvaporatingCAPSpdMax;
TU_CoolingLoad = CompEvaporatingCAPSpdMax;
this->TUCoolingLoad = TU_CoolingLoad;
RefTSat = this->refrig->getSatTemperature(state, max(min(Pevap, RefPHigh), RefPLow), RoutineName);
h_IU_evap_out =
this->refrig->getSupHeatEnthalpy(state, max(RefTSat, this->IUEvaporatingTemp + 3), max(min(Pevap, RefPHigh), RefPLow), RoutineName);
Expand Down Expand Up @@ -11503,9 +11499,9 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state)
this->PipingCorrectionCooling = TU_CoolingLoad / (TU_CoolingLoad + Pipe_Q_c);
state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = this->CoolingCapacity; // for report, maximum evaporating capacity of the system

this->HeatingCapacity = 0.0; // Include the piping loss
this->PipingCorrectionHeating = 1.0; // 1 means no piping loss
state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = 0.0;
this->HeatingCapacity = 0.0; // Include the piping loss
this->PipingCorrectionHeating = 1.0; // 1 means no piping loss
state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = 0.0; // yujie: might be wrong here too, should be MaxCap = 1e+20

this->OUCondHeatRate = Q_h_OU;
this->OUEvapHeatRate = 0;
Expand Down Expand Up @@ -11737,7 +11733,7 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state)

this->CoolingCapacity = 0.0; // Include the piping loss
this->PipingCorrectionCooling = 0.0;
state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = 0.0; // for report
state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = Constant::MaxCap; // for report

this->OUCondHeatRate = 0;
this->OUEvapHeatRate = Q_c_OU;
Expand Down Expand Up @@ -11973,13 +11969,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;
Expand Down Expand Up @@ -12715,7 +12711,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));
Expand Down Expand Up @@ -12864,8 +12860,10 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state,
}
}
// calculate sensible load met using delta enthalpy
Real64 TotalOutput = AirMassFlow * (Psychrometrics::PsyHFnTdbW(TempOut, SpecHumOut) -
Psychrometrics::PsyHFnTdbW(TempIn, SpecHumIn)); // total addition/removal rate, {W};
LoadMet = AirMassFlow * PsyDeltaHSenFnTdb2W2Tdb1W1(TempOut, SpecHumOut, TempIn, SpecHumIn); // sensible {W}
LatentLoadMet = AirMassFlow * (SpecHumOut - SpecHumIn); // latent {kgWater/s}
LatentLoadMet = TotalOutput - LoadMet;
if (present(LatOutputProvided)) {
LatOutputProvided = LatentLoadMet;
}
Expand Down
2 changes: 0 additions & 2 deletions src/EnergyPlus/HVACVariableRefrigerantFlow.hh
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,6 @@ namespace HVACVariableRefrigerantFlow {
Num
};

constexpr Real64 MaxCap(1.0e+20); // limit of zone terminal unit capacity

// VRF Algorithm Type
enum class AlgorithmType
{
Expand Down
2 changes: 1 addition & 1 deletion testfiles/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -679,13 +679,13 @@ add_simulation_test(IDF_FILE VSHeatPumpWaterHeater.idf EPW_FILE USA_FL_Miami.Int
add_simulation_test(IDF_FILE VSHeatPumpWaterToAirEquationFit.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VSWaterHeaterHeatPumpStratifiedTank.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VaryingLocationAndOrientation.idf EPW_FILE USA_CO_Golden-NREL.724666_TMY3.epw)
add_simulation_test(IDF_FILE US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf EPW_FILE USA_NY_New.York-John.F.Kennedy.Intl.AP.744860_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_5Zone.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_5Zone_wAirloop.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_FluidTCtrl_5Zone.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_wSuppHeater_5Zone.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf EPW_FILE USA_NY_New.York-John.F.Kennedy.Intl.AP.744860_TMY3.epw)
add_simulation_test(IDF_FILE VentilatedSlab.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VentilatedSlab_SeriesSlabs.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VentilationSimpleTest.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
Expand Down
Loading

4 comments on commit cf5f9b6

@nrel-bot-2c
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VRFFluidFixCoolingTUCap (yujiex) - x86_64-Linux-Ubuntu-22.04-gcc-11.4-UnitTestsCoverage-Debug: OK (2076 of 2077 tests passed, 0 test warnings)

Failures:\n

EnergyPlusFixture Test Summary

  • Passed: 1583
  • Failed: 1

Build Badge Test Badge Coverage Badge

@nrel-bot
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VRFFluidFixCoolingTUCap (yujiex) - Win64-Windows-10-VisualStudio-16: OK (2870 of 2871 tests passed, 0 test warnings)

Failures:\n

EnergyPlusFixture Test Summary

  • Passed: 1581
  • Failed: 1

Build Badge Test Badge

@nrel-bot-2
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VRFFluidFixCoolingTUCap (yujiex) - x86_64-Linux-Ubuntu-22.04-gcc-11.4: OK (3694 of 3706 tests passed, 2 test warnings)

Messages:\n

  • 11 tests had: ESO big diffs.
  • 2 tests had: ESO small diffs.
  • 4 tests had: EIO diffs.
  • 4 tests had: Table big diffs.
  • 4 tests had: Table string diffs.
  • 2 tests had: MTR big diffs.

Failures:\n

EnergyPlusFixture Test Summary

  • Passed: 1583
  • Failed: 1

regression Test Summary

  • Passed: 802
  • Failed: 11

Build Badge Test Badge

@nrel-bot-2b
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VRFFluidFixCoolingTUCap (yujiex) - x86_64-Linux-Ubuntu-22.04-gcc-11.4-IntegrationCoverage-Debug: OK (797 of 797 tests passed, 0 test warnings)

Build Badge Test Badge Coverage Badge

Please sign in to comment.