CoilCoolingDXMultiSpeed::CoilCoolingDXMultiSpeed(const Model& model)
    : StraightComponent(CoilCoolingDXMultiSpeed::iddObjectType(),model)
{
    OS_ASSERT(getImpl<detail::CoilCoolingDXMultiSpeed_Impl>());

    setCondenserType("AirCooled");
    setApplyPartLoadFractiontoSpeedsGreaterthan1(false);
    setCrankcaseHeaterCapacity(0.0);
    setMaximumOutdoorDryBulbTemperatureforCrankcaseHeaterOperation(10.0);
    setBasinHeaterCapacity(0.0);
    setBasinHeaterSetpointTemperature(2.0);
    setFuelType("NaturalGas");
}
CoilCoolingDXTwoStageWithHumidityControlMode::CoilCoolingDXTwoStageWithHumidityControlMode(const Model& model)
  : StraightComponent(CoilCoolingDXTwoStageWithHumidityControlMode::iddObjectType(),model)
{
  OS_ASSERT(getImpl<detail::CoilCoolingDXTwoStageWithHumidityControlMode_Impl>());

  setNumberofCapacityStages(2);
  setNumberofEnhancedDehumidificationModes(1);
  setCrankcaseHeaterCapacity(0.0);
  setMaximumOutdoorDryBulbTemperatureforCrankcaseHeaterOperation(10.0);
  setBasinHeaterCapacity(0.0);
  setBasinHeaterSetpointTemperature(2.0);

  {
    CurveBiquadratic totalCoolingCapacityFunctionofTemperatureCurve(model);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient1Constant(1.067939449);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient2x(-0.031261829);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient3xPOW2(0.001974308);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient4y(-0.002726426);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient5yPOW2(-5.52654E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient6xTIMESY(-6.31169E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofx(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofx(100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofy(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic totalCoolingCapacityFunctionofFlowFractionCurve(model);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient1Constant(0.8);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient2x(0.2);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveBiquadratic energyInputRatioFunctionofTemperatureCurve(model);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient1Constant(0.174059889);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient2x(0.022281508);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient3xPOW2(-0.000134077);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient4y(0.028298025);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient5yPOW2(0.00048510);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient6xTIMESY(-0.001677095);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofx(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofx(100);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofy(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic energyInputRatioFunctionofFlowFractionCurve(model);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient1Constant(1.1552);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient2x(-0.1808);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0256);
    energyInputRatioFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    energyInputRatioFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveQuadratic partLoadFractionCorrelationCurve(model);
    partLoadFractionCorrelationCurve.setCoefficient1Constant(0.85);
    partLoadFractionCorrelationCurve.setCoefficient2x(0.15);
    partLoadFractionCorrelationCurve.setCoefficient3xPOW2(0.0);
    partLoadFractionCorrelationCurve.setMinimumValueofx(0.0);
    partLoadFractionCorrelationCurve.setMaximumValueofx(1.0);

    CoilPerformanceDXCooling coilPerformanceDXCooling(model,
      totalCoolingCapacityFunctionofTemperatureCurve,
      totalCoolingCapacityFunctionofFlowFractionCurve,
      energyInputRatioFunctionofTemperatureCurve,
      energyInputRatioFunctionofFlowFractionCurve,
      partLoadFractionCorrelationCurve);

    coilPerformanceDXCooling.setGrossRatedCoolingCOP(3.0);
    coilPerformanceDXCooling.setFractionofAirFlowBypassedAroundCoil(0.5);

    setNormalModeStage1CoilPerformance(coilPerformanceDXCooling);
  }

  {
    CurveBiquadratic totalCoolingCapacityFunctionofTemperatureCurve(model);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient1Constant(1.067939449);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient2x(-0.031261829);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient3xPOW2(0.001974308);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient4y(-0.002726426);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient5yPOW2(-5.52654E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient6xTIMESY(-6.31169E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofx(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofx(100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofy(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic totalCoolingCapacityFunctionofFlowFractionCurve(model);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient1Constant(0.8);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient2x(0.2);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveBiquadratic energyInputRatioFunctionofTemperatureCurve(model);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient1Constant(0.174059889);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient2x(0.022281508);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient3xPOW2(-0.000134077);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient4y(0.028298025);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient5yPOW2(0.00048510);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient6xTIMESY(-0.001677095);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofx(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofx(100);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofy(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic energyInputRatioFunctionofFlowFractionCurve(model);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient1Constant(1.1552);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient2x(-0.1808);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0256);
    energyInputRatioFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    energyInputRatioFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveQuadratic partLoadFractionCorrelationCurve(model);
    partLoadFractionCorrelationCurve.setCoefficient1Constant(0.85);
    partLoadFractionCorrelationCurve.setCoefficient2x(0.15);
    partLoadFractionCorrelationCurve.setCoefficient3xPOW2(0.0);
    partLoadFractionCorrelationCurve.setMinimumValueofx(0.0);
    partLoadFractionCorrelationCurve.setMaximumValueofx(1.0);

    CoilPerformanceDXCooling coilPerformanceDXCooling(model,
      totalCoolingCapacityFunctionofTemperatureCurve,
      totalCoolingCapacityFunctionofFlowFractionCurve,
      energyInputRatioFunctionofTemperatureCurve,
      energyInputRatioFunctionofFlowFractionCurve,
      partLoadFractionCorrelationCurve);

    coilPerformanceDXCooling.setGrossRatedCoolingCOP(3.0);
    coilPerformanceDXCooling.setFractionofAirFlowBypassedAroundCoil(0.0);

    setNormalModeStage1Plus2CoilPerformance(coilPerformanceDXCooling);
  }

  {
    CurveBiquadratic totalCoolingCapacityFunctionofTemperatureCurve(model);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient1Constant(0.596779741);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient2x(0.034216637);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient3xPOW2(0.000113924);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient4y(-0.00375859);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient5yPOW2(-9.17495E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient6xTIMESY(-8.98373E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofx(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofx(100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofy(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic totalCoolingCapacityFunctionofFlowFractionCurve(model);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient1Constant(0.8);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient2x(0.2);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveBiquadratic energyInputRatioFunctionofTemperatureCurve(model);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient1Constant(0.435347586);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient2x(0.004015641);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient3xPOW2(0.000604235);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient4y(0.015824043);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient5yPOW2(0.000747287);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient6xTIMESY(-0.001779745);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofx(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofx(100);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofy(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic energyInputRatioFunctionofFlowFractionCurve(model);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient1Constant(1.1552);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient2x(-0.1808);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0256);
    energyInputRatioFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    energyInputRatioFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveQuadratic partLoadFractionCorrelationCurve(model);
    partLoadFractionCorrelationCurve.setCoefficient1Constant(0.85);
    partLoadFractionCorrelationCurve.setCoefficient2x(0.15);
    partLoadFractionCorrelationCurve.setCoefficient3xPOW2(0.0);
    partLoadFractionCorrelationCurve.setMinimumValueofx(0.0);
    partLoadFractionCorrelationCurve.setMaximumValueofx(1.0);


    CoilPerformanceDXCooling coilPerformanceDXCooling(model,
      totalCoolingCapacityFunctionofTemperatureCurve,
      totalCoolingCapacityFunctionofFlowFractionCurve,
      energyInputRatioFunctionofTemperatureCurve,
      energyInputRatioFunctionofFlowFractionCurve,
      partLoadFractionCorrelationCurve);

    coilPerformanceDXCooling.setGrossRatedCoolingCOP(2.7);
    coilPerformanceDXCooling.setFractionofAirFlowBypassedAroundCoil(0.5); 

    setDehumidificationMode1Stage1CoilPerformance(coilPerformanceDXCooling);
  }

  {
    CurveBiquadratic totalCoolingCapacityFunctionofTemperatureCurve(model);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient1Constant(0.596779741);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient2x(0.034216637);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient3xPOW2(0.000113924);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient4y(-0.00375859);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient5yPOW2(-9.17495E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setCoefficient6xTIMESY(-8.98373E-05);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofx(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofx(100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMinimumValueofy(-100);
    totalCoolingCapacityFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic totalCoolingCapacityFunctionofFlowFractionCurve(model);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient1Constant(0.8);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient2x(0.2);
    totalCoolingCapacityFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    totalCoolingCapacityFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveBiquadratic energyInputRatioFunctionofTemperatureCurve(model);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient1Constant(0.435347586);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient2x(0.004015641);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient3xPOW2(0.000604235);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient4y(0.015824043);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient5yPOW2(0.000747287);
    energyInputRatioFunctionofTemperatureCurve.setCoefficient6xTIMESY(-0.001779745);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofx(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofx(100);
    energyInputRatioFunctionofTemperatureCurve.setMinimumValueofy(-100);
    energyInputRatioFunctionofTemperatureCurve.setMaximumValueofy(100);

    CurveQuadratic energyInputRatioFunctionofFlowFractionCurve(model);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient1Constant(1.1552);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient2x(-0.1808);
    energyInputRatioFunctionofFlowFractionCurve.setCoefficient3xPOW2(0.0256);
    energyInputRatioFunctionofFlowFractionCurve.setMinimumValueofx(0.5);
    energyInputRatioFunctionofFlowFractionCurve.setMaximumValueofx(1.5);

    CurveQuadratic partLoadFractionCorrelationCurve(model);
    partLoadFractionCorrelationCurve.setCoefficient1Constant(0.85);
    partLoadFractionCorrelationCurve.setCoefficient2x(0.15);
    partLoadFractionCorrelationCurve.setCoefficient3xPOW2(0.0);
    partLoadFractionCorrelationCurve.setMinimumValueofx(0.0);
    partLoadFractionCorrelationCurve.setMaximumValueofx(1.0);


    CoilPerformanceDXCooling coilPerformanceDXCooling(model,
      totalCoolingCapacityFunctionofTemperatureCurve,
      totalCoolingCapacityFunctionofFlowFractionCurve,
      energyInputRatioFunctionofTemperatureCurve,
      energyInputRatioFunctionofFlowFractionCurve,
      partLoadFractionCorrelationCurve);

    coilPerformanceDXCooling.setGrossRatedCoolingCOP(2.7);
    coilPerformanceDXCooling.setFractionofAirFlowBypassedAroundCoil(0.0); 

    setDehumidificationMode1Stage1Plus2CoilPerformance(coilPerformanceDXCooling);
  }
}