GetDXCoils Subroutine

private subroutine GetDXCoils()

proc~~getdxcoils~~UsesGraph proc~getdxcoils GetDXCoils module~general General module~general->proc~getdxcoils module~nodeinputmanager NodeInputManager module~general->module~nodeinputmanager module~inputprocessor InputProcessor module~inputprocessor->proc~getdxcoils module~inputprocessor->module~nodeinputmanager module~globalnames GlobalNames module~inputprocessor->module~globalnames module~emsmanager EMSManager module~emsmanager->proc~getdxcoils module~outairnodemanager OutAirNodeManager module~outairnodemanager->proc~getdxcoils module~dataglobals DataGlobals module~dataglobals->proc~getdxcoils module~dataglobals->module~inputprocessor module~dataglobals->module~emsmanager module~dataglobals->module~outairnodemanager module~schedulemanager ScheduleManager module~dataglobals->module~schedulemanager module~dataglobals->module~nodeinputmanager module~datasizing DataSizing module~dataglobals->module~datasizing module~watermanager WaterManager module~dataglobals->module~watermanager module~curvemanager CurveManager module~dataglobals->module~curvemanager module~dataglobals->module~globalnames module~branchnodeconnections BranchNodeConnections module~dataglobals->module~branchnodeconnections module~dataipshortcuts DataIPShortCuts module~dataglobals->module~dataipshortcuts module~dataruntimelanguage DataRuntimeLanguage module~dataglobals->module~dataruntimelanguage module~dataenvironment DataEnvironment module~dataglobals->module~dataenvironment module~datacontaminantbalance DataContaminantBalance module~dataglobals->module~datacontaminantbalance module~dataloopnode DataLoopNode module~dataglobals->module~dataloopnode module~datasurfaces DataSurfaces module~dataglobals->module~datasurfaces module~databsdfwindow DataBSDFWindow module~dataglobals->module~databsdfwindow module~datawater DataWater module~dataglobals->module~datawater module~databranchairloopplant DataBranchAirLoopPlant module~dataglobals->module~databranchairloopplant module~databranchnodeconnections DataBranchNodeConnections module~dataglobals->module~databranchnodeconnections module~schedulemanager->proc~getdxcoils module~nodeinputmanager->proc~getdxcoils module~datasizing->proc~getdxcoils module~datasizing->module~inputprocessor module~watermanager->proc~getdxcoils module~curvemanager->proc~getdxcoils module~globalnames->proc~getdxcoils module~branchnodeconnections->proc~getdxcoils module~branchnodeconnections->module~nodeinputmanager module~dataprecisionglobals DataPrecisionGlobals module~dataprecisionglobals->module~general module~dataprecisionglobals->module~inputprocessor module~dataprecisionglobals->module~emsmanager module~dataprecisionglobals->module~outairnodemanager module~dataprecisionglobals->module~dataglobals module~dataprecisionglobals->module~schedulemanager module~dataprecisionglobals->module~nodeinputmanager module~dataprecisionglobals->module~datasizing module~dataprecisionglobals->module~watermanager module~dataprecisionglobals->module~curvemanager module~dataprecisionglobals->module~globalnames module~dataprecisionglobals->module~dataipshortcuts module~datasystemvariables DataSystemVariables module~dataprecisionglobals->module~datasystemvariables module~datainterfaces DataInterfaces module~dataprecisionglobals->module~datainterfaces module~dataprecisionglobals->module~dataruntimelanguage module~dataprecisionglobals->module~dataenvironment module~dataprecisionglobals->module~datacontaminantbalance module~dataprecisionglobals->module~dataloopnode module~dataprecisionglobals->module~datasurfaces module~dataprecisionglobals->module~databsdfwindow module~datavectortypes DataVectorTypes module~dataprecisionglobals->module~datavectortypes module~dataprecisionglobals->module~datawater module~dataprecisionglobals->module~databranchairloopplant module~datastringglobals DataStringGlobals module~datastringglobals->module~inputprocessor module~datastringglobals->module~datasystemvariables module~dataipshortcuts->module~inputprocessor module~datasystemvariables->module~inputprocessor module~datainterfaces->module~inputprocessor module~datainterfaces->module~emsmanager module~datainterfaces->module~outairnodemanager module~datainterfaces->module~schedulemanager module~datainterfaces->module~nodeinputmanager module~datainterfaces->module~watermanager module~datainterfaces->module~curvemanager module~datainterfaces->module~globalnames module~datainterfaces->module~branchnodeconnections module~dataruntimelanguage->module~emsmanager module~dataenvironment->module~outairnodemanager module~dataenvironment->module~schedulemanager module~datacontaminantbalance->module~outairnodemanager module~dataloopnode->module~outairnodemanager module~dataloopnode->module~nodeinputmanager module~dataloopnode->module~branchnodeconnections module~datasurfaces->module~datacontaminantbalance module~databsdfwindow->module~datasurfaces module~datavectortypes->module~datasurfaces module~datavectortypes->module~databsdfwindow module~datawater->module~watermanager module~databranchairloopplant->module~curvemanager module~databranchnodeconnections->module~branchnodeconnections
Help

Arguments

None

Calls

proc~~getdxcoils~~CallsGraph proc~getdxcoils GetDXCoils callcoiltypes callcoiltypes proc~getdxcoils->callcoiltypes curvevalue curvevalue proc~getdxcoils->curvevalue verifyname verifyname proc~getdxcoils->verifyname getonlysinglenode getonlysinglenode proc~getdxcoils->getonlysinglenode setuptankdemandcomponent setuptankdemandcomponent proc~getdxcoils->setuptankdemandcomponent interface~setupemsactuator SetupEMSActuator proc~getdxcoils->interface~setupemsactuator interface~setupoutputvariable SetupOutputVariable proc~getdxcoils->interface~setupoutputvariable samestring samestring proc~getdxcoils->samestring interface~showcontinueerror ShowContinueError proc~getdxcoils->interface~showcontinueerror trimsigdigits trimsigdigits proc~getdxcoils->trimsigdigits interface~showwarningerror ShowWarningError proc~getdxcoils->interface~showwarningerror getcurveindex getcurveindex proc~getdxcoils->getcurveindex setcurveoutputminmaxvalues setcurveoutputminmaxvalues proc~getdxcoils->setcurveoutputminmaxvalues manageems manageems proc~getdxcoils->manageems verifyuniquecoilname verifyuniquecoilname proc~getdxcoils->verifyuniquecoilname interface~showsevereerror ShowSevereError proc~getdxcoils->interface~showsevereerror interface~showfatalerror ShowFatalError proc~getdxcoils->interface~showfatalerror heatreclaimdxcoil heatreclaimdxcoil proc~getdxcoils->heatreclaimdxcoil checkoutairnodenumber checkoutairnodenumber proc~getdxcoils->checkoutairnodenumber setuptanksupplycomponent setuptanksupplycomponent proc~getdxcoils->setuptanksupplycomponent getnumobjectsfound getnumobjectsfound proc~getdxcoils->getnumobjectsfound getobjectitem getobjectitem proc~getdxcoils->getobjectitem proc~getscheduleindex GetScheduleIndex proc~getdxcoils->proc~getscheduleindex getobjectitemnum getobjectitemnum proc~getdxcoils->getobjectitemnum getobjectdefmaxargs getobjectdefmaxargs proc~getdxcoils->getobjectdefmaxargs testcompset testcompset proc~getdxcoils->testcompset getcurvetype getcurvetype proc~getdxcoils->getcurvetype proc~processscheduleinput ProcessScheduleInput proc~getscheduleindex->proc~processscheduleinput finditeminlist finditeminlist proc~getscheduleindex->finditeminlist proc~processscheduleinput->verifyname proc~processscheduleinput->samestring proc~processscheduleinput->trimsigdigits proc~processscheduleinput->getnumobjectsfound proc~processscheduleinput->getobjectitem proc~processscheduleinput->getobjectdefmaxargs proc~processscheduleinput->finditeminlist proc~showcontinueerror ShowContinueError proc~processscheduleinput->proc~showcontinueerror proc~showfatalerror ShowFatalError proc~processscheduleinput->proc~showfatalerror roundsigdigits roundsigdigits proc~processscheduleinput->roundsigdigits proc~processintervalfields ProcessIntervalFields proc~processscheduleinput->proc~processintervalfields processdatestring processdatestring proc~processscheduleinput->processdatestring proc~showwarningerror ShowWarningError proc~processscheduleinput->proc~showwarningerror setupemsactuator setupemsactuator proc~processscheduleinput->setupemsactuator proc~displaystring DisplayString proc~processscheduleinput->proc~displaystring proc~processfordaytypes ProcessForDayTypes proc~processscheduleinput->proc~processfordaytypes julianday julianday proc~processscheduleinput->julianday proc~externalinterfacesetschedule ExternalInterfaceSetSchedule proc~processscheduleinput->proc~externalinterfacesetschedule finditem finditem proc~processscheduleinput->finditem proc~showsevereerror ShowSevereError proc~processscheduleinput->proc~showsevereerror processnumber processnumber proc~processscheduleinput->processnumber checkforactualfilename checkforactualfilename proc~processscheduleinput->checkforactualfilename interface~checkschedulevalueminmax CheckScheduleValueMinMax proc~processscheduleinput->interface~checkschedulevalueminmax proc~reportscheduledetails ReportScheduleDetails proc~processscheduleinput->proc~reportscheduledetails proc~showerrormessage ShowErrorMessage proc~showcontinueerror->proc~showerrormessage updatesqliteerrorrecord updatesqliteerrorrecord proc~showcontinueerror->updatesqliteerrorrecord proc~showfatalerror->roundsigdigits proc~showfatalerror->proc~displaystring proc~showfatalerror->proc~showerrormessage proc~abortenergyplus AbortEnergyPlus proc~showfatalerror->proc~abortenergyplus createsqliteerrorrecord createsqliteerrorrecord proc~showfatalerror->createsqliteerrorrecord proc~processintervalfields->proc~showcontinueerror proc~processintervalfields->proc~showwarningerror proc~processintervalfields->proc~showsevereerror proc~decodehhmmfield DecodeHHMMField proc~processintervalfields->proc~decodehhmmfield proc~showwarningerror->proc~showerrormessage proc~showwarningerror->createsqliteerrorrecord matchcounts matchcounts proc~showwarningerror->matchcounts messagesearch messagesearch proc~showwarningerror->messagesearch proc~processfordaytypes->proc~showsevereerror proc~showsevereerror->proc~showerrormessage proc~showsevereerror->createsqliteerrorrecord proc~showsevereerror->matchcounts proc~showsevereerror->messagesearch proc~dcheckschedulevalueminmax2 dCheckScheduleValueMinMax2 interface~checkschedulevalueminmax->proc~dcheckschedulevalueminmax2 proc~rcheckschedulevalueminmax1 rCheckScheduleValueMinMax1 interface~checkschedulevalueminmax->proc~rcheckschedulevalueminmax1 proc~rcheckschedulevalueminmax2 rCheckScheduleValueMinMax2 interface~checkschedulevalueminmax->proc~rcheckschedulevalueminmax2 proc~dcheckschedulevalueminmax1 dCheckScheduleValueMinMax1 interface~checkschedulevalueminmax->proc~dcheckschedulevalueminmax1 proc~reportscheduledetails->roundsigdigits invjulianday invjulianday proc~reportscheduledetails->invjulianday proc~showerrormessage->proc~showfatalerror proc~showerrormessage->proc~displaystring proc~abortenergyplus->roundsigdigits proc~abortenergyplus->proc~displaystring proc~testairpathintegrity TestAirPathIntegrity proc~abortenergyplus->proc~testairpathintegrity updatesqlitesimulationrecord updatesqlitesimulationrecord proc~abortenergyplus->updatesqlitesimulationrecord checkmarkednodes checkmarkednodes proc~abortenergyplus->checkmarkednodes reportairloopconnections reportairloopconnections proc~abortenergyplus->reportairloopconnections proc~showrecurringerrors ShowRecurringErrors proc~abortenergyplus->proc~showrecurringerrors testcompsetinletoutletnodes testcompsetinletoutletnodes proc~abortenergyplus->testcompsetinletoutletnodes proc~summarizeerrors SummarizeErrors proc~abortenergyplus->proc~summarizeerrors reportsurfaceerrors reportsurfaceerrors proc~abortenergyplus->reportsurfaceerrors reportloopconnections reportloopconnections proc~abortenergyplus->reportloopconnections proc~closemiscopenfiles CloseMiscOpenFiles proc~abortenergyplus->proc~closemiscopenfiles setupnodevarsforreporting setupnodevarsforreporting proc~abortenergyplus->setupnodevarsforreporting closesocket closesocket proc~abortenergyplus->closesocket proc~closeoutopenfiles CloseOutOpenFiles proc~abortenergyplus->proc~closeoutopenfiles proc~reportsurfaces ReportSurfaces proc~abortenergyplus->proc~reportsurfaces testbranchintegrity testbranchintegrity proc~abortenergyplus->testbranchintegrity checkplantonabort checkplantonabort proc~abortenergyplus->checkplantonabort proc~epelapsedtime epElapsedTime proc~abortenergyplus->proc~epelapsedtime proc~epstoptime epStopTime proc~abortenergyplus->proc~epstoptime proc~epsummarytimes epSummaryTimes proc~abortenergyplus->proc~epsummarytimes proc~showmessage ShowMessage proc~abortenergyplus->proc~showmessage checknodeconnections checknodeconnections proc~abortenergyplus->checknodeconnections proc~testairpathintegrity->proc~showcontinueerror proc~testairpathintegrity->proc~showsevereerror airtozonenodeinfo airtozonenodeinfo proc~testairpathintegrity->airtozonenodeinfo nodeid nodeid proc~testairpathintegrity->nodeid proc~showrecurringerrors->roundsigdigits proc~showrecurringerrors->updatesqliteerrorrecord proc~showrecurringerrors->createsqliteerrorrecord proc~showrecurringerrors->proc~showmessage removetrailingzeros removetrailingzeros proc~showrecurringerrors->removetrailingzeros recurringerrors recurringerrors proc~showrecurringerrors->recurringerrors proc~summarizeerrors->proc~showmessage proc~summarizeerrors->matchcounts summaries summaries proc~summarizeerrors->summaries moredetails moredetails proc~summarizeerrors->moredetails closedfsfile closedfsfile proc~closemiscopenfiles->closedfsfile closereportillummaps closereportillummaps proc~closemiscopenfiles->closereportillummaps proc~reportsurfaces->proc~showwarningerror proc~detailsforsurfaces DetailsForSurfaces proc~reportsurfaces->proc~detailsforsurfaces proc~setupschemecolors SetUpSchemeColors proc~reportsurfaces->proc~setupschemecolors proc~vrmlout VRMLOut proc~reportsurfaces->proc~vrmlout scanforreports scanforreports proc~reportsurfaces->scanforreports proc~dxfoutwireframe DXFOutWireFrame proc~reportsurfaces->proc~dxfoutwireframe proc~costinfoout CostInfoOut proc~reportsurfaces->proc~costinfoout proc~linesout LinesOut proc~reportsurfaces->proc~linesout proc~dxfout DXFOut proc~reportsurfaces->proc~dxfout proc~epstoptime->proc~showfatalerror tstop tstop proc~epstoptime->tstop proc~epsummarytimes->roundsigdigits proc~showmessage->proc~showerrormessage proc~detailsforsurfaces->trimsigdigits proc~detailsforsurfaces->roundsigdigits getschedulename getschedulename proc~detailsforsurfaces->getschedulename oscm oscm proc~detailsforsurfaces->oscm nominalu nominalu proc~detailsforsurfaces->nominalu zone zone proc~detailsforsurfaces->zone framedivider framedivider proc~detailsforsurfaces->framedivider getschedulemaxvalue getschedulemaxvalue proc~detailsforsurfaces->getschedulemaxvalue 2 2 proc~detailsforsurfaces->2 proc~computenominaluwithconvcoeffs ComputeNominalUwithConvCoeffs proc~detailsforsurfaces->proc~computenominaluwithconvcoeffs 3 3 proc~detailsforsurfaces->3 osc osc proc~detailsforsurfaces->osc construct construct proc~detailsforsurfaces->construct 4 4 proc~detailsforsurfaces->4 proc~csurfaceclass cSurfaceClass proc~detailsforsurfaces->proc~csurfaceclass userintconvectioncoeffs userintconvectioncoeffs proc~detailsforsurfaces->userintconvectioncoeffs userextconvectioncoeffs userextconvectioncoeffs proc~detailsforsurfaces->userextconvectioncoeffs surface surface proc~detailsforsurfaces->surface getscheduleminvalue getscheduleminvalue proc~detailsforsurfaces->getscheduleminvalue surfacewindow surfacewindow proc~detailsforsurfaces->surfacewindow proc~setupschemecolors->getobjectitem proc~setupschemecolors->getobjectitemnum proc~setupschemecolors->getobjectdefmaxargs proc~setupschemecolors->proc~showwarningerror proc~matchandsetcolortextstring MatchAndSetColorTextString proc~setupschemecolors->proc~matchandsetcolortextstring proc~vrmlout->proc~showcontinueerror proc~vrmlout->proc~showfatalerror proc~vrmlout->proc~showwarningerror proc~vrmlout->zone proc~vrmlout->surface proc~triangulate Triangulate proc~vrmlout->proc~triangulate proc~getnewunitnumber GetNewUnitNumber proc~vrmlout->proc~getnewunitnumber proc~dxfoutwireframe->trimsigdigits proc~dxfoutwireframe->proc~showfatalerror proc~dxfoutwireframe->zone proc~dxfoutwireframe->surface proc~dxfoutwireframe->surfacewindow proc~dxfoutwireframe->proc~getnewunitnumber zonedaylight zonedaylight proc~dxfoutwireframe->zonedaylight dxfcolorno dxfcolorno proc~dxfoutwireframe->dxfcolorno proc~costinfoout->proc~showfatalerror proc~costinfoout->construct proc~costinfoout->proc~csurfaceclass proc~costinfoout->surface proc~costinfoout->proc~getnewunitnumber proc~linesout->proc~showcontinueerror proc~linesout->proc~showfatalerror proc~linesout->roundsigdigits proc~linesout->proc~showwarningerror proc~linesout->proc~csurfaceclass proc~linesout->surface proc~linesout->proc~getnewunitnumber proc~dxfout->trimsigdigits proc~dxfout->proc~showcontinueerror proc~dxfout->proc~showfatalerror proc~dxfout->proc~showwarningerror proc~dxfout->zone proc~dxfout->surface proc~dxfout->surfacewindow proc~dxfout->proc~triangulate proc~dxfout->proc~getnewunitnumber proc~dxfout->zonedaylight proc~dxfout->dxfcolorno illummapcalc illummapcalc proc~dxfout->illummapcalc proc~computenominaluwithconvcoeffs->surface proc~matchandsetcolortextstring->finditem proc~triangulate->proc~showcontinueerror proc~triangulate->roundsigdigits proc~triangulate->proc~showwarningerror proc~triangulate->proc~showmessage csurfaceclass csurfaceclass proc~triangulate->csurfaceclass proc~generate_ears generate_ears proc~triangulate->proc~generate_ears proc~calcrfflrcoordinatetransformation CalcRfFlrCoordinateTransformation proc~triangulate->proc~calcrfflrcoordinatetransformation proc~calcwallcoordinatetransformation CalcWallCoordinateTransformation proc~triangulate->proc~calcwallcoordinatetransformation proc~polygon_contains_point_2d polygon_contains_point_2d proc~generate_ears->proc~polygon_contains_point_2d proc~angle_2dvector angle_2dvector proc~generate_ears->proc~angle_2dvector proc~decodehhmmfield->proc~showcontinueerror proc~decodehhmmfield->proc~showwarningerror proc~decodehhmmfield->proc~showsevereerror proc~dcheckschedulevalueminmax2->proc~showfatalerror proc~rcheckschedulevalueminmax1->proc~showfatalerror proc~rcheckschedulevalueminmax2->proc~showfatalerror proc~dcheckschedulevalueminmax1->proc~showfatalerror
Help

Called By

proc~~getdxcoils~~CalledByGraph proc~getdxcoils GetDXCoils proc~setcoilsystemcoolingdata SetCoilSystemCoolingData proc~setcoilsystemcoolingdata->proc~getdxcoils proc~getdxcoilindex GetDXCoilIndex proc~getdxcoilindex->proc~getdxcoils proc~simdxcoilmultimode SimDXCoilMultiMode proc~simdxcoilmultimode->proc~getdxcoils proc~getcoilcondenserinletnode GetCoilCondenserInletNode proc~getcoilcondenserinletnode->proc~getdxcoils proc~getcoilinletnode GetCoilInletNode proc~getcoilinletnode->proc~getdxcoils proc~getminoatcompressor GetMinOATCompressor proc~getminoatcompressor->proc~getdxcoils proc~getdxcoilbypassedflowfrac GetDXCoilBypassedFlowFrac proc~getdxcoilbypassedflowfrac->proc~getdxcoils proc~simdxcoil SimDXCoil proc~simdxcoil->proc~getdxcoils proc~getdxcoilavailschptr GetDXCoilAvailSchPtr proc~getdxcoilavailschptr->proc~getdxcoils proc~setcoilsystemheatingdxflag SetCoilSystemHeatingDXFlag proc~setcoilsystemheatingdxflag->proc~getdxcoils proc~setdxcoolingcoildata SetDXCoolingCoilData proc~setdxcoolingcoildata->proc~getdxcoils proc~getdxcoilnumberofspeeds GetDXCoilNumberOfSpeeds proc~getdxcoilnumberofspeeds->proc~getdxcoils proc~getcoiloutletnode GetCoilOutletNode proc~getcoiloutletnode->proc~getdxcoils proc~getdxcoilairflow GetDXCoilAirFlow proc~getdxcoilairflow->proc~getdxcoils proc~getdxcoilcapftcurveindex GetDXCoilCapFTCurveIndex proc~getdxcoilcapftcurveindex->proc~getdxcoils proc~getcoiltypenum GetCoilTypeNum proc~getcoiltypenum->proc~getdxcoils proc~getcoilcapacity GetCoilCapacity proc~getcoilcapacity->proc~getdxcoils proc~getcoilcapacitybyindextype GetCoilCapacityByIndexType proc~getcoilcapacitybyindextype->proc~getdxcoils proc~simdxcoilmultispeed SimDXCoilMultiSpeed proc~simdxcoilmultispeed->proc~getdxcoils proc~setdxcoiltypedata SetDXCoilTypeData proc~setdxcoiltypedata->proc~getdxcoils
Help

Source Code


Source Code

SUBROUTINE GetDXCoils

          ! SUBROUTINE INFORMATION:
          !       AUTHOR         Fred Buhl
          !       DATE WRITTEN   May 2000
          !       MODIFIED       Don Shirey, Aug/Sept 2000, Feb/Oct 2001, Sept 2003, Jan/July 2004
          !                      Feb 2005 M. J. Witte, GARD Analytics, Inc.
          !                        Add new coil type COIL:DX:MultiMode:CoolingEmpirical:
          !                      May 2005, Rich Raustad, FSEC, Added COIL:DX:HeatPumpWaterHeater
          !                      June 2007 L. Gu, FSEC
          !                      Added new coil type COIL:DX:MULTISPEED:COOLING and COIL:DX:MULTISPEED:HEATING
          !                      April 2010, Chandan Sharma, FSEC, added basin heater inputs
          !       RE-ENGINEERED  na

          ! PURPOSE OF THIS SUBROUTINE:
          ! Obtains input data for DX coils and stores it in DX coil data structure

          ! METHODOLOGY EMPLOYED:
          ! Uses "Get" routines to read in data.

          ! REFERENCES:
          ! na

          ! USE STATEMENTS:
  USE InputProcessor,        ONLY: GetNumObjectsFound, GetObjectItem, GetObjectItemNum, VerifyName, SameString,GetObjectDefMaxArgs
  USE CurveManager,          ONLY: GetCurveIndex, GetCurveType, CurveValue, SetCurveOutputMinMaxValues
  USE BranchNodeConnections, ONLY: TestCompSet
  USE NodeInputManager,      ONLY: GetOnlySingleNode
  USE DataSizing,            ONLY: AutoSize
  USE General,               ONLY: TrimSigDigits
  USE WaterManager,          ONLY: SetupTankDemandComponent, SetupTankSupplyComponent
  USE OutAirNodeManager,     ONLY: CheckOutAirNodeNumber
  USE ScheduleManager,       ONLY: GetScheduleIndex
  USE DataGlobals,           ONLY: AnyEnergyManagementSystemInModel, emsCallFromComponentGetInput
  USE EMSManager,            ONLY: ManageEMS
  USE GlobalNames,           ONLY: VerifyUniqueCoilName

  IMPLICIT NONE    ! Enforce explicit typing of all variables in this routine

          ! SUBROUTINE ARGUMENT DEFINITIONS:
          ! na

          ! SUBROUTINE PARAMETER DEFINITIONS:
  CHARACTER(len=*), PARAMETER :: Blank = ' '
  CHARACTER(len=*), PARAMETER :: RoutineName='GetDXCoils: ' ! include trailing blank space

          ! INTERFACE BLOCK SPECIFICATIONS
          ! na

          ! DERIVED TYPE DEFINITIONS
          ! na

          ! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: DXCoilIndex          ! loop index
INTEGER :: DXCoilNum            ! current DX coil number
INTEGER :: NumAlphas            ! Number of alphas in input
INTEGER :: NumNumbers           ! Number of numeric items in input
CHARACTER(Len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: Alphas2         ! Alpha input items for object
REAL(r64), ALLOCATABLE, DIMENSION(:) :: Numbers2           ! Numeric input items for object
CHARACTER(Len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cAlphaFields2   ! Alpha field names
CHARACTER(Len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cNumericFields2 ! Numeric field names
LOGICAL, ALLOCATABLE, DIMENSION(:)   :: lAlphaBlanks2      ! Logical array, alpha field input BLANK = .true.
LOGICAL, ALLOCATABLE, DIMENSION(:)   :: lNumericBlanks2    ! Logical array, numeric field input BLANK = .true.
INTEGER :: NumAlphas2           ! Number of alphas in input for performance object
INTEGER :: NumNumbers2          ! Number of numeric items in input for performance object
INTEGER :: IOStatus             ! Input status returned from GetObjectItem
LOGICAL :: IsNotOK              ! Flag to verify name
LOGICAL :: IsBlank              ! Flag for blank name
LOGICAL :: ErrorsFound=.false.  ! Set to true if errors in input, fatal at end of routine
INTEGER :: DXHPWaterHeaterCoilNum ! Loop index for 1,NumDXHeatPumpWaterHeaterCoils
INTEGER :: CapacityStageNum     ! Loop index for 1,Number of capacity stages
INTEGER :: DehumidModeNum       ! Loop index for 1,Number of enhanced dehumidification modes
INTEGER :: PerfModeNum          ! Performance mode index
INTEGER :: PerfObjectNum        ! Item number for performance object
INTEGER :: AlphaIndex           ! Index for current alpha field
CHARACTER(len=MaxNameLength) :: CurrentModuleObject     ! Object type for getting and error messages
CHARACTER(len=MaxNameLength) :: PerfObjectType   ! Performance object type for getting and error messages
CHARACTER(len=MaxNameLength) :: PerfObjectName   ! Performance object name for getting and error messages
REAL(r64) :: InletAirTemp       ! Used to pass proper inlet air temp to HPWH DX coil performance curves
REAL(r64) :: InletWaterTemp     ! Used to pass proper inlet water temp to HPWH DX coil performance curves
REAL(r64) :: HeatCapFTemp       ! Used to verify HPWH DX coil heating capacity (function of temp) performance curve
REAL(r64) :: HeatCOPFTemp       ! Used to verify HPWH DX coil heating COP (function of temp) performance curve
REAL(r64) :: HeatCapFAirFlow    ! Used to verify HPWH DX coil heating capacity (function of air flow) performance curve
REAL(r64) :: HeatCOPFAirFlow    ! Used to verify HPWH DX coil heating COP (function of air flow) performance curve
REAL(r64) :: HeatCapFWaterFlow  ! Used to verify HPWH DX coil heating capacity (function of water flow) performance curve
REAL(r64) :: HeatCOPFWaterFlow  ! Used to verify HPWH DX coil heating COP (function of water flow) performance curve
INTEGER   :: I                  ! Index of speeds
REAL(r64) :: CurveVal           ! Used to verify modifier curves equal 1 at rated conditions
CHARACTER(Len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: Alphas         ! Alpha input items for object
CHARACTER(Len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cAlphaFields   ! Alpha field names
CHARACTER(Len=MaxNameLength), ALLOCATABLE, DIMENSION(:) :: cNumericFields ! Numeric field names
REAL(r64), ALLOCATABLE, DIMENSION(:) :: Numbers           ! Numeric input items for object
LOGICAL, ALLOCATABLE, DIMENSION(:)   :: lAlphaBlanks      ! Logical array, alpha field input BLANK = .true.
LOGICAL, ALLOCATABLE, DIMENSION(:)   :: lNumericBlanks    ! Logical array, numeric field input BLANK = .true.
INTEGER   :: MaxNumbers=0          ! Maximum number of numeric input fields
INTEGER   :: MaxAlphas=0        ! Maximum number of alpha input fields
INTEGER   :: TotalArgs=0        ! Total number of alpha and numeric arguments (max) for a
                                !   certain object in the input file
REAL(r64) :: MinCurveVal        ! used for testing PLF curve output
REAL(r64) :: MinCurvePLR        ! used for testing PLF curve output
REAL(r64) :: MaxCurveVal        ! used for testing PLF curve output
REAL(r64) :: MaxCurvePLR        ! used for testing PLF curve output
REAL(r64) :: CurveInput         ! index used for testing PLF curve output

LOGICAL :: errflag

! find number of each type of DX coil and calculate the total number
NumDoe2DXCoils = GetNumObjectsFound('Coil:Cooling:DX:SingleSpeed')
NumDXHeatingCoils = GetNumObjectsFound('Coil:Heating:DX:SingleSpeed')
NumDXMulSpeedCoils = GetNumObjectsFound('Coil:Cooling:DX:TwoSpeed')
NumDXMulModeCoils = GetNumObjectsFound('Coil:Cooling:DX:TwoStageWithHumidityControlMode')
NumDXHeatPumpWaterHeaterCoils = GetNumObjectsFound('Coil:WaterHeating:AirToWaterHeatPump')
NumDXMulSpeedCoolCoils = GetNumObjectsFound('Coil:Cooling:DX:MultiSpeed')
NumDXMulSpeedHeatCoils = GetNumObjectsFound('Coil:Heating:DX:MultiSpeed')
NumVRFCoolingCoils = GetNumObjectsFound(cAllCoilTypes(CoilVRF_Cooling))
NumVRFHeatingCoils = GetNumObjectsFound(cAllCoilTypes(CoilVRF_Heating))

NumDXCoils = NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils &
             + NumDXMulSpeedCoolCoils + NumDXMulSpeedHeatCoils + NumVRFCoolingCoils + NumVRFHeatingCoils

! Determine max number of alpha and numeric arguments for all objects being read, in order to allocate local arrays
CALL GetObjectDefMaxArgs('Coil:Cooling:DX:SingleSpeed',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=NumNumbers
MaxAlphas=NumAlphas
CALL GetObjectDefMaxArgs('Coil:Heating:DX:SingleSpeed',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs('Coil:Cooling:DX:TwoSpeed',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs('Coil:Cooling:DX:TwoStageWithHumidityControlMode',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs('Coil:WaterHeating:AirToWaterHeatPump',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs('Coil:Cooling:DX:MultiSpeed',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs('Coil:Heating:DX:MultiSpeed',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs(cAllCoilTypes(CoilVRF_Cooling),TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs(cAllCoilTypes(CoilVRF_Heating),TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)
CALL GetObjectDefMaxArgs('CoilPerformance:DX:Cooling',TotalArgs,NumAlphas,NumNumbers)
MaxNumbers=MAX(MaxNumbers,NumNumbers)
MaxAlphas=MAX(MaxAlphas,NumAlphas)


ALLOCATE(Alphas(MaxAlphas))
Alphas=' '
ALLOCATE(cAlphaFields(MaxAlphas))
cAlphaFields=' '
ALLOCATE(cNumericFields(MaxNumbers))
cNumericFields=' '
ALLOCATE(Numbers(MaxNumbers))
Numbers=0.0d0
ALLOCATE(lAlphaBlanks(MaxAlphas))
lAlphaBlanks=.TRUE.
ALLOCATE(lNumericBlanks(MaxNumbers))
lNumericBlanks=.TRUE.

ALLOCATE(Alphas2(MaxAlphas))
Alphas2=' '
ALLOCATE(cAlphaFields2(MaxAlphas))
cAlphaFields2=' '
ALLOCATE(cNumericFields2(MaxNumbers))
cNumericFields2=' '
ALLOCATE(Numbers2(MaxNumbers))
Numbers2=0.0d0
ALLOCATE(lAlphaBlanks2(MaxAlphas))
lAlphaBlanks2=.TRUE.
ALLOCATE(lNumericBlanks2(MaxNumbers))
lNumericBlanks2=.TRUE.

! allocate the data structure

! Derived types
ALLOCATE(DXCoil(NumDXCoils))
ALLOCATE(HeatReclaimDXCoil(NumDXCoils))
ALLOCATE(CheckEquipName(NumDXCoils))
CheckEquipName=.true.


! Module level variable arrays
ALLOCATE(DXCoilOutletTemp(NumDXCoils))
ALLOCATE(DXCoilOutletHumRat(NumDXCoils))
ALLOCATE(DXCoilPartLoadRatio(NumDXCoils))
ALLOCATE(DXCoilFanOpMode(NumDXCoils))
ALLOCATE(DXCoilFullLoadOutAirTemp(NumDXCoils))
ALLOCATE(DXCoilFullLoadOutAirHumRat(NumDXCoils))
ALLOCATE(DXCoilTotalCooling(NumDXCoils))
ALLOCATE(DXCoilTotalHeating(NumDXCoils))
ALLOCATE(DXCoilCoolInletAirWBTemp(NumDXCoils))
ALLOCATE(DXCoilHeatInletAirDBTemp(NumDXCoils))
ALLOCATE(DXCoilHeatInletAirWBTemp(NumDXCoils))
!
! initialize the module level arrays
!
DXCoilOutletTemp           = 0.0d0
DXCoilOutletHumRat         = 0.0d0
DXCoilPartLoadRatio        = 0.0d0
DXCoilFanOpMode            = 0
DXCoilFullLoadOutAirTemp   = 0.0d0
DXCoilFullLoadOutAirHumRat = 0.0d0

MaxRatedVolFlowPerRatedTotCap(1) = MaxRatedVolFlowPerRatedTotCap1
MinRatedVolFlowPerRatedTotCap(1) = MinRatedVolFlowPerRatedTotCap1
MaxHeatVolFlowPerRatedTotCap(1)  = MaxHeatVolFlowPerRatedTotCap1
MaxCoolVolFlowPerRatedTotCap(1)  = MaxCoolVolFlowPerRatedTotCap1
MinOperVolFlowPerRatedTotCap(1)  = MinOperVolFlowPerRatedTotCap1
MaxRatedVolFlowPerRatedTotCap(2) = MaxRatedVolFlowPerRatedTotCap2
MinRatedVolFlowPerRatedTotCap(2) = MinRatedVolFlowPerRatedTotCap2
MaxHeatVolFlowPerRatedTotCap(2)  = MaxHeatVolFlowPerRatedTotCap2
MaxCoolVolFlowPerRatedTotCap(2)  = MaxCoolVolFlowPerRatedTotCap2
MinOperVolFlowPerRatedTotCap(2)  = MinOperVolFlowPerRatedTotCap2
! initialize the coil counter
DXCoilNum = 0

! Loop over the Doe2 DX Coils and get & load the data
CurrentModuleObject='Coil:Cooling:DX:SingleSpeed'
DO DXCoilIndex = 1, NumDoe2DXCoils

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  DXCoilNum = DXCoilNum+1
  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
! Initialize DataHeatBalance heat reclaim variable name for use by heat reclaim coils
  HeatReclaimDXCoil(DXCoilNum)%Name = DXCoil(DXCoilNum)%Name
  HeatReclaimDXCoil(DXCoilNum)%SourceType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilDX_CoolingSingleSpeed
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF
  DXCoil(DXCoilNum)%RatedTotCap(1) = Numbers(1)
  DXCoil(DXCoilNum)%RatedSHR(1)    = Numbers(2)
  DXCoil(DXCoilNum)%RatedCOP(1)    = Numbers(3)
  IF (DXCoil(DXCoilNum)%RatedCOP(1) .LE. 0.0d0) THEN
     CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
     CALL ShowContinueError('...'//TRIM(cNumericFields(3))//' must be > 0.0,'//  &
        ' entered value=['//trim(TrimSigDigits(Numbers(3),2))//'].')
     ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedAirVolFlowRate(1) = Numbers(4)
  DXCoil(DXCoilNum)%FanPowerPerEvapAirFlowRate(1) = Numbers(5)

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(3),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(3),Alphas(4),'Air Nodes')

  DXCoil(DXCoilNum)%CCapFTemp(1) = GetCurveIndex(Alphas(5)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFTemp(1) .EQ. 0) THEN
    IF (lAlphaBlanks(5)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(5))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(5))//'="'//TRIM(Alphas(5))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is BiQuadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1)))

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1)=Biquadratic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(5))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1))))
      CALL ShowContinueError('Curve type must be Biquadratic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%CCapFFlow(1) = GetCurveIndex(Alphas(6)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(6)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(6))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(6))//'="'//TRIM(Alphas(6))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1)))
    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(6))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%EIRFTemp(1) = GetCurveIndex(Alphas(7)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%EIRFTemp(1) .EQ. 0) THEN
    IF (lAlphaBlanks(7)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(7))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(7))//'="'//TRIM(Alphas(7))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Biquadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(1)))

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%EIRTempModFacCurveType(1)=Biquadratic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(7))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(1))))
      CALL ShowContinueError('Curve type must be Biquadratic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%EIRFFlow(1) = GetCurveIndex(Alphas(8)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%EIRFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(8)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(8))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(8))//'="'//TRIM(Alphas(8))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(8))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%PLFFPLR(1) = GetCurveIndex(Alphas(9)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%PLFFPLR(1) .EQ. 0) THEN
    IF (lAlphaBlanks(9)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(9))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(9))//'="'//TRIM(Alphas(9))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal types are Quadratic or Cubic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(9))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT

    IF(.NOT. ErrorsFound)THEN
!     Test PLF curve minimum and maximum. Cap if less than 0.7 or greater than 1.0.
      MinCurveVal = 999.0d0
      MaxCurveVal = -999.0d0
      CurveInput = 0.0d0
      DO WHILE (CurveInput <= 1.0d0)
        CurveVal = CurveValue(DXCoil(DXCoilNum)%PLFFPLR(1),CurveInput)
        IF(CurveVal .LT. MinCurveVal)THEN
          MinCurveVal = CurveVal
          MinCurvePLR = CurveInput
        END IF
        IF(CurveVal .GT. MaxCurveVal)THEN
          MaxCurveVal = CurveVal
          MaxCurvePLR = CurveInput
        END IF
        CurveInput=CurveInput+0.01d0
      END DO
      IF(MinCurveVal .LT. 0.7d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...'//TRIM(cAlphaFields(9))//'="'//TRIM(Alphas(9))//'" has out of range values.')
        CALL ShowContinueError('...Curve minimum must be >= 0.7, '// &
                        'curve min at PLR = '//TRIM(TrimSigDigits(MinCurvePLR,2))//' is '//TRIM(TrimSigDigits(MinCurveVal,3)))
        CALL ShowContinueError('...Setting curve minimum to 0.7 and simulation continues.')
        CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMin=0.7d0)
      END IF

      IF(MaxCurveVal .GT. 1.0d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...'//TRIM(cAlphaFields(9))//' = '//TRIM(Alphas(9))//' has out of range value.')
        CALL ShowContinueError('...Curve maximum must be <= 1.0, '// &
                        'curve max at PLR = '//TRIM(TrimSigDigits(MaxCurvePLR,2))//' is '//TRIM(TrimSigDigits(MaxCurveVal,3)))
        CALL ShowContinueError('...Setting curve maximum to 1.0 and simulation continues.')
        CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMax=1.0d0)
      END IF

    END IF
  END IF

  DXCoil(DXCoilNum)%Twet_Rated(1)            = Numbers(6)
  DXCoil(DXCoilNum)%Gamma_Rated(1)           = Numbers(7)
  DXCoil(DXCoilNum)%MaxONOFFCyclesperHour(1) = Numbers(8)
  DXCoil(DXCoilNum)%LatentCapacityTimeConstant(1) = Numbers(9)

  ! Numbers (6) through (9) must all be greater than zero to use the latent capacity degradation model
  IF ((Numbers(6) .GT. 0.0d0 .OR. Numbers (7) .GT. 0.0d0 .OR. Numbers (8) .GT. 0.0d0 .OR. Numbers (9) .GT. 0.0d0) &
    .AND. (Numbers(6) .LE. 0.0d0 .OR. Numbers (7) .LE. 0.0d0 .OR. Numbers (8) .LE. 0.0d0 .OR. Numbers (9) .LE. 0.0d0)) THEN
       CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
       CALL ShowContinueError('...At least one of the four input parameters for the latent capacity degradation model')
       CALL ShowContinueError('...is set to zero. Therefore, the latent degradation model will not be used for this simulation.')
  END IF

! outdoor condenser node
  IF (lAlphaBlanks(10)) THEN
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = 0
  ELSE
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = &
       GetOnlySingleNode(Alphas(10),ErrorsFound,TRIM(CurrentModuleObject),DXCoil(DXCoilNum)%Name, &
                         NodeType_Air,NodeConnectionType_OutsideAirReference,1,ObjectIsNotParent)

    IF (.not. CheckOutAirNodeNumber(DXCoil(DXCoilNum)%CondenserInletNodeNum(1))) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", may be invalid')
      CALL ShowContinueError(TRIM(cAlphaFields(10))//'="'//TRIM(Alphas(10))// &
                               '", node does not appear in an OutdoorAir:NodeList or as an OutdoorAir:Node.')
      CALL ShowContinueError('This node needs to be included in an air system or the coil model will not be valid' &
                             //', and the simulation continues')
    END IF
  ENDIF

  IF ((SameString(Alphas(11),'AirCooled')) .OR. lAlphaBlanks(11)) THEN
    DXCoil(DXCoilNum)%CondenserType(1) = AirCooled
  ELSEIF (SameString(Alphas(11),'EvaporativelyCooled')) THEN
    DXCoil(DXCoilNum)%CondenserType(1) = EvapCooled
    DXCoil(DXCoilNum)%ReportEvapCondVars = .TRUE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cAlphaFields(11))//'="'//TRIM(Alphas(11))//'":')
    CALL ShowContinueError('...must be AirCooled or EvaporativelyCooled.')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondEffect(1) = Numbers(10)
  IF (DXCoil(DXCoilNum)%EvapCondEffect(1) .LT. 0.0d0 .OR. DXCoil(DXCoilNum)%EvapCondEffect(1) .GT. 1.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(10))//' cannot be < 0.0 or > 1.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(10),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondAirFlow(1) = Numbers(11)
  IF (DXCoil(DXCoilNum)%EvapCondAirFlow(1) .LT. 0.0d0 .AND. DXCoil(DXCoilNum)%EvapCondAirFlow(1) /= AutoSize) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(11))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(11),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondPumpElecNomPower(1) = Numbers(12)
  IF (DXCoil(DXCoilNum)%EvapCondPumpElecNomPower(1) .LT. 0.0d0 .AND. DXCoil(DXCoilNum)%EvapCondAirFlow(1) /= AutoSize) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(12))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(12),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  !Set crankcase heater capacity
  DXCoil(DXCoilNum)%CrankcaseHeaterCapacity = Numbers(13)
  IF (DXCoil(DXCoilNum)%CrankcaseHeaterCapacity .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(13))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(13),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  !Set crankcase heater cutout temperature
  DXCoil(DXCoilNum)%MaxOATCrankcaseHeater = Numbers(14)

  IF (DXCoil(DXCoilNum)%RatedCOP(1) .GT. 0.0d0) THEN
     DXCoil(DXCoilNum)%RatedEIR(1) = 1.d0 / DXCoil(DXCoilNum)%RatedCOP(1)
  END IF

  ! Get Water System tank connections
  !  A12, \field Name of Water Storage Tank for Supply
  DXCoil(DXCoilNum)%EvapWaterSupplyName = Alphas(12)
  IF (lAlphaBlanks(12)) THEN
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromMains
  ELSE
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromTank
    CALL SetupTankDemandComponent(DXCoil(DXCoilNum)%Name,TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%EvapWaterSupplyName, ErrorsFound, DXCoil(DXCoilNum)%EvapWaterSupTankID, &
                 DXCoil(DXCoilNum)%EvapWaterTankDemandARRID )
  ENDIF

  !A13; \field Name of Water Storage Tank for Condensate Collection
  DXCoil(DXCoilNum)%CondensateCollectName = Alphas(13)
  IF (lAlphaBlanks(13)) THEN
    DXCoil(DXCoilNum)%CondensateCollectMode = CondensateDiscarded
  ELSE
    DXCoil(DxCoilNum)%CondensateCollectMode = CondensateToTank
    CALL SetupTankSupplyComponent(DXCoil(DXCoilNum)%Name,TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%CondensateCollectName, ErrorsFound, DXCoil(DXCoilNum)%CondensateTankID, &
                 DXCoil(DXCoilNum)%CondensateTankSupplyARRID )
  END IF

  !   Basin heater power as a function of temperature must be greater than or equal to 0
  DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff = Numbers(15)
  IF(Numbers(15) .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(15))//' must be >= 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(15),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = Numbers(16)
  IF(DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff .GT. 0.0d0) THEN
    IF(NumNumbers .LT. 16) THEN
      DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = 2.0d0
    ENDIF
    IF(DXCoil(DxCoilNum)%BasinHeaterSetPointTemp < 2.0d0) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", freeze possible')
      CALL ShowContinueError('...'//trim(cNumericFields(16))//' is < 2 {C}. Freezing could occur.')
      CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(16),2))//'].')
    END IF
  END IF

  IF(.NOT. lAlphaBlanks(14))THEN
    DXCoil(DxCoilNum)%BasinHeaterSchedulePtr   = GetScheduleIndex(Alphas(14))
    IF(DXCoil(DxCoilNum)%BasinHeaterSchedulePtr .EQ. 0)THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(14))//'="'//TRIM(Alphas(14))//'".')
      CALL ShowContinueError('Basin heater will be available to operate throughout the simulation.')
    END IF
  END IF

  IF (.NOT. lAlphaBlanks(15) .AND. NumAlphas > 14) THEN
    DXCoil(DXCoilNum)%SHRFTemp(1) = GetCurveIndex(Alphas(15)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%SHRFTemp(1) .EQ. 0) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(15))//'="'//TRIM(Alphas(15))//'".')
    ELSE
     ! Verify Curve Object, only legal type is Biquadratic
     SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp(1)))
      CASE('BIQUADRATIC')
        DXCoil(DXCoilNum)%SHRFTempCurveType(1)=Biquadratic
      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(15))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp(1))))
        CALL ShowContinueError('Curve type must be Biquadratic.')
        ErrorsFound=.TRUE.
     END SELECT
    END IF
  END IF

  IF (.NOT. lAlphaBlanks(16) .AND. NumAlphas > 15) THEN
    DXCoil(DXCoilNum)%SHRFFlow(1) = GetCurveIndex(Alphas(16)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%SHRFTemp(1) .EQ. 0) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(16))//'="'//TRIM(Alphas(16))//'".')
    ELSE
     ! Verify Curve Object, only legal type is Biquadratic
     SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow(1)))
      CASE('QUADRATIC', 'CUBIC')

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(16))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow(1))))
        CALL ShowContinueError('Curve type must be quadratic or cubic.')
        ErrorsFound=.TRUE.
     END SELECT
    END IF
  END IF

  IF (DXCoil(DXCoilNum)%SHRFTemp(1) > 0 .AND. DXCoil(DXCoilNum)%SHRFFlow(1) > 0) THEN
      DXCoil(DXCoilNum)%UserSHRCurveExists = .TRUE.
  ENDIF

END DO ! end of the Doe2 DX coil loop

IF (ErrorsFound) THEN
  CALL ShowFatalError(RoutineName//'Errors found in getting '//TRIM(CurrentModuleObject)//' input. '//&
                      'Preceding condition(s) causes termination.')
END IF

! Loop over the Multimode DX Coils and get & load the data
CurrentModuleObject='Coil:Cooling:DX:TwoStageWithHumidityControlMode'
DO DXCoilIndex = 1, NumDXMulModeCoils

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  DXCoilNum = DXCoilNum+1
  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
! Initialize DataHeatBalance heat reclaim variable name for use by heat reclaim coils
  HeatReclaimDXCoil(DXCoilNum)%Name = DXCoil(DXCoilNum)%Name
  HeatReclaimDXCoil(DXCoilNum)%SourceType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilDX_CoolingTwoStageWHumControl
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(3),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(3),Alphas(4),'Air Nodes')

  !Set crankcase heater capacity
  DXCoil(DXCoilNum)%CrankcaseHeaterCapacity = Numbers(1)
  IF (DXCoil(DXCoilNum)%CrankcaseHeaterCapacity .LT. 0.0d0) THEN
     CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
     CALL ShowContinueError('...'//TRIM(cNumericFields(1))//' must be >= 0.0,'//  &
        ' entered value=['//trim(TrimSigDigits(Numbers(1),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  !Set crankcase heater cutout temperature
  DXCoil(DXCoilNum)%MaxOATCrankcaseHeater = Numbers(2)

  !  Number of capacity stages
  DXCoil(DXCoilNum)%NumCapacityStages = Numbers(3)
  !  Check if requested number of capacity stages exceeds limits
  IF ((DXCoil(DXCoilNum)%NumCapacityStages .GT. MaxCapacityStages) .OR. (DXCoil(DXCoilNum)%NumCapacityStages .LT. 1)) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...illegal '//TRIM(cNumericFields(3))//' = '//TRIM(TrimSigDigits(DXCoil(DXCoilNum)%NumCapacityStages)))
    CALL ShowContinueError('...Valid range is 1 to '//TRIM(TrimSigDigits(MaxCapacityStages)))
    ErrorsFound=.TRUE.
  END IF

  !  Number of enhanced dehumidification modes
  DXCoil(DXCoilNum)%NumDehumidModes = Numbers(4)
  !  Check if requested number of enhanced dehumidification modes exceeds limits
  IF ((DXCoil(DXCoilNum)%NumDehumidModes .GT. MaxDehumidModes) .OR. (DXCoil(DXCoilNum)%NumDehumidModes .LT. 0)) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...illegal '//TRIM(cNumericFields(4))//' = '//TRIM(TrimSigDigits(DXCoil(DXCoilNum)%NumDehumidModes)))
    CALL ShowContinueError('...Valid range is 0 to '//TRIM(TrimSigDigits(MaxDehumidModes)))
    ErrorsFound=.TRUE.
  END IF

  !  Set starting alpha index for coil performance inputs
  AlphaIndex = 5

  !  Loop through capacity stages and dehumidification modes
  DO DehumidModeNum = 0, DXCoil(DXCoilNum)%NumDehumidModes
    DO CapacityStageNum = 1, DXCoil(DXCoilNum)%NumCapacityStages
      !  Check if sufficient number of fields entered
      IF ((AlphaIndex+1) .GT. NumAlphas) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not enough remaining fields for specified Number of Operating Modes.')
        CALL ShowContinueError('...Need additional Coil Performance Object Type and Coil Performance Object Name fields.')
        ErrorsFound=.TRUE.
      ELSE
        PerfObjectType = TRIM(Alphas(AlphaIndex))
        PerfObjectName = Alphas(AlphaIndex+1)
        PerfModeNum    = DehumidModeNum*2 + CapacityStageNum
        DXCoil(DXCoilNum)%CoilPerformanceType(PerfModeNum) = PerfObjectType
        IF (SameString(PerfObjectType,'CoilPerformance:DX:Cooling')) THEN
          DXCoil(DXCoilNum)%CoilPerformanceType_Num(PerfModeNum) = CoilPerfDX_CoolByPassEmpirical
        ELSE
          CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(AlphaIndex))//'="'//TRIM(PerfObjectType)//'".')
          CALL ShowContinueError('Must be "CoilPerformance:DX:Cooling".')
          ErrorsFound=.TRUE.
        END IF
        DXCoil(DXCoilNum)%CoilPerformanceName(PerfModeNum) = PerfObjectName
        ! Get for CoilPerformance object
        PerfObjectNum = GetObjectItemNum(PerfObjectType,PerfObjectName)
        IF (PerfObjectNum > 0) THEN

          CALL GetObjectItem(PerfObjectType,PerfObjectNum, &
                             Alphas2,NumAlphas2,Numbers2,NumNumbers2,IOStatus, &
                             NumBlank=lNumericBlanks2,AlphaBlank=lAlphaBlanks2, &
                             AlphaFieldNames=cAlphaFields2,NumericFieldNames=cNumericFields2)

          DXCoil(DXCoilNum)%RatedTotCap(PerfModeNum) = Numbers2(1)
          DXCoil(DXCoilNum)%RatedSHR(PerfModeNum)    = Numbers2(2)
          DXCoil(DXCoilNum)%RatedCOP(PerfModeNum)    = Numbers2(3)
               ! Rated flow is immediately adjusted for bypass fraction if not autosized
          DXCoil(DXCoilNum)%BypassedFlowFrac(PerfModeNum)    = Numbers2(5)
          DXCoil(DXCoilNum)%RatedAirVolFlowRate(PerfModeNum) = Numbers2(4)
          IF (DXCoil(DXCoilNum)%RatedAirVolFlowRate(PerfModeNum) /= Autosize) THEN
            DXCoil(DXCoilNum)%RatedAirVolFlowRate(PerfModeNum)= &
               DXCoil(DXCoilNum)%RatedAirVolFlowRate(PerfModeNum) * (1.d0-DXCoil(DXCoilNum)%BypassedFlowFrac(PerfModeNum))
          ENDIF

          DXCoil(DXCoilNum)%CCapFTemp(PerfModeNum) = GetCurveIndex(Alphas2(2)) ! convert curve name to number
          IF (DXCoil(DXCoilNum)%CCapFTemp(PerfModeNum) .EQ. 0) THEN
            IF (lAlphaBlanks2(2)) THEN
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...required '//trim(cAlphaFields2(2))//' is blank.')
            ELSE
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...not found '//TRIM(cAlphaFields2(2))//'="'//TRIM(Alphas2(2))//'".')
            END IF
            ErrorsFound = .TRUE.
          ELSE
            ! Verify Curve Object, only legal type is BiQuadratic
            SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(PerfModeNum)))

            CASE('BIQUADRATIC')
              DXCoil(DXCoilNum)%TotCapTempModFacCurveType(PerfModeNum)=Biquadratic

            CASE DEFAULT
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...illegal '//TRIM(cAlphaFields2(2))//' type for this object = '// &
                                   TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(PerfModeNum))))
              CALL ShowContinueError('Curve type must be BiQuadratic.')
              ErrorsFound=.TRUE.
            END SELECT
          END IF

          DXCoil(DXCoilNum)%CCapFFlow(PerfModeNum) = GetCurveIndex(Alphas2(3)) ! convert curve name to number
          IF (DXCoil(DXCoilNum)%CCapFFlow(PerfModeNum) .EQ. 0) THEN
            IF (lAlphaBlanks2(3)) THEN
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...required '//trim(cAlphaFields2(3))//' is blank.')
            ELSE
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...not found '//TRIM(cAlphaFields2(3))//'="'//TRIM(Alphas2(3))//'".')
            END IF
            ErrorsFound = .TRUE.
          ELSE
            ! Verify Curve Object, only legal type is Quadratic
            SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(PerfModeNum)))

            CASE('QUADRATIC')

            CASE('CUBIC')

            CASE DEFAULT
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...illegal '//TRIM(cAlphaFields2(3))//' type for this object = '// &
                                   TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(PerfModeNum))))
              CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
              ErrorsFound=.TRUE.
            END SELECT
          END IF

          DXCoil(DXCoilNum)%EIRFTemp(PerfModeNum) = GetCurveIndex(Alphas2(4)) ! convert curve name to number
          IF (DXCoil(DXCoilNum)%EIRFTemp(PerfModeNum) .EQ. 0) THEN
            IF (lAlphaBlanks2(4)) THEN
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...required '//trim(cAlphaFields2(4))//' is blank.')
            ELSE
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...not found '//TRIM(cAlphaFields2(4))//'="'//TRIM(Alphas2(4))//'".')
            END IF
            ErrorsFound = .TRUE.
          ELSE
            ! Verify Curve Object, only legal type is Biquadratic
            SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(PerfModeNum)))

            CASE('BIQUADRATIC')
              DXCoil(DXCoilNum)%EIRTempModFacCurveType(PerfModeNum)=Biquadratic

            CASE DEFAULT
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...illegal '//TRIM(cAlphaFields2(4))//' type for this object = '// &
                                   TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(PerfModeNum))))
              CALL ShowContinueError('Curve type must be BiQuadratic.')
              ErrorsFound=.TRUE.
            END SELECT
          END IF

          DXCoil(DXCoilNum)%EIRFFlow(PerfModeNum) = GetCurveIndex(Alphas2(5)) ! convert curve name to number
          IF (DXCoil(DXCoilNum)%EIRFFlow(PerfModeNum) .EQ. 0) THEN
            IF (lAlphaBlanks2(5)) THEN
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...required '//trim(cAlphaFields2(5))//' is blank.')
            ELSE
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...not found '//TRIM(cAlphaFields2(5))//'="'//TRIM(Alphas2(5))//'".')
            END IF
            ErrorsFound = .TRUE.
          ELSE
            ! Verify Curve Object, only legal type is Quadratic
            SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(PerfModeNum)))

            CASE('QUADRATIC')

            CASE('CUBIC')

            CASE DEFAULT
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...illegal '//TRIM(cAlphaFields2(5))//' type for this object = '// &
                                   TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(PerfModeNum))))
              CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
              ErrorsFound=.TRUE.
            END SELECT
          END IF

          DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum) = GetCurveIndex(Alphas2(6)) ! convert curve name to number
          IF (DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum) .EQ. 0) THEN
            IF (lAlphaBlanks2(6)) THEN
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...required '//trim(cAlphaFields2(6))//' is blank.')
            ELSE
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...not found '//TRIM(cAlphaFields2(6))//'="'//TRIM(Alphas2(6))//'".')
            END IF
            ErrorsFound = .TRUE.
          ELSE
            ! Verify Curve Object, only legal types are Quadratic or Cubic
            SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum)))

            CASE('QUADRATIC')

            CASE('CUBIC')

            CASE DEFAULT
              CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
              CALL ShowContinueError('...illegal '//TRIM(cAlphaFields2(6))//' type for this object = '// &
                                   TRIM(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum))))
              CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
              ErrorsFound=.TRUE.
            END SELECT

            IF(.NOT. ErrorsFound)THEN
!             Test PLF curve minimum and maximum. Cap if less than 0.7 or greater than 1.0.
              MinCurveVal = 999.0d0
              MaxCurveVal = -999.0d0
              CurveInput = 0.0d0
              DO WHILE (CurveInput <= 1.0d0)
                CurveVal = CurveValue(DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum),CurveInput)
                IF(CurveVal .LT. MinCurveVal)THEN
                  MinCurveVal = CurveVal
                  MinCurvePLR = CurveInput
                END IF
                IF(CurveVal .GT. MaxCurveVal)THEN
                  MaxCurveVal = CurveVal
                  MaxCurvePLR = CurveInput
                END IF
                CurveInput=CurveInput+0.01d0
              END DO
              IF(MinCurveVal .LT. 0.7d0)THEN
                CALL ShowWarningError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
                CALL ShowContinueError('...'//TRIM(cAlphaFields2(6))//' = '//TRIM(Alphas2(6))//' has out of range value.')
                CALL ShowContinueError('...Curve minimum must be >= 0.7, '// &
                        'curve min at PLR = '//TRIM(TrimSigDigits(MinCurvePLR,2))//' is '//TRIM(TrimSigDigits(MinCurveVal,3)))
                CALL ShowContinueError('...Setting curve minimum to 0.7 and simulation continues.')
                CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum),ErrorsFound,CurveMin=0.7d0)
              END IF

              IF(MaxCurveVal .GT. 1.0d0)THEN
                CALL ShowWarningError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
                CALL ShowContinueError('...'//TRIM(cAlphaFields2(6))//' = '//TRIM(Alphas2(6))//' has out of range value.')
                CALL ShowContinueError('...Curve maximum must be <= 1.0, '// &
                        'curve max at PLR = '//TRIM(TrimSigDigits(MaxCurvePLR,2))//' is '//TRIM(TrimSigDigits(MaxCurveVal,3)))
                CALL ShowContinueError('...Setting curve maximum to 1.0 and simulation continues.')
                CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum),ErrorsFound,CurveMax=1.0d0)
              END IF

            END IF
          END IF

          DXCoil(DXCoilNum)%Twet_Rated(PerfModeNum)  = Numbers2(6)
          DXCoil(DXCoilNum)%Gamma_Rated(PerfModeNum) = Numbers2(7)
          DXCoil(DXCoilNum)%MaxONOFFCyclesperHour(PerfModeNum)      = Numbers2(8)
          DXCoil(DXCoilNum)%LatentCapacityTimeConstant(PerfModeNum) = Numbers2(9)
          ! Numbers2 (6) through (9) must all be greater than zero to use the latent capacity degradation model
          IF ((Numbers2(6) .GT. 0.0d0 .OR. Numbers2(7) .GT. 0.0d0 .OR. Numbers2(8) .GT. 0.0d0 .OR. Numbers2(9) .GT. 0.0d0) .and.  &
              (Numbers2(6) .LE. 0.0d0 .OR. Numbers2(7) .LE. 0.0d0 .OR. Numbers2(8) .LE. 0.0d0 .OR. Numbers2(9) .LE. 0.0d0)) THEN
            CALL ShowWarningError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'":')
            CALL ShowContinueError('...At least one of the four input parameters for the latent capacity degradation model')
            CALL ShowContinueError('...is set to zero. Therefore, the latent degradation model will not be used '//  &
               'for this simulation.')
          END IF

          ! outdoor condenser node
          IF (lAlphaBlanks2(7)) THEN
            DXCoil(DXCoilNum)%CondenserInletNodeNum(PerfModeNum) = 0
          ELSE
            DXCoil(DXCoilNum)%CondenserInletNodeNum(PerfModeNum) = &
               GetOnlySingleNode(Alphas2(7),ErrorsFound,PerfObjectType,PerfObjectName, &
                                 NodeType_Air,NodeConnectionType_OutsideAirReference,1,ObjectIsNotParent)
            IF (.not. CheckOutAirNodeNumber(DXCoil(DXCoilNum)%CondenserInletNodeNum(PerfModeNum))) THEN
              CALL ShowWarningError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'":')
              CALL ShowContinueError('may not be valid '//TRIM(cAlphaFields2(7))//'="'//TRIM(Alphas2(7))//'".')
              CALL ShowContinueError('node does not appear in an OutdoorAir:NodeList or as an OutdoorAir:Node.')
              CALL ShowContinueError('This node needs to be included in an air system or the coil model will not be valid' &
                             //', and the simulation continues')
            END IF
          ENDIF
          IF ((SameString(Alphas2(8),'AirCooled')) .OR. lAlphaBlanks2(8)) THEN
            DXCoil(DXCoilNum)%CondenserType(PerfModeNum) = AirCooled
          ELSEIF (SameString(Alphas2(8),'EvaporativelyCooled')) THEN
            DXCoil(DXCoilNum)%CondenserType(PerfModeNum) = EvapCooled
            DXCoil(DXCoilNum)%ReportEvapCondVars = .true.
          ELSE
            CALL ShowSevereError(RoutineName//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'", invalid')
            CALL ShowContinueError('...'//TRIM(cAlphaFields2(8))//'="'//TRIM(Alphas2(8))//'":')
            CALL ShowContinueError('...must be AirCooled or EvaporativelyCooled.')
            ErrorsFound = .TRUE.
          END IF

          DXCoil(DXCoilNum)%EvapCondEffect(PerfModeNum) = Numbers2(10)
          IF (DXCoil(DXCoilNum)%EvapCondEffect(PerfModeNum) .LT. 0.0d0 .OR.   &
              DXCoil(DXCoilNum)%EvapCondEffect(PerfModeNum) .GT. 1.0d0) THEN
            CALL ShowSevereError(RoutineName//trim(PerfObjectType)//'="'//trim(PerfObjectName)//'", invalid')
            CALL ShowContinueError('...'//trim(cNumericFields2(10))//' cannot be < 0.0 or > 1.0.')
            CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers2(10),2))//'].')
            ErrorsFound = .TRUE.
          END IF

          DXCoil(DXCoilNum)%EvapCondAirFlow(PerfModeNum) = Numbers2(11)
          IF (DXCoil(DXCoilNum)%EvapCondAirFlow(PerfModeNum) .LT. 0.0d0 .AND.  &
              DXCoil(DXCoilNum)%EvapCondAirFlow(PerfModeNum) /= AutoSize) THEN
            CALL ShowSevereError(RoutineName//trim(PerfObjectType)//'="'//trim(PerfObjectName)//'", invalid')
            CALL ShowContinueError('...'//trim(cNumericFields2(11))//' cannot be < 0.0.')
            CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers2(11),2))//'].')
            ErrorsFound = .TRUE.
          END IF

          DXCoil(DXCoilNum)%EvapCondPumpElecNomPower(PerfModeNum) = Numbers2(12)
          IF (DXCoil(DXCoilNum)%EvapCondPumpElecNomPower(PerfModeNum) .LT. 0.0d0 .AND.  &
              DXCoil(DXCoilNum)%EvapCondAirFlow(PerfModeNum) /= AutoSize) THEN
            CALL ShowSevereError(RoutineName//trim(PerfObjectType)//'="'//trim(PerfObjectName)//'", invalid')
            CALL ShowContinueError('...'//trim(cNumericFields2(12))//' cannot be less than zero.')
            CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers2(12),2))//'].')
            ErrorsFound = .TRUE.
          END IF

          DXCoil(DXCoilNum)%RatedEIR(PerfModeNum) = 1.0d0 / DXCoil(DXCoilNum)%RatedCOP(PerfModeNum)

          ! read in user specified SHR modifer curves
          IF (.NOT. lAlphaBlanks2(9) .AND. NumAlphas2 > 8) THEN
            DXCoil(DXCoilNum)%SHRFTemp(PerfModeNum) = GetCurveIndex(Alphas2(9)) ! convert curve name to number
            IF (DXCoil(DXCoilNum)%SHRFTemp(PerfModeNum) .EQ. 0) THEN
                CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
                CALL ShowContinueError('...not found '//TRIM(cAlphaFields2(9))//'="'//TRIM(Alphas2(9))//'".')
            ELSE
             ! Verify Curve Object, only legal type is Biquadratic
             SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp(PerfModeNum)))
              CASE('BIQUADRATIC')
                DXCoil(DXCoilNum)%SHRFTempCurveType(PerfModeNum)=Biquadratic
              CASE DEFAULT
                CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
                CALL ShowContinueError('...illegal '//TRIM(cAlphaFields2(9))//' type for this object = '// &
                                    TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp(PerfModeNum))))
                CALL ShowContinueError('Curve type must be Biquadratic.')
                ErrorsFound=.TRUE.
             END SELECT
            END IF
          END IF

          IF (.NOT. lAlphaBlanks2(10) .AND. NumAlphas2 > 9) THEN
            DXCoil(DXCoilNum)%SHRFFlow(PerfModeNum) = GetCurveIndex(Alphas2(10)) ! convert curve name to number
            IF (DXCoil(DXCoilNum)%SHRFTemp(PerfModeNum) .EQ. 0) THEN
                CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
                CALL ShowContinueError('...not found '//TRIM(cAlphaFields2(10))//'="'//TRIM(Alphas2(10))//'".')
            ELSE
             ! Verify Curve Object, only legal type is Biquadratic
             SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow(PerfModeNum)))
              CASE('QUADRATIC', 'CUBIC')

              CASE DEFAULT
                CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
                CALL ShowContinueError('...illegal '//TRIM(cAlphaFields2(10))//' type for this object = '// &
                                    TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow(PerfModeNum))))
                CALL ShowContinueError('Curve type must be quadratic or cubic.')
                ErrorsFound=.TRUE.
             END SELECT
            END IF
          END IF
          IF (DXCoil(DXCoilNum)%SHRFTemp(PerfModeNum) > 0 .AND. DXCoil(DXCoilNum)%SHRFFlow(PerfModeNum) > 0) THEN
              DXCoil(DXCoilNum)%UserSHRCurveExists = .TRUE.
          ELSE
              DXCoil(DXCoilNum)%UserSHRCurveExists = .FALSE.
          ENDIF

        ELSE ! invalid performance object
          CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('... not found '//TRIM(PerfObjectType)//'="'//TRIM(PerfObjectName)//'".')
          ErrorsFound=.TRUE.
        END IF ! end of valid performance object check
        AlphaIndex = AlphaIndex + 2
      END IF ! end of sufficient number of fields entered check
    END DO ! End of multimode DX capacity stages loop
    ! Warn if inputs entered for unused capacity stages
    DO CapacityStageNum = (DXCoil(DXCoilNum)%NumCapacityStages+1), MaxCapacityStages
      IF ((AlphaIndex .LE. NumAlphas) .AND. &
         ((Alphas(AlphaIndex) .NE. Blank) .OR. (Alphas(AlphaIndex+1) .NE. Blank))) THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
        CALL ShowContinueError('...Capacity Stage '//TRIM(TrimSigDigits(CapacityStageNum))//' not active. Therefore,'//  &
            trim(cAlphaFields(AlphaIndex)))
        CALL ShowContinueError('... and '//trim(cAlphaFields(AlphaIndex+1))//' fields will be ignored.')
      END IF
      AlphaIndex = AlphaIndex + 2
    END DO ! End of unused capacity stages loop
  END DO ! End of multimode DX dehumidification modes loop

!  ! Warn if excess fields entered
!  IF (NumAlphas .GE. AlphaIndex .and. ANY(Alphas(AlphaIndex:) /= Blank)) THEN
!    CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
!    CALL ShowContinueError('...too many remaining fields for specified Capacity Stages and Dehumidification Modes.')
!    CALL ShowContinueError('...Excess Coil Performance Object Type and Coil Performance Object Name fields will be ignored.')
!  ENDIF

  ! Get Water System tank connections
  !  A13, \field Name of Water Storage Tank for Supply
  DXCoil(DXCoilNum)%EvapWaterSupplyName = Alphas(13)
  IF (lAlphaBlanks(13)) THEN
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromMains
  ELSE
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromTank
    CALL SetupTankDemandComponent(DXCoil(DXCoilNum)%Name, TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%EvapWaterSupplyName, ErrorsFound, DXCoil(DXCoilNum)%EvapWaterSupTankID, &
                 DXCoil(DXCoilNum)%EvapWaterTankDemandARRID )
  ENDIF

  !A14; \field Name of Water Storage Tank for Condensate Collection
  DXCoil(DXCoilNum)%CondensateCollectName = Alphas(14)
  IF (lAlphaBlanks(14)) THEN
    DXCoil(DXCoilNum)%CondensateCollectMode = CondensateDiscarded
  ELSE
    DXCoil(DxCoilNum)%CondensateCollectMode = CondensateToTank
    CALL SetupTankSupplyComponent(DXCoil(DXCoilNum)%Name, TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%CondensateCollectName, ErrorsFound, DXCoil(DXCoilNum)%CondensateTankID, &
                 DXCoil(DXCoilNum)%CondensateTankSupplyARRID )
  ENDIF

  !Basin heater power as a function of temperature must be greater than or equal to 0
  DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff = Numbers(5)
  IF(Numbers(5) .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(5))//' must be >= 0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(5),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = Numbers(6)
  IF(DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff .GT. 0.0d0) THEN
    IF(NumNumbers .LT. 6) THEN
      DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = 2.0d0
    ENDIF
    IF(DXCoil(DxCoilNum)%BasinHeaterSetPointTemp < 2.0d0) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", freeze possible')
      CALL ShowContinueError('...'//trim(cNumericFields(6))//' is < 2 {C}. Freezing could occur.')
      CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(6),2))//'].')
    END IF
  END IF

  IF(.NOT. lAlphaBlanks(15))THEN
    DXCoil(DxCoilNum)%BasinHeaterSchedulePtr   = GetScheduleIndex(Alphas(15))
    IF(DXCoil(DxCoilNum)%BasinHeaterSchedulePtr .EQ. 0)THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(15))//'="'//TRIM(Alphas(15))//'".')
      CALL ShowContinueError('Basin heater will be available to operate throughout the simulation.')
    END IF
  END IF

END DO ! end of the Multimode DX coil loop

IF (ErrorsFound) THEN
  CALL ShowFatalError(RoutineName//'Errors found in getting '//TRIM(CurrentModuleObject)//' input.  '//&
                      'Preceding condition(s) causes termination.')
END IF

!************* Read Heat Pump (DX Heating Coil) Input **********
CurrentModuleObject='Coil:Heating:DX:SingleSpeed'
DO DXCoilIndex = 1,NumDXHeatingCoils

  DXCoilNum = DXCoilNum+1

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)
  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name       = Alphas(1)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilDX_HeatingEmpirical
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(3),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(3),Alphas(4),'Air Nodes')

  DXCoil(DXCoilNum)%CCapFTemp(1) = GetCurveIndex(Alphas(5)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFTemp(1) .EQ. 0) THEN
    IF (lAlphaBlanks(5)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(5))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(5))//'="'//TRIM(Alphas(5))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! only legal types are Quadratic, Biquadratic and Cubic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1)))

    CASE('QUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1)=Quadratic

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1)=Biquadratic

    CASE('CUBIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1)=Cubic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(5))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1))))
      CALL ShowContinueError('Curve type must be Biquadratic, Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%CCapFFlow(1) = GetCurveIndex(Alphas(6)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(6)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(6))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(6))//'="'//TRIM(Alphas(6))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(6))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%EIRFTemp(1) = GetCurveIndex(Alphas(7)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%EIRFTemp(1) .EQ. 0) THEN
    IF (lAlphaBlanks(7)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(7))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(7))//'="'//TRIM(Alphas(7))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! only legal types are Quadratic, Biquadratic and Cubic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(1)))

    CASE('QUADRATIC')
      DXCoil(DXCoilNum)%EIRTempModFacCurveType(1)=Quadratic

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%EIRTempModFacCurveType(1)=Biquadratic

    CASE('CUBIC')
      DXCoil(DXCoilNum)%EIRTempModFacCurveType(1)=Cubic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(7))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(1))))
      CALL ShowContinueError('Curve type must be Biquadratic, Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%EIRFFlow(1) = GetCurveIndex(Alphas(8)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%EIRFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(8)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(8))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(8))//'="'//TRIM(Alphas(8))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic or Cubic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(8))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%PLFFPLR(1) = GetCurveIndex(Alphas(9)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%PLFFPLR(1) .EQ. 0) THEN
    IF (lAlphaBlanks(9)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(9))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(9))//'="'//TRIM(Alphas(9))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal types are Quadratic or Cubic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(9))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT

    IF(.NOT. ErrorsFound)THEN
!     Test PLF curve minimum and maximum. Cap if less than 0.7 or greater than 1.0.
      MinCurveVal = 999.0d0
      MaxCurveVal = -999.0d0
      CurveInput = 0.0d0
      DO WHILE (CurveInput <= 1.0d0)
        CurveVal = CurveValue(DXCoil(DXCoilNum)%PLFFPLR(1),CurveInput)
        IF(CurveVal .LT. MinCurveVal)THEN
          MinCurveVal = CurveVal
          MinCurvePLR = CurveInput
        END IF
        IF(CurveVal .GT. MaxCurveVal)THEN
          MaxCurveVal = CurveVal
          MaxCurvePLR = CurveInput
        END IF
        CurveInput=CurveInput+0.01d0
      END DO
      IF(MinCurveVal .LT. 0.7d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...'//TRIM(cAlphaFields(9))//' = '//TRIM(Alphas(9))//' has out of range value.')
        CALL ShowContinueError('...Curve minimum must be >= 0.7, '// &
                        'curve min at PLR = '//TRIM(TrimSigDigits(MinCurvePLR,2))//' is '//TRIM(TrimSigDigits(MinCurveVal,3)))
        CALL ShowContinueError('...Setting curve minimum to 0.7 and simulation continues.')
        CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMin=0.7d0)
      END IF

      IF(MaxCurveVal .GT. 1.0d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...'//TRIM(cAlphaFields(9))//' = '//TRIM(Alphas(9))//' has out of range value.')
        CALL ShowContinueError('...Curve maximum must be <= 1.0, '// &
                        'curve max at PLR = '//TRIM(TrimSigDigits(MaxCurvePLR,2))//' is '//TRIM(TrimSigDigits(MaxCurveVal,3)))
        CALL ShowContinueError('...Setting curve maximum to 1.0 and simulation continues.')
        CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMax=1.0d0)
      END IF

    END IF

  END IF

! Only required for reverse cycle heat pumps
  DXCoil(DXCoilNum)%DefrostEIRFT = GetCurveIndex(Alphas(10)) ! convert curve name to number
  IF (SameString(Alphas(11),'ReverseCycle')) THEN
    IF (DXCoil(DXCoilNum)%DefrostEIRFT .EQ. 0) THEN
      IF (lAlphaBlanks(10)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(10))//' is blank.')
        CALL ShowContinueError('...field is required because '//trim(cAlphaFields(11))//' is "ReverseCycle".')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(10))//'="'//TRIM(Alphas(10))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is BiQuadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%DefrostEIRFT))

        CASE('BIQUADRATIC')

        CASE DEFAULT
          CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(10))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%DefrostEIRFT)))
          CALL ShowContinueError('Curve type must be BiQuadratic.')
          ErrorsFound=.TRUE.
      END SELECT
    END IF
  END IF

  IF (SameString(Alphas(11),'ReverseCycle'))  DXCoil(DXCoilNum)%DefrostStrategy = ReverseCycle
  IF (SameString(Alphas(11),'Resistive')) DXCoil(DXCoilNum)%DefrostStrategy = Resistive
  IF (DXCoil(DXCoilNum)%DefrostStrategy .EQ.0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(11))//'="'//TRIM(Alphas(11))//'".')
    CALL ShowContinueError('...valid values for this field are ReverseCycle or Resistive.')
    ErrorsFound = .TRUE.
  END IF

  IF (SameString(Alphas(12),'Timed'))     DXCoil(DXCoilNum)%DefrostControl = Timed
  IF (SameString(Alphas(12),'OnDemand')) DXCoil(DXCoilNum)%DefrostControl = OnDemand
  IF (DXCoil(DXCoilNum)%DefrostControl .EQ.0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(12))//'="'//TRIM(Alphas(12))//'".')
    CALL ShowContinueError('...valid values for this field are Timed or OnDemand.')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedSHR(1)    = 1.0d0
  DXCoil(DXCoilNum)%RatedTotCap(1) = Numbers(1)
  DXCoil(DXCoilNum)%RatedCOP(1)    = Numbers(2)
  DXCoil(DXCoilNum)%RatedAirVolFlowRate(1) = Numbers(3)
  DXCoil(DXCoilNum)%FanPowerPerEvapAirFlowRate(1) = Numbers(4)

  !Set minimum OAT for heat pump compressor operation
  DXCoil(DXCoilNum)%MinOATCompressor = Numbers(5)

  DXCoil(DXCoilNum)%OATempCompressorOn = Numbers(6)

  IF ( lNumericBlanks(6) .OR. lNumericBlanks(5)) THEN
    DXCoil(DXCoilNum)%OATempCompressorOnOffBlank = .TRUE.
  ELSE
    DXCoil(DXCoilNum)%OATempCompressorOnOffBlank = .FALSE.
  ENDIF

  IF (DXCoil(DXCoilNum)%OATempCompressorOn .LT. DXCoil(DXCoilNum)%MinOATCompressor) &
  DXCoil(DXCoilNum)%OATempCompressorOn = DXCoil(DXCoilNum)%MinOATCompressor

  !Set maximum outdoor temp for defrost to occur
  DXCoil(DXCoilNum)%MaxOATDefrost = Numbers(7)

  !Set crankcase heater capacity
  DXCoil(DXCoilNum)%CrankcaseHeaterCapacity = Numbers(8)
  IF (DXCoil(DXCoilNum)%CrankcaseHeaterCapacity .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(8))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(8),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  !Set crankcase heater cutout temperature
  DXCoil(DXCoilNum)%MaxOATCrankcaseHeater = Numbers(9)

  !Set defrost time period
  DXCoil(DXCoilNum)%DefrostTime = Numbers(10)
  IF(DXCoil(DXCoilNum)%DefrostTime .EQ. 0.0d0 .AND. DXCoil(DXCoilNum)%DefrostControl .EQ. 1) THEN
    CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", ')
    CALL ShowContinueError('...'//TRIM(cNumericFields(10))//' = 0.0 for defrost control = TIMED.')
  END IF

  !Set defrost capacity (for resistive defrost)
  DXCoil(DXCoilNum)%DefrostCapacity = Numbers(11)
  IF(DXCoil(DXCoilNum)%DefrostCapacity .EQ. 0.0d0 .AND. DXCoil(DXCoilNum)%DefrostStrategy .EQ. 2) THEN
    CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", ')
    CALL ShowContinueError('...'//TRIM(cNumericFields(11))//' = 0.0 for defrost strategy = RESISTIVE.')
  END IF

  !Set Region number for calculating HSPF
  DXCoil(DXCoilNum)%RegionNum = Numbers(12)

  IF ( lNumericBlanks(12)) THEN
    DXCoil(DXCoilNum)%RegionNum = 4
  ENDIF

  DXCoil(DXCoilNum)%RatedEIR(1) = 1.d0 / DXCoil(DXCoilNum)%RatedCOP(1)

  !A13 is optional evaporator node name
  IF ( lAlphaBlanks(13) ) THEN
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = 0
  ELSE
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = &
       GetOnlySingleNode(Alphas(13),ErrorsFound,TRIM(CurrentModuleObject),DXCoil(DXCoilNum)%Name, &
                         NodeType_Air,NodeConnectionType_OutsideAirReference,1,ObjectIsNotParent)
     ! warn if not an outdoor node, but allow
    IF (.not. CheckOutAirNodeNumber(DXCoil(DXCoilNum)%CondenserInletNodeNum(1))) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", may be invalid')
      CALL ShowContinueError(TRIM(cAlphaFields(13))//'="'//TRIM(Alphas(13))//&
                               '", node does not appear in an OutdoorAir:NodeList or as an OutdoorAir:Node.')
      CALL ShowContinueError('This node needs to be included in an air system or the coil model will not be valid' &
                             //', and the simulation continues')
    END IF
  ENDIF

END DO ! end of the DX heating coil loop

IF (ErrorsFound) THEN
  CALL ShowFatalError(RoutineName//'Errors found in getting '//TRIM(CurrentModuleObject)//' input. '//&
                      'Preceding condition(s) causes termination.')
END IF

CurrentModuleObject='Coil:Cooling:DX:TwoSpeed'
DO DXCoilIndex = 1,NumDXMulSpeedCoils

  DXCoilNum = DXCoilNum+1

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
! Initialize DataHeatBalance heat reclaim variable name for use by heat reclaim coils
  HeatReclaimDXCoil(DXCoilNum)%Name = DXCoil(DXCoilNum)%Name
  HeatReclaimDXCoil(DXCoilNum)%SourceType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilDX_CoolingTwoSpeed
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF
  DXCoil(DXCoilNum)%RatedTotCap(1) = Numbers(1)
  DXCoil(DXCoilNum)%RatedSHR(1)    = Numbers(2)
  DXCoil(DXCoilNum)%RatedCOP(1)    = Numbers(3)
  DXCoil(DXCoilNum)%RatedAirVolFlowRate(1) = Numbers(4)
  IF (.NOT. lNumericBlanks(5)) THEN
    DXCoil(DXCoilNum)%InternalStaticPressureDrop = Numbers(5)
    DXCoil(DXCoilNum)%RateWithInternalStaticAndFanObject = .TRUE.
  ELSE
    DXCoil(DXCoilNum)%InternalStaticPressureDrop = -999.d0
    DXCoil(DXCoilNum)%RateWithInternalStaticAndFanObject = .FALSE.
  ENDIF

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(3),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(3),Alphas(4),'Air Nodes')

  DXCoil(DXCoilNum)%CCapFTemp(1) = GetCurveIndex(Alphas(5)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFTemp(1) .EQ. 0) THEN
    IF (lAlphaBlanks(5)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(5))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(5))//'="'//TRIM(Alphas(5))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is BiQuadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1)))

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1)=Biquadratic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(5))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1))))
      CALL ShowContinueError('Curve type must be BiQuadratic.')
      ErrorsFound=.true.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%CCapFFlow(1) = GetCurveIndex(Alphas(6)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(6)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(6))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(6))//'="'//TRIM(Alphas(6))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(6))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%EIRFTemp(1) = GetCurveIndex(Alphas(7)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%EIRFTemp(1) .EQ. 0) THEN
    IF (lAlphaBlanks(7)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(7))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(7))//'="'//TRIM(Alphas(7))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Biquadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(1)))

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%EIRTempModFacCurveType(1)=Biquadratic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(7))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp(1))))
      CALL ShowContinueError('Curve type must be BiQuadratic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%EIRFFlow(1) = GetCurveIndex(Alphas(8)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%EIRFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(8)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(8))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(8))//'="'//TRIM(Alphas(8))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(8))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFFlow(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%PLFFPLR(1) = GetCurveIndex(Alphas(9)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%PLFFPLR(1) .EQ. 0) THEN
    IF (lAlphaBlanks(9)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(9))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(9))//'="'//TRIM(Alphas(9))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal types are Quadratic or Cubic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1)))

    CASE('QUADRATIC')

    CASE('CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(9))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1))))
      CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT

    IF(.NOT. ErrorsFound)THEN
!     Test PLF curve minimum and maximum. Cap if less than 0.7 or greater than 1.0.
      MinCurveVal = 999.0d0
      MaxCurveVal = -999.0d0
      CurveInput = 0.0d0
      DO WHILE (CurveInput <= 1.0d0)
        CurveVal = CurveValue(DXCoil(DXCoilNum)%PLFFPLR(1),CurveInput)
        IF(CurveVal .LT. MinCurveVal)THEN
          MinCurveVal = CurveVal
          MinCurvePLR = CurveInput
        END IF
        IF(CurveVal .GT. MaxCurveVal)THEN
          MaxCurveVal = CurveVal
          MaxCurvePLR = CurveInput
        END IF
        CurveInput=CurveInput+0.01d0
      END DO
      IF(MinCurveVal .LT. 0.7d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...'//TRIM(cAlphaFields(9))//' = '//TRIM(Alphas(9))//' has out of range value.')
        CALL ShowContinueError('...Curve minimum must be >= 0.7, '// &
                        'curve min at PLR = '//TRIM(TrimSigDigits(MinCurvePLR,2))//' is '//TRIM(TrimSigDigits(MinCurveVal,3)))
        CALL ShowContinueError('...Setting curve minimum to 0.7 and simulation continues.')
        CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMin=0.7d0)
      END IF

      IF(MaxCurveVal .GT. 1.0d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...'//TRIM(cAlphaFields(9))//' = '//TRIM(Alphas(9))//' has out of range value.')
        CALL ShowContinueError('...Curve maximum must be <= 1.0, '// &
                        'curve max at PLR = '//TRIM(TrimSigDigits(MaxCurvePLR,2))//' is '//TRIM(TrimSigDigits(MaxCurveVal,3)))
        CALL ShowContinueError('...Setting curve maximum to 1.0 and simulation continues.')
        CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMax=1.0d0)
      END IF

    END IF

  END IF

  DXCoil(DXCoilNum)%RatedEIR(1) = 1.d0 / DXCoil(DXCoilNum)%RatedCOP(1)

  DXCoil(DXCoilNum)%RatedTotCap2 = Numbers(6)
  DXCoil(DXCoilNum)%RatedSHR2    = Numbers(7)
  DXCoil(DXCoilNum)%RatedCOP2    = Numbers(8)
  DXCoil(DXCoilNum)%RatedAirVolFlowRate2 = Numbers(9)

  DXCoil(DXCoilNum)%CCapFTemp2 = GetCurveIndex(Alphas(10)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFTemp2 .EQ. 0) THEN
    IF (lAlphaBlanks(10)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(10))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(10))//'="'//TRIM(Alphas(10))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is BiQuadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp2))

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(2)=Biquadratic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(10))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp2)))
      CALL ShowContinueError('Curve type must be BiQuadratic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%EIRFTemp2 = GetCurveIndex(Alphas(11)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%EIRFTemp2 .EQ. 0) THEN
    IF (lAlphaBlanks(11)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(11))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(11))//'="'//TRIM(Alphas(11))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Biquadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp2))

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%EIRTempModFacCurveType(2)=Biquadratic

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(11))//' type for this object = '// &
                           TRIM(GetCurveType(DXCoil(DXCoilNum)%EIRFTemp2)))
      CALL ShowContinueError('Curve type must be BiQuadratic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

! outdoor condenser node
  IF (lAlphaBlanks(12)) THEN
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = 0
  ELSE
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = &
       GetOnlySingleNode(Alphas(12),ErrorsFound,TRIM(CurrentModuleObject),DXCoil(DXCoilNum)%Name, &
                         NodeType_Air,NodeConnectionType_OutsideAirReference,1,ObjectIsNotParent)
    IF (.not. CheckOutAirNodeNumber(DXCoil(DXCoilNum)%CondenserInletNodeNum(1))) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", may be invalid')
      CALL ShowContinueError(TRIM(cAlphaFields(12))//'="'//TRIM(Alphas(12))//&
                               '", node does not appear in an OutdoorAir:NodeList or as an OutdoorAir:Node.')
      CALL ShowContinueError('This node needs to be included in an air system or the coil model will not be valid' &
                             //', and the simulation continues')
    END IF
  ENDIF

  IF ((SameString(Alphas(13),'AirCooled')) .OR. lAlphaBlanks(13))THEN
    DXCoil(DXCoilNum)%CondenserType(1) = AirCooled
  ELSEIF (SameString(Alphas(13),'EvaporativelyCooled')) THEN
    DXCoil(DXCoilNum)%CondenserType(1) = EvapCooled
    DXCoil(DXCoilNum)%ReportEvapCondVars = .TRUE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cAlphaFields(13))//'="'//TRIM(Alphas(13))//'":')
    CALL ShowContinueError('...must be AirCooled or EvaporativelyCooled.')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondEffect(1) = Numbers(10)
  IF (DXCoil(DXCoilNum)%EvapCondEffect(1) .LT. 0.0d0 .OR. DXCoil(DXCoilNum)%EvapCondEffect(1) .GT. 1.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(9))//' cannot be < 0.0 or > 1.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(10),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondAirFlow(1) = Numbers(11)
  IF (DXCoil(DXCoilNum)%EvapCondAirFlow(1) .LT. 0.0d0 .AND. DXCoil(DXCoilNum)%EvapCondAirFlow(1) /= AutoSize) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(10))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(11),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondPumpElecNomPower(1) = Numbers(12)
  IF (DXCoil(DXCoilNum)%EvapCondPumpElecNomPower(1) .LT. 0.0d0 .AND. &
      DXCoil(DXCoilNum)%EvapCondPumpElecNomPower(1) /= AutoSize) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(11))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(12),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondEffect2 = Numbers(13)
  IF (DXCoil(DXCoilNum)%EvapCondEffect2 .LT. 0.0d0 .OR. DXCoil(DXCoilNum)%EvapCondEffect2 .GT. 1.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(12))//' cannot be cannot be < 0.0 or > 1.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(13),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondAirFlow2 = Numbers(14)
  IF (DXCoil(DXCoilNum)%EvapCondAirFlow2 .LT. 0.0d0 .AND. DXCoil(DXCoilNum)%EvapCondAirFlow2 /= AutoSize) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(13))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(14),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%EvapCondPumpElecNomPower2 = Numbers(15)
  IF (DXCoil(DXCoilNum)%EvapCondPumpElecNomPower2 .LT. 0.0d0 .AND. DXCoil(DXCoilNum)%EvapCondPumpElecNomPower2 /= AutoSize) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(14))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(15),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedEIR2 = 1.d0 / DXCoil(DXCoilNum)%RatedCOP2

  ! Get Water System tank connections
  !  A14, \field Name of Water Storage Tank for Supply
  DXCoil(DXCoilNum)%EvapWaterSupplyName = Alphas(14)
  IF (lAlphaBlanks(14)) THEN
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromMains
  ELSE
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromTank
    CALL SetupTankDemandComponent(DXCoil(DXCoilNum)%Name, TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%EvapWaterSupplyName, ErrorsFound, DXCoil(DXCoilNum)%EvapWaterSupTankID, &
                 DXCoil(DXCoilNum)%EvapWaterTankDemandARRID )
  ENDIF

  !A15; \field Name of Water Storage Tank for Condensate Collection
  DXCoil(DXCoilNum)%CondensateCollectName = Alphas(15)
  IF (lAlphaBlanks(15)) THEN
    DXCoil(DXCoilNum)%CondensateCollectMode = CondensateDiscarded
  ELSE
    DXCoil(DxCoilNum)%CondensateCollectMode = CondensateToTank
    CALL SetupTankSupplyComponent(DXCoil(DXCoilNum)%Name, TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%CondensateCollectName, ErrorsFound, DXCoil(DXCoilNum)%CondensateTankID, &
                 DXCoil(DXCoilNum)%CondensateTankSupplyARRID )
  ENDIF

  ! Basin heater power as a function of temperature must be greater than or equal to 0
  DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff = Numbers(16)
  IF(Numbers(16) .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(15))//' must be >= 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(16),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = Numbers(17)
  IF(DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff .GT. 0.0d0) THEN
    IF(NumNumbers .LT. 17) THEN
      DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = 2.0d0
    ENDIF
    IF(DXCoil(DxCoilNum)%BasinHeaterSetPointTemp < 2.0d0) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", freeze possible')
      CALL ShowContinueError('...'//trim(cNumericFields(16))//' is < 2 {C}. Freezing could occur.')
      CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(17),2))//'].')
    END IF
  END IF

  IF(.NOT. lAlphaBlanks(16))THEN
    DXCoil(DxCoilNum)%BasinHeaterSchedulePtr   = GetScheduleIndex(Alphas(16))
    IF(DXCoil(DxCoilNum)%BasinHeaterSchedulePtr .EQ. 0)THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(16))//'="'//TRIM(Alphas(16))//'".')
      CALL ShowContinueError('Basin heater will be available to operate throughout the simulation.')
    END IF
  END IF

  IF (.NOT. lAlphaBlanks(17) .AND. NumAlphas > 16) THEN
    DXCoil(DXCoilNum)%SHRFTemp(1) = GetCurveIndex(Alphas(17)) ! convert curve name to number
    !DXCoil(DXCoilNum)%SHRFTemp2 = DXCoil(DXCoilNum)%SHRFTemp(1)
    IF (DXCoil(DXCoilNum)%SHRFTemp(1) .EQ. 0) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(17))//'="'//TRIM(Alphas(17))//'".')
    ELSE
     ! Verify Curve Object, only legal type is Biquadratic
     SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp(1)))
      CASE('BIQUADRATIC')
        DXCoil(DXCoilNum)%SHRFTempCurveType(1)=Biquadratic
        DXCoil(DXCoilNum)%SHRFTempCurveType2 = DXCoil(DXCoilNum)%SHRFTempCurveType(1)
      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(17))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp(1))))
        CALL ShowContinueError('Curve type must be Biquadratic.')
        ErrorsFound=.TRUE.
     END SELECT
    END IF
  END IF

  IF (.NOT. lAlphaBlanks(18)  .AND. NumAlphas > 17) THEN
    DXCoil(DXCoilNum)%SHRFFlow(1) = GetCurveIndex(Alphas(18)) ! convert curve name to number
    !DXCoil(DXCoilNum)%SHRFFlow2 = DXCoil(DXCoilNum)%SHRFFlow(1)
    IF (DXCoil(DXCoilNum)%SHRFTemp(1) .EQ. 0) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(18))//'="'//TRIM(Alphas(18))//'".')
    ELSE
     ! Verify Curve Object, only legal type is Biquadratic
     SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow(1)))
      CASE('QUADRATIC', 'CUBIC')

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(18))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow(1))))
        CALL ShowContinueError('Curve type must be quadratic or cubic.')
        ErrorsFound=.TRUE.
     END SELECT
    END IF
  END IF

  IF (.NOT. lAlphaBlanks(19)  .AND. NumAlphas > 18) THEN
    DXCoil(DXCoilNum)%SHRFTemp2 = GetCurveIndex(Alphas(19)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%SHRFTemp2 .EQ. 0) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(19))//'="'//TRIM(Alphas(19))//'".')
    ELSE
     ! Verify Curve Object, only legal type is Biquadratic
     SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp2))
      CASE('BIQUADRATIC')
        DXCoil(DXCoilNum)%SHRFTempCurveType2=Biquadratic
      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(19))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFTemp2)))
        CALL ShowContinueError('Curve type must be Biquadratic.')
        ErrorsFound=.TRUE.
     END SELECT
    END IF
  END IF

  IF (.NOT. lAlphaBlanks(20)  .AND. NumAlphas > 19) THEN
    DXCoil(DXCoilNum)%SHRFFlow2 = GetCurveIndex(Alphas(20))  ! convert curve name to number
    IF (DXCoil(DXCoilNum)%SHRFTemp2 .EQ. 0) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(20))//'="'//TRIM(Alphas(20))//'".')
    ELSE
     ! Verify Curve Object, only legal type is Biquadratic
     SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow2))
      CASE('QUADRATIC', 'CUBIC')

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(20))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%SHRFFlow2)))
        CALL ShowContinueError('Curve type must be quadratic or cubic.')
        ErrorsFound=.TRUE.
     END SELECT
    END IF
  END IF
  IF (DXCoil(DXCoilNum)%SHRFTemp(1) > 0 .and. DXCoil(DXCoilNum)%SHRFFlow(1) > 0 .and. &
      DXCoil(DXCoilNum)%SHRFTemp2 > 0 .and. DXCoil(DXCoilNum)%SHRFFlow2 > 0 ) THEN
      DXCoil(DXCoilNum)%UserSHRCurveExists = .TRUE.
  ELSE
      DXCoil(DXCoilNum)%UserSHRCurveExists = .FALSE.
  ENDIF
END DO

IF (ErrorsFound) THEN
  CALL ShowFatalError(RoutineName//'Errors found in getting '//TRIM(CurrentModuleObject)//' input.  '//&
                      'Preceding condition(s) causes termination.')
END IF

! Loop over the DX Water Heater Coils and get & load the data
CurrentModuleObject='Coil:WaterHeating:AirToWaterHeatPump'
DO DXHPWaterHeaterCoilNum = 1, NumDXHeatPumpWaterHeaterCoils

  CALL GetObjectItem(CurrentModuleObject,DXHPWaterHeaterCoilNum,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  DXCoilNum = DXCoilNum+1
  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilDX_HeatPumpWaterHeater
  DXCoil(DXCoilNum)%SchedPtr = 0  ! heat pump water heater DX coil has no schedule

! Store the HPWH DX coil heating capacity in RatedTotCap2. After backing off pump and fan heat,
! move to RatedTotCap() for use by DX coil
  DXCoil(DXCoilNum)%RatedTotCap2                = Numbers(1)
  IF(DXCoil(DXCoilNum)%RatedTotCap2 .LE. 0.0d0) THEN
     CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
     CALL ShowContinueError('...'//TRIM(cNumericFields(1))//' must be > 0.0,'//  &
        ' entered value=['//trim(TrimSigDigits(Numbers(1),2))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedCOP(1)                 = Numbers(2)
  IF(DXCoil(DXCoilNum)%RatedCOP(1) .LE. 0.0d0) THEN
     CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
     CALL ShowContinueError('...'//TRIM(cNumericFields(2))//' must be > 0.0,'//  &
        ' entered value=['//trim(TrimSigDigits(Numbers(2),2))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedSHR(1) = Numbers(3)
  IF(DXCoil(DXCoilNum)%RatedSHR(1) .LE. 0.0d0 .OR. DXCoil(DXCoilNum)%RatedSHR(1) .GT. 1.0d0) THEN
     CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
     CALL ShowContinueError('...'//TRIM(cNumericFields(3))//' must be > 0 and <= 1. '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(3),3))//'].')

    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedInletDBTemp         = Numbers(4)
  IF(DXCoil(DXCoilNum)%RatedInletDBTemp .LE. 5.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(4))//' must be > 5 {C}. '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(4),1))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedInletWBTemp         = Numbers(5)
  IF(DXCoil(DXCoilNum)%RatedInletWBTemp .LE. 5.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(5))//' must be > 5 {C}. '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(5),1))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedInletWaterTemp      = Numbers(6)
  IF(DXCoil(DXCoilNum)%RatedInletWaterTemp .LE. 25.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(6))//' must be > 25 {C}. '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(6),1))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%RatedAirVolFlowRate(1)    = Numbers(7)
  IF(DXCoil(DXCoilNum)%RatedAirVolFlowRate(1) /= AutoCalculate) THEN
    IF(DXCoil(DXCoilNum)%RatedAirVolFlowRate(1) .LE. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(7))//' must be > 0.0. '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(7),3))//'].')
      ErrorsFound=.TRUE.
    END IF
  END IF

  DXCoil(DXCoilNum)%RatedHPWHCondWaterFlow    = Numbers(8)
! move to init
  IF(DXCoil(DXCoilNum)%RatedHPWHCondWaterFlow /= AutoCalculate) THEN
    IF(DXCoil(DXCoilNum)%RatedHPWHCondWaterFlow .LE. 0.0d0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(8))//' must be > 0.0 '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(8),3))//'].')
      ErrorsFound=.TRUE.
    END IF
!   check the range of flow rate to be >= 1 gpm/ton and <= 5 gpm/ton
    IF(DXCoil(DXCoilNum)%RatedHPWHCondWaterFlow/DXCoil(DXCoilNum)%RatedTotCap2 .LT. 1.79405d-8 .OR. &
       DXCoil(DXCoilNum)%RatedHPWHCondWaterFlow/DXCoil(DXCoilNum)%RatedTotCap2 .GT. 8.97024d-8)THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", outside range')
      CALL ShowContinueError('...'//TRIM(cNumericFields(8))//' per watt of '//TRIM(cNumericFields(1))//  &
         ' is outside the recommended range of >= 1.79405E-8 m3/s/W (0.083 gpm/MBH) and <= 8.97024E-8 m3/s/W (0.417 gpm/MBH).')
      CALL ShowContinueError('...Entered Flow rate per watt = ['//  &
             TRIM(TrimSigDigits((DXCoil(DXCoilNum)%RatedHPWHCondWaterFlow/DXCoil(DXCoilNum)%RatedTotCap2),10))//'].')
    END IF
  END IF

  IF(SameString(Alphas(2),'Yes') .OR. SameString(Alphas(2),'No')) THEN
!  initialized to TRUE on allocate
   IF(SameString(Alphas(2),'No'))DXCoil(DXCoilNum)%FanPowerIncludedInCOP  = .FALSE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(2))//'.  Entered choice = '//TRIM(Alphas(2)))
    CALL ShowContinueError('Valid choices are Yes or No.')
    ErrorsFound=.TRUE.
  END IF

  IF(SameString(Alphas(3),'Yes') .OR. SameString(Alphas(3),'No')) THEN
!  initialized to FALSE on allocate
    IF(SameString(Alphas(3),'Yes'))DXCoil(DXCoilNum)%CondPumpPowerInCOP     = .TRUE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(3))//'.  Entered choice = '//TRIM(Alphas(3)))
    CALL ShowContinueError('Valid choices are Yes or No.')
    ErrorsFound=.TRUE.
  END IF

  IF(SameString(Alphas(4),'Yes') .OR. SameString(Alphas(4),'No')) THEN
!  initialized to FALSE on allocate
    IF(SameString(Alphas(4),'Yes'))DXCoil(DXCoilNum)%CondPumpHeatInCapacity = .TRUE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(4))//'.  Entered choice = '//TRIM(Alphas(4)))
    CALL ShowContinueError('Valid choices are Yes or No.')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%HPWHCondPumpElecNomPower    = Numbers(9)
  IF(DXCoil(DXCoilNum)%HPWHCondPumpElecNomPower .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(9))//' must be >= 0.0 '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(9),3))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%HPWHCondPumpFracToWater     = Numbers(10)
  IF(DXCoil(DXCoilNum)%HPWHCondPumpFracToWater .LE. 0.0d0 .OR. DXCoil(DXCoilNum)%HPWHCondPumpFracToWater .GT. 1.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(10))//' must be >= 0 and <= 1. '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(10),3))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(5),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(6),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(5),Alphas(6),'Air Nodes')

  DXCoil(DXCoilNum)%WaterInNode = &
               GetOnlySingleNode(Alphas(7),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Water,NodeConnectionType_Inlet,2,ObjectIsNotParent)

  DXCoil(DXCoilNum)%WaterOutNode = &
               GetOnlySingleNode(Alphas(8),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Water,NodeConnectionType_Outlet,2,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(7),Alphas(8),'Water Nodes')

  DXCoil(DXCoilNum)%CrankcaseHeaterCapacity     = Numbers(11)
  IF(DXCoil(DXCoilNum)%CrankcaseHeaterCapacity .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(11))//' must be >= 0.0 '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(11),1))//'].')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%MaxOATCrankcaseHeater       = Numbers(12)
  IF(DXCoil(DXCoilNum)%MaxOATCrankcaseHeater .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(12))//' must be >= 0 {C}. '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(12),1))//'].')
    ErrorsFound=.TRUE.
  END IF

  IF(SameString(Alphas(9),'DryBulbTemperature'))THEN
    DXCoil(DXCoilNum)%InletAirTemperatureType = DryBulbIndicator
  ELSEIF(SameString(Alphas(9),'WetBulbTemperature'))THEN
    DXCoil(DXCoilNum)%InletAirTemperatureType = WetBulbIndicator
  ELSE
!   wrong temperature type selection
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cAlphaFields(9))//' must be DryBulbTemperature or WetBulbTemperature.')
    CALL ShowContinueError('...entered value="'//trim(Alphas(9))//'".')
    ErrorsFound = .TRUE.
  END IF

! set rated inlet air temperature for curve object verification
  IF(DXCoil(DXCoilNum)%InletAirTemperatureType .EQ. WetBulbIndicator) THEN
    InletAirTemp = DXCoil(DXCoilNum)%RatedInletWBTemp
  ELSE
    InletAirTemp = DXCoil(DXCoilNum)%RatedInletDBTemp
  END IF
! set rated water temperature for curve object verification
  InletWaterTemp = DXCoil(DXCoilNum)%RatedInletWaterTemp

  IF (.NOT. lAlphaBlanks(10)) THEN
    DXCoil(DXCoilNum)%HCapFTemp = GetCurveIndex(Alphas(10))
    IF (DXCoil(DXCoilNum)%HCapFTemp .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(10))//'="'//TRIM(Alphas(10))//'".')
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are BiQuadratic or Cubic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%HCapFTemp))

      CASE('BIQUADRATIC')
        DXCoil(DXCoilNum)%HCapFTempCurveType = Biquadratic
        HeatCapFTemp = CurveValue(DXCoil(DXCoilNum)%HCapFTemp,InletAirTemp,InletWaterTemp)

      CASE('CUBIC')
        DXCoil(DXCoilNum)%HCapFTempCurveType = Cubic
        HeatCapFTemp = CurveValue(DXCoil(DXCoilNum)%HCapFTemp,InletAirTemp)

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(10))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%HCapFTemp)))
        CALL ShowContinueError('Curve type must be BiQuadratic or Cubic.')
        ErrorsFound=.TRUE.
        HeatCapFTemp = 1.0d0
      END SELECT

      IF(ABS(HeatCapFTemp - 1.0d0) .GT. 0.05d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
        ! could remove name from the field for output
        CALL ShowContinueError('...The '//TRIM(cAlphaFields(10))//' should be normalized to 1.0 at the rating point.')
        CALL ShowContinueError('...Curve output at the rating point = '//TrimSigDigits(HeatCapFTemp,3))
        CALL ShowContinueError('...The simulation continues using the user-specified curve.')
      END IF

    END IF
  END IF

  IF (.NOT. lAlphaBlanks(11)) THEN
    DXCoil(DXCoilNum)%HCapFAirFlow = GetCurveIndex(Alphas(11))
    IF (DXCoil(DXCoilNum)%HCapFAirFlow .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(11))//'="'//TRIM(Alphas(11))//'".')
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are Cubic or Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%HCapFAirFlow))

      CASE('CUBIC')
        HeatCapFAirFlow  = CurveValue(DXCoil(DXCoilNum)%HCapFAirFlow,1.0d0)

      CASE('QUADRATIC')
        HeatCapFAirFlow  = CurveValue(DXCoil(DXCoilNum)%HCapFAirFlow,1.0d0)

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(11))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%HCapFAirFlow)))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
        HeatCapFAirFlow  = 1.0d0
      END SELECT

      IF(ABS(HeatCapFAirFlow - 1.0d0) .GT. 0.05d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
        ! could remove name from the field for output
        CALL ShowContinueError('...The '//TRIM(cAlphaFields(11))//' should be normalized to 1.0 at the rating point.')
        CALL ShowContinueError('...Curve output at an air flow fraction of 1 = ' &
                               //TrimSigDigits(HeatCapFAirFlow,3))
        CALL ShowContinueError('...The simulation continues using the user-specified curve.')
      END IF

    END IF
  END IF

  IF (.NOT. lAlphaBlanks(12)) THEN
    DXCoil(DXCoilNum)%HCapFWaterFlow = GetCurveIndex(Alphas(12))
    IF (DXCoil(DXCoilNum)%HCapFWaterFlow .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(12))//'="'//TRIM(Alphas(12))//'".')
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are Cubic or Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%HCapFWaterFlow))

      CASE('CUBIC')
        HeatCapFWaterFlow  = CurveValue(DXCoil(DXCoilNum)%HCapFWaterFlow,1.0d0)

      CASE('QUADRATIC')
        HeatCapFWaterFlow  = CurveValue(DXCoil(DXCoilNum)%HCapFWaterFlow,1.0d0)

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(12))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%HCapFWaterFlow)))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
        HeatCapFWaterFlow  = 1.0d0
      END SELECT

      IF(ABS(HeatCapFWaterFlow - 1.0d0) .GT. 0.05d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
        ! could remove name from the field for output
        CALL ShowContinueError('...The '//TRIM(cAlphaFields(11))//' should be normalized to 1.0 at the rating point.')
        CALL ShowContinueError('...Curve output at an air flow fraction of 1 = ' &
                             //TrimSigDigits(HeatCapFWaterFlow,3))
        CALL ShowContinueError('...The simulation continues using the user-specified curve.')
      END IF

    END IF
  END IF

  IF (.NOT. lAlphaBlanks(13)) THEN
    DXCoil(DXCoilNum)%HCOPFTemp = GetCurveIndex(Alphas(13))
    IF (DXCoil(DXCoilNum)%HCOPFTemp .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(13))//'="'//TRIM(Alphas(13))//'".')
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are BiQuadratic or Cubic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%HCOPFTemp))

      CASE('BIQUADRATIC')
        DXCoil(DXCoilNum)%HCOPFTempCurveType = Biquadratic
        HeatCOPFTemp = CurveValue(DXCoil(DXCoilNum)%HCOPFTemp,InletAirTemp,InletWaterTemp)

      CASE('CUBIC')
        DXCoil(DXCoilNum)%HCOPFTempCurveType = Cubic
        HeatCOPFTemp = CurveValue(DXCoil(DXCoilNum)%HCOPFTemp,InletAirTemp)

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(13))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%HCOPFTemp)))
        CALL ShowContinueError('Curve type must be BiQuadratic or Cubic.')
        ErrorsFound=.TRUE.
        HeatCOPFTemp = 1.0d0
      END SELECT

      IF(ABS(HeatCOPFTemp - 1.0d0) .GT. 0.05d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
        ! could remove name from the field for output
        CALL ShowContinueError('...The '//TRIM(cAlphaFields(13))//' should be normalized to 1.0 at the rating point.')
        CALL ShowContinueError('...Curve output at an air flow fraction of 1 = ' &
                             //TrimSigDigits(HeatCOPFTemp,3))
        CALL ShowContinueError('...The simulation continues using the user-specified curve.')
      END IF

    END IF
  END IF

  IF (.NOT. lAlphaBlanks(14)) THEN
    DXCoil(DXCoilNum)%HCOPFAirFlow = GetCurveIndex(Alphas(14))
    IF (DXCoil(DXCoilNum)%HCOPFAirFlow .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(14))//'="'//TRIM(Alphas(14))//'".')
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are Cubic or Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%HCOPFAirFlow))

      CASE('CUBIC')
        HeatCOPFAirFlow  = CurveValue(DXCoil(DXCoilNum)%HCOPFAirFlow,1.0d0)

      CASE('QUADRATIC')
        HeatCOPFAirFlow  = CurveValue(DXCoil(DXCoilNum)%HCOPFAirFlow,1.0d0)

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(14))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%HCOPFAirFlow)))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
        HeatCOPFAirFlow  = 1.0d0
      END SELECT

      IF(ABS(HeatCOPFAirFlow - 1.0d0) .GT. 0.05d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
        ! could remove name from the field for output
        CALL ShowContinueError('...The '//TRIM(cAlphaFields(14))//' should be normalized to 1.0 at the rating point.')
        CALL ShowContinueError('...Curve output at an air flow fraction of 1 = ' &
                                    //TrimSigDigits(HeatCOPFAirFlow,3))
        CALL ShowContinueError('...The simulation continues using the user-specified curve.')
      END IF

    END IF
  END IF

  IF (.NOT. lAlphaBlanks(15)) THEN
    DXCoil(DXCoilNum)%HCOPFWaterFlow = GetCurveIndex(Alphas(15))
    IF (DXCoil(DXCoilNum)%HCOPFWaterFlow .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(15))//'="'//TRIM(Alphas(15))//'".')
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are Cubic or Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%HCOPFWaterFlow))

      CASE('CUBIC')
        HeatCOPFWaterFlow  = CurveValue(DXCoil(DXCoilNum)%HCOPFWaterFlow,1.0d0)

      CASE('QUADRATIC')
        HeatCOPFWaterFlow  = CurveValue(DXCoil(DXCoilNum)%HCOPFWaterFlow,1.0d0)

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(15))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%HCOPFWaterFlow)))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
        HeatCOPFWaterFlow  = 1.0d0
      END SELECT

      IF(ABS(HeatCOPFWaterFlow - 1.0d0) .GT. 0.05d0)THEN
        CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'":')
        ! could remove name from the field for output
        CALL ShowContinueError('...The '//TRIM(cAlphaFields(15))//' should be normalized to 1.0 at the rating point.')
        CALL ShowContinueError('...Curve output at a water flow fraction of 1 = ' &
                               //TrimSigDigits(HeatCOPFWaterFlow,3))
        CALL ShowContinueError('...The simulation continues using the user-specified curve.')
      END IF

    END IF
  END IF

  IF (.NOT. lAlphaBlanks(16)) THEN
    DXCoil(DXCoilNum)%PLFFPLR(1) = GetCurveIndex(Alphas(16))
    IF (DXCoil(DXCoilNum)%PLFFPLR(1) .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(16))//'="'//TRIM(Alphas(16))//'".')
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are Cubic or Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1)))

      CASE('CUBIC')

      CASE('QUADRATIC')

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(16))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%PLFFPLR(1))))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.true.
      END SELECT

      IF(.NOT. ErrorsFound)THEN
!       Test PLF curve minimum and maximum. Cap if less than 0.7 or greater than 1.0.
        MinCurveVal = 999.0d0
        MaxCurveVal = -999.0d0
        CurveInput = 0.0d0
        DO WHILE (CurveInput <= 1.0d0)
          CurveVal = CurveValue(DXCoil(DXCoilNum)%PLFFPLR(1),CurveInput)
          IF(CurveVal .LT. MinCurveVal)THEN
            MinCurveVal = CurveVal
            MinCurvePLR = CurveInput
          END IF
          IF(CurveVal .GT. MaxCurveVal)THEN
            MaxCurveVal = CurveVal
            MaxCurvePLR = CurveInput
          END IF
          CurveInput=CurveInput+0.01d0
        END DO
        IF(MinCurveVal .LT. 0.7d0)THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(16))//' = '//TRIM(Alphas(16))//' has out of range value.')
          CALL ShowContinueError('...Curve minimum must be >= 0.7, '// &
                        'curve min at PLR = '//TRIM(TrimSigDigits(MinCurvePLR,2))//' is '//TRIM(TrimSigDigits(MinCurveVal,3)))
          CALL ShowContinueError('...Setting curve minimum to 0.7 and simulation continues.')
          CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMin=0.7d0)
        END IF

        IF(MaxCurveVal .GT. 1.0d0)THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(16))//' = '//TRIM(Alphas(16))//' has out of range value.')
          CALL ShowContinueError('...Curve maximum must be <= 1.0, '// &
                        'curve max at PLR = '//TRIM(TrimSigDigits(MaxCurvePLR,2))//' is '//TRIM(TrimSigDigits(MaxCurveVal,3)))
          CALL ShowContinueError('...Setting curve maximum to 1.0 and simulation continues.')
          CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMax=1.0d0)
        END IF

      END IF

    END IF
  END IF

! assume compressor resides at the inlet to the DX Coil
  DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = DXCoil(DXCoilNum)%AirInNode

! set condenser type as HPWH
  DXCoil(DXCoilNum)%CondenserType(1) = WaterHeater

END DO ! end of the DX water heater coil loop

IF (ErrorsFound) THEN
  CALL ShowFatalError(RoutineName//'Errors found in getting '//TRIM(CurrentModuleObject)//' input. '// &
                      'Preceding condition(s) causes termination.')
END IF

! DX Multispeed cooling coil
CurrentModuleObject='Coil:Cooling:DX:MultiSpeed'
DO DXCoilIndex = 1,NumDXMulSpeedCoolCoils

  DXCoilNum = DXCoilNum+1

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
! Initialize DataHeatBalance heat reclaim variable name for use by heat reclaim coils
  HeatReclaimDXCoil(DXCoilNum)%Name = DXCoil(DXCoilNum)%Name
  HeatReclaimDXCoil(DXCoilNum)%SourceType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilDX_MultiSpeedCooling
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(3),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(3),Alphas(4),'Air Nodes')

! outdoor condenser node
  IF (lAlphaBlanks(5)) THEN
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = 0
  ELSE
    DXCoil(DXCoilNum)%CondenserInletNodeNum(1) = &
       GetOnlySingleNode(Alphas(5),ErrorsFound,TRIM(CurrentModuleObject),DXCoil(DXCoilNum)%Name, &
                         NodeType_Air,NodeConnectionType_OutsideAirReference,1,ObjectIsNotParent)
    IF (.not. CheckOutAirNodeNumber(DXCoil(DXCoilNum)%CondenserInletNodeNum(1))) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", may be invalid')
      CALL ShowContinueError(TRIM(cAlphaFields(5))//'="'//TRIM(Alphas(5))//&
                               '", node does not appear in an OutdoorAir:NodeList or as an OutdoorAir:Node.')
      CALL ShowContinueError('This node needs to be included in an air system or the coil model will not be valid' &
                             //', and the simulation continues')
    END IF
  ENDIF

  IF ((SameString(Alphas(6),'AirCooled')) .OR. lAlphaBlanks(6))THEN
    DXCoil(DXCoilNum)%CondenserType(1) = AirCooled
  ELSEIF (SameString(Alphas(6),'EvaporativelyCooled')) THEN
    DXCoil(DXCoilNum)%CondenserType(1) = EvapCooled
    DXCoil(DXCoilNum)%ReportEvapCondVars = .TRUE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cAlphaFields(6))//'="'//TRIM(Alphas(6))//'":')
    CALL ShowContinueError('...must be AirCooled or EvaporativelyCooled.')
    ErrorsFound = .TRUE.
  END IF

  ! Get Water System tank connections
  !  A8, \field Name of Water Storage Tank for Supply
  DXCoil(DXCoilNum)%EvapWaterSupplyName = Alphas(7)
  IF (lAlphaBlanks(7)) THEN
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromMains
  ELSE
    DXCoil(DXCoilNum)%EvapWaterSupplyMode = WaterSupplyFromTank
    CALL SetupTankDemandComponent(DXCoil(DXCoilNum)%Name,TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%EvapWaterSupplyName, ErrorsFound, DXCoil(DXCoilNum)%EvapWaterSupTankID, &
                 DXCoil(DXCoilNum)%EvapWaterTankDemandARRID )
  END IF

  !A9; \field Name of Water Storage Tank for Condensate Collection
  DXCoil(DXCoilNum)%CondensateCollectName = Alphas(8)
  IF (lAlphaBlanks(8)) THEN
    DXCoil(DXCoilNum)%CondensateCollectMode = CondensateDiscarded
  ELSE
    DXCoil(DxCoilNum)%CondensateCollectMode = CondensateToTank
    CALL SetupTankSupplyComponent(DXCoil(DXCoilNum)%Name, TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%CondensateCollectName, ErrorsFound, DXCoil(DXCoilNum)%CondensateTankID, &
                 DXCoil(DXCoilNum)%CondensateTankSupplyARRID )
  END IF

  !Set crankcase heater capacity
  DXCoil(DXCoilNum)%CrankcaseHeaterCapacity = Numbers(1)
  IF (DXCoil(DXCoilNum)%CrankcaseHeaterCapacity .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//trim(cNumericFields(1))//' cannot be < 0.0.')
    CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(1),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  !Set crankcase heater cutout temperature
  DXCoil(DXCoilNum)%MaxOATCrankcaseHeater = Numbers(2)

  IF (SameString(Alphas(9),'Yes')) THEN
    DXCoil(DXCoilNum)%PLRImpact = .TRUE.
  ELSE IF (SameString(Alphas(9),'No')) THEN
    DXCoil(DXCoilNum)%PLRImpact = .FALSE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(9))//'.  Entered choice = '//TRIM(Alphas(9)))
    CALL ShowContinueError('The allowed choices are Yes or No.')
    ErrorsFound=.TRUE.
  END IF

  IF (SameString(Alphas(10),'Yes')) THEN
    DXCoil(DXCoilNum)%LatentImpact = .TRUE.
  ELSE IF (SameString(Alphas(10),'No')) THEN
    DXCoil(DXCoilNum)%LatentImpact = .FALSE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(10))//'.  Entered choice = '//TRIM(Alphas(10)))
    CALL ShowContinueError('The allowed choices are Yes or No.')
    ErrorsFound=.TRUE.
  END IF

  !   Basin heater power as a function of temperature must be greater than or equal to 0
  DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff = Numbers(3)
  IF(Numbers(3) .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(3))//' must be >= 0.0, '//  &
                ' entered value=['//trim(TrimSigDigits(Numbers(3),3))//'].')
    ErrorsFound = .TRUE.
  END IF

  DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = Numbers(4)
  IF(DXCoil(DxCoilNum)%BasinHeaterPowerFTempDiff .GT. 0.0d0) THEN
    IF(NumNumbers .LT. 4) THEN
      DXCoil(DxCoilNum)%BasinHeaterSetPointTemp = 2.0d0
    ENDIF
    IF(DXCoil(DxCoilNum)%BasinHeaterSetPointTemp < 2.0d0) THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", freeze possible')
      CALL ShowContinueError('...'//trim(cNumericFields(4))//' is less than 2 {C}. Freezing could occur.')
      CALL ShowContinueError('...entered value=['//trim(TrimSigDigits(Numbers(4),2))//'].')
    END IF
  END IF

  IF(.NOT. lAlphaBlanks(11))THEN
    DXCoil(DxCoilNum)%BasinHeaterSchedulePtr   = GetScheduleIndex(Alphas(11))
    IF(DXCoil(DxCoilNum)%BasinHeaterSchedulePtr .EQ. 0)THEN
      CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(11))//'="'//TRIM(Alphas(11))//'".')
      CALL ShowContinueError('Basin heater will be available to operate throughout the simulation.')
    END IF
  END IF

  !A12; \field Fuel type
  IF (SameString(Alphas(12),'Electricity')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeElectricity
  ELSE IF (SameString(Alphas(12),'NaturalGas')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeNaturalGas
  ELSE IF (SameString(Alphas(12),'PropaneGas')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypePropaneGas
  ELSE IF (SameString(Alphas(12),'Diesel')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeDiesel
  ELSE IF (SameString(Alphas(12),'Gasoline')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeGasoline
  ELSE IF (SameString(Alphas(12),'FuelOil#1')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeFuelOil1
  ELSE IF (SameString(Alphas(12),'FuelOil#2')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeFuelOil2
  ELSE IF (SameString(Alphas(12),'OtherFuel1')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeOtherFuel1
  ELSE IF (SameString(Alphas(12),'OtherFuel2')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeOtherFuel2
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(12))//'.  Entered choice = '//TRIM(Alphas(12)))
    CALL ShowContinueError('Valid choices are Electricity, NaturalGas, PropaneGas, Diesel, Gasoline, FuelOil#1, FuelOil#2,'//  &
       'OtherFuel1 or OtherFuel2')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%NumOfSpeeds = Numbers(5)       ! Number of speeds
  If (DXCoil(DXCoilNum)%NumOfSpeeds .LT. 2) Then
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(5))//' must be >= 2.'//  &
                                         ' entered number is '//TRIM(TrimSigDigits(Numbers(5),0)))
    ErrorsFound=.TRUE.
  End If

  ! Allocate arrays based on the number of speeds
  ALLOCATE(DXCoil(DXCoilNum)%MSErrIndex(DXCoil(DXCoilNum)%NumOfSpeeds))
  DXCoil(DXCoilNum)%MSErrIndex=0
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedTotCap(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedSHR(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedCOP(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedAirVolFlowRate(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedAirMassFlowRate(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSCCapFTemp(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSCCapFFlow(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEIRFTemp(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEIRFFlow(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSWasteHeat(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEvapCondEffect(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEvapCondAirFlow(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEvapCondPumpElecNomPower(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedCBF(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSWasteHeatFrac(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSPLFFPLR(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSTwet_Rated(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSGamma_Rated(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSMaxONOFFCyclesperHour(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSLatentCapacityTimeConstant(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSFanPowerPerEvapAirFlowRate(DXCoil(DXCoilNum)%NumOfSpeeds))

  Do I=1,DXCoil(DXCoilNum)%NumOfSpeeds
    DXCoil(DXCoilNum)%MSRatedTotCap(I) = Numbers(6+(I-1)*13)
    DXCoil(DXCoilNum)%MSRatedSHR(I)    = Numbers(7+(I-1)*13)
    DXCoil(DXCoilNum)%MSRatedCOP(I)    = Numbers(8+(I-1)*13)
    DXCoil(DXCoilNum)%MSRatedAirVolFlowRate(I) = Numbers(9+(I-1)*13)
    DXCoil(DXCoilNum)%MSFanPowerPerEvapAirFlowRate(I) = Numbers(10+(I-1)*13)

    DXCoil(DXCoilNum)%MSCCapFTemp(I) = GetCurveIndex(Alphas(13+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSCCapFTemp(I) .EQ. 0) THEN
      IF (lAlphaBlanks(13+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(13+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(13+(I-1)*6))//'="'//TRIM(Alphas(13+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is BiQuadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSCCapFTemp(I)))

      CASE('BIQUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFTemp(I),RatedInletWetbulbTemp,RatedOutdoorAirTemp)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(13+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(13+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSCCapFTemp(I))))
        CALL ShowContinueError('Curve type must be BiQuadratic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSCCapFFlow(I) = GetCurveIndex(Alphas(14+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSCCapFFlow(I) .EQ. 0) THEN
      IF (lAlphaBlanks(14+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(14+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(14+(I-1)*6))//'="'//TRIM(Alphas(14+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSCCapFFlow(I)))

      CASE('QUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(14+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('CUBIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(14+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(14+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSCCapFFlow(I))))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSEIRFTemp(I) = GetCurveIndex(Alphas(15+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSEIRFTemp(I) .EQ. 0) THEN
      IF (lAlphaBlanks(15+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(15+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(15+(I-1)*6))//'="'//TRIM(Alphas(15+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is Biquadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSEIRFTemp(I)))

      CASE('BIQUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFTemp(I),RatedInletWetbulbTemp,RatedOutdoorAirTemp)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(15+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(15+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSEIRFTemp(1))))
        CALL ShowContinueError('Curve type must be BiQuadratic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSEIRFFlow(I) = GetCurveIndex(Alphas(16+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSEIRFFlow(I) .EQ. 0) THEN
      IF (lAlphaBlanks(16+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(16+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(16+(I-1)*6))//'="'//TRIM(Alphas(16+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSEIRFFlow(I)))

      CASE('QUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(16+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('CUBIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(16+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(16+(I-1)*6))//' type for this object = '// &
              TRIM(GetCurveType(DXCoil(DXCoilNum)%MSEIRFFlow(I))))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSPLFFPLR(I) = GetCurveIndex(Alphas(17+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSPLFFPLR(I) .EQ. 0) THEN
      IF (lAlphaBlanks(17+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(17+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(17+(I-1)*6))//'="'//TRIM(Alphas(16+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
    ! Verify Curve Object, only legal types are Quadratic or Cubic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSPLFFPLR(I)))

      CASE('QUADRATIC')

      CASE('CUBIC')

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(17+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSPLFFPLR(I))))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT

      IF(.NOT. ErrorsFound)THEN
!       Test PLF curve minimum and maximum. Cap if less than 0.7 or greater than 1.0.
        MinCurveVal = 999.0d0
        MaxCurveVal = -999.0d0
        CurveInput = 0.0d0
        DO WHILE (CurveInput <= 1.0d0)
          CurveVal = CurveValue(DXCoil(DXCoilNum)%MSPLFFPLR(I),CurveInput)
          IF(CurveVal .LT. MinCurveVal)THEN
            MinCurveVal = CurveVal
            MinCurvePLR = CurveInput
          END IF
          IF(CurveVal .GT. MaxCurveVal)THEN
            MaxCurveVal = CurveVal
            MaxCurvePLR = CurveInput
          END IF
          CurveInput=CurveInput+0.01d0
        END DO
        IF(MinCurveVal .LT. 0.7d0)THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...'//TRIM(cAlphaFields2(17+(I-1)*6))//' = '//TRIM(Alphas2(17+(I-1)*6))//  &
             ' has out of range value.')
          CALL ShowContinueError('...Curve minimum must be >= 0.7, '// &
                   'curve min at PLR = '//TRIM(TrimSigDigits(MinCurvePLR,2))//' is '//TRIM(TrimSigDigits(MinCurveVal,3)))
          CALL ShowContinueError('...Setting curve minimum to 0.7 and simulation continues.')
          CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(PerfModeNum),ErrorsFound,CurveMin=0.7d0)
        END IF

        IF(MaxCurveVal .GT. 1.0d0)THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...'//TRIM(cAlphaFields2(17+(I-1)*6))//' = '//TRIM(Alphas2(17+(I-1)*6))//  &
             ' has out of range value.')
          CALL ShowContinueError('...Curve maximum must be <= 1.0, '// &
                        'curve max at PLR = '//TRIM(TrimSigDigits(MaxCurvePLR,2))//' is '//TRIM(TrimSigDigits(MaxCurveVal,3)))
          CALL ShowContinueError('...Setting curve maximum to 1.0 and simulation continues.')
          CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%MSPLFFPLR(I),ErrorsFound,CurveMax=1.0d0)
        END IF

      END IF

    END IF

    ! read data for latent degradation
    DXCoil(DXCoilNum)%MSTwet_Rated(I) = Numbers(11+(I-1)*13)
    IF (DXCoil(DXCoilNum)%MSTwet_Rated(I) .LT. 0.0d0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(11+(I-1)*13))//' cannot be < 0.0, '//  &
         'entered value=['//trim(TrimSigDigits(DXCoil(DXCoilNum)%MSTwet_Rated(I),4))//'].')
      ErrorsFound=.TRUE.
    END IF
    DXCoil(DXCoilNum)%MSGamma_Rated(I) = Numbers(12+(I-1)*13)
    IF (DXCoil(DXCoilNum)%MSGamma_Rated(I) .LT. 0.0d0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(12+(I-1)*13))//' cannot be < 0.0, '//  &
         'entered value=['//trim(TrimSigDigits(DXCoil(DXCoilNum)%MSGamma_Rated(I),4))//'].')
      ErrorsFound=.TRUE.
    END IF
    DXCoil(DXCoilNum)%MSMaxONOFFCyclesperHour(I) = Numbers(13+(I-1)*13)
    IF (DXCoil(DXCoilNum)%Gamma_Rated(I) .LT. 0.0d0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(13+(I-1)*13))//' cannot be < 0.0, '//  &
         'entered value=['//trim(TrimSigDigits(DXCoil(DXCoilNum)%MSMaxONOFFCyclesperHour(I),2))//'].')
      ErrorsFound=.TRUE.
    END IF
    DXCoil(DXCoilNum)%MSLatentCapacityTimeConstant(I) = Numbers(14+(I-1)*13)
    IF (DXCoil(DXCoilNum)%Gamma_Rated(I) .LT. 0.0d0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(14+(I-1)*13))//' cannot be < 0.0, '//  &
         'entered value=['//trim(TrimSigDigits(DXCoil(DXCoilNum)%MSLatentCapacityTimeConstant(I),2))//'].')
      ErrorsFound=.TRUE.
    END IF

    DXCoil(DXCoilNum)%MSWasteHeatFrac(I) = Numbers(15+(I-1)*13)

    ! Read waste heat modifier curve name
    DXCoil(DXCoilNum)%MSWasteHeat(I) = GetCurveIndex(Alphas(18+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSWasteHeat(I) .EQ. 0) THEN
      IF (lAlphaBlanks(18+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(18+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(18+(I-1)*6))//'="'//TRIM(Alphas(18+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are BiQuadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSWasteHeat(I)))

      CASE('BIQUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSWasteHeat(I),RatedOutdoorAirTemp,RatedInletAirTemp)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(18+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(18+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSWasteHeat(I))))
        CALL ShowContinueError('Curve type must be BiQuadratic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSEvapCondEffect(I) = Numbers(16+(I-1)*13)
    IF (DXCoil(DXCoilNum)%MSEvapCondEffect(I) .LT. 0.0d0 .OR. DXCoil(DXCoilNum)%MSEvapCondEffect(I) .GT. 1.0d0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(16+(I-1)*13))//' cannot be < 0.0 or > 1.0, '//  &
         'entered value=['//trim(TrimSigDigits(Numbers(16+(I-1)*13),3))//'].')
      ErrorsFound = .TRUE.
    END IF

    DXCoil(DXCoilNum)%MSEvapCondAirFlow(I) = Numbers(17+(I-1)*13)
    IF (DXCoil(DXCoilNum)%MSEvapCondAirFlow(I) .LT. 0.0 .AND. DXCoil(DXCoilNum)%MSEvapCondAirFlow(I) /= AutoSize) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(17+(I-1)*13))//' cannot be < 0.0, '//  &
         'entered value=['//trim(TrimSigDigits(Numbers(17+(I-1)*13),3))//'].')
      ErrorsFound = .TRUE.
    END IF

    DXCoil(DXCoilNum)%MSEvapCondPumpElecNomPower(I) = Numbers(18+(I-1)*13)
    IF (DXCoil(DXCoilNum)%MSEvapCondPumpElecNomPower(I) .LT. 0.0 .AND. &
        DXCoil(DXCoilNum)%MSEvapCondPumpElecNomPower(I) /= AutoSize) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cNumericFields(18+(I-1)*13))//' cannot be < 0.0, '//  &
         'entered value=['//trim(TrimSigDigits(Numbers(18+(I-1)*13),3))//'].')
      ErrorsFound = .TRUE.
    END IF

  END DO

END DO

IF (ErrorsFound) THEN
  CALL ShowFatalError(RoutineName//'Errors found in getting '//TRIM(CurrentModuleObject)//' input.  '//&
                      'Preceding condition(s) causes termination.')
END IF

! DX multispeed heating coil
CurrentModuleObject='Coil:Heating:DX:MultiSpeed'
DO DXCoilIndex = 1,NumDXMulSpeedHeatCoils

  DXCoilNum = DXCoilNum+1

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
! Initialize DataHeatBalance heat reclaim variable name for use by heat reclaim coils
  HeatReclaimDXCoil(DXCoilNum)%Name = DXCoil(DXCoilNum)%Name
  HeatReclaimDXCoil(DXCoilNum)%SourceType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilDX_MultiSpeedHeating
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(3),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(3),Alphas(4),'Air Nodes')

  !Set minimum OAT for heat pump compressor operation
  DXCoil(DXCoilNum)%MinOATCompressor = Numbers(1)

  ! set Minimum Outdoor Dry-Bulb Temperature for Compressor Operation
  DXCoil(DXCoilNum)%OATempCompressorOn = Numbers(2)
  !
  !Set crankcase heater capacity
  DXCoil(DXCoilNum)%CrankcaseHeaterCapacity = Numbers(3)
  IF (DXCoil(DXCoilNum)%CrankcaseHeaterCapacity .LT. 0.0d0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(3))//' cannot be < 0.0,'//  &
        ' entered value=['//trim(TrimSigDigits(Numbers(3),2))//'].')
    ErrorsFound = .TRUE.
  END IF

  !Set crankcase heater cutout temperature
  DXCoil(DXCoilNum)%MaxOATCrankcaseHeater = Numbers(4)

! Only required for reverse cycle heat pumps
  DXCoil(DXCoilNum)%DefrostEIRFT = GetCurveIndex(Alphas(5)) ! convert curve name to number
  IF (SameString(Alphas(6),'ReverseCycle')) THEN
    IF (DXCoil(DXCoilNum)%DefrostEIRFT .EQ. 0) THEN
      IF (lAlphaBlanks(5)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(5))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(5))//'="'//TRIM(Alphas(5))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is BiQuadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%DefrostEIRFT))
        CASE('BIQUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%DefrostEIRFT,RatedInletWetbulbTempHeat,RatedOutdoorAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(5))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

        CASE DEFAULT
          CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(5))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%DefrostEIRFT)))
        CALL ShowContinueError('Curve type must be BiQuadratic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF
  END IF

  IF (SameString(Alphas(6),'ReverseCycle'))  DXCoil(DXCoilNum)%DefrostStrategy = ReverseCycle
  IF (SameString(Alphas(6),'Resistive')) DXCoil(DXCoilNum)%DefrostStrategy = Resistive
  IF (DXCoil(DXCoilNum)%DefrostStrategy .EQ.0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(6))//'="'//TRIM(Alphas(6))//'".')
    CALL ShowContinueError('...valid values for this field are ReverseCycle or Resistive.')
    ErrorsFound = .TRUE.
  END IF

  IF (SameString(Alphas(7),'Timed'))  DXCoil(DXCoilNum)%DefrostControl = Timed
  IF (SameString(Alphas(7),'OnDemand')) DXCoil(DXCoilNum)%DefrostControl = OnDemand
  IF (DXCoil(DXCoilNum)%DefrostControl .EQ.0) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(7))//'="'//TRIM(Alphas(7))//'".')
    CALL ShowContinueError('...valid values for this field are Timed or OnDemand.')
    ErrorsFound = .TRUE.
  END IF

  !Set maximum outdoor temp for defrost to occur
  DXCoil(DXCoilNum)%MaxOATDefrost = Numbers(5)

  !Set defrost time period
  DXCoil(DXCoilNum)%DefrostTime = Numbers(6)
  IF(DXCoil(DXCoilNum)%DefrostTime .EQ. 0.0d0 .AND. DXCoil(DXCoilNum)%DefrostControl .EQ. 1) THEN
    CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", ')
    CALL ShowContinueError('...'//TRIM(cNumericFields(5))//' = 0.0 for defrost control = TIMED.')
  END IF

  !Set defrost capacity (for resistive defrost)
  DXCoil(DXCoilNum)%DefrostCapacity = Numbers(7)
  IF(DXCoil(DXCoilNum)%DefrostCapacity .EQ. 0.0d0 .AND. DXCoil(DXCoilNum)%DefrostStrategy .EQ. 2) THEN
    CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", ')
    CALL ShowContinueError('...'//TRIM(cNumericFields(7))//' = 0.0 for defrost strategy = RESISTIVE.')
  END IF

  IF (SameString(Alphas(8),'Yes')) THEN
    DXCoil(DXCoilNum)%PLRImpact = .TRUE.
  ELSE IF (SameString(Alphas(8),'No')) THEN
    DXCoil(DXCoilNum)%PLRImpact = .FALSE.
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(8))//'.  Entered choice = '//TRIM(Alphas(8)))
    CALL ShowContinueError('The allowed choices are Yes or No.')
    ErrorsFound=.TRUE.
  END IF

  !A10; \field Fuel type
  IF (SameString(Alphas(9),'Electricity')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeElectricity
  ELSE IF (SameString(Alphas(9),'NaturalGas')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeNaturalGas
  ELSE IF (SameString(Alphas(9),'PropaneGas')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypePropaneGas
  ELSE IF (SameString(Alphas(9),'Diesel')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeDiesel
  ELSE IF (SameString(Alphas(9),'Gasoline')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeGasoline
  ELSE IF (SameString(Alphas(9),'FuelOil#1')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeFuelOil1
  ELSE IF (SameString(Alphas(9),'FuelOil#2')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeFuelOil2
  ELSE IF (SameString(Alphas(9),'OtherFuel1')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeOtherFuel1
  ELSE IF (SameString(Alphas(9),'OtherFuel2')) THEN
    DXCoil(DXCoilNum)%FuelType = FuelTypeOtherFuel2
  ELSE
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError(',,,invalid choice for '//TRIM(cAlphaFields(9))//'.  Entered choice = '//TRIM(Alphas(9)))
    CALL ShowContinueError('Valid choices are Electricity, NaturalGas, PropaneGas, Diesel, Gasoline, FuelOil#1, FuelOil#2,'//  &
       'OtherFuel1 or OtherFuel2')
    ErrorsFound=.TRUE.
  END IF

  DXCoil(DXCoilNum)%RegionNum = Numbers(8)         ! Region Number for HSPF Calc
  DXCoil(DXCoilNum)%NumOfSpeeds = Numbers(9)       ! Number of speeds
  IF (DXCoil(DXCoilNum)%NumOfSpeeds .LT. 2) THEN
    CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
    CALL ShowContinueError('...'//TRIM(cNumericFields(9))//' must be >= 2.'//  &
                                         ' entered number is '//TRIM(TrimSigDigits(Numbers(9),0)))
    ErrorsFound=.TRUE.
  END IF

  ! Allocate arrays based on the number of speeds
  ALLOCATE(DXCoil(DXCoilNum)%MSErrIndex(DXCoil(DXCoilNum)%NumOfSpeeds))
  DXCoil(DXCoilNum)%MSErrIndex=0
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedTotCap(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedCOP(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedAirVolFlowRate(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedAirMassFlowRate(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSCCapFTemp(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSCCapFFlow(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEIRFTemp(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEIRFFlow(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSWasteHeat(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSPLFFPLR(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSRatedCBF(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSWasteHeatFrac(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSTotCapTempModFacCurveType(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSEIRTempModFacCurveType(DXCoil(DXCoilNum)%NumOfSpeeds))
  ALLOCATE(DXCoil(DXCoilNum)%MSFanPowerPerEvapAirFlowRate(DXCoil(DXCoilNum)%NumOfSpeeds))

  DXCoil(DXCoilNum)%RatedSHR(1) = 1.0d0

  DO I=1,DXCoil(DXCoilNum)%NumOfSpeeds

    DXCoil(DXCoilNum)%MSRatedTotCap(I) = Numbers(10+(I-1)*5)
    DXCoil(DXCoilNum)%MSRatedCOP(I) = Numbers(11+(I-1)*5)
    DXCoil(DXCoilNum)%MSRatedAirVolFlowRate(I) = Numbers(12+(I-1)*5)
    DXCoil(DXCoilNum)%MSFanPowerPerEvapAirFlowRate(I) = Numbers(13+(I-1)*5)
    DXCoil(DXCoilNum)%MSWasteHeatFrac(I) = Numbers(14+(I-1)*5)

    DXCoil(DXCoilNum)%MSCCapFTemp(I) = GetCurveIndex(Alphas(10+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSCCapFTemp(I) .EQ. 0) THEN
      CALL ShowSevereError(TRIM(CurrentModuleObject)//', "'//TRIM(DXCoil(DXCoilNum)%Name)//&
                           '" '//TRIM(cAlphaFields(10+(I-1)*6))//' not found:'//TRIM(Alphas(10+(I-1)*6)))
      ErrorsFound = .TRUE.
    ELSE
      ! only legal types are Quadratic, Biquadratic and Cubic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSCCapFTemp(I)))

      CASE('QUADRATIC')
        DXCoil(DXCoilNum)%MSTotCapTempModFacCurveType(I) = Quadratic
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFTemp(I),RatedOutdoorAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(10+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('BIQUADRATIC')
        DXCoil(DXCoilNum)%MSTotCapTempModFacCurveType(I) = Biquadratic
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFTemp(I),RatedInletAirTempHeat,RatedOutdoorAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(10+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('CUBIC')
        DXCoil(DXCoilNum)%MSTotCapTempModFacCurveType(I) = Cubic
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFTemp(I),RatedOutdoorAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(10+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(10+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSCCapFTemp(I))))
        CALL ShowContinueError('Curve type must be BiQuadratic, Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSCCapFFlow(I) = GetCurveIndex(Alphas(11+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSCCapFFlow(I) .EQ. 0) THEN
      IF (lAlphaBlanks(11+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(11+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(11+(I-1)*6))//'="'//TRIM(Alphas(11+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSCCapFFlow(I)))

      CASE('QUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(11+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('CUBIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSCCapFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(11+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(11+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSCCapFFlow(I))))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSEIRFTemp(I) = GetCurveIndex(Alphas(12+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSEIRFTemp(I) .EQ. 0) THEN
      IF (lAlphaBlanks(12+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(12+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(12+(I-1)*6))//'="'//TRIM(Alphas(15+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! only legal types are Quadratic, Biquadratic and Cubic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSEIRFTemp(I)))

      CASE('QUADRATIC')
        DXCoil(DXCoilNum)%MSEIRTempModFacCurveType(I) = Quadratic
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFTemp(I),RatedOutdoorAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(12+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('BIQUADRATIC')
        DXCoil(DXCoilNum)%MSEIRTempModFacCurveType(I) = BiQuadratic
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFTemp(I),RatedInletAirTempHeat,RatedOutdoorAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(12+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('CUBIC')
        DXCoil(DXCoilNum)%MSEIRTempModFacCurveType(I) = Cubic
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFTemp(I),RatedOutdoorAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(12+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(12+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSEIRFTemp(I))))
        CALL ShowContinueError('Curve type must be BiQuadratic, Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSEIRFFlow(I) = GetCurveIndex(Alphas(13+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSEIRFFlow(I) .EQ. 0) THEN
      IF (lAlphaBlanks(13+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(13+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(13+(I-1)*6))//'="'//TRIM(Alphas(13+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal type is Quadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSEIRFFlow(I)))

      CASE('QUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(13+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE('CUBIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSEIRFFlow(I),1.0d0)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(13+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(13+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSEIRFFlow(I))))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

    DXCoil(DXCoilNum)%MSPLFFPLR(I) = GetCurveIndex(Alphas(14+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSPLFFPLR(I) .EQ. 0) THEN
      IF (lAlphaBlanks(14+(I-1)*6)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(14+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(14+(I-1)*6))//'="'//TRIM(Alphas(14+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are Quadratic or Cubic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSPLFFPLR(I)))

      CASE('QUADRATIC')

      CASE('CUBIC')

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(14+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSPLFFPLR(I))))
        CALL ShowContinueError('Curve type must be Quadratic or Cubic.')
        ErrorsFound=.TRUE.
      END SELECT

      IF(.NOT. ErrorsFound)THEN
!       Test PLF curve minimum and maximum. Cap if less than 0.7 or greater than 1.0.
        MinCurveVal = 999.0d0
        MaxCurveVal = -999.0d0
        CurveInput = 0.0d0
        DO WHILE (CurveInput <= 1.0d0)
          CurveVal = CurveValue(DXCoil(DXCoilNum)%MSPLFFPLR(I),CurveInput)
          IF(CurveVal .LT. MinCurveVal)THEN
            MinCurveVal = CurveVal
            MinCurvePLR = CurveInput
          END IF
          IF(CurveVal .GT. MaxCurveVal)THEN
            MaxCurveVal = CurveVal
            MaxCurvePLR = CurveInput
          END IF
          CurveInput=CurveInput+0.01d0
        END DO
        IF(MinCurveVal .LT. 0.7d0)THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(14+(I-1)*6))//' = '//TRIM(Alphas(14+(I-1)*6))//' has out of range value.')
          CALL ShowContinueError('...Curve minimum must be >= 0.7, '// &
                        'curve min at PLR = '//TRIM(TrimSigDigits(MinCurvePLR,2))//' is '//TRIM(TrimSigDigits(MinCurveVal,3)))
          CALL ShowContinueError('...Setting curve minimum to 0.7 and simulation continues.')
          CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%PLFFPLR(1),ErrorsFound,CurveMin=0.7d0)
          CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%MSPLFFPLR(I),ErrorsFound,CurveMin=0.7d0)
        END IF

        IF(MaxCurveVal .GT. 1.0d0)THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(14+(I-1)*6))//' = '//TRIM(Alphas(14+(I-1)*6))//' has out of range value.')
          CALL ShowContinueError('...Curve maximum must be <= 1.0, '// &
                        'curve max at PLR = '//TRIM(TrimSigDigits(MaxCurvePLR,2))//' is '//TRIM(TrimSigDigits(MaxCurveVal,3)))
          CALL ShowContinueError('...Setting curve maximum to 1.0 and simulation continues.')
          CALL SetCurveOutputMinMaxValues(DXCoil(DXCoilNum)%MSPLFFPLR(I),ErrorsFound,CurveMax=1.0d0)
        END IF

      END IF

    END IF

    ! Read waste heat modifier curve name
    DXCoil(DXCoilNum)%MSWasteHeat(I) = GetCurveIndex(Alphas(15+(I-1)*6)) ! convert curve name to number
    IF (DXCoil(DXCoilNum)%MSWasteHeat(I) .EQ. 0) THEN
      IF (lAlphaBlanks(11)) THEN
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
        CALL ShowContinueError('...required '//trim(cAlphaFields(15+(I-1)*6))//' is blank.')
      ELSE
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...not found '//TRIM(cAlphaFields(15+(I-1)*6))//'="'//TRIM(Alphas(15+(I-1)*6))//'".')
      END IF
      ErrorsFound = .TRUE.
    ELSE
      ! Verify Curve Object, only legal types are BiQuadratic
      SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%MSWasteHeat(I)))

      CASE('BIQUADRATIC')
        CurveVal = CurveValue(DXCoil(DXCoilNum)%MSWasteHeat(I),RatedOutdoorAirTempHeat,RatedInletAirTempHeat)
        IF(CurveVal .GT. 1.10d0 .OR. CurveVal .LT. 0.90d0) THEN
          CALL ShowWarningError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", curve values')
          CALL ShowContinueError('...'//TRIM(cAlphaFields(15+(I-1)*6))//' output is not equal to 1.0 '//  &
                                             '(+ or - 10%) at rated conditions.')
          CALL ShowContinueError('...Curve output at rated conditions = '//TRIM(TrimSigDigits(CurveVal,3)))
        END IF

      CASE DEFAULT
        CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
        CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(15+(I-1)*6))//' type for this object = '// &
                             TRIM(GetCurveType(DXCoil(DXCoilNum)%MSWasteHeat(I))))
        CALL ShowContinueError('Curve type must be BiQuadratic.')
        ErrorsFound=.TRUE.
      END SELECT
    END IF

  END DO
END DO

! Loop over the VRF Cooling Coils and get & load the data
CurrentModuleObject=cAllCoilTypes(CoilVRF_Cooling)
DO DXCoilIndex = 1, NumVRFCoolingCoils

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  DXCoilNum = DXCoilNum+1
  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilVRF_Cooling
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF
  DXCoil(DXCoilNum)%RatedTotCap(1) = Numbers(1)
  DXCoil(DXCoilNum)%RatedSHR(1)    = Numbers(2)
  DXCoil(DXCoilNum)%RatedAirVolFlowRate(1) = Numbers(3)


  DXCoil(DXCoilNum)%CCapFTemp(1)     = GetCurveIndex(Alphas(3))
  ! Verify Curve Object, only legal type is Linear, Quadratic, Cubic, or BiQuadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1)))

    CASE('LINEAR')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = Linear

    CASE('QUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = Quadratic

    CASE('CUBIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = Cubic

    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = BiQuadratic

    CASE DEFAULT
          CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
          CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(3))//' type for this object = '// &
                          TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1))))
      CALL ShowContinueError('... Curve type must be Linear, Quadratic, Cubic, or BiQuadratic.')
      ErrorsFound=.TRUE.
    END SELECT

  DXCoil(DXCoilNum)%CCapFFlow(1) = GetCurveIndex(Alphas(4)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(4)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(4))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(4))//'="'//TRIM(Alphas(4))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Linear, Quadratic or Cubic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1)))

    CASE('LINEAR', 'QUADRATIC', 'CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(4))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1))))
      CALL ShowContinueError('... Curve type must be Linear, Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(5),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(6),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(5),Alphas(6),'Air Nodes')

  DXCoil(DXCoilNum)%CondensateCollectName = Alphas(7)
  IF (lAlphaBlanks(7)) THEN
    DXCoil(DXCoilNum)%CondensateCollectMode = CondensateDiscarded
  ELSE
    DXCoil(DxCoilNum)%CondensateCollectMode = CondensateToTank
    CALL SetupTankSupplyComponent(DXCoil(DXCoilNum)%Name, TRIM(CurrentModuleObject), &
                 DXCoil(DXCoilNum)%CondensateCollectName, ErrorsFound, DXCoil(DXCoilNum)%CondensateTankID, &
                 DXCoil(DXCoilNum)%CondensateTankSupplyARRID )
  END IF

END DO

! Loop over the VRF Heating Coils and get & load the data
CurrentModuleObject='COIL:Heating:DX:VariableRefrigerantFlow'
DO DXCoilIndex = 1, NumVRFHeatingCoils

  CALL GetObjectItem(CurrentModuleObject,DXCoilIndex,Alphas,NumAlphas,Numbers,NumNumbers,IOStatus, &
                     NumBlank=lNumericBlanks,AlphaBlank=lAlphaBlanks, &
                     AlphaFieldNames=cAlphaFields,NumericFieldNames=cNumericFields)

  DXCoilNum = DXCoilNum+1
  IsNotOK=.FALSE.
  IsBlank=.FALSE.
  CALL VerifyName(Alphas(1),DXCoil%Name,DXCoilNum-1,IsNotOK,IsBlank,TRIM(CurrentModuleObject)//' Name')
  IF (IsNotOK) THEN
    ErrorsFound=.true.
    IF (IsBlank) Alphas(1)='xxxxx'
  ENDIF
  CALL VerifyUniqueCoilName(CurrentModuleObject,Alphas(1),errflag,TRIM(CurrentModuleObject)//' Name')
  IF (errflag) THEN
    ErrorsFound=.true.
  ENDIF
  DXCoil(DXCoilNum)%Name = Alphas(1)
  DXCoil(DXCoilNum)%DXCoilType = TRIM(CurrentModuleObject)
  DXCoil(DXCoilNum)%DXCoilType_Num = CoilVRF_Heating
  DXCoil(DXCoilNum)%Schedule = Alphas(2)
  IF (lAlphaBlanks(2)) THEN
    DXCoil(DXCoilNum)%SchedPtr = ScheduleAlwaysOn
  ELSE
    DXCoil(DXCoilNum)%SchedPtr = GetScheduleIndex(Alphas(2))  ! convert schedule name to pointer
    IF (DXCoil(DXCoilNum)%SchedPtr .EQ. 0) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...'//TRIM(cAlphaFields(2))//'="'//TRIM(Alphas(2))//'".')
      ErrorsFound=.TRUE.
    END IF
  END IF
  DXCoil(DXCoilNum)%RatedTotCap(1) = Numbers(1)
  DXCoil(DXCoilNum)%RatedAirVolFlowRate(1) = Numbers(2)

  DXCoil(DXCoilNum)%AirInNode = &
               GetOnlySingleNode(Alphas(3),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Inlet,1,ObjectIsNotParent)

  DXCoil(DXCoilNum)%AirOutNode = &
               GetOnlySingleNode(Alphas(4),ErrorsFound,TRIM(CurrentModuleObject),Alphas(1), &
               NodeType_Air,NodeConnectionType_Outlet,1,ObjectIsNotParent)

  CALL TestCompSet(TRIM(CurrentModuleObject),Alphas(1),Alphas(3),Alphas(4),'Air Nodes')

  DXCoil(DXCoilNum)%CCapFTemp = GetCurveIndex(Alphas(5))
  IF (DXCoil(DXCoilNum)%CCapFTemp(1) .EQ. 0) THEN
    IF (lAlphaBlanks(5)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(5))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(5))//'="'//TRIM(Alphas(5))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1)))

    CASE('LINEAR')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = Linear
    CASE('QUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = Quadratic
    CASE('CUBIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = Cubic
    CASE('BIQUADRATIC')
      DXCoil(DXCoilNum)%TotCapTempModFacCurveType(1) = Biquadratic
    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(5))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFTemp(1))))
      CALL ShowContinueError('... Curve type must be Linear, Quadratic, Cubic or BiQuadratic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

  DXCoil(DXCoilNum)%CCapFFlow(1) = GetCurveIndex(Alphas(6)) ! convert curve name to number
  IF (DXCoil(DXCoilNum)%CCapFFlow(1) .EQ. 0) THEN
    IF (lAlphaBlanks(6)) THEN
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", missing')
      CALL ShowContinueError('...required '//trim(cAlphaFields(6))//' is blank.')
    ELSE
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...not found '//TRIM(cAlphaFields(6))//'="'//TRIM(Alphas(6))//'".')
    END IF
    ErrorsFound = .TRUE.
  ELSE
    ! Verify Curve Object, only legal type is Quadratic
    SELECT CASE(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1)))

    CASE('LINEAR', 'QUADRATIC', 'CUBIC')

    CASE DEFAULT
      CALL ShowSevereError(RoutineName//trim(CurrentModuleObject)//'="'//trim(DXCoil(DXCoilNum)%Name)//'", invalid')
      CALL ShowContinueError('...illegal '//TRIM(cAlphaFields(5))//' type for this object = '// &
                            TRIM(GetCurveType(DXCoil(DXCoilNum)%CCapFFlow(1))))
      CALL ShowContinueError('... Curve type must be linear, Quadratic or Cubic.')
      ErrorsFound=.TRUE.
    END SELECT
  END IF

END DO

IF (ErrorsFound) THEN
  CALL ShowFatalError(RoutineName//'Errors found in getting '//TRIM(CurrentModuleObject)//' input.  '//&
                      'Preceding condition(s) causes termination.')
END IF

DO DXCoilNum=1,NumDOE2DXCoils+NumDXMulModeCoils
  ! Setup Report Variables for Cooling Equipment
  ! CurrentModuleObject='Coil:Cooling:DX:SingleSpeed/Coil:Cooling:DX:TwoStageWithHumidityControlMode'
  CALL SetupOutputVariable('Cooling Coil Total Cooling Rate [W]',DXCoil(DXCoilNum)%TotalCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Total Cooling Energy [J]',DXCoil(DXCoilNum)%TotalCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='COOLINGCOILS',GroupKey='System')
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Rate [W]',DXCoil(DXCoilNum)%SensCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Energy [J]',DXCoil(DXCoilNum)%SensCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Rate [W]',DXCoil(DXCoilNum)%LatCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Energy [J]',DXCoil(DXCoilNum)%LatCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Electric Power [W]',DXCoil(DXCoilNum)%ElecCoolingPower,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Electric Energy [J]',DXCoil(DXCoilNum)%ElecCoolingConsumption,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
  CALL SetupOutputVariable('Cooling Coil Runtime Fraction []',DXCoil(DXCoilNum)%CoolingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)

! do we report these even if no storage tank?
  IF (DXCoil(DXCoilNum)%CondensateCollectMode == CondensateToTank) THEN
    CALL SetupOutputVariable('Cooling Coil Condensate Volume Flow Rate [m3/s]',DXCoil(DXCoilNum)%CondensateVdot,&
                           'System','Average', DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Condensate Volume [m3]',DXCoil(DXCoilNum)%CondensateVol,&
                           'System','Sum', DXCoil(DXCoilNum)%Name,  &
                           ResourceTypeKey='OnSiteWater', &
                           EndUseKey='Condensate', GroupKey='System')
  ENDIF

! Moved to Init
!  IF (DXCoil(DXCoilNum)%ReportCoolingCoilCrankcasePower) THEN
!    CALL SetupOutputVariable('DX Cooling Coil Crankcase Heater Power [W]',DXCoil(DXCoilNum)%CrankcaseHeaterPower,'System',&
!                             'Average',DXCoil(DXCoilNum)%Name)
!    CALL SetupOutputVariable('Cooling Coil Crankcase Heater Electric Energy [J]',DXCoil(DXCoilNum)%CrankcaseHeaterConsumption,&
!                             'System','Sum',DXCoil(DXCoilNum)%Name, &
!                              ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
!  END IF

  IF (DXCoil(DXCoilNum)%ReportEvapCondVars) THEN
    CALL SetupOutputVariable('Cooling Coil Condenser Inlet Temperature [C]', &
                              DXCoil(DXCoilNum)%CondInletTemp,'System','Average', DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Water Volume [m3]',DXCoil(DXCoilNum)%EvapWaterConsump, &
                             'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='Water',EndUseKey='Cooling',GroupKey='System')
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Mains Supply Water Volume [m3]',  &
                              DXCoil(DXCoilNum)%EvapWaterConsump, &
                             'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='MainsWater',EndUseKey='Cooling',GroupKey='System')
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Pump Electric Power [W]',DXCoil(DXCoilNum)%EvapCondPumpElecPower, &
                             'System','Average',DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Pump Electric Energy [J]', &
                              DXCoil(DXCoilNum)%EvapCondPumpElecConsumption,'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
    IF(DXCoil(DXCoilNum)%BasinHeaterPowerFTempDiff .GT. 0.0d0)THEN
      CALL SetupOutputVariable('Cooling Coil Basin Heater Electric Power [W]', &
        DXCoil(DXCoilNum)%BasinHeaterPower,'System','Average',DXCoil(DXCoilNum)%Name)
      CALL SetupOutputVariable('Cooling Coil Basin Heater Electric Energy [J]', &
        DXCoil(DXCoilNum)%BasinHeaterConsumption,'System','Sum',DXCoil(DXCoilNum)%Name, &
        ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
    END IF
  END IF

END DO

DO DXCoilNum=NumDOE2DXCoils+1,NumDOE2DXCoils+NumDXMulModeCoils
  ! Setup Report Variables for Cooling Equipment
  ! CurrentModuleObject='Cooling:DX:TwoStageWithHumidityControlMode'
  CALL SetupOutputVariable('Cooling Coil Stage 2 Runtime Fraction []',DXCoil(DXCoilNum)%CoolingCoilStg2RuntimeFrac,&
                           'System','Average',DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Dehumidification Mode []',DXCoil(DXCoilNum)%DehumidificationMode,&
                           'System','Average',DXCoil(DXCoilNum)%Name)
END DO

DO DXCoilNum=NumDOE2DXCoils+NumDXMulModeCoils+1,NumDXHeatingCoils+NumDOE2DXCoils+NumDXMulModeCoils
  ! Setup Report Variables for Heating Equipment
  ! CurrentModuleObject='Coil:Heating:DX:SingleSpeed'
  CALL SetupOutputVariable('Heating Coil Total Heating Rate [W]',DXCoil(DXCoilNum)%TotalHeatingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Total Heating Energy [J]',DXCoil(DXCoilNum)%TotalHeatingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='HEATINGCOILS',GroupKey='System')
  CALL SetupOutputVariable('Heating Coil Electric Power [W]',DXCoil(DXCoilNum)%ElecHeatingPower,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Electric Energy [J]',DXCoil(DXCoilNum)%ElecHeatingConsumption,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='HEATING',GroupKey='System')
  CALL SetupOutputVariable('Heating Coil Defrost Electric Power [W]',DXCoil(DXCoilNum)%DefrostPower,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Defrost Electric Energy [J]',DXCoil(DXCoilNum)%DefrostConsumption,'System',&
                           'Sum',DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='HEATING',GroupKey='System')
  CALL SetupOutputVariable('Heating Coil Crankcase Heater Electric Power [W]',DXCoil(DXCoilNum)%CrankcaseHeaterPower,'System',&
                           'Average',DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Crankcase Heater Electric Energy [J]',DXCoil(DXCoilNum)%CrankcaseHeaterConsumption,&
                           'System','Sum',DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='HEATING',GroupKey='System')
  CALL SetupOutputVariable('Heating Coil Runtime Fraction []',DXCoil(DXCoilNum)%HeatingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
END DO

DO DXCoilNum=NumDOE2DXCoils+NumDXMulModeCoils+NumDXHeatingCoils+1, &
             NumDOE2DXCoils+NumDXMulModeCoils+NumDXHeatingCoils+NumDXMulSpeedCoils
  ! Setup Report Variables for Cooling Equipment
  ! CurrentModuleObject='Coil:Cooling:DX:TwoSpeed'
  CALL SetupOutputVariable('Cooling Coil Total Cooling Rate [W]',DXCoil(DXCoilNum)%TotalCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Total Cooling Energy [J]',DXCoil(DXCoilNum)%TotalCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='COOLINGCOILS',GroupKey='System')
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Rate [W]',DXCoil(DXCoilNum)%SensCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Energy [J]',DXCoil(DXCoilNum)%SensCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Rate [W]',DXCoil(DXCoilNum)%LatCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Energy [J]',DXCoil(DXCoilNum)%LatCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Electric Power [W]',DXCoil(DXCoilNum)%ElecCoolingPower,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Electric Energy [J]',DXCoil(DXCoilNum)%ElecCoolingConsumption,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
  CALL SetupOutputVariable('Cooling Coil Runtime Fraction []',DXCoil(DXCoilNum)%CoolingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)

  IF (DXCoil(DXCoilNum)%ReportEvapCondVars) THEN
    CALL SetupOutputVariable('Cooling Coil Condenser Inlet Temperature [C]', &
                              DXCoil(DXCoilNum)%CondInletTemp,'System','Average', DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Water Volume [m3]',DXCoil(DXCoilNum)%EvapWaterConsump, &
                             'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='Water',EndUseKey='Cooling',GroupKey='System')
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Mains Supply Water Volume [m3]',  &
                             DXCoil(DXCoilNum)%EvapWaterConsump, &
                             'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='MainsWater',EndUseKey='Cooling',GroupKey='System')
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Pump Electric Power [W]',DXCoil(DXCoilNum)%EvapCondPumpElecPower, &
                             'System','Average',DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Pump Electric Energy [J]', &
                              DXCoil(DXCoilNum)%EvapCondPumpElecConsumption,'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
    IF(DXCoil(DXCoilNum)%BasinHeaterPowerFTempDiff .GT. 0.0d0)THEN
      CALL SetupOutputVariable('Cooling Coil Basin Heater Electric Power [W]', &
        DXCoil(DXCoilNum)%BasinHeaterPower,'System','Average',DXCoil(DXCoilNum)%Name)
      CALL SetupOutputVariable('Cooling Coil Basin Heater Electric Energy [J]', &
        DXCoil(DXCoilNum)%BasinHeaterConsumption,'System','Sum',DXCoil(DXCoilNum)%Name, &
        ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
    END IF

  END IF

END DO

DO DXCoilNum=NumDOE2DXCoils+NumDXMulModeCoils+NumDXHeatingCoils+NumDXMulSpeedCoils+1, &
             NumDOE2DXCoils+NumDXMulModeCoils+NumDXHeatingCoils+NumDXMulSpeedCoils+NumDXHeatPumpWaterHeaterCoils
  ! Setup Report Variables for Cooling Equipment
  ! CurrentModuleObject='Coil:WaterHeating:AirToWaterHeatPump'
  CALL SetupOutputVariable('Cooling Coil Total Cooling Rate [W]',DXCoil(DXCoilNum)%TotalCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Total Cooling Energy [J]',DXCoil(DXCoilNum)%TotalCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name) !, &
!                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='COOLING',GroupKey='Plant')
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Rate [W]',DXCoil(DXCoilNum)%SensCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Energy [J]',DXCoil(DXCoilNum)%SensCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Rate [W]',DXCoil(DXCoilNum)%LatCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Energy [J]',DXCoil(DXCoilNum)%LatCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Runtime Fraction []',DXCoil(DXCoilNum)%CoolingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)

  IF (DXCoil(DXCoilNum)%ReportCoolingCoilCrankcasePower) THEN
    CALL SetupOutputVariable('Cooling Coil Crankcase Heater Electric Power [W]',DXCoil(DXCoilNum)%CrankcaseHeaterPower,'System',&
                             'Average',DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Crankcase Heater Electric Energy [J]',DXCoil(DXCoilNum)%CrankcaseHeaterConsumption,&
                             'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='Electric',EndUseKey='DHW',GroupKey='Plant')
  END IF

! new report variables for a HP water heater DX coil
  CALL SetupOutputVariable('Cooling Coil Total Water Heating Rate [W]',DXCoil(DXCoilNum)%TotalHeatingEnergyRate,'System', &
                           'Average',DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Total Water Heating Energy [J]',DXCoil(DXCoilNum)%TotalHeatingEnergy,'System', &
                           'Sum',DXCoil(DXCoilNum)%Name) !, &
!                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='HEATING',GroupKey='Plant')
  CALL SetupOutputVariable('Cooling Coil Water Heating Electric Power [W]',  &
                           DXCoil(DXCoilNum)%ElecWaterHeatingPower,'System', &
                           'Average',DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Water Heating Electric Energy [J]',  &
                           DXCoil(DXCoilNum)%ElecWaterHeatingConsumption,'System', &
                           'Sum',DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='DHW',GroupKey='Plant')
END DO

DO DXCoilNum=NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils+1, &
   NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils &
             + NumDXMulSpeedCoolCoils
  ! Setup Report Variables for Cooling Equipment:
  ! CurrentModuleObject='Coil:Cooling:DX:MultiSpeed'
  CALL SetupOutputVariable('Cooling Coil Total Cooling Rate [W]',DXCoil(DXCoilNum)%TotalCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Total Cooling Energy [J]',DXCoil(DXCoilNum)%TotalCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='COOLINGCOILS',GroupKey='System')
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Rate [W]',DXCoil(DXCoilNum)%SensCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Energy [J]',DXCoil(DXCoilNum)%SensCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Rate [W]',DXCoil(DXCoilNum)%LatCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Energy [J]',DXCoil(DXCoilNum)%LatCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Electric Power [W]',DXCoil(DXCoilNum)%ElecCoolingPower,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Electric Energy [J]',DXCoil(DXCoilNum)%ElecCoolingConsumption,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')

  IF (DXCoil(DXCoilNum)%FuelType .NE. FuelTypeElectricity) THEN
    CALL SetupOutputVariable('Cooling Coil '//TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType))//' Rate [W]', &
       DXCoil(DXCoilNum)%FuelUsed,'System','Average',DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil '//TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType))//' Energy [J]', &
       DXCoil(DXCoilNum)%FuelConsumed,'System','Sum',DXCoil(DXCoilNum)%Name, &
       ResourceTypeKey=TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType)),EndUseKey='COOLING',GroupKey='System')
  END IF

  CALL SetupOutputVariable('Cooling Coil Runtime Fraction []',DXCoil(DXCoilNum)%CoolingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)

  IF (DXCoil(DXCoilNum)%ReportEvapCondVars) THEN
    CALL SetupOutputVariable('Cooling Coil Condenser Inlet Temperature [C]', &
                              DXCoil(DXCoilNum)%CondInletTemp,'System','Average',   &
                              DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Water Volume [m3]',  &
                             DXCoil(DXCoilNum)%EvapWaterConsump, &
                             'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='Water',EndUseKey='Cooling',GroupKey='System')
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Mains Supply Water Volume [m3]',  &
                             DXCoil(DXCoilNum)%EvapWaterConsump, &
                             'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='MainsWater',EndUseKey='Cooling',GroupKey='System')
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Pump Electric Power [W]',DXCoil(DXCoilNum)%EvapCondPumpElecPower, &
                             'System','Average',DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Evaporative Condenser Pump Electric Energy [J]', &
                              DXCoil(DXCoilNum)%EvapCondPumpElecConsumption,'System','Sum',DXCoil(DXCoilNum)%Name, &
                              ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
    IF(DXCoil(DXCoilNum)%BasinHeaterPowerFTempDiff .GT. 0.0d0)THEN
      CALL SetupOutputVariable('Cooling Coil Basin Heater Electric Power [W]', &
        DXCoil(DXCoilNum)%BasinHeaterPower,'System','Average',DXCoil(DXCoilNum)%Name)
      CALL SetupOutputVariable('Cooling Coil Basin Heater Electric Energy [J]', &
        DXCoil(DXCoilNum)%BasinHeaterConsumption,'System','Sum',DXCoil(DXCoilNum)%Name, &
        ResourceTypeKey='Electric',EndUseKey='COOLING',GroupKey='System')
    END IF
  END IF

END DO

DO DXCoilNum=NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils+ &
             NumDXMulSpeedCoolCoils+1, &
   NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils &
             + NumDXMulSpeedCoolCoils + NumDXMulSpeedHeatCoils
  ! Setup Report Variables for Heating Equipment:
  ! CurrentModuleObject='Coil:Heating:DX:MultiSpeed'
  CALL SetupOutputVariable('Heating Coil Total Heating Rate [W]',DXCoil(DXCoilNum)%TotalHeatingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Total Heating Energy [J]',DXCoil(DXCoilNum)%TotalHeatingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='HEATINGCOILS',GroupKey='System')
  CALL SetupOutputVariable('Heating Coil Electric Power [W]',DXCoil(DXCoilNum)%ElecHeatingPower,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Electric Energy [J]',DXCoil(DXCoilNum)%ElecHeatingConsumption,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='HEATING',GroupKey='System')

  IF (DXCoil(DXCoilNum)%FuelType .NE. FuelTypeElectricity) THEN
    CALL SetupOutputVariable('Heating Coil '//TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType))//' Rate [W]', &
       DXCoil(DXCoilNum)%FuelUsed,'System','Average',DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Heating Coil '//TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType))//' Energy [J]', &
       DXCoil(DXCoilNum)%FuelConsumed,'System','Sum',DXCoil(DXCoilNum)%Name, &
       ResourceTypeKey=TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType)),EndUseKey='HEATING',GroupKey='System')
  END IF

  IF (DXCoil(DXCoilNum)%FuelType .NE. FuelTypeElectricity .AND. DXCoil(DXCoilNum)%DefrostStrategy .EQ. ReverseCycle) THEN
    CALL SetupOutputVariable('Heating Coil Defrost '//TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType))//' Rate [W]', &
         DXCoil(DXCoilNum)%DefrostPower,'System','Average',DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Heating Coil Defrost '//TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType))//' Energy [J]', &
         DXCoil(DXCoilNum)%DefrostConsumption,'System','Sum',DXCoil(DXCoilNum)%Name, &
         ResourceTypeKey=TRIM(cValidOutputFuelTypes(DXCoil(DXCoilNum)%FuelType)),EndUseKey='HEATING',GroupKey='System')
  ELSE
    CALL SetupOutputVariable('Heating Coil Defrost Electric Power [W]',DXCoil(DXCoilNum)%DefrostPower,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Heating Coil Defrost Electric Energy [J]',DXCoil(DXCoilNum)%DefrostConsumption,'System',&
                           'Sum',DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='HEATING',GroupKey='System')
  END IF

  CALL SetupOutputVariable('Heating Coil Crankcase Heater Electric Power [W]',DXCoil(DXCoilNum)%CrankcaseHeaterPower,'System',&
                           'Average',DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Crankcase Heater Electric Energy [J]',DXCoil(DXCoilNum)%CrankcaseHeaterConsumption,&
                           'System','Sum',DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='Electric',EndUseKey='HEATING',GroupKey='System')
  CALL SetupOutputVariable('Heating Coil Runtime Fraction []',DXCoil(DXCoilNum)%HeatingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)

END DO

! VRF cooling coil report variables
DO DXCoilNum=NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils+ &
             NumDXMulSpeedCoolCoils + NumDXMulSpeedHeatCoils + 1, &
   NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils &
             + NumDXMulSpeedCoolCoils + NumDXMulSpeedHeatCoils + NumVRFCoolingCoils
  ! Setup Report Variables for Cooling Equipment:
  ! CurrentModuleObject='Coil:Cooling:DX:VariableRefrigerantFlow
  CALL SetupOutputVariable('Cooling Coil Total Cooling Rate [W]',DXCoil(DXCoilNum)%TotalCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Total Cooling Energy [J]',DXCoil(DXCoilNum)%TotalCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='COOLINGCOILS',GroupKey='System')
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Rate [W]',DXCoil(DXCoilNum)%SensCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Sensible Cooling Energy [J]',DXCoil(DXCoilNum)%SensCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Rate [W]',DXCoil(DXCoilNum)%LatCoolingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Latent Cooling Energy [J]',DXCoil(DXCoilNum)%LatCoolingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Cooling Coil Runtime Fraction []',DXCoil(DXCoilNum)%CoolingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  IF (DXCoil(DXCoilNum)%CondensateCollectMode == CondensateToTank) THEN
    CALL SetupOutputVariable('Cooling Coil Condensate Volume Flow Rate [m3/s]',DXCoil(DXCoilNum)%CondensateVdot,&
                           'System','Average', DXCoil(DXCoilNum)%Name)
    CALL SetupOutputVariable('Cooling Coil Condensate Volume [m3]',DXCoil(DXCoilNum)%CondensateVol,&
                           'System','Sum', DXCoil(DXCoilNum)%Name,  &
                           ResourceTypeKey='OnSiteWater', &
                           EndUseKey='Condensate', GroupKey='System')
  ENDIF
END DO

! VRF heating coil report variables
DO DXCoilNum=NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils+ &
             NumDXMulSpeedCoolCoils + NumDXMulSpeedHeatCoils + NumVRFCoolingCoils + 1, &
   NumDoe2DXCoils + NumDXHeatingCoils + NumDXMulSpeedCoils + NumDXMulModeCoils + NumDXHeatPumpWaterHeaterCoils &
             + NumDXMulSpeedCoolCoils + NumDXMulSpeedHeatCoils + NumVRFCoolingCoils + NumVRFHeatingCoils
  ! Setup Report Variables for Heating Equipment:
  ! CurrentModuleObject='Coil:Heating:DX:VariableRefrigerantFlow
  CALL SetupOutputVariable('Heating Coil Total Heating Rate [W]',DXCoil(DXCoilNum)%TotalHeatingEnergyRate,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
  CALL SetupOutputVariable('Heating Coil Total Heating Energy [J]',DXCoil(DXCoilNum)%TotalHeatingEnergy,'System','Sum',&
                           DXCoil(DXCoilNum)%Name, &
                           ResourceTypeKey='ENERGYTRANSFER',EndUseKey='HEATINGCOILS',GroupKey='System')
  CALL SetupOutputVariable('Heating Coil Runtime Fraction []',DXCoil(DXCoilNum)%HeatingCoilRuntimeFraction,'System','Average',&
                           DXCoil(DXCoilNum)%Name)
END DO
IF (AnyEnergyManagementSystemInModel) THEN
  ! setup EMS sizing actuators for single speed DX
  DO DXCoilNum=1,NumDOE2DXCoils
    CALL SetupEMSActuator('Coil:Cooling:DX:SingleSpeed', DXCoil(DXCoilNum)%Name, &
                          'Autosized Rated Air Flow Rate' , '[m3/s]', &
                           DXCoil(DXCoilNum)%RatedAirVolFlowRateEMSOverrideON(1),  &
                           DXCoil(DXCoilNum)%RatedAirVolFlowRateEMSOverrideValue(1) )

    CALL SetupEMSActuator('Coil:Cooling:DX:SingleSpeed', DXCoil(DXCoilNum)%Name, &
                          'Autosized Rated Sensible Heat Ratio' , '[W/W]', &
                           DXCoil(DXCoilNum)%RatedSHREMSOverrideOn(1),  &
                           DXCoil(DXCoilNum)%RatedSHREMSOverrideValue(1) )

    CALL SetupEMSActuator('Coil:Cooling:DX:SingleSpeed', DXCoil(DXCoilNum)%Name, &
                          'Autosized Rated Total Cooling Capacity' , '[W]', &
                           DXCoil(DXCoilNum)%RatedTotCapEMSOverrideOn(1),  &
                           DXCoil(DXCoilNum)%RatedTotCapEMSOverrideValue(1) )
  ENDDO

ENDIF
DEALLOCATE(Alphas)
DEALLOCATE(cAlphaFields)
DEALLOCATE(cNumericFields)
DEALLOCATE(Numbers)
DEALLOCATE(lAlphaBlanks)
DEALLOCATE(lNumericBlanks)

DEALLOCATE(Alphas2)
DEALLOCATE(cAlphaFields2)
DEALLOCATE(cNumericFields2)
DEALLOCATE(Numbers2)
DEALLOCATE(lAlphaBlanks2)
DEALLOCATE(lNumericBlanks2)
CALL ManageEMS(emsCallFromComponentGetInput)


RETURN

END SUBROUTINE GetDXCoils


AbortEnergyPlus AbsoluteAirMass ActivateDemandManagers ActivateEMSControls AddBlankKeys addChargesToOperand AddCompSizeTableEntry AddEndUseSubcategory AddError addFootNoteSubTable AddInstruction AddMeter addMonthlyCharge AddMonthlyFieldSetInput AddMonthlyReport AddNeighborInformation AddObjectDefandParse addOperand AddRecordFromSection AddRecordToOutputVariableStructure AddSectionDef AddShadowRelateTableEntry AddSQLiteComponentSizingRecord AddSQLiteComponentSizingRecord AddSQLiteSystemSizingRecord AddSQLiteSystemSizingRecord AddSQLiteZoneSizingRecord AddSQLiteZoneSizingRecord AddTOCEntry AddTOCZoneLoadComponentTable AddToOutputVariableList AddVariablesForMonthlyReport AddVariableSlatBlind AddWindow AdjustAirSetpointsforOpTempCntrl AdjustCBF AdjustCBF AdjustChangeInLoadByEMSControls AdjustChangeInLoadByHowServed AdjustChangeInLoadForLastStageUpperRangeLimit AdjustCoolingSetPointforTempAndHumidityControl adjusthhat AdjustPumpFlowRequestByEMSControls AdjustReportingHourAndMinutes AdjustVBGap AdvanceRootFinder AFECFR AFECOI AFECPD AFECPF AFEDMP AFEDOP AFEDWC AFEELR AFEEXF AFEFAN AFEHEX AFEHOP AFEPLR AFESCR AFESEL AFESOP AFETMU AirflowNetworkVentingControl AirMass AIRMOV AllocateAirflowNetworkData AllocateAirHeatBalArrays AllocateAndInitData AllocateAndSetUpVentReports AllocateCFSStateHourlyData AllocateForCFSRefPointsGeometry AllocateForCFSRefPointsState AllocateHeatBalArrays AllocateLoadComponentArrays AllocateModuleArrays AllocateModuleArrays AllocateSurfaceHeatBalArrays AllocateWeatherData angle_2dvector AnisoSkyViewFactors AnyPlantLoopSidesNeedSim AnyPlantSplitterMixerLacksContinuity AreaPolygon ArgCheck array_to_vector ASHRAETauModel ASHWAT_OffNormalProperties ASHWAT_Solar ASHWAT_Thermal ASSIGNMENT (=) AssignNodeNumber AssignReportNumber AssignResourceTypeNum AssignReverseConstructionNumber AssignVariablePt AttachCustomMeters AttachMeters AuditBranches AUTOTDMA BaseThermalPropertySet_Diffusivity BeginEnvrnInitializeRuntimeLanguage BetweenDates BetweenGlassForcedFlow BetweenGlassShadeForcedFlow BetweenGlassShadeNaturalFlow BisectionMethod BlindBeamBeamTrans BlindOpticsBeam BlindOpticsDiffuse BoreholeResistance BoundValueToNodeMinMaxAvail BoundValueToWithinTwoValues BracketRoot BranchPressureDrop BrentMethod BuildGap BuildKeyVarList Calc4PipeFanCoil Calc_EN673 Calc_ISO15099 CalcActiveTranspiredCollector CalcAggregateLoad CalcAirflowNetworkAirBalance CalcAirflowNetworkCO2Balance CalcAirflowNetworkGCBalance CalcAirflowNetworkHeatBalance CalcAirflowNetworkMoisBalance CalcAirFlowSimple CalcAirLoopSplitter CalcAirMixer CalcAirToAirGenericHeatExch CalcAirToAirPlateHeatExch CalcAirZoneReturnPlenum CalcAirZoneSupplyPlenum CalcAlamdariHammondStableHorizontal CalcAlamdariHammondUnstableHorizontal CalcAlamdariHammondVerticalWall CalcAngleFactorMRT CalcApproximateViewFactors CalcASHRAEDetailedIntConvCoeff CalcASHRAESimpExtConvectCoeff CalcASHRAESimpleIntConvCoeff CalcASHRAEVerticalWall CalcATMixer CalcAwbiHattonHeatedFloor CalcAwbiHattonHeatedWall CalcBasinHeaterPower CalcBasinHeaterPowerForMultiModeDXCoil CalcBeamSolarOnWinRevealSurface CalcBeamSolDiffuseReflFactors CalcBeamSolSpecularReflFactors CalcBeausoleilMorrisonMixedAssistedWall CalcBeausoleilMorrisonMixedOpposingWall CalcBeausoleilMorrisonMixedStableCeiling CalcBeausoleilMorrisonMixedStableFloor CalcBeausoleilMorrisonMixedUnstableCeiling CalcBeausoleilMorrisonMixedUnstableFloor CalcBLASTAbsorberModel CalcBlockenWindward CalcBoilerModel CalcBoilerModel CalcBottomFluxCoefficents CalcBottomSurfTemp CalcBuriedPipeSoil CalcCBF CalcCBF CalcCBVAV CalcCeilingDiffuserInletCorr CalcCeilingDiffuserIntConvCoeff CalcChillerHeaterModel CalcChillerIPLV CalcChillerModel CalcClearRoof CalcCoilUAbyEffectNTU CalcColdestSetPoint CalcComplexWindowOverlap CalcComplexWindowThermal CalcCompSuctionTempResidual CalcCondEntSetPoint CalcConnectionsDrainTemp CalcConnectionsFlowRates CalcConnectionsHeatRecovery CalcConstCOPChillerModel CalcConvCoeffAbsPlateAndWater CalcConvCoeffBetweenPlates CalcCoolBeam CalcCoolTower CalcCoordinateTransformation CalcCoPlanarNess CalcCostEstimate CalcCTGeneratorModel CalcDayltgCoefficients CalcDayltgCoeffsMapPoints CalcDayltgCoeffsRefMapPoints CalcDayltgCoeffsRefPoints CalcDesiccantBalancedHeatExch CalcDesignSpecificationOutdoorAir CalcDesuperheaterHeatingCoil CalcDesuperheaterWaterHeater CalcDetailedHcInForDVModel CalcDetailedSystem CalcDetailedTransSystem CalcDetailFlatFinCoolingCoil CalcDetIceStorLMTDstar CalcDiffTSysAvailMgr CalcDirectAir CalcDirectEvapCooler CalcDirectResearchSpecialEvapCooler CalcDoe2DXCoil CalcDOE2Leeward CalcDOE2Windward CalcDryFinEffCoef CalcDryIndirectEvapCooler CalcDuct CalcDXCoilStandardRating CalcDXHeatingCoil CalcEarthTube CalcEcoRoof CalcEffectiveness CalcEffectiveSHR CalcEffectiveSHR CalcEffectiveSHR CalcEffectiveSHR CalcElecSteamHumidifier CalcElectricBaseboard CalcElectricChillerHeatRecovery CalcElectricChillerModel CalcElectricEIRChillerModel CalcElectricHeatingCoil CalcEmmelRoof CalcEmmelVertical CalcEngineChillerHeatRec CalcEngineDrivenChillerModel CalcEQLOpticalProperty CalcEQLWindowOpticalProperty CalcEQLWindowSHGCAndTransNormal CalcEQLWindowStandardRatings CalcEQLWindowUvalue CalcEquipmentDrainTemp CalcEquipmentFlowRates CalcExhaustAbsorberChillerModel CalcExhaustAbsorberHeaterModel CalcExteriorVentedCavity CalcFisherPedersenCeilDiffuserCeiling CalcFisherPedersenCeilDiffuserFloor CalcFisherPedersenCeilDiffuserWalls CalcFluidHeatExchanger CalcFohannoPolidoriVerticalWall CalcFollowOATempSetPoint CalcFollowSysNodeTempSetPoint CalcFourPipeIndUnit CalcFrameDividerShadow CalcFuelCellAuxHeater CalcFuelCellGeneratorModel CalcFuelCellGenHeatRecovery CalcFurnaceOutput CalcFurnaceResidual CalcGasAbsorberChillerModel CalcGasAbsorberHeaterModel CalcGasCooler CalcGasHeatingCoil CalcGenericDesiccantDehumidifier CalcGoldsteinNovoselacCeilingDiffuserFloor CalcGoldsteinNovoselacCeilingDiffuserWall CalcGoldsteinNovoselacCeilingDiffuserWindow CalcGroundTempSetPoint CalcGroundwaterWell CalcGshpModel CalcGshpModel CalcGTChillerModel CalcHeatBalanceAir CalcHeatBalanceInsideSurf CalcHeatBalanceInsideSurf CalcHeatBalanceOutsideSurf CalcHeatBalanceOutsideSurf CalcHeatBalFiniteDiff CalcHeatBalHAMT CalcHeatPumpWaterHeater CalcHeatTransCoeffAndCoverTemp CalcHfExteriorSparrow CalcHighTempRadiantSystem CalcHighTempRadiantSystemSP CalcHiTurnOffSysAvailMgr CalcHiTurnOnSysAvailMgr CalcHnASHRAETARPExterior CalcHPCoolingSimple CalcHPHeatingSimple CalcHPWHDXCoil CalcHWBaseboard CalcHXAssistedCoolingCoil CalcHXEffectTerm CalcHybridVentSysAvailMgr CalcIBesselFunc CalcICEngineGeneratorModel CalcICEngineGenHeatRecovery CalcIceStorageCapacity CalcIceStorageCharge CalcIceStorageDischarge CalcIceStorageDormant CalcICSSolarCollector CalcIdealCondEntSetPoint CalcIfSetpointMet CalcIndirectAbsorberModel CalcIndirectResearchSpecialEvapCooler CalcInteriorRadExchange CalcInteriorSolarDistribution CalcInteriorSolarOverlaps CalcInteriorWinTransDifSolInitialDistribution CalcISO15099WindowIntConvCoeff CalcKaradagChilledCeiling CalcKBesselFunc CalcKhalifaEq3WallAwayFromHeat CalcKhalifaEq4CeilingAwayFromHeat CalcKhalifaEq5WallsNearHeat CalcKhalifaEq6NonHeatedWalls CalcKhalifaEq7Ceiling CalcLoadCenterThermalLoad CalcLoTurnOffSysAvailMgr CalcLoTurnOnSysAvailMgr CalcLowTempCFloRadiantSystem CalcLowTempCFloRadSysComps CalcLowTempElecRadiantSystem CalcLowTempHydrRadiantSystem CalcLowTempHydrRadSysComps CalcMatrixInverse CalcMcAdams CalcMerkelVariableSpeedTower CalcMicroCHPNoNormalizeGeneratorModel CalcMinIntWinSolidAngs CalcMitchell CalcMixedAirSetPoint CalcMoistureBalanceEMPD CalcMoreNodeInfo CalcMoWITTLeeward CalcMoWITTWindward CalcMSHeatPump CalcMTGeneratorModel CalcMultiSpeedDXCoil CalcMultiSpeedDXCoilCooling CalcMultiSpeedDXCoilHeating CalcMultiStageElectricHeatingCoil CalcMultiStageGasHeatingCoil CalcMultiZoneAverageCoolingSetPoint CalcMultiZoneAverageHeatingSetPoint CalcMultiZoneAverageMaxHumSetPoint CalcMultiZoneAverageMinHumSetPoint CalcMultiZoneMaxHumSetPoint CalcMultiZoneMinHumSetPoint CalcMundtModel CalcNCycSysAvailMgr CalcNewZoneHeatCoolFlowRates CalcNewZoneHeatOnlyFlowRates CalcNodeMassFlows CalcNominalWindowCond CalcNonDXHeatingCoils CalcNonDXHeatingCoils CalcNonDXHeatingCoils CalcNonDXHeatingCoils CalcNusselt CalcNusseltJurges CalcNVentSysAvailMgr CalcOAController CalcOAMassFlow CalcOAMassFlow CalcOAMixer CalcOAOnlyMassFlow CalcOAPretreatSetPoint CalcOAUnitCoilComps CalcObstrMultiplier CalcOptStartSysAvailMgr CalcOtherSideDemand CalcOutdoorAirUnit CalcOutsideAirSetPoint CalcOutsideSurfTemp CalcParallelPIU CalcPassiveExteriorBaffleGap CalcPassiveSystem CalcPassiveTranspiredCollector CalcPerSolarBeam CalcPipeHeatTransCoef CalcPipesHeatTransfer CalcPipeTransBeam CalcPlantValves CalcPollution CalcPolyhedronVolume CalcPolynomCoef CalcPondGroundHeatExchanger CalcPredictedHumidityRatio CalcPredictedSystemLoad CalcPTUnit CalcPumps CalcPurchAirLoads CalcPurchAirMinOAMassFlow CalcPurchAirMixedAir CalcPVTcollectors CalcQiceChargeMaxByChiller CalcQiceChargeMaxByITS CalcQiceDischageMax CalcRABFlowSetPoint CalcRackSystem CalcRadSysHXEffectTerm CalcRadTemp CalcRainCollector CalcReformEIRChillerModel CalcResearchSpecialPartLoad CalcReturnAirPath CalcRfFlrCoordinateTransformation CalcSandiaPV CalcSatVapPressFromTemp CalcSchedOffSysAvailMgr CalcSchedOnSysAvailMgr CalcSchedSysAvailMgr CalcScheduledDualSetPoint CalcScheduledSetPoint CalcScreenTransmittance CalcScriptF CalcSeriesPIU CalcSetpointTempTarget CalcSHRUserDefinedCurves CalcSimpleController CalcSimpleHeatingCoil CalcSimplePV CalcSingleSpeedEvapFluidCooler CalcSingleSpeedTower CalcSingZoneClSetPoint CalcSingZoneHtSetPoint CalcSingZoneMaxHumSetPoint CalcSingZoneMinHumSetPoint CalcSingZoneRhSetPoint CalcSkySolDiffuseReflFactors CalcSolarCollector CalcSolarFlux CalcSolidDesiccantDehumidifier CalcSourceFlux CalcSourceTempCoefficents CalcSparrowLeeward CalcSparrowWindward CalcSpecialDayTypes CalcStandAloneERV CalcStandardRatings CalcStaticProperties CalcSteamAirCoil CalcSteamBaseboard CalcSurfaceCentroid CalcSurfaceGroundHeatExchanger CalcSystemEnergyUse CalcSZOneStageCoolingSetPt CalcSZOneStageHeatingSetPt CalcTankTemp CalcTDDTransSolAniso CalcTDDTransSolHorizon CalcTDDTransSolIso CalcTempDistModel CalcTempIntegral CalcTESCoilChargeOnlyMode CalcTESCoilCoolingAndChargeMode CalcTESCoilCoolingAndDischargeMode CalcTESCoilCoolingOnlyMode CalcTESCoilDischargeOnlyMode CalcTESCoilOffMode CalcTESIceStorageTank CalcTESWaterStorageTank CalcThermalChimney CalcThermalComfortAdaptiveASH55 CalcThermalComfortAdaptiveCEN15251 CalcThermalComfortFanger CalcThermalComfortKSU CalcThermalComfortPierce CalcThermalComfortSimpleASH55 CalcTimeNeeded CalcTopFluxCoefficents CalcTopSurfTemp CalcTotalFLux CalcTotCapSHR CalcTotCapSHR_VSWSHP CalcTransAbsorProduct CalcTransRefAbsOfCover CalcTRNSYSPV CalcTrombeWallIntConvCoeff CalcTwoSpeedDXCoilIEERResidual CalcTwoSpeedDXCoilStandardRating CalcTwoSpeedEvapFluidCooler CalcTwoSpeedTower CalcUAIce CalcUCSDCV CalcUCSDDV CalcUCSDUE CalcUCSDUI CalculateAirChillerSets CalculateBasisLength CalculateCase CalculateCoil CalculateCompressors CalculateCondensers CalculateCTFs CalculateDailySolarCoeffs CalculateDayOfWeek CalculateEpsFromNTUandZ CalculateExponentialMatrix CalculateFuncResults CalculateGammas CalculateInverseMatrix CalculateMoodyFrictionFactor CalculateNTUfromEpsAndZ CalculatePollution CalculateSecondary CalculateSubcoolers CalculateSunDirectionCosines CalculateTransCompressors CalculateWalkIn CalculateWaterUseage CalculateWaterUseage CalculateWindowBeamProperties CalculateZoneMRT CalculateZoneVolume CalcUnitaryCoolingSystem CalcUnitaryHeatingSystem CalcUnitarySuppHeatingSystem CalcUnitarySuppSystemtoSP CalcUnitarySystemLoadResidual CalcUnitarySystemToLoad CalcUnitHeater CalcUnitHeaterComponents CalcUnitVentilator CalcUnitVentilatorComponents CalcUnmetPlantDemand CalcUpdateHeatRecovery CalcUpdateHeatRecovery CalcUserDefinedInsideHcModel CalcUserDefinedOutsideHcModel CalcVariableSpeedTower CalcVarSpeedCoilCooling CalcVarSpeedCoilHeating CalcVarSpeedHeatPump CalcVarSpeedHeatPump CalcVAVVS CalcVentilatedSlab CalcVentilatedSlabComps CalcVentilatedSlabRadComps CalcVentSlabHXEffectTerm CalcVerticalGroundHeatExchanger CalcViewFactorToShelf CalcVRF CalcVRFCondenser CalcVRFCoolingCoil CalcVSTowerApproach CalcWallCoordinateTransformation CalcWaltonStableHorizontalOrTilt CalcWaltonUnstableHorizontalOrTilt CalcWarmestSetPoint CalcWarmestSetPointTempFlow CalcWaterMainsTemp CalcWaterSource CalcWaterStorageTank CalcWaterThermalTankMixed CalcWaterThermalTankStratified CalcWaterThermalTankZoneGains CalcWaterToAirHeatpump CalcWatertoAirHPCooling CalcWatertoAirHPHeating CalcWaterToAirResidual CalcWatertoWaterHPCooling CalcWatertoWaterHPHeating CalcWaterUseZoneGains CalcWetIndirectEvapCooler CalcWindowACOutput CalcWindowBlindProperties CalcWindowHeatBalance CalcWindowProfileAngles CalcWindowScreenProperties CalcWindowStaticProperties CalcWindPressure CalcWindPressureCoeffs CalcWindTurbine CalcWinFrameAndDividerTemps CalcWinTransDifSolInitialDistribution CalcWrapperModel CalcZoneAirComfortSetpoints CalcZoneAirTempSetpoints CalcZoneComponentLoadSums CalcZoneDehumidifier CalcZoneEvaporativeCoolerUnit CalcZoneLeavingConditions CalcZoneMassBalance CalcZonePipesHeatGain CalcZoneSums CartesianPipeCellInformation_ctor CellType_IsFieldCell CFSHasControlledShade CFSNGlz CFSRefPointPosFactor CFSRefPointSolidAngle CFSShadeAndBeamInitialization CFSUFactor cGetCoilAirOutletNode cGetCoilSteamInletNode cGetCoilSteamOutletNode CharPreDefTableEntry CheckActuatorNode CheckAndAddAirNodeNumber CheckAndFixCFSLayer CheckAndReadCustomSprectrumData CheckAndReadFaults CheckAndSetConstructionProperties CheckBracketRoundOff CheckBranchForOASys CheckCachedIPErrors CheckCFSStates CheckCoilWaterInletNode CheckControllerListOrder CheckControllerLists CheckConvexity CheckCostEstimateInput CheckCreatedZoneItemName CheckCurveLimitsForIPLV CheckCurveLimitsForStandardRatings CheckDayScheduleValueMinMax CheckDXCoolingCoilInOASysExists CheckFDSurfaceTempLimits CheckFFSchedule CheckFluidPropertyName CheckForActualFileName CheckForBalancedFlow CheckForControllerWaterCoil CheckForGeometricTransform CheckForGeometricTransform CheckForMisMatchedEnvironmentSpecifications CheckForOutOfRangeTempResult CheckForOutOfRangeTemps CheckForRequestedReporting CheckForRunawayPlantTemps CheckForSensorAndSetpointNode CheckGasCoefs CheckHeatingCoilSchedule CheckHXAssistedCoolingCoilSchedule CheckIFAnyEMS CheckIFAnyIdealCondEntSetPoint CheckIfAnyPlant CheckIfNodeSetpointManagedByEMS CheckIncrementRoundOff CheckInternalConsistency CheckLightsReplaceableMinMaxForZone CheckLocationValidity CheckLoopExitNode CheckLowerUpperBracket CheckMarkedNodes CheckMaxActiveController CheckMaxConstraint CheckMicroCHPThermalBalance CheckMinActiveController CheckMinConstraint checkMinimumMonthlyCharge CheckMinMaxCurveBoundaries CheckMinMaxRange CheckModelBoundOutput_HumRat CheckModelBoundOutput_Temp CheckModelBounds CheckModelBoundsHumRatEq CheckModelBoundsRH_HumRatEq CheckModelBoundsRH_TempEq CheckModelBoundsTempEq CheckNodeConnections CheckNodeSetPoint CheckNonSingularity CheckOAControllerName CheckOutAirNodeNumber CheckPlantConvergence CheckPlantMixerSplitterConsistency CheckPlantOnAbort CheckPollutionMeterReporting CheckRefrigerationInput CheckReportVariable CheckRootFinderCandidate CheckRootFinderConvergence CheckScheduledSurfaceGains CheckScheduleValue CheckScheduleValueMinMax Checksetpoints CheckSimpleController CheckSlope CheckSteamCoilSchedule CheckSubSurfaceMiscellaneous CheckSysSizing CheckSystemBranchFlow CheckTDDsAndLightShelvesInDaylitZones CheckThisAirSystemForSizing CheckThisZoneForSizing CheckThreading CheckUniqueNodes CheckUnitarySysCoilInOASysExists CheckUsedConstructions CheckValidSimulationObjects CheckWarmupConvergence CheckWaterCoilSchedule CheckWeatherFileValidity CheckWindowShadingControlFrameDivider CheckZoneEquipmentList CheckZoneSizing CHKBKS CHKGSS CHKSBS CLIP CLIPPOLY CloseDFSFile CloseMiscOpenFiles CloseMoistureBalanceEMPD CloseOutOpenFiles CloseOutputFiles CloseOutputTabularFile CloseReportIllumMaps CloseSocket CloseWeatherFile CoilAreaFracIter CoilCompletelyDry CoilCompletelyWet CoilOutletStreamCondition CoilPartWetPartDry COMMAND_ARGUMENT_COUNT CompactObjectsCheck CompareTwoVectors ComplexFenestrationLuminances ComputeDelayedComponents ComputeDifSolExcZonesWIZWindows ComputeIntSolarAbsorpFactors ComputeIntSWAbsorpFactors ComputeIntThermalAbsorpFactors ComputeLifeCycleCostAndReport ComputeLoadComponentDecayCurve ComputeNominalUwithConvCoeffs ComputePresentValue ComputeTariff ComputeTaxAndDepreciation ComputeWinShadeAbsorpFactors CondOutTempResidual ConstructBasis ControlCBVAVOutput ControlCompOutput ControlCompOutput ControlCoolBeam ControlCoolingSystem ControlCycWindACOutput ControlDesiccantDehumidifier ControlDXHeatingSystem ControlDXSystem ControlFluidHeatExchanger ControlHeatingSystem ControlHumidifier ControlMSHPOutput ControlPTUnitOutput ControlPVTcollector ControlReformEIRChillerModel ControlSuppHeatSystem ControlUnitarySystemOutput ControlUnitarySystemtoLoad ControlUnitarySystemtoSP ControlVRF ControlVSEvapUnitToMeetLoad ControlVSHPOutput ControlVSHPOutput ConvectionFactor ConvertCasetoLower ConvertCasetoUpper ConvertIP ConvertIPdelta ConvertToElementTag ConvertToEscaped CoolBeamResidual CoolingCoil CoolWaterHumRatResidual CoolWaterTempResidual CoolWatertoAirHPHumRatResidual CoolWatertoAirHPTempResidual CorrectZoneAirTemp CorrectZoneContaminants CorrectZoneHumRat CostInfoOut CPCW CPHW CreateBoundaryList CreateBoundaryListCount CreateCategoryNativeVariables CreateCellArray CreateCurrentDateTimeString CreateDefaultComputation CreateEnergyReportStructure CreateFCfactorConstructions CreateHVACStepFullString CreateHVACTimeIntervalString CreateHVACTimeString CreateNewellAreaVector CreateNewellSurfaceNormalVector CreatePartitionCenterList CreatePartitionRegionList CreatePredefinedMonthlyReports CreateRegionList CreateRegionListCount CreateShadedWindowConstruction CreateSQLiteConstructionsTable CreateSQLiteConstructionsTable CreateSQLiteDatabase CreateSQLiteDatabase CreateSQLiteDaylightMap CreateSQLiteDaylightMap CreateSQLiteDaylightMapTitle CreateSQLiteDaylightMapTitle CreateSQLiteEnvironmentPeriodRecord CreateSQLiteEnvironmentPeriodRecord CreateSQLiteErrorRecord CreateSQLiteErrorRecord CreateSQLiteInfiltrationTable CreateSQLiteInfiltrationTable CreateSQLiteMaterialsTable CreateSQLiteMaterialsTable CreateSQLiteMeterDictionaryRecord CreateSQLiteMeterDictionaryRecord CreateSQLiteMeterRecord CreateSQLiteMeterRecord CreateSQLiteNominalBaseboardHeatTable CreateSQLiteNominalBaseboardHeatTable CreateSQLiteNominalElectricEquipmentTable CreateSQLiteNominalElectricEquipmentTable CreateSQLiteNominalGasEquipmentTable CreateSQLiteNominalGasEquipmentTable CreateSQLiteNominalHotWaterEquipmentTable CreateSQLiteNominalHotWaterEquipmentTable CreateSQLiteNominalLightingTable CreateSQLiteNominalLightingTable CreateSQLiteNominalOtherEquipmentTable CreateSQLiteNominalOtherEquipmentTable CreateSQLiteNominalPeopleTable CreateSQLiteNominalPeopleTable CreateSQLiteNominalSteamEquipmentTable CreateSQLiteNominalSteamEquipmentTable CreateSQLiteReportVariableDataRecord CreateSQLiteReportVariableDataRecord CreateSQLiteReportVariableDictionaryRecord CreateSQLiteReportVariableDictionaryRecord CreateSQLiteRoomAirModelTable CreateSQLiteRoomAirModelTable CreateSQLiteSchedulesTable CreateSQLiteSimulationsRecord CreateSQLiteSimulationsRecord CreateSQLiteStringTableRecord CreateSQLiteSurfacesTable CreateSQLiteSurfacesTable CreateSQLiteTabularDataRecords CreateSQLiteTabularDataRecords CreateSQLiteTimeIndexRecord CreateSQLiteTimeIndexRecord CreateSQLiteVentilationTable CreateSQLiteVentilationTable CreateSQLiteZoneGroupTable CreateSQLiteZoneGroupTable CreateSQLiteZoneListTable CreateSQLiteZoneListTable CreateSQLiteZoneTable CreateSQLiteZoneTable CreateStormWindowConstructions CreateSysTimeIntervalString CreateTCConstructions CreateTimeIntervalString CreateTimeString CreatExtBooundCondName CreateZoneExtendedOutput CreateZoneExtendedOutput CrossProduct CrossProduct cSurfaceClass CTRANS CurveValue DateToString DateToStringWithMonth DaylghtAltAndAzimuth DayltgAveInteriorReflectance DayltgClosestObstruction DayltgCrossProduct DayltgCurrentExtHorizIllum DayltgDirectIllumComplexFenestration DayltgDirectSunDiskComplexFenestration DayltgElecLightingControl DayltgExtHorizIllum DayltgGlare DayltgGlarePositionFactor DayltgGlareWithIntWins DayltgHitBetWinObstruction DayltgHitInteriorObstruction DayltgHitObstruction DayltgInteriorIllum DayltgInteriorMapIllum DayltgInteriorTDDIllum DayltgInterReflectedIllum DayltgInterReflectedIllumComplexFenestration DayltgInterReflIllFrIntWins DayltgLuminousEfficacy DayltgPierceSurface DayltgSetupAdjZoneListsAndPointers DayltgSkyLuminance DayltgSurfaceLumFromSun dCheckScheduleValueMinMax1 dCheckScheduleValueMinMax2 DeallocateLoadComponentArrays DebugRootFinder DecodeHHMMField DecodeMonDayHrMin DeflectionTemperatures DeflectionWidths DegradF DElightDaylightCoefficients DElightDaylightCoefficients DElightElecLtgCtrl DElightElecLtgCtrl DElightFreeMemory DElightFreeMemory DElightInputGenerator DElightInputGenerator DElightOutputGenerator DElightOutputGenerator DensityCFSFillGas Depth DERIV DetailsForSurfaces DetectOscillatingZoneTemp DetermineAzimuthAndTilt DetermineBranchFlowRequest DetermineBuildingFloorArea DetermineDateTokens DetermineFrequency DetermineIndexGroupFromMeterGroup DetermineIndexGroupKeyFromMeterName DetermineMaxBackSurfaces DetermineMeterIPUnits DetermineMinuteForReporting DeterminePolygonOverlap DetermineShadowingCombinations DetermineSunUpDown DevelopMesh DiffuseAverage DiffuseAverageProfAngGnd DiffuseAverageProfAngSky DisplayMaterialRoughness DisplayNumberandString DisplaySimDaysProgress DisplayString distance DistributeBBElecRadGains DistributeBBRadGains DistributeBBSteamRadGains DistributeHTRadGains DistributePlantLoad DistributePressureOnBranch DistributeTDDAbsorbedSolar DistributeUserDefinedPlantLoad DL_RES_r2 DLAG DOE2DXCoilHumRatResidual DOE2DXCoilHumRatResidual DOE2DXCoilResidual DOE2DXCoilResidual DOE2DXCoilResidual DoEndOfIterationOperations DomainRectangle_Contains DOMakeUPPERCase DoOneTimeInitializations DOSameString DoShadeControl DoStartOfTimeStepInitializations DownInterpolate4HistoryValues DumpAirLoopStatistics DumpCurrentLineBuffer DUMPVD DUMPVR DXCoilCyclingHumRatResidual DXCoilCyclingHumRatResidual DXCoilCyclingResidual DXCoilCyclingResidual DXCoilVarSpeedHumRatResidual DXCoilVarSpeedHumRatResidual DXCoilVarSpeedResidual DXCoilVarSpeedResidual DXFOut DXFOutLines DXFOutWireFrame DXHeatingCoilResidual DXHeatingCoilResidual DXHeatingCoilResidual DynamicClothingModel DynamicExtConvSurfaceClassification DynamicIntConvSurfaceClassification EchoOutActuatorKeyChoices EchoOutInternalVariableChoices EffectiveEPSLB EffectiveEPSLF EIRChillerHeatRecovery EN673ISO10292 EncodeMonDayHrMin EndEnergyPlus EndUniqueNodeCheck EnthalpyResidual epElapsedTime epGetTimeUsed epGetTimeUsedperCall epStartTime epStopTime epSummaryTimes eptime EQLWindowInsideEffectiveEmiss EQLWindowOutsideEffectiveEmiss EQLWindowSurfaceHeatBalance EquationsSolver ERF EstimateHEXSurfaceArea EvalInsideMovableInsulation EvalOutsideMovableInsulation EvaluateAdiabaticSurfaceTemperature EvaluateBasementCellTemperature EvaluateCellNeighborDirections evaluateChargeBlock evaluateChargeSimple EvaluateExpression EvaluateExtHcModels EvaluateFarfieldBoundaryTemperature EvaluateFarfieldCharacteristics EvaluateFieldCellTemperature EvaluateGroundSurfaceTemperature EvaluateIntHcModels EvaluateLoopSetPointLoad EvaluateNeighborCharacteristics evaluateQualify evaluateRatchet EvaluateSoilRhoCp EvaluateStack EvolveParaUCSDCV ExitCalcController ExpandComplexState ExpressAsCashFlows ExtendObjectDefinition ExteriorBCEqns ExternalInterfaceExchangeVariables ExternalInterfaceInitializeErlVariable ExternalInterfaceSetErlVariable ExternalInterfaceSetSchedule ExtOrIntShadeNaturalFlow Fabric_EstimateDiffuseProps FACSKY FalsePositionMethod FEQX FI FigureACAncillaries FigureAirEnthalpy FigureAirHeatCap FigureAuxilHeatGasHeatCap FigureBeamSolDiffuseReflFactors FigureBeamSolSpecularReflFactors FigureConstGradPattern FigureDayltgCoeffsAtPointsForSunPosition FigureDayltgCoeffsAtPointsForWindowElements FigureDayltgCoeffsAtPointsSetupForWindow FigureElectricalStorageZoneGains FigureFuelCellZoneGains FigureFuelEnthalpy FigureFuelHeatCap FigureGaseousWaterEnthalpy FigureHeightPattern FigureHXleavingGasHeatCap FigureInverterZoneGains FigureLHVofFuel FigureLiquidWaterEnthalpy FigureLiquidWaterHeatCap FigureMapPointDayltgFactorsToAddIllums FigureMicroCHPZoneGains FigureNDheightInZone FigurePowerConditioningLosses FigureProductGasesEnthalpy FigureProductGasHeatCap FigureRefPointDayltgFactorsToAddIllums FigureRefrigerationZoneGains FigureSolarBeamAtTimestep FigureSunCosines FigureSurfMapPattern FigureTDDZoneGains FigureTransformerZoneGains FigureTransientConstraints FigureTwoGradInterpPattern FILJAC FillBasisElement FillDefaultsSWP FillRemainingPredefinedEntries FillWeatherPredefinedEntries film filmg filmi filmPillar FILSKY FinalizeCFS FinalizeCFSLAYER FinalRateCoils FindAirLoopBranchConnection FindAirPlantCondenserLoopFromBranchList FindAllNumbersinList FindArrayIndex FindCompSPInput FindCompSPLoad FindCondenserLoopBranchConnection FindControlledZoneIndexFromSystemNodeNumberForZone FindDeltaTempRangeInput FindDemandSideMatch FindEMSVariable FindFirstLastPtr FindFirstRecord FindGlycol FindHXDemandSideLoopFlow FindInBasis FindItem FindIteminList FindIteminSortedList FindItemInVariableList FindLoopSideInCallingOrder FindNextRecord FindNonSpace FindNumberinList FindOAMixerMatchForOASystem FindPlantLoopBranchConnection FindRangeBasedOrUncontrolledInput FindRangeVariable FindRefrigerant FindRootSimpleController FindStratifiedTankSensedTemp FindTariffIndex FindTDDPipe FindUnitNumber FinishDebugOutputFiles FixViewFactors FluidCellInformation_ctor FM_BEAM FM_DIFF FM_F FNU forcedventilation FourPipeInductionUnitHasMixer FourPipeIUCoolingResidual FourPipeIUHeatingResidual FRA FrostControl FrostControlSetPointLimit FrostControlSetPointLimit FuelCellProductGasEnthResidual FUN FuncDetermineCoolantWaterExitTemp FuncDetermineCWMdotForInternalFlowControl FuncDetermineEngineTemp FV GasElecHeatingCoilResidual GASSES90 GassesLow GatherBEPSResultsForTimestep GatherBinResultsForTimestep GatherComponentLoadsHVAC GatherComponentLoadsIntGain GatherComponentLoadsSurfAbsFact GatherComponentLoadsSurface GatherForEconomics GatherForPredefinedReport GatherHeatGainReport GatherMonthlyResultsForTimestep GatherPeakDemandForTimestep GatherSourceEnergyEndUseResultsForTimestep GaussElimination generate_ears GenerateDElightDaylightCoefficients GenerateDElightDaylightCoefficients GeneratorPowerOutput GenericCrack GenOutputVariablesAuditReport Get2DMatrix Get2DMatrixDimensions GET_COMMAND GET_COMMAND_ARGUMENT Get_Environment_Variable GetActualDXCoilIndex GetAirBranchIndex GetAirFlowFlag GetAirflowNetworkInput GetAirHeatBalanceInput GetAirLoopAvailabilityManager GetAirModelDatas GetAirNodeData GetAirPathData GetAngleFactorList GetATMixer GetATMixerOutNode GetATMixerPriNode GetATMixers GetATMixerSecNode GetAttShdSurfaceData GetAverageTempByType GetBaseboardInput GetBaseboardInput GetBasementFloorHeatFlux GetBasementWallHeatFlux GetBLASTAbsorberInput GetBoilerInput GetBoilerInput GetBranchData GetBranchFanTypeName GetBranchFlow GetBranchInput GetBranchList GetBranchListInput GetBuildingData GetCBVAV GetCellWidths GetCellWidthsCount GetChildrenData GetChillerheaterInput GetCoilAirFlowRate GetCoilAirFlowRateVariableSpeed GetCoilAirInletNode GetCoilAirOutletNode GetCoilAvailScheduleIndex GetCoilCapacity GetCoilCapacity GetCoilCapacity GetCoilCapacity GetCoilCapacity GetCoilCapacity GetCoilCapacityByIndexType GetCoilCapacityVariableSpeed GetCoilCondenserInletNode GetCoilControlNodeNum GetCoilGroupTypeNum GetCoilIndex GetCoilIndex GetCoilIndex GetCoilIndexVariableSpeed GetCoilInletNode GetCoilInletNode GetCoilInletNode GetCoilInletNode GetCoilInletNode GetCoilInletNode GetCoilInletNodeVariableSpeed GetCoilMaxSteamFlowRate GetCoilMaxWaterFlowRate GetCoilMaxWaterFlowRate GetCoilMaxWaterFlowRate GetCoilObjectTypeNum GetCoilOutletNode GetCoilOutletNode GetCoilOutletNode GetCoilOutletNode GetCoilOutletNode GetCoilOutletNode GetCoilOutletNodeVariableSpeed GetCoilSteamInletNode GetCoilSteamOutletNode GetCoilTypeNum GetCoilWaterInletNode GetCoilWaterInletNode GetCoilWaterOutletNode GetColumnUsingTabs GetComfortSetpoints GetComponentData GetCondFDInput GetConductivityGlycol GetConnectorList GetConnectorListInput GetConstCOPChillerInput GetConstructData GetControlledZoneIndex GetControllerActuatorNodeNum GetControllerInput GetCoolBeams GetCoolingCoilTypeNameAndIndex GetCooltower GetCostEstimateInput GetCrossVentData GetCTGeneratorInput GetCTGeneratorResults GetCurrentHVACTime GetCurrentMeterValue GetCurrentScheduleValue GetCurveCheck GetCurveIndex GetCurveInput GetCurveMinMaxValues GetCurveName GetCurveObjectTypeNum GetCurveType GetCustomMeterInput GetDaylightingParametersDetaild GetDaylightingParametersInput GetDayScheduleIndex GetDemandManagerInput GetDemandManagerListInput GetDensityGlycol GetDesiccantDehumidifierInput GetDesignDayData GetDesignLightingLevelForZone GetDetShdSurfaceData GetDirectAirInput GetDisplacementVentData GetDSTData GetDualDuctInput GetDualDuctOutdoorAirRecircUse GetDuctInput GetDXCoilAirFlow GetDXCoilAvailSchPtr GetDXCoilBypassedFlowFrac GetDXCoilCapFTCurveIndex GetDXCoilIndex GetDXCoilNumberOfSpeeds GetDXCoils GetDXCoolingSystemInput GetDXHeatPumpSystemInput GetEarthTube GetElecReformEIRChillerInput GetElectricBaseboardInput GetElectricChillerInput GetElectricEIRChillerInput GetEMSInput GetEngineDrivenChillerInput GetEnvironmentalImpactFactorInfo GetEvapFluidCoolerInput GetEvapInput GetExhaustAbsorberInput GetExhaustAirInletNode GetExteriorEnergyUseInput GetExtVentedCavityIndex GetExtVentedCavityIndex GetExtVentedCavityTsColl GetExtVentedCavityTsColl GetFanAvailSchPtr GetFanCoilIndex GetFanCoilInletAirNode GetFanCoilMixedAirNode GetFanCoilOutAirNode GetFanCoilReturnAirNode GetFanCoilUnits GetFanCoilZoneInletAirNode GetFanDesignVolumeFlowRate GetFanIndex GetFanIndexForTwoSpeedCoil GetFanInletNode GetFanInput GetFanOutletNode GetFanPower GetFanSpeedRatioCurveIndex GetFanType GetFanVolFlow GetFarfieldTemp GetFirstBranchInletNodeName GetFluidCoolerInput GetFluidDensityTemperatureLimits GetFluidHeatExchangerInput GetFluidPropertiesData GetFluidSpecificHeatTemperatureLimits GetFrameAndDividerData GetFuelCellGeneratorInput GetFuelCellGeneratorResults GetFuelFactorInfo GetFurnaceInput GetGasAbsorberInput GetGeneratorFuelSupplyInput GetGeometryParameters GetGlycolNameByIndex GetGroundheatExchangerInput GetGroundReflectances GetGroundTemps GetGshpInput GetGshpInput GetGTChillerInput GetHeatBalanceInput GetHeatBalHAMTInput GetHeatExchangerObjectTypeNum GetHeatingCoilIndex GetHeatingCoilInput GetHeatingCoilNumberOfStages GetHeatingCoilPLFCurveIndex GetHeatingCoilTypeNum GetHeatReclaimSourceIndex GetHeatRecoveryInput GetHighTempRadiantSystem GetHPCoolingCoilIndex GetHTSubSurfaceData GetHTSurfaceData GetHTSurfExtVentedCavityData GetHumidifierInput GetHVACSingleDuctSysIndex GetHWBaseboardInput GetHXAssistedCoolingCoilInput GetHXCoilAirFlowRate GetHXCoilType GetHXCoilTypeAndName GetHXDXCoilIndex GetHXDXCoilName GetHybridVentilationControlStatus GetHybridVentilationInputs GetICEGeneratorResults GetICEngineGeneratorInput GetIceStorageInput GetIDFRecordsStats GetIndirectAbsorberInput GetIndUnits GetInputEconomicsChargeBlock GetInputEconomicsChargeSimple GetInputEconomicsComputation GetInputEconomicsCurrencyType GetInputEconomicsQualify GetInputEconomicsRatchet GetInputEconomicsTariff GetInputEconomicsVariable GetInputForLifeCycleCost GetInputFuelAndPollutionFactors GetInputLifeCycleCostNonrecurringCost GetInputLifeCycleCostParameters GetInputLifeCycleCostRecurringCosts GetInputLifeCycleCostUseAdjustment GetInputLifeCycleCostUsePriceEscalation GetInputTabularMonthly GetInputTabularPredefined GetInputTabularStyle GetInputTabularTimeBins GetInputViewFactors GetInputViewFactorsbyName GetInputZoneEvaporativeCoolerUnit GetInstantMeterValue GetInternalBranchData GetInternalHeatGainsInput GetInternalVariableValue GetInternalVariableValue GetInternalVariableValueExternalInterface GetInternalVariableValueExternalInterface GetInterpolatedSatProp GetInterpValue GetIntMassSurfaceData GetLastBranchOutletNodeName GetLastWord GetLightWellData GetListOfObjectsInIDD GetListofSectionsinInput GetLocationInfo GetLoopMixer GetLoopSidePumpIndex GetLoopSplitter GetLowTempRadiantSystem GetMaterialData GetMatrixInput getMaxAndSum GetMeteredVariables GetMeterIndex GetMeterResourceType GetMicroCHPGeneratorInput GetMicroCHPGeneratorResults GetMinOATCompressor GetMixerInput GetMixerInput GetMoistureBalanceEMPDInput GetMonthlyCostForResource GetMovableInsulationData GetMSHeatPumpInput GetMTGeneratorExhaustNode GetMTGeneratorInput GetMTGeneratorResults GetMundtData GetNewUnitNumber GetNextEnvironment GetNodeConnectionType GetNodeList GetNodeListsInput GetNodeNums GetNTUforCrossFlowBothUnmixed GetNumberOfSchedules GetNumberOfSurfaceLists GetNumberOfSurfListVentSlab GetNumChildren GetNumMeteredVariables GetNumOAControllers GetNumOAMixers GetNumOASystems GetNumObjectsFound GetNumObjectsInIDD GetNumRangeCheckErrorsFound GetNumSectionsFound GetNumSectionsinInput GetNumSegmentsForHorizontalTrenches GetNumSplitterMixerInConntrList GetOACompListNumber GetOACompName GetOACompType GetOACompTypeNum GetOAControllerInputs GetOAMixerIndex GetOAMixerInletNodeNumber GetOAMixerInputs GetOAMixerMixedNodeNumber GetOAMixerNodeNumbers GetOAMixerReliefNodeNumber GetOAMixerReturnNodeNumber GetOARequirements GetOASysControllerListIndex GetOASysNumCoolingCoils GetOASysNumHeatingCoils GetOASysNumSimpControllers GetOASystemNumber GetObjectDefInIDD GetObjectDefMaxArgs GetObjectItem GetObjectItemfromFile GetObjectItemNum GetOnlySingleNode GetOperationSchemeInput GetOSCData GetOSCMData GetOutAirNodesInput GetOutdoorAirUnitInputs GetOutdoorAirUnitOutAirNode GetOutdoorAirUnitReturnAirNode GetOutdoorAirUnitZoneInletNode GetOutsideAirSysInputs GetOutsideEnergySourcesInput GetParentData GetPipeInput GetPipesHeatTransfer GetPipingSystemsInput GetPIUs GetPlantAvailabilityManager GetPlantInput GetPlantLoopData GetPlantOperationInput GetPlantProfileInput GetPlantSizingInput GetPlantValvesInput GetPollutionFactorInput GetPondGroundHeatExchanger GetPowerManagerInput GetPressureCurveTypeAndIndex GetPressureSystemInput GetPreviousHVACTime GetProjectControlData GetProjectData GetPTUnit GetPTUnitMixedAirNode GetPTUnitOutAirNode GetPTUnitReturnAirNode GetPTUnitZoneInletAirNode GetPumpInput GetPurchasedAir GetPurchasedAirMixedAirHumRat GetPurchasedAirMixedAirTemp GetPurchasedAirOutAirMassFlow GetPurchasedAirReturnAirNode GetPurchasedAirZoneInletAirNode GetPVGeneratorResults GetPVInput GetPVTcollectorsInput GetPVTThermalPowerProduction GetQualityRefrig GetRecordLocations GetRectDetShdSurfaceData GetRectSubSurfaces GetRectSurfaces GetRefrigeratedRackIndex GetRefrigerationInput GetReportVariableInput GetRequiredMassFlowRate GetResidCrossFlowBothUnmixed GetResourceTypeChar GetReturnAirNodeForZone GetReturnAirPathInput GetRoomAirModelParameters GetRunPeriodData GetRunPeriodDesignData GetRuntimeLanguageUserInput GetSatDensityRefrig GetSatEnthalpyRefrig GetSatPressureRefrig GetSatSpecificHeatRefrig GetSatTemperatureRefrig GetScheduledSurfaceGains GetScheduleIndex GetScheduleMaxValue GetScheduleMinValue GetScheduleName GetScheduleType GetScheduleValuesForDay GetSecondaryInletNode GetSecondaryOutletNode GetSetPointManagerInputs GetShadingSurfReflectanceData GetShadowingInput GetShelfInput GetSimpleAirModelInputs GetSimpleShdSurfaceData GetSimpleWatertoAirHPInput GetSingleDayScheduleValues GetSiteAtmosphereData GetSizingParams GetSnowGroundRefModifiers GetSolarCollectorInput GetSpecialDayPeriodData GetSpecificHeatGlycol getSpecificUnitDivider getSpecificUnitIndex getSpecificUnitMultiplier GetSplitterInput GetSplitterInput GetSplitterNodeNumbers GetSplitterOutletNumber GetStandAloneERV GetStandAloneERVNodes GetStandAloneERVOutAirNode GetStandAloneERVReturnAirNode GetStandAloneERVZoneInletAirNode GetStandardMeterResourceType GetSteamBaseboardInput GetSteamCoilAvailScheduleIndex GetSteamCoilControlNodeNum GetSteamCoilIndex GetSteamCoilInput GetSTM GetStormWindowData GetSupHeatDensityRefrig GetSupHeatEnthalpyRefrig GetSupHeatPressureRefrig GetSupplyAirFlowRate GetSupplyAirFlowRate GetSupplyAirInletNode GetSupplyInletNode GetSupplyOutletNode GetSurfaceCountForOSCM GetSurfaceData GetSurfaceGroundHeatExchanger GetSurfaceHeatTransferAlgorithmOverrides GetSurfaceIndecesForOSCM GetSurfaceListsInputs GetSurfHBDataForMundtModel GetSurfHBDataForTempDistModel GetSysAvailManagerInputs GetSysAvailManagerListInputs GetSysInput GetSystemNodeNumberForZone GetSystemSizingInput GetTDDInput GetTESCoilIndex GetTESCoilInput GetThermalChimney GetTowerInput GetTranspiredCollectorIndex GetTranspiredCollectorInput GetTypeOfCoil GetUFADZoneData GetUnitarySystemDXCoolingCoilIndex GetUnitarySystemInput GetUnitarySystemOAHeatCoolCoil GetUnitConversion GetUnitHeaterInput GetUnitsString GetUnitSubString GetUnitVentilatorInput GetUnitVentilatorMixedAirNode GetUnitVentilatorOutAirNode GetUnitVentilatorReturnAirNode GetUnitVentilatorZoneInletAirNode GetUserConvectionCoefficients GetUserDefinedComponents GetUserDefinedOpSchemeInput GetUserDefinedPatternData GetUTSCTsColl GetVariableKeyCountandType GetVariableKeyCountandType GetVariableKeys GetVariableKeys GetVariableTypeAndIndex GetVariableUnitsString GetVarSpeedCoilInput GetVentilatedSlabInput GetVertices GetViscosityGlycol GetVRFInput GetVSCoilCondenserInletNode GetVSCoilMinOATCompressor GetVSCoilNumOfSpeeds GetWaterCoilAvailScheduleIndex GetWaterCoilCapacity GetWaterCoilIndex GetWaterCoilInput GetWaterMainsTemperatures GetWaterManagerInput GetWaterSource GetWaterThermalTankInput GetWatertoAirHPInput GetWatertoWaterHPInput GetWaterUseInput GetWeatherProperties GetWeatherStation GetWindowAC GetWindowACMixedAirNode GetWindowACOutAirNode GetWindowACReturnAirNode GetWindowACZoneInletAirNode GetWindowGapAirflowControlData GetWindowGlassSpectralData GetWindowShadingControlData GetWindTurbineInput GetWrapperInput GetWTGeneratorResults GetZoneAirDistribution GetZoneAirLoopEquipment GetZoneAirSetpoints GetZoneAndZoneListNames GetZoneContaminanInputs GetZoneContaminanSetpoints GetZoneData GetZoneDehumidifierInput GetZoneDehumidifierNodeNumber GetZoneEqAvailabilityManager GetZoneEquipment GetZoneEquipmentData GetZoneEquipmentData1 GetZoneInfilAirChangeRate GetZoneLoads GetZonePlenumInput GetZoneSizingInput GLtoAMB GoAhead guess HasFractionalScheduleValue hatter HCInWindowStandardRatings HConvGap HcUCSDCV HcUCSDDV HcUCSDUF HeatingCoilVarSpeedCycResidual HeatingCoilVarSpeedResidual HeatPumpRunFrac HeatPumpRunFrac HeatPumpRunFrac HeatWatertoAirHPTempResidual Height HEMINT HIC_ASHRAE HotWaterCoilResidual HotWaterCoilResidual HotWaterCoilResidual HotWaterCoilResidual HotWaterCoilResidual HotWaterHeatingCoilResidual HRadPar HTRANS HTRANS0 HTRANS1 HWBaseboardUAResidual HXAssistDXCoilResidual HXAssistedCoolCoilHRResidual HXAssistedCoolCoilHRResidual HXAssistedCoolCoilTempResidual HXAssistedCoolCoilTempResidual HXDemandSideLoopFlowResidual HybridVentilationControl IAM iCheckScheduleValue ICSCollectorAnalyticalSoluton iGetCoilAirOutletNode iGetCoilSteamInletNode iGetCoilSteamOutletNode INCLOS incrementEconVar IncrementInstMeterCache incrementSteps incrementTableEntry InitAirflowNetwork InitAirflowNetworkData InitAirHeatBalance InitAirLoops InitAirLoopSplitter InitAirMixer InitAirTerminalUserDefined InitAirZoneReturnPlenum InitAirZoneSupplyPlenum InitATMixer InitBaseboard InitBaseboard InitBLASTAbsorberModel InitBoiler InitBoiler InitBoreholeHXSimVars InitBSDFWindows InitCBVAV InitCoilUserDefined InitComplexWindows InitComponentNodes InitConductionTransferFunctions InitConnections InitConstCOPChiller InitController InitCoolBeam InitCTGenerators InitCurveReporting InitDaylightingDevices InitDemandManagers InitDesiccantDehumidifier InitDetailedIceStorage InitDirectAir InitDualDuct InitDuct InitDXCoil InitDXCoolingSystem InitDXHeatPumpSystem InitElecReformEIRChiller InitElectricBaseboard InitElectricChiller InitElectricEIRChiller InitEMS InitEMSControlledConstructions InitEMSControlledSurfaceProperties InitEnergyReports InitEngineDrivenChiller InitEquivalentLayerWindowCalculations InitEvapCooler InitEvapFluidCooler InitExhaustAbsorber InitExteriorConvectionCoeff InitFan InitFanCoilUnits InitFluidCooler InitFluidHeatExchanger InitFuelCellGenerators InitFurnace InitGasAbsorber InitGlassOpticalCalculations InitGshp InitGshp InitGTChiller InitHeatBalance InitHeatBalFiniteDiff InitHeatBalHAMT InitHeatingCoil InitHeatRecovery InitHighTempRadiantSystem InitHumidifier InitHWBaseboard InitHXAssistedCoolingCoil InitHybridVentSysAvailMgr InitialInitHeatBalFiniteDiff InitializeCFSDaylighting InitializeCFSStateData InitializeComponentSizingTable InitializeConstructionsTables InitializeDaylightMapTables InitializeEnvironmentPeriodsTable InitializeErrorsTable InitializeGlycolTempLimits InitializeHeatTransferPipes InitializeIndexes InitializeIndexes InitializeLoops InitializeMaterialsTable InitializeMeters initializeMonetaryUnit InitializeNominalBaseboardHeatTable InitializeNominalElectricEquipmentTable InitializeNominalGasEquipmentTable InitializeNominalHotWaterEquipmentTable InitializeNominalInfiltrationTable InitializeNominalLightingTable InitializeNominalOtherEquipmentTable InitializeNominalPeopleTable InitializeNominalSteamEquipmentTable InitializeNominalVentilationTable InitializeOperatingMode InitializeOutput InitializePipes InitializePredefinedMonthlyTitles InitializePsychRoutines InitializePumps InitializeRefrigerantLimits InitializeReportMeterDataDictionaryTable InitializeReportMeterDataTables InitializeReportVariableDataDictionaryTable InitializeReportVariableDataTables InitializeRoomAirModelTable InitializeRootFinder InitializeRuntimeLanguage InitializeSchedulesTable InitializeSimulationsTable InitializeSQLiteTables InitializeSurfacesTable InitializeSystemSizingTable InitializeTabularDataTable InitializeTabularDataTable InitializeTabularDataView InitializeTabularDataView InitializeTabularMonthly InitializeTimeIndicesTable InitializeViews InitializeWeather InitializeZoneGroupTable InitializeZoneInfoTable InitializeZoneListTable InitializeZoneSizingTable InitICEngineGenerators InitIndirectAbsorpChiller InitIndUnit InitInteriorConvectionCoeffs InitInteriorRadExchange InitInternalHeatGains InitIntSolarDistribution InitLoadBasedControl InitLoadDistribution InitLowTempRadiantSystem InitMicroCHPNoNormalizeGenerators InitMoistureBalanceEMPD InitMSHeatPump InitMTGenerators InitMundtModel InitOAController InitOAMixer InitOneTimePlantSizingInfo InitOutAirNodes InitOutdoorAirUnit InitOutsideAirSys InitPipesHeatTransfer InitPipingSystems InitPIU InitPlantProfile InitPlantUserComponent InitPlantValves InitPollutionMeterReporting InitPondGroundHeatExchanger InitPressureDrop InitPTUnit InitPurchasedAir InitPVTcollectors InitRefrigeration InitRefrigerationPlantConnections InitReturnAirPath InitSecretObjects InitSetPointManagers InitSimpleIceStorage InitSimpleMixingConvectiveHeatGains InitSimpleWatertoAirHP InitSimVars InitSimVars InitSimVars InitSimVars InitSolarCalculations InitSolarCollector InitSolarHeatGains InitSolReflRecSurf InitStandAloneERV InitSteamBaseboard InitSteamCoil InitSurfaceGroundHeatExchanger InitSurfaceHeatBalance InitSys InitSysAvailManagers InitSystemOutputRequired InitTempDistModel InitTESCoil InitThermalAndFluxHistories InitThermalComfort InitTower InitTranspiredCollector InitTRNSYSPV InitUCSDCV InitUCSDDV InitUCSDUF InitUniqueNodeCheck InitUnitarySystems InitUnitHeater InitUnitVentilator InitVarSpeedCoil InitVentilatedSlab InitVRF InitWaterCoil InitWaterSource InitWaterThermalTank InitWatertoAirHP InitWatertoWaterHP InitWindowAC InitWindTurbine InitWrapper InitZoneAirLoopEquipment InitZoneAirSetpoints InitZoneAirUserDefined InitZoneContSetpoints InitZoneDehumidifier InitZoneEquipment InitZoneEvaporativeCoolerUnit InPolygon InsertCurrencySymbol int_times_vector INTCPT Integer_IsInRange IntegerIsWithinTwoValues IntegerToString InterConnectTwoPlantLoopSides InteriorBCEqns InteriorNodeEqns InternalRangeCheck InternalSetupTankDemandComponent InternalSetupTankSupplyComponent interp INTERP InterpBlind InterpDefValuesForGlycolConc Interpolate Interpolate_Lagrange InterpolateBetweenFourValues InterpolateBetweenTwoValues InterpolatePipeTransBeam InterpProfAng InterpProfSlatAng InterpretWeatherDataLine InterpSlatAng InterpSw InterpValuesForGlycolConc IntInterfaceNodeEqns IntPreDefTableEntry IntToStr Invert3By3Matrix InvertMatrix InvJulianDay IPTrimSigDigits iRoundSigDigits IS_BEAM IS_DIFF IS_DSRATIO IS_F IS_LWP IS_OPENNESS IS_SWP isCompLoadRepReq IsControlledShade IsConverged_CurrentToPrevIteration IsConverged_PipeCurrentToPrevIteration IsCurveInputTypeValid IsCurveOutputTypeValid isExternalInterfaceErlVariable IsGlazeLayerX IsGZSLayer isInQuadrilateral IsInRange isInTriangle IsLeapYear IsNodeOnSetPtManager IsParentObject IsParentObjectCompSet IsShadingLayer IssueSevereAlphaInputFieldError IssueSevereInputFieldError IssueSevereRealInputFieldError IsValidConnectionType IsVBLayer isWithinRange ITERATE IterateRootFinder iTrimSigDigits JGDate JulianDay LClimb LDSumMax LDSumMean LEEDtariffReporting LimitCoilCapacity LimitController LimitTUCapacity LinesOut linint LoadEquipList LoadInterface LogicalToInteger LogicalToInteger LogPlantConvergencePoints lookupOperator LookUpScheduleValue LookUpSeason LookupSItoIP lubksb LUBKSB ludcmp LUDCMP LUdecomposition LUsolution MakeAnchorName MakeHVACTimeIntervalString MakeMirrorSurface MakeRectangularVertices MakeRelativeRectangularVertices MakeTransition MakeUPPERCase ManageAirflowNetworkBalance ManageAirHeatBalance ManageAirLoops ManageAirModel ManageBranchInput ManageControllers ManageCoolTower ManageDemand ManageEarthTube ManageElectCenterStorageInteractions ManageElectricLoadCenters ManageElectStorInteractions ManageEMS ManageExteriorEnergyUse ManageGeneratorControlState ManageGeneratorFuelFlow ManageHeatBalance ManageHeatBalFiniteDiff ManageHeatBalHAMT ManageHVAC ManageHybridVentilation ManageInsideAdaptiveConvectionAlgo ManageInternalHeatGains ManageInverter ManageMundtModel ManageNonZoneEquipment ManageOutsideAdaptiveConvectionAlgo ManageOutsideAirSystem ManagePlantLoadDistribution ManagePlantLoops ManageRefrigeratedCaseRacks ManageSetPoints ManageSimulation ManageSingleCommonPipe ManageSizing ManageSurfaceHeatBalance ManageSystemAvailability ManageThermalChimney ManageThermalComfort ManageTransformers ManageTwoWayCommonPipe ManageUCSDCVModel ManageUCSDDVModel ManageUCSDUFModels ManageUserDefinedPatterns ManageWater ManageWaterInits ManageWeather ManageZoneAirLoopEquipment ManageZoneAirUpdates ManageZoneContaminanUpdates ManageZoneEquipment MapExtConvClassificationToHcModels MapIntConvClassificationToHcModels MarkNode MatchAndSetColorTextString MatchPlantSys MatrixIndex matrixQBalance MeshPartition_CompareByDimension MeshPartition_SelectionSort MeshPartitionArray_Contains MinePlantStructForInfo MixedAirControlTempResidual ModifyWindow Modulus MonthToMonthNumber MovingAvg MRXINV MSHPCyclingResidual MSHPHeatRecovery MSHPVarSpeedResidual MultiModeDXCoilHumRatResidual MultiModeDXCoilHumRatResidual MultiModeDXCoilResidual MultiModeDXCoilResidual MultiModeDXCoilResidual MultiSpeedDXCoolingCoilStandardRatings MultiSpeedDXHeatingCoilStandardRatings MULTOL MyPlantSizingIndex NeighborInformationArray_Value NETRAD NewEMSVariable NewExpression newPreDefColumn newPreDefReport newPreDefSubTable NEWTON NodeHasSPMCtrlVarType NormalArea NumBranchesInBranchList NumCompsInBranch nusselt NusseltNumber OpenEPlusWeatherFile OPENNESS_LW OpenOutputFiles OpenOutputTabularFile OpenWeatherFile OPERATOR (*) OPERATOR (+) OPERATOR (-) OPERATOR (.dot.) OPERATOR (.twodcross.) OPERATOR (.twoddot.) OPERATOR (/) ORDER OutBaroPressAt OutDewPointTempAt OutDryBulbTempAt OutsidePipeHeatTransCoef OutWetBulbTempAt P01 PanesDeflection ParametricObjectsCheck parseComputeLine ParseExpression ParseStack ParseTime PartLoadFactor PassiveGapNusseltNumber PassPressureAcrossInterface PassPressureAcrossMixer PassPressureAcrossSplitter PD_BEAM PD_BEAM_CASE_I PD_BEAM_CASE_II PD_BEAM_CASE_III PD_BEAM_CASE_IV PD_BEAM_CASE_V PD_BEAM_CASE_VI PD_DIFF PD_LW PD_LWP PD_SWP PerformanceCurveObject PerformanceTableObject PerformIterationLoop PerformPipeCellSimulation PerformPipeCircuitSimulation PerformSolarCalculations PerformTemperatureFieldUpdate PierceSurface PierceSurfaceVector PipeCircuitInfo_InitInOutCells PipeSegmentInfo_InitPipeCells PIUInducesPlenumAir PIUnitHasMixer PlaneEquation PlantHalfLoopSolver PlantMassFlowRatesFunc PLRResidual PLRResidual PLRResidualMixedTank PLRResidualStratifiedTank PMVResidual POLY1F POLY2F POLYF polygon_contains_point_2d popStack pos PostIPProcessing POWER PreDefTableEntry PredictSystemLoads PredictZoneContaminants PreparePipeCircuitSimulation PrepDebugFilesAndVariables PreProcessorCheck PrepVariablesISO15099 PreScanReportingVariables PresProfile PressureCurveValue ProcessDataDicFile ProcessDateString ProcessEMSInput ProcessEPWHeader ProcessForDayTypes ProcessInput ProcessInputDataFile ProcessIntervalFields ProcessMinMaxDefLine ProcessNumber ProcessScheduleInput ProcessSurfaceVertices ProcessTokens ProduceMinMaxString ProduceMinMaxStringWStartMinute ProduceRDDMDD ProfileAngle PropagateResolvedFlow PStack PsyCpAirFnWTdb PsyHfgAirFnWTdb PsyHFnTdbRhPb PsyHFnTdbW PsyHgAirFnWTdb PsyPsatFnTemp PsyPsatFnTemp_raw PsyRhFnTdbRhov PsyRhFnTdbRhovLBnd0C PsyRhFnTdbWPb PsyRhoAirFnPbTdbW PsyRhovFnTdbRh PsyRhovFnTdbRhLBnd0C PsyRhovFnTdbWPb PsyTdbFnHW PsyTdpFnTdbTwbPb PsyTdpFnWPb PsyTsatFnHPb PsyTsatFnPb PsyTwbFnTdbWPb PsyTwbFnTdbWPb_raw PsyVFnTdbWPb PsyWFnTdbH PsyWFnTdbRhPb PsyWFnTdbTwbPb PsyWFnTdpPb psz Pt2Plane PullCompInterconnectTrigger PumpDataForTable PushBranchFlowCharacteristics PushInnerTimeStepArrays pushStack PushSystemTimestepHistories PushSystemTimestepHistories PushZoneTimestepHistories PushZoneTimestepHistories QsortC QsortPartition RadialCellInfo_XY_CrossSectArea RadialCellInformation_ctor RadialSizing_Thickness Rainflow RangeCheck RB_BEAM RB_DIFF RB_F RB_LWP RB_SWP rCheckDayScheduleValueMinMax rCheckScheduleValue rCheckScheduleValueMinMax1 rCheckScheduleValueMinMax2 ReadEnergyMeters ReadEPlusWeatherForDay ReadGeneralDomainInputs ReadHorizontalTrenchInputs ReadINIFile ReadInputLine ReadPipeCircuitInputs ReadPipeSegmentInputs ReadTableData ReadUserWeatherInput ReadWeatherForDay Real_ConstrainTo Real_IsInRange real_times_vector ReAllocateAndPreserveOutputVariablesForSimulation ReallocateIntegerArray ReallocateIVar ReallocateRealArray ReallocateRVar RealPreDefTableEntry RealToStr RecKeepHeatBalance RecordOutput RectangleF_Contains ReformEIRChillerCondInletTempResidual ReformEIRChillerHeatRecovery RegisterNodeConnection RegisterPlantCompDesignFlow RegulateCondenserCompFlowReqOp ReInitPlantLoopsAtFirstHVACIteration RemoveSpaces RemoveTrailingZeros reorder ReplaceBlanksWithUnderscores ReplaceBlanksWithUnderscores ReportAirflowNetwork ReportAirHeatBalance ReportAirLoopConnections ReportAirTerminalUserDefined ReportAndTestGlycols ReportAndTestRefrigerants ReportBaseboard ReportBaseboard ReportCBVAV ReportChillerIPLV ReportCoilUserDefined ReportCompSetMeterVariables ReportController ReportCoolBeam ReportCoolTower ReportCTFs ReportCWTankInits ReportDemandManagerList ReportDesiccantDehumidifier ReportDetailedIceStorage ReportDirectAir ReportDualDuct ReportDualDuctConnections ReportDuct ReportDXCoil ReportDXCoilRating ReportDYMeters ReportEarthTube ReportEconomicVariable ReportElectricBaseboard ReportEMS ReportEvapCooler ReportEvapFluidCooler ReportExteriorEnergyUse ReportFan ReportFanCoilUnit ReportFatalGlycolErrors ReportFatalRefrigerantErrors ReportFiniteDiffInits ReportFluidCooler ReportFluidHeatExchanger ReportForTabularReports ReportFurnace ReportGlass ReportHeatBalance ReportHeatingCoil ReportHeatRecovery ReportHighTempRadiantSystem ReportHRMeters ReportHumidifier ReportHWBaseboard ReportIllumMap ReportingFreqName ReportingThisVariable ReportInternalHeatGains ReportLoopConnections ReportLowTempRadiantSystem ReportMaxVentilationLoads ReportMeterDetails ReportMissing_RangeData ReportMixer ReportMNMeters ReportMoistureBalanceEMPD ReportMSHeatPump ReportNodeConnections ReportOAController ReportOAMixer ReportOrphanFluids ReportOrphanRecordObjects ReportOrphanSchedules ReportOutdoorAirUnit ReportOutputFileHeaders ReportParentChildren ReportPipesHeatTransfer ReportPIU ReportPlantProfile ReportPlantUserComponent ReportPlantValves ReportPondGroundHeatExchanger ReportPTUnit ReportPumps ReportPurchasedAir ReportPV ReportRackSystem ReportRefrigerationComponents ReportReturnAirPath ReportRuntimeLanguage ReportScheduleDetails ReportScheduleValues ReportSizingOutput ReportSMMeters ReportSolarCollector ReportSplitter ReportStandAloneERV ReportStandAloneWaterUse ReportSteamBaseboard ReportSteamCoil ReportSurfaceErrors ReportSurfaceGroundHeatExchngr ReportSurfaceHeatBalance ReportSurfaces ReportSurfaceShading ReportSys ReportSysSizing ReportSystemEnergyUse ReportThermalChimney ReportTowers ReportTSMeters ReportUnitarySystem ReportUnitHeater ReportUnitVentilator ReportVentilatedSlab ReportVRFCondenser ReportVRFTerminalUnit ReportWarmupConvergence ReportWaterCoil ReportWaterManager ReportWaterThermalTank ReportWaterUse ReportWeatherAndTimeInformation ReportWindowAC ReportWindTurbine ReportZoneAirLoopEquipment ReportZoneAirUserDefined ReportZoneDehumidifier ReportZoneEquipment ReportZoneEvaporativeCoolerUnit ReportZoneMeanAirTemp ReportZoneReturnPlenum ReportZoneSizing ReportZoneSupplyPlenum ResetAllPlantInterConnectFlags ResetController ResetEnvironmentCounter ResetHVACControl ResetNodeData ResetPerformanceCurveOutput ResetRootFinder ResetTerminalUnitFlowLimits ResetWeekDaysByMonth Resimulate resist ReSolveAirLoopControllers ResolveAirLoopFlowLimits ResolveLocationInformation ResolveLockoutFlags ResolveLoopFlowVsPressure ResolveParallelFlows ResolveSysFlow ReverseAndRecalculate RevertZoneTimestepHistories RevertZoneTimestepHistories RevisePlantCallingOrder RezeroZoneSizingArrays RhoH2O RHtoVP RKG RoundSigDigits rRoundSigDigits rTrimSigDigits SafeCopyPlantNode SafeDiv SafeDivide SameString SandiaCellTemperature SandiaEffectiveIrradiance SandiaF1 SandiaF2 SandiaImp SandiaIsc SandiaIx SandiaIxx SandiaModuleTemperature SandiaTcellFromTmodule SandiaVmp SandiaVoc SaveSimpleController ScanForReports ScanPlantLoopsForNodeNum ScanPlantLoopsForObject sCheckDayScheduleValueMinMax ScheduleAverageHoursPerWeek SEARCH SearchAscTable SearchWindow5DataFile SecantFormula SecantMethod selectTariff SetActuatedBranchFlowRate SetAdditionalNeighborData SetAllFlowLocks SetAllPlantSimFlagsToValue SetATMixerPriFlow SetATMixerPriFlow SetAverageAirFlow SetAverageAirFlow SetAverageAirFlow SetAverageAirFlow SetAverageAirFlow SetAverageAirFlow SetCoilDesFlow SetCoilSystemCoolingData SetCoilSystemHeatingDXFlag SetCompFlowRate SetComponentFlowRate SetCurrentWeather SetCurveOutputMinMaxValues SetDSTDateRanges SetDXCoilTypeData SetDXCoolingCoilData SetEquivalentLayerWindowProperties SetErlValueNumber SetExtConvectionCoeff SetFanData SetHeatExchangerData SetHeatToReturnAirFlag SetInitialMeterReportingAndOutputNames SetIntConvectionCoeff SetInternalVariableValue SetMinMax setNativeVariables SetNodeResult SetOAControllerData SetOnOffMassFlowRate SetOnOffMassFlowRate SetOnOffMassFlowRate SetOnOffMassFlowRateVSCoil SetOnOffMassFlowRateVSCoil SetOutAirNodes SetOutBulbTempAt SetPredefinedTables SetSimpleWSHPData SETSKY SetSpecialDayDates SetSpeedVariables SetStormWindowControl SetSurfHBDataForMundtModel SetSurfHBDataForTempDistModel SetSurfTmeanAir SETUP4x4_A SetupAdaptiveConvectionRadiantSurfaceData SetupAdaptiveConvectionStaticMetaData SetupAirLoopControllersTracer SetupAllOutputVariables SetUpAndSort SetupBranchControlTypes SetupCellNeighbors SetupCommonPipes SetupComplexFenestrationMaterialInput SetupComplexFenestrationStateInput SetupComplexWindowStateGeometry SetUpCompSets SetupDElightOutput4EPlus SetupDElightOutput4EPlus SetUpDesignDay SetupEMSActuator SetupEMSIntegerActuator SetupEMSIntegerInternalVariable SetupEMSInternalVariable SetupEMSLogicalActuator SetupEMSRealActuator SetupEMSRealInternalVariable SetupEnvironmentTypes SetupFuelConstituentData SetupGeneratorControlStateManager SetupIndividualControllerTracer SetupInitialPlantCallingOrder SetupIntegerOutputVariable SetupInterpolationValues SetupLoopFlowRequest SetupMeteredVarsForSetPt SetupMundtModel SetupNodeSetpointsAsActuators SetupNodeVarsForReporting SetupOutputVariable SetupPipeCircuitInOutCells SetupPlantEMSActuators SetupPollutionCalculations SetupPollutionMeterReporting SetupPossibleOperators SetupPrimaryAirSystemAvailMgrAsActuators SetupPumpMinMaxFlows SetupRealOutputVariable SetupRealOutputVariable_IntKey SetupReportInput SetupReports SetupRootFinder SetUpSchemeColors SetupShadeSurfacesForSolarCalcs SetupSimpleWindowGlazingSystem SetupSimulation SetupStratifiedNodes SetupSurfaceConstructionActuators SetupSurfaceConvectionActuators SetupSurfaceOutdoorBoundaryConditionActuators SetUpSysSizingArrays SetupTankDemandComponent SetupTankSupplyComponent SetupThermostatActuators SetupTimePointers SetupUnitConversions SetupWeekDaysByMonth SetupWindowShadingControlActuators SetupZoneEquipmentForConvectionFlowRegime SetupZoneGeometry SetupZoneInfoAsInternalDataAvail SetupZoneInternalGain SetupZoneInternalGain SetupZoneSizing SetUpZoneSizingArrays SetUTSCQdotSource SetVarSpeedCoilData SetVentedModuleQdotSource SetVSHPAirFlow SetVSHPAirFlow SetWindSpeedAt SetZoneEquipSimOrder shading shadingedge shadingin SHADOW SharedDVCVUFDataInit SHDBKS SHDGSS SHDRVL SHDSBS shift ShiftPipeTemperaturesForNewIteration ShiftPlantLoopSideCallingOrder ShiftTemperaturesForNewIteration ShiftTemperaturesForNewTimeStep ShowAuditErrorMessage ShowBranchesOnLoop ShowContinueError ShowContinueError ShowContinueErrorTimeStamp ShowContinueErrorTimeStamp ShowErrorMessage ShowErrorMessage ShowFatalError ShowFatalError ShowMessage ShowMessage ShowPsychrometricSummary ShowRecurringContinueErrorAtEnd ShowRecurringContinueErrorAtEnd ShowRecurringErrors ShowRecurringSevereErrorAtEnd ShowRecurringSevereErrorAtEnd ShowRecurringWarningErrorAtEnd ShowRecurringWarningErrorAtEnd ShowSevereError ShowSevereError ShowSevereMessage ShowSevereMessage ShowWarningError ShowWarningError ShowWarningMessage ShowWarningMessage showWarningsBasedOnTotal Sim4PipeFanCoil SimAirChillerSet SimAirLoop SimAirLoopComponent SimAirLoopComponents SimAirLoops SimAirLoopSplitter SimAirMixer SimAirTerminalUserDefined SimAirZonePlenum SimATMixer SimBaseboard SimBLASTAbsorber SimBoiler SimCBVAV SimCBVAV SimCentralGroundSourceHeatPump SimChiller SimCoilUserDefined SimComponentModelFan SimConstVol SimCoolBeam SimCostEstimate SimCTGenerator SimCTPlantHeatRecovery SimCyclingWindowAC SimDesiccantDehumidifier SimDetailedIceStorage SimDirectAir SimDistrictEnergy SimDualDuctConstVol SimDualDuctVarVol SimDualDuctVAVOutdoorAir SimDuct SimDXCoil SimDXCoilMultiMode SimDXCoilMultiSpeed SimDXCoolingSystem SimDXHeatPumpSystem SimElecBaseBoard SimElectricBaseBoard SimElectricConvective SimElectricEIRChiller SimEvapCooler SimEvapFluidCoolers SimExhaustAbsorber SimFanCoilUnit SimFluidCoolers SimFluidHeatExchanger SimFourPipeIndUnit SimFuelCellGenerator SimFuelCellPlantHeatRecovery SimFurnace SimGasAbsorber SimGroundHeatExchangers SimHeatPumpWaterHeater SimHeatRecovery SimHighTempRadiantSystem SimHPWatertoWaterCOOLING SimHPWatertoWaterHEATING SimHPWatertoWaterSimple SimHumidifier SimHVAC SimHWBaseboard SimHWConvective SimHXAssistedCoolingCoil SimICEngineGenerator SimICEPlantHeatRecovery SimIceStorage SimIndirectAbsorber SimIndUnit SimLowTempRadiantSystem SimMicroCHPGenerator SimMicroCHPPlantHeatRecovery SimMSHeatPump SimMSHP SimMTGenerator SimMTPlantHeatRecovery SimMultiSpeedCoils SimOAComponent SimOAController SimOAMixer SimOnOffFan SimOutdoorAirEquipComps SimOutdoorAirUnit SimOutsideAirSys SimOutsideEnergy SimPackagedTerminalUnit SimPipes SimPipesHeatTransfer SimPipingSystemCircuit SimPIU SimPlantEquip SimPlantValves SimpleCoolingCoilUAResidual SimpleEvapFluidCoolerUAResidual SimpleFluidCoolerUAResidual SimpleHeatingCoilUAResidual SimpleTowerApproachResidual SimpleTowerTrResidual SimpleTowerUAResidual SimPondGroundHeatExchanger SimPressureDropSystem SimPTUnit SimPumps SimPurchasedAir SimPVGenerator SimPVTcollectors SimReformulatedEIRChiller SimRefrigCondenser SimReturnAirPath SimSelectedEquipment SimSetPointManagers SimSimpleEvapFluidCooler SimSimpleFan SimSimpleFluidCooler SimSimpleTower SimSolarCollector SimStandAloneERV SimSteamBaseboard SimSteamBoiler SimSteamCoils SimSurfaceGroundHeatExchanger SimSysAvailManager SimTESCoil SimTowers SimTranspiredCollector SimulateAllInteriorRadialSoilSlices SimulateAllLoopSideBranches SimulateAllLoopSidePumps SimulateDemandManagerList SimulateDetailedRefrigerationSystems SimulateDetailedTransRefrigSystems SimulateDualDuct SimulateFanComponents SimulateFluidCell SimulateHeatingCoilComponents SimulateInnerMostRadialSoilSlice SimulateLoopSideBranchGroup SimulateOuterMostRadialSoilSlice SimulatePlantProfile SimulateRadialInsulationCell SimulateRadialPipeCell SimulateRadialToCartesianInterface SimulateSingleDuct SimulateSteamCoilComponents SimulateVRF SimulateWaterCoilComponents SimulateWaterHeaterStandAlone SimulateWaterUse SimulateWaterUseConnection SimUnitaryBypassVAV SimUnitarySystem SimUnitHeater SimUnitVentilator SimUnitVentOAMixer SimUserDefinedPlantComponent SimVariableSpeedCoils SimVariableSpeedHP SimVariableSpeedHP SimVariableTower SimVariableVolumeFan SimVAV SimVAVVS SimVentilatedSlab SimVentSlabOAMixer SimVRF SimVRFCondenserPlant SimWaterCoils SimWaterSource SimWaterThermalTank SimWatertoAirHP SimWatertoAirHPSimple SimWindowAC SimWindTurbine SimZoneAirLoopEquipment SimZoneAirUserDefined SimZoneDehumidifier SimZoneEquipment SimZoneEvaporativeCoolerUnit SimZoneExhaustFan SimZoneOutAirUnitComps SingelSpeedDXCoolingCoilStandardRatings SingleSpeedDXHeatingCoilStandardRatings SingleSpeedFluidCooler SizeAbsorpChiller SizeAirLoopBranches SizeAirLoops SizeBaseboard SizeBoiler SizeBoiler SizeCBVAV SizeConstCOPChiller SizeController SizeCoolBeam SizeDemandSidePlantConnections SizeDirectAir SizeDualDuct SizeDXCoil SizeElecReformEIRChiller SizeElectricBaseboard SizeElectricBaseboard SizeElectricChiller SizeElectricEIRChiller SizeEngineDrivenChiller SizeEvapCooler SizeEvapFluidCooler SizeExhaustAbsorber SizeFan SizeFanCoilUnit SizeFluidCooler SizeFluidHeatExchanger SizeFurnace SizeGasAbsorber SizeGTChiller SizeHeatingCoil SizeHeatRecovery SizeHighTempRadiantSystem SizeHumidifier SizeHVACWaterToAir SizeHWBaseboard SizeIndirectAbsorpChiller SizeIndUnit SizeLowTempRadiantSystem SizeMSHeatPump SizeOAController SizeOutdoorAirUnit SizePIU SizePlantLoop SizePTUnit SizePump SizePurchasedAir SizePVT SizeStandAloneERV SizeStandAloneWaterHeater SizeSteamBaseboard SizeSteamCoil SizeSupplySidePlantConnections SizeSys SizeTankForDemandSide SizeTankForSupplySide SizeTESCoil SizeTower SizeUCSDUF SizeUnitarySystem SizeUnitHeater SizeUnitVentilator SizeVarSpeedCoil SizeVentilatedSlab SizeVRF SizeVRFCondenser SizeVSMerkelTower SizeWaterCoil SizeWaterManager SizeWaterSource SizeWindowAC SizeWrapper SizeZoneDehumidifier SizeZoneEquipment SizeZoneEvaporativeCoolerUnit SkipEPlusWFHeader SkyDifSolarShading SkyGndWeight SkyWeight SLtoAMB SLtoGL SLVSKY solar_EN673 solarISO15099 SolarSprectrumAverage SOLMATS SolveAirLoopControllers SolveForWindowTemperatures SolveRegression SolveRegulaFalsi SolverMoistureBalanceEMPD SOLVZP SortHistory Specular_Adjust Specular_EstimateDiffuseProps Specular_F Specular_OffNormal Specular_RATDiff Specular_SWP SQLiteBegin SQLiteBegin SQLiteBindDouble SQLiteBindInteger SQLiteBindLogicalMacro SQLiteBindNULL SQLiteBindText SQLiteBindTextMacro SQLiteClearBindings SQLiteCloseDatabase SQLiteColumnInt SQLiteColumnIntMacro SQLiteCommit SQLiteCommit SQLiteExecuteCommand SQLiteExecuteCommandMacro SQLiteFinalizeCommand SQLiteOpenDatabase SQLiteOpenDatabaseMacro SQLitePrepareStatement SQLitePrepareStatementMacro SQLiteResetCommand SQLiteStepCommand SQLiteWriteMessage SQLiteWriteMessageMacro SQLiteWriteMessageMacro StandardIndexTypeKey StandardVariableTypeKey StartingWindowTemps StartingWinTempsForNominalCond SteamHeatingCoilResidual StorageType StoreAPumpOnCurrentTempLoop storeIterationResults StoreRecurringErrorMessage StringValue StrToReal SumAllInternalCO2Gains SumAllInternalConvectionGains SumAllInternalGenericContamGains SumAllInternalLatentGains SumAllInternalRadiationGains SumAllReturnAirConvectionGains SumAllReturnAirLatentGains SumHATsurf SumHATsurf SumHATsurf SumHATsurf SumHATsurf SumHATsurf SumInternalCO2GainsByTypes SumInternalConvectionGainsByTypes SumInternalLatentGainsByTypes SumInternalRadiationGainsByTypes SummarizeErrors SumReturnAirConvectionGainsByTypes SumZoneImpacts SUN3 SUN4 SupSATResidual SurfaceScheduledSolarInc SurveyDemandManagers SystemPropertiesAtLambdaAndPhi SystemSpectralPropertiesAtPhi TableLookupObject TARCOG90 TBND TdbFnHRhPb TDMA TDMA_R TellMeHowManyObjectItemArgs TemperaturesFromEnergy TempIPtoSI TempSItoIP terpld TESCoilHumRatResidual TESCoilResidual TestAirPathIntegrity TestBranchIntegrity TestCompSet TestCompSetInletOutletNodes TestInletOutletNodes TestReturnAirPathIntegrity TestSupplyAirPathIntegrity therm1d TightenNodeMinMaxAvails TimestepInitComplexFenestration TimestepTypeName TraceAirLoopController TraceAirLoopControllers TraceIndividualController TraceIterationStamp TrackAirLoopController TrackAirLoopControllers TRadC TransAndReflAtPhi TransformVertsByAspect TransTDD Triangulate TrimSigDigits TurnOffLoopEquipment TurnOffLoopSideEquipment TurnOffReportRangeCheckErrors TurnOnPlantLoopPipes TurnOnReportRangeCheckErrors TwoSpeedFluidCooler UnitarySystemHeatRecovery UpdateAbsorberChillerComponentGeneratorSide UpdateAirflowNetwork UpdateAirMixer UpdateAirSysCompPtrArray UpdateAirSysSubCompPtrArray UpdateAirSysSubSubCompPtrArray UpdateAirZoneReturnPlenum UpdateAirZoneSupplyPlenum UpdateAnyLoopDemandAlterations UpdateATMixer UpdateBaseboard UpdateBaseboardPlantConnection UpdateBasementSurfaceTemperatures UpdateBBElecRadSourceValAvg UpdateBBRadSourceValAvg UpdateBBSteamRadSourceValAvg UpdateBLASTAbsorberRecords UpdateBoilerRecords UpdateBoilerRecords UpdateBracket UpdateBranchConnections UpdateChillerComponentCondenserSide UpdateChillerheaterRecords UpdateChillerRecords UpdateColdWeatherProtection UpdateCommonPipe UpdateComplexWindows UpdateComponentHeatRecoverySide UpdateConstCOPChillerRecords UpdateController UpdateCoolBeam UpdateCoolTower UpdateCTGeneratorRecords UpdateDataandReport UpdateDemandManagers UpdateDesiccantDehumidifier UpdateDetailedIceStorage UpdateDualDuct UpdateDuct UpdateDXCoil UpdateElectricBaseboard UpdateElectricChillerRecords UpdateElectricEIRChillerRecords UpdateEMSTrendVariables UpdateEngineDrivenChiller UpdateEvapCooler UpdateEvapFluidCooler UpdateEvaporativeCondenserBasinHeater UpdateEvaporativeCondenserWaterUse UpdateExhaustAbsorberCoolRecords UpdateExhaustAbsorberHeatRecords UpdateExhaustAirFlows UpdateFan UpdateFinalSurfaceHeatBalance UpdateFluidCooler UpdateFluidHeatExchanger UpdateFuelCellGeneratorRecords UpdateGasAbsorberCoolRecords UpdateGasAbsorberHeatRecords UpdateGSHPRecords UpdateGSHPRecords UpdateGSHPRecords UpdateGTChillerRecords UpdateHalfLoopInletTemp UpdateHeatBalHAMT UpdateHeatingCoil UpdateHeatRecovery UpdateHighTempRadiantSystem UpdateHistories UpdateHistory UpdateHTRadSourceValAvg UpdateHumidifier UpdateHVACInterface UpdateHWBaseboard UpdateHWBaseboardPlantConnection UpdateIceFractions UpdateICEngineGeneratorRecords UpdateIndirectAbsorberRecords UpdateInternalGainValues UpdateIrrigation UpdateLoadCenterRecords UpdateLoopSideReportVars UpdateLowTempRadiantSystem UpdateMeterReporting UpdateMeters UpdateMeterValues UpdateMicroCHPGeneratorRecords UpdateMinMax UpdateMixedAirSetPoints UpdateMoistureBalanceEMPD UpdateMoistureBalanceFD UpdateMSHeatPump UpdateMTGeneratorRecords UpdateNode UpdateNodeThermalHistory UpdateOAController UpdateOAMixer UpdateOAPretreatSetPoints UpdatePipesHeatTransfer UpdatePipingSystems UpdatePlantLoopInterface UpdatePlantMixer UpdatePlantProfile UpdatePlantSplitter UpdatePlantValves UpdatePondGroundHeatExchanger UpdatePrecipitation UpdatePressureDrop UpdatePurchasedAir UpdatePVTcollectors UpdateRadSysSourceValAvg UpdateRecords UpdateReformEIRChillerRecords UpdateRefrigCondenser UpdateReportWaterSystem UpdateRootFinder UpdateScheduleValues UpdateSetPointManagers UpdateSimpleWatertoAirHP UpdateSoilProps UpdateSolarCollector UpdateSplitter UpdateSQLiteErrorRecord UpdateSQLiteErrorRecord UpdateSQLiteSimulationRecord UpdateSQLiteSimulationRecord UpdateSteamBaseboard UpdateSteamBaseboardPlantConnection UpdateSteamCoil UpdateSurfaceGroundHeatExchngr UpdateSys UpdateSysSizing UpdateSystemOutputRequired UpdateTabularReports UpdateTEStorage UpdateThermalHistories UpdateTowers UpdateTranspiredCollector UpdateUnitarySystemControl UpdateUtilityBills UpdateVarSpeedCoil UpdateVentilatedSlab UpdateVerticalGroundHeatExchanger UpdateVRFCondenser UpdateWaterCoil UpdateWaterConnections UpdateWaterManager UpdateWaterSource UpdateWaterThermalTank UpdateWaterToAirCoilPlantConnection UpdateWatertoAirHP UpdateWeatherData UpdateWholeBuildingRecords UpdateZoneAirLoopEquipment UpdateZoneCompPtrArray UpdateZoneDehumidifier UpdateZoneEquipment UpdateZoneInletConvergenceLog UpdateZoneListAndGroupLoads UpdateZoneSizing UpdateZoneSubCompPtrArray UpdateZoneSubSubCompPtrArray ValidateAndSetSysAvailabilityManagerType ValidateComponent ValidateDistributionSystem ValidateEMSProgramName ValidateEMSVariableName ValidateExhaustFanInput ValidateFlowControlPaths ValidateFuelType ValidateIndexType ValidateMaterialRoughness ValidateMonthDay ValidateNStandardizeMeterTitles ValidateObjectandParse ValidatePipeConstruction ValidatePLFCurve ValidateSection ValidateSectionsInput ValidateVariableType value_to_vector ValueToString VAVVSCoolingResidual VAVVSHCFanOnResidual VAVVSHWFanOnResidual VAVVSHWNoFanResidual VB_CriticalSlatAngle VB_DIFF VB_LWP VB_ShadeControl VB_SLAT_RADIUS_RATIO VB_SOL4 VB_SOL46_CURVE VB_SOL6 VB_SWP vec2d_cross_product vec2d_dot_product vec_cross_product vec_dot_product VecLength VecNegate VecNormalize VecRound VecSquaredLength vector_add vector_div_int vector_div_real vector_subtract vector_times_int vector_times_real vector_to_array VerifyControlledZoneForThermostat VerifyCustomMetersElecPowerMgr VerifyHeatExchangerParent VerifyName VerifySetPointManagers VerifyThermostatInZone VerifyUniqueBaseboardName VerifyUniqueBoilerName VerifyUniqueChillerName VerifyUniqueCoilName ViewFac VisibleSprectrumAverage Volume VRMLOut VSCoilCyclingHumResidual VSCoilCyclingResidual VSCoilCyclingResidual VSCoilSpeedHumResidual VSCoilSpeedResidual VSCoilSpeedResidual VSEvapUnitLoadResidual VSHPCyclingResidual VSHPCyclingResidual VSHPSpeedResidual VSHPSpeedResidual VSMerkelResidual W5InitGlassParameters W5LsqFit W5LsqFit2 W6CoordsFromWorldVect warnIfNativeVarname WetCoilOutletCondition WhichCompSet WhichParentCompSet WhichParentSet Width WindowGapAirflowControl WindowGasConductance WindowGasPropertiesAtTemp WindowHeatBalanceEquations WindowScheduledSolarAbs WindowShadingManager WindowTempsForNominalCond WindSpeedAt Windward WorldVectFromW6 WriteAdaptiveComfortTable WriteAirLoopStatistics WriteBEPSTable WriteCompCostTable WriteComponentSizing WriteCumulativeReportMeterData WriteDaylightMapTitle WriteDemandEndUseSummary WriteInputArguments WriteIntegerData WriteIntegerVariableOutput WriteMeterDictionaryItem WriteModifiedArguments WriteMonthlyTables WriteOutputArguments WriteOutputEN673 WritePoint WritePredefinedTables WriteRealData WriteRealVariableOutput WriteReportHeaders WriteReportIntegerData WriteReportMeterData WriteReportRealData WriteReportVariableDictionaryItem WriteRootFinderStatus WriteRootFinderTrace WriteRootFinderTraceHeader WriteSourceEnergyEndUseSummary writeSubtitle WriteSurfaceShadowing WriteTable WriteTableOfContents WriteTabularLifeCycleCostReport WriteTabularReports WriteTabularTariffReports WriteTARCOGInputFile writeTextLine WriteTimeBinTables WriteTimeStampFormatData WriteTrace WriteVeriSumTable WriteZoneLoadComponentTable WVDC XNormalArea XYRectangle XZRectangle YNormalArea YZRectangle ZeroHVACValues ZNormalArea