DataPhotovoltaics.f90 Source File

This File Depends On

sourcefile~~dataphotovoltaics.f90~~EfferentGraph sourcefile~dataphotovoltaics.f90 DataPhotovoltaics.f90 sourcefile~dataglobals.f90 DataGlobals.f90 sourcefile~dataglobals.f90->sourcefile~dataphotovoltaics.f90 sourcefile~dataprecisionglobals.f90 DataPrecisionGlobals.f90 sourcefile~dataprecisionglobals.f90->sourcefile~dataphotovoltaics.f90 sourcefile~dataprecisionglobals.f90->sourcefile~dataglobals.f90
Help

Files Dependent On This One

sourcefile~~dataphotovoltaics.f90~~AfferentGraph sourcefile~dataphotovoltaics.f90 DataPhotovoltaics.f90 sourcefile~costestimatemanager.f90 CostEstimateManager.f90 sourcefile~dataphotovoltaics.f90->sourcefile~costestimatemanager.f90 sourcefile~photovoltaicthermalcollectors.f90 PhotovoltaicThermalCollectors.f90 sourcefile~dataphotovoltaics.f90->sourcefile~photovoltaicthermalcollectors.f90 sourcefile~photovoltaics.f90 Photovoltaics.f90 sourcefile~dataphotovoltaics.f90->sourcefile~photovoltaics.f90 sourcefile~sizingmanager.f90 SizingManager.f90 sourcefile~costestimatemanager.f90->sourcefile~sizingmanager.f90 sourcefile~simulationmanager.f90 SimulationManager.f90 sourcefile~costestimatemanager.f90->sourcefile~simulationmanager.f90 sourcefile~photovoltaicthermalcollectors.f90->sourcefile~photovoltaics.f90 sourcefile~plantloopequipment.f90 PlantLoopEquipment.f90 sourcefile~photovoltaicthermalcollectors.f90->sourcefile~plantloopequipment.f90 sourcefile~mixedair.f90 MixedAir.f90 sourcefile~photovoltaicthermalcollectors.f90->sourcefile~mixedair.f90 sourcefile~electricpowermanager.f90 ElectricPowerManager.f90 sourcefile~photovoltaics.f90->sourcefile~electricpowermanager.f90 sourcefile~sizingmanager.f90->sourcefile~simulationmanager.f90 sourcefile~energyplus.f90 EnergyPlus.f90 sourcefile~simulationmanager.f90->sourcefile~energyplus.f90 sourcefile~utilityroutines.f90 UtilityRoutines.f90 sourcefile~simulationmanager.f90->sourcefile~utilityroutines.f90 sourcefile~plantmanager.f90 PlantManager.f90 sourcefile~plantloopequipment.f90->sourcefile~plantmanager.f90 sourcefile~plantloopsolver.f90 PlantLoopSolver.f90 sourcefile~plantloopequipment.f90->sourcefile~plantloopsolver.f90 sourcefile~mixedair.f90->sourcefile~simulationmanager.f90 sourcefile~hvacstandaloneerv.f90 HVACStandAloneERV.f90 sourcefile~mixedair.f90->sourcefile~hvacstandaloneerv.f90 sourcefile~hvaccontrollers.f90 HVACControllers.f90 sourcefile~mixedair.f90->sourcefile~hvaccontrollers.f90 sourcefile~packagedterminalheatpump.f90 PackagedTerminalHeatPump.f90 sourcefile~mixedair.f90->sourcefile~packagedterminalheatpump.f90 sourcefile~airflownetworkbalancemanager.f90 AirflowNetworkBalanceManager.f90 sourcefile~mixedair.f90->sourcefile~airflownetworkbalancemanager.f90 sourcefile~hvacvariablerefrigerantflow.f90 HVACVariableRefrigerantFlow.f90 sourcefile~mixedair.f90->sourcefile~hvacvariablerefrigerantflow.f90 sourcefile~simairservingzones.f90 SimAirServingZones.f90 sourcefile~mixedair.f90->sourcefile~simairservingzones.f90 sourcefile~hvacunitarybypassvav.f90 HVACUnitaryBypassVAV.f90 sourcefile~mixedair.f90->sourcefile~hvacunitarybypassvav.f90 sourcefile~fancoilunits.f90 FanCoilUnits.f90 sourcefile~mixedair.f90->sourcefile~fancoilunits.f90 sourcefile~windowac.f90 WindowAC.f90 sourcefile~mixedair.f90->sourcefile~windowac.f90 sourcefile~plantmanager.f90->sourcefile~simulationmanager.f90 sourcefile~plantmanager.f90->sourcefile~utilityroutines.f90 sourcefile~hvacmanager.f90 HVACManager.f90 sourcefile~plantmanager.f90->sourcefile~hvacmanager.f90 sourcefile~plantloopsolver.f90->sourcefile~plantmanager.f90 sourcefile~hvacmanager.f90->sourcefile~simulationmanager.f90 sourcefile~heatbalanceairmanager.f90 HeatBalanceAirManager.f90 sourcefile~hvacmanager.f90->sourcefile~heatbalanceairmanager.f90 sourcefile~heatbalanceairmanager.f90->sourcefile~simulationmanager.f90 sourcefile~heatbalancesurfacemanager.f90 HeatBalanceSurfaceManager.f90 sourcefile~heatbalanceairmanager.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~heatbalancesurfacemanager.f90->sourcefile~simulationmanager.f90 sourcefile~heatbalancemanager.f90 HeatBalanceManager.f90 sourcefile~heatbalancesurfacemanager.f90->sourcefile~heatbalancemanager.f90 sourcefile~heatbalancemanager.f90->sourcefile~sizingmanager.f90 sourcefile~heatbalancemanager.f90->sourcefile~simulationmanager.f90 sourcefile~hvacstandaloneerv.f90->sourcefile~hvacmanager.f90 sourcefile~systemreports.f90 SystemReports.f90 sourcefile~hvacstandaloneerv.f90->sourcefile~systemreports.f90 sourcefile~zoneequipmentmanager.f90 Zoneequipmentmanager.f90 sourcefile~hvacstandaloneerv.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~hvaccontrollers.f90->sourcefile~simulationmanager.f90 sourcefile~hvaccontrollers.f90->sourcefile~simairservingzones.f90 sourcefile~hvacfurnace.f90 HVACFurnace.f90 sourcefile~hvaccontrollers.f90->sourcefile~hvacfurnace.f90 sourcefile~packagedterminalheatpump.f90->sourcefile~systemreports.f90 sourcefile~packagedterminalheatpump.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~airflownetworkbalancemanager.f90->sourcefile~hvacmanager.f90 sourcefile~systemavailabilitymanager.f90 SystemAvailabilityManager.f90 sourcefile~airflownetworkbalancemanager.f90->sourcefile~systemavailabilitymanager.f90 sourcefile~hvacvariablerefrigerantflow.f90->sourcefile~plantloopequipment.f90 sourcefile~hvacvariablerefrigerantflow.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~simairservingzones.f90->sourcefile~sizingmanager.f90 sourcefile~simairservingzones.f90->sourcefile~hvacmanager.f90 sourcefile~hvacunitarybypassvav.f90->sourcefile~simairservingzones.f90 sourcefile~fancoilunits.f90->sourcefile~systemreports.f90 sourcefile~fancoilunits.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~generalroutines.f90 GeneralRoutines.f90 sourcefile~fancoilunits.f90->sourcefile~generalroutines.f90 sourcefile~windowac.f90->sourcefile~systemreports.f90 sourcefile~windowac.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~systemreports.f90->sourcefile~simulationmanager.f90 sourcefile~systemreports.f90->sourcefile~utilityroutines.f90 sourcefile~systemreports.f90->sourcefile~hvacmanager.f90 sourcefile~zoneequipmentmanager.f90->sourcefile~sizingmanager.f90 sourcefile~zoneequipmentmanager.f90->sourcefile~hvacmanager.f90 sourcefile~hvacfurnace.f90->sourcefile~simairservingzones.f90 sourcefile~systemavailabilitymanager.f90->sourcefile~plantmanager.f90 sourcefile~systemavailabilitymanager.f90->sourcefile~hvacmanager.f90 sourcefile~systemavailabilitymanager.f90->sourcefile~heatbalanceairmanager.f90 sourcefile~systemavailabilitymanager.f90->sourcefile~simairservingzones.f90 sourcefile~systemavailabilitymanager.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~electricpowermanager.f90->sourcefile~simulationmanager.f90 sourcefile~electricpowermanager.f90->sourcefile~hvacmanager.f90 sourcefile~outputreporttabular.f90 OutputReportTabular.f90 sourcefile~electricpowermanager.f90->sourcefile~outputreporttabular.f90 sourcefile~heatbalanceinternalheatgains.f90 HeatBalanceInternalHeatGains.f90 sourcefile~electricpowermanager.f90->sourcefile~heatbalanceinternalheatgains.f90 sourcefile~outputreporttabular.f90->sourcefile~sizingmanager.f90 sourcefile~outputreporttabular.f90->sourcefile~simulationmanager.f90 sourcefile~outputreporttabular.f90->sourcefile~hvacmanager.f90 sourcefile~outputreporttabular.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~outputreporttabular.f90->sourcefile~heatbalancemanager.f90 sourcefile~outputreporttabular.f90->sourcefile~heatbalanceinternalheatgains.f90 sourcefile~economiclifecyclecost.f90 EconomicLifeCycleCost.f90 sourcefile~outputreporttabular.f90->sourcefile~economiclifecyclecost.f90 sourcefile~roomairmodelusertemppattern.f90 RoomAirModelUserTempPattern.f90 sourcefile~outputreporttabular.f90->sourcefile~roomairmodelusertemppattern.f90 sourcefile~economictariff.f90 EconomicTariff.f90 sourcefile~outputreporttabular.f90->sourcefile~economictariff.f90 sourcefile~thermalcomfort.f90 ThermalComfort.f90 sourcefile~outputreporttabular.f90->sourcefile~thermalcomfort.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~hvacmanager.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~heatbalancemanager.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~roomairmodelusertemppattern.f90 sourcefile~zonetemppredictorcorrector.f90 ZoneTempPredictorCorrector.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~zonetemppredictorcorrector.f90 sourcefile~zonecontaminantpredictorcorrector.f90 ZoneContaminantPredictorCorrector.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~zonecontaminantpredictorcorrector.f90 sourcefile~daylightingmanager.f90 DaylightingManager.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~daylightingmanager.f90 sourcefile~roomairmodelcrossvent.f90 RoomAirModelCrossVent.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~roomairmodelcrossvent.f90 sourcefile~delightmanagerf.f90 DElightManagerF.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~delightmanagerf.f90 sourcefile~roomairmodelufad.f90 RoomAirModelUFAD.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~roomairmodelufad.f90 sourcefile~roomairmodeldisplacementvent.f90 RoomAirModelDisplacementVent.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~roomairmodeldisplacementvent.f90 sourcefile~roomairmodelmundt.f90 RoomAirModelMundt.f90 sourcefile~heatbalanceinternalheatgains.f90->sourcefile~roomairmodelmundt.f90 sourcefile~economiclifecyclecost.f90->sourcefile~simulationmanager.f90 sourcefile~roomairmanager.f90 RoomAirManager.f90 sourcefile~roomairmodelusertemppattern.f90->sourcefile~roomairmanager.f90 sourcefile~economictariff.f90->sourcefile~simulationmanager.f90 sourcefile~economictariff.f90->sourcefile~heatbalancemanager.f90 sourcefile~economictariff.f90->sourcefile~economiclifecyclecost.f90 sourcefile~thermalcomfort.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~thermalcomfort.f90->sourcefile~airflownetworkbalancemanager.f90 sourcefile~thermalcomfort.f90->sourcefile~zonetemppredictorcorrector.f90 sourcefile~weathermanager.f90 WeatherManager.f90 sourcefile~thermalcomfort.f90->sourcefile~weathermanager.f90 sourcefile~roomairmanager.f90->sourcefile~zonetemppredictorcorrector.f90 sourcefile~zonetemppredictorcorrector.f90->sourcefile~simulationmanager.f90 sourcefile~zonetemppredictorcorrector.f90->sourcefile~hvacmanager.f90 sourcefile~zonetemppredictorcorrector.f90->sourcefile~zoneequipmentmanager.f90 sourcefile~zonetemppredictorcorrector.f90->sourcefile~zonecontaminantpredictorcorrector.f90 sourcefile~zonecontaminantpredictorcorrector.f90->sourcefile~simulationmanager.f90 sourcefile~zonecontaminantpredictorcorrector.f90->sourcefile~hvacmanager.f90 sourcefile~weathermanager.f90->sourcefile~sizingmanager.f90 sourcefile~weathermanager.f90->sourcefile~simulationmanager.f90 sourcefile~daylightingmanager.f90->sourcefile~utilityroutines.f90 sourcefile~daylightingmanager.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~solarshading.f90 SolarShading.f90 sourcefile~daylightingmanager.f90->sourcefile~solarshading.f90 sourcefile~windowequivalentlayer.f90 WindowEquivalentLayer.f90 sourcefile~daylightingmanager.f90->sourcefile~windowequivalentlayer.f90 sourcefile~roomairmodelcrossvent.f90->sourcefile~roomairmanager.f90 sourcefile~delightmanagerf.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~delightmanagerf.f90->sourcefile~daylightingmanager.f90 sourcefile~roomairmodelufad.f90->sourcefile~roomairmanager.f90 sourcefile~roomairmodeldisplacementvent.f90->sourcefile~roomairmanager.f90 sourcefile~roomairmodelmundt.f90->sourcefile~roomairmanager.f90 sourcefile~solarshading.f90->sourcefile~simulationmanager.f90 sourcefile~solarshading.f90->sourcefile~utilityroutines.f90 sourcefile~solarshading.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~solarshading.f90->sourcefile~heatbalancemanager.f90 sourcefile~windowequivalentlayer.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~windowequivalentlayer.f90->sourcefile~heatbalancemanager.f90 sourcefile~windowequivalentlayer.f90->sourcefile~solarshading.f90 sourcefile~windowmanager.f90 WindowManager.f90 sourcefile~windowequivalentlayer.f90->sourcefile~windowmanager.f90 sourcefile~heatbalanceintradexchange.f90 HeatBalanceIntRadExchange.f90 sourcefile~windowequivalentlayer.f90->sourcefile~heatbalanceintradexchange.f90 sourcefile~windowmanager.f90->sourcefile~heatbalancesurfacemanager.f90 sourcefile~windowmanager.f90->sourcefile~heatbalancemanager.f90 sourcefile~heatbalanceintradexchange.f90->sourcefile~heatbalancesurfacemanager.f90
Help

Source Code


Source Code

MODULE DataPhotovoltaics      ! Data-Only Module for native EnergyPlus Photovoltaics variables

          ! MODULE INFORMATION:
          !       AUTHOR         D. Bradley
          !       DATE WRITTEN   May 2003
          !       MODIFIED       B. Griffith, Dec. 2003, heavy changes, moved derived types here from Photovoltaics.f90
          !                      B. Griffith, Feb 2008, added BIPV and inverter to one-diode model
          !       RE-ENGINEERED  na

          ! PURPOSE OF THIS MODULE:
          ! This data-only module is a repository for the variables that relate specifically
          ! to the native EnergyPlus photovoltaics simulation.

          ! METHODOLOGY EMPLOYED:

          ! REFERENCES:
          ! na

          ! OTHER NOTES:
          ! na

          ! USE STATEMENTS:
  USE DataPrecisionGlobals
  USE DataGlobals, ONLY: MaxNameLength

  IMPLICIT NONE   ! Enforce explicit typing of all variables

  PUBLIC          ! By definition, all variables which are placed in this data
              ! -only module should be available to other modules and routines.
              ! Thus, all variables in this module must be PUBLIC.

        ! MODULE PARAMETER DEFINITIONS:
  CHARACTER(len=*), PARAMETER :: cPVGeneratorObjectName       = 'Generator:Photovoltaic'
  CHARACTER(len=*), PARAMETER :: cPVSimplePerfObjectName      = 'PhotovoltaicPerformance:Simple'
  CHARACTER(len=*), PARAMETER :: cPVEquiv1DiodePerfObjectName = 'PhotovoltaicPerformance:EquivalentOne-Diode'
  CHARACTER(len=*), PARAMETER :: cPVSandiaPerfObjectName      = 'PhotovoltaicPerformance:Sandia'

  INTEGER, PARAMETER :: iNotYetSetPVModel = 0
  INTEGER, PARAMETER :: iSimplePVModel = 1001
  INTEGER, PARAMETER :: iTRNSYSPVModel = 1002
  INTEGER, PARAMETER :: iSandiaPVModel = 1003

  INTEGER, PARAMETER :: iNotYetSetCellIntegration                = 0 ! cell temp method not set
  INTEGER, PARAMETER :: iDecoupledCellIntegration                = 1 ! cell temp method based on energy balance
  INTEGER, PARAMETER :: iDecoupledUllebergDynamicCellIntegration = 2 ! cell temp method based on energy bal with capacity
  INTEGER, PARAMETER :: iSurfaceOutsideFaceCellIntegration       = 3 ! cell temp method based on coupling to E+'s heat balance
  INTEGER, PARAMETER :: iTranspiredCollectorCellIntegration      = 4 ! cell temp method based on coupling to unglazed transpired co
  INTEGER, PARAMETER :: iExteriorVentedCavityCellIntegration     = 5 ! cell temp method based on coupling to nat vent exterior cavi
  INTEGER, PARAMETER :: iPVTSolarCollectorCellIntegration        = 6 ! cell temp method based on coupling to PVT model

  INTEGER, PARAMETER :: FixedEfficiency         = 10 ! simple PV, constant efficiency
  INTEGER, PARAMETER :: ScheduledEfficiency     = 11 ! simpel PV, scheduled efficiency

  INTEGER, PARAMETER :: CrystallineSiPVCells    = 1
  INTEGER, PARAMETER :: AmorphousSiPVCells      = 2

  REAL(r64),    PARAMETER :: MinIrradiance = 0.3d0  ![W/m2] Assume no operation if Ic is below this number (W/m2)
        ! DERIVED TYPE DEFINITIONS
  TYPE SimplePVParamsStruct
      CHARACTER(len=MaxNameLength) :: Name=' ' ! name as identified in Sandia database
      REAL(r64)                    :: AreaCol = 0.0D0 ! effective area of solar collection
      REAL(r64)                    :: ActiveFraction =0.0D0 ! fraction of parent surface that has active solar cells
      INTEGER                      :: EfficencyInputMode = 0 ! to schedule or not
      INTEGER                      :: EffSchedPtr    =0   ! index pointer for efficiency schedule
      REAL(r64)                    :: PVEfficiency   =0.0D0 ! fixed or current PV efficiency
  END TYPE SimplePVParamsStruct

  TYPE TRNSYSPVModuleParamsStruct    !  for  GENERATOR:PV:Equivalent One-Diode Model
    CHARACTER(len=MaxNameLength) :: Name=' '
    INTEGER   :: CellsInSeries        = 0    !cells in series [-]
    INTEGER   :: CellType             = 0    ! type of PV cell (crystalline, amorphous )
    REAL(r64) :: Area                 =0.0D0 !module area [m2]
    REAL(r64) :: TauAlpha             =0.0D0 !tau alpha product at normal incidence [-]
    REAL(r64) :: SemiConductorBandgap =0.0D0 !electron bandgap [eV]
    REAL(r64) :: ShuntResistance      =0.0D0 !shunt resistance [ohms]
    REAL(r64) :: RefIsc               =0.0D0 !short circuit current at reference conditions [A/K]
    REAL(r64) :: RefVoc               =0.0D0 !open circuit voltage at reference conditions [V/K]
    REAL(r64) :: RefTemperature       =0.0D0 !temperature at reference conditions
    REAL(r64) :: RefInsolation        =0.0D0 !radiation at reference conditions [W/m2]
    REAL(r64) :: Imp                  =0.0D0 !current at max power [A]
    REAL(r64) :: Vmp                  =0.0D0 !voltage at max power [V]
    REAL(r64) :: TempCoefIsc          =0.0D0 !temperature coefficient of short circuit current
    REAL(r64) :: TempCoefVoc          =0.0D0 !temperature coefficient of open circuit voltage
    REAL(r64) :: NOCTAmbTemp          =0.0D0 !ambient temperature at NOCT [C]
    REAL(r64) :: NOCTCellTemp         =0.0D0 !cell temperature at NOCT [C]
    REAL(r64) :: NOCTInsolation       =0.0D0 !radiation at NOCT [W/m2]
    REAL(r64) :: HeatLossCoef         =0.0D0 !heat loss coefficient [W/m2.K]
    REAL(r64) :: HeatCapacity         =0.0D0 !total heat capacity (only used in TC mode 1)
  END TYPE TRNSYSPVModuleParamsStruct

  TYPE TRNSYSPVCalcStruct
    REAL(r64) :: Insolation           =0.0D0 !radiation [W/m2]
    REAL(r64) :: ArrayCurrent         =0.0D0 !array current at current conditions [A]
    REAL(r64) :: ArrayVoltage         =0.0D0 !array voltage at current conditions [V]
    REAL(r64) :: ArrayPower           =0.0D0 !array power at current conditions [W]
    REAL(r64) :: ArrayEfficiency      =0.0D0 !array efficiency at current conditions [0..1]
    REAL(r64) :: CellTemp             =0.0D0 !array cell temperature at current conditions [C]
    REAL(r64) :: CellTempK            =0.0D0 !array cell temperature (for setting last cell temp) [K]
    REAL(r64) :: TimeElapsed          =0.0D0 !time previous update of last cell temp
    REAL(r64) :: LastCellTempK        =0.0D0 !array cell temperature at previous conditions [K]
    REAL(r64) :: ArrayIsc             =0.0D0 !array short circuit current at current conditions [A]
    REAL(r64) :: ArrayVoc             =0.0D0 !array open circuit voltage at current conditions [V]
  END TYPE TRNSYSPVCalcStruct

  TYPE SNLModuleParamsStuct  ! for PV MODULE:SANDIA PARAMETERS
    CHARACTER(len=MaxNameLength) :: name=' ' ! name as identified in Sandia database
    REAL(r64)    :: Acoll           =0.0D0 ! Active collector area (m2, single module)
    REAL(r64)    :: NcellSer        =0.0D0 ! Number of cells in series in a module's cell-string (unitless)
    REAL(r64)    :: NparSerCells    =0.0D0 ! Number of cell-strings in parallel in module (unitless)
    REAL(r64)    :: Isc0            =0.0D0 ! Short circuit current at reference conditions (Amps)
    REAL(r64)    :: Voc0            =0.0D0 ! Open circuit voltage at reference conditions (Volts)
    REAL(r64)    :: Imp0            =0.0D0 ! Max power point current at reference conditions (Amps)
    REAL(r64)    :: Vmp0            =0.0D0 ! Voltage at max power at reference conditions (Volts)
    REAL(r64)    :: aIsc            =0.0D0 ! Normalized temperature coefficient for Isc (Amps/degC) Isc temperature coeff
    REAL(r64)    :: aImp            =0.0D0 ! Normalized temperature coefficient for Imp (1/degC) Imp temperature coeff
    REAL(r64)    :: c_0             =0.0D0 ! Empirical coefficients relating Imp to Ee (unitless)
                                         !   coefficient relating Imp to irradiance
    REAL(r64)    :: c_1             =0.0D0 ! Empirical coefficients relating Imp to Ee (unitless)
                                         !   coefficient relating Voc to irradiance
    REAL(r64)    :: BVoc0           =0.0D0 ! Temperature coefficient for module open-circuit-voltage at reference conditions
                                         !   (Volts/degC)
    REAL(r64)    :: mBVoc           =0.0D0 ! Coefficient for irradiance dependence of open-circuit-voltage-temperature
                                         !  coefficient  (V/°C)
    REAL(r64)    :: BVmp0           =0.0D0 ! Temperature coefficient for module maximum-power-voltage at reference conditions
                                         !   (V/°C)
    REAL(r64)    :: mBVmp           =0.0D0 ! Cofficient for irradiance dependence of maximum-power-voltage-temperature
                                         !   coefficient (V/°C)
    REAL(r64)    :: DiodeFactor     =0.0D0 ! Empirically determined 'diode factor' for individual cells (unitless)
    REAL(r64)    :: c_2             =0.0D0 ! Empirical coefficients relating Vmp to Ee (unitless)
                                         !   (coefficient relating Vmp to irradiance)
    REAL(r64)    :: c_3             =0.0D0 ! Empirical coefficients relating Vmp to Ee (unitless)
                                         !   (coefficient relating Vmp to irradiance)
    REAL(r64)    :: a_0             =0.0D0 ! Empirical coefficients for f1(AMa) polynomial (unitless)
    REAL(r64)    :: a_1             =0.0D0 ! Empirical coefficients for f1(AMa) polynomial (unitless)
    REAL(r64)    :: a_2             =0.0D0 ! Empirical coefficients for f1(AMa) polynomial (unitless)
    REAL(r64)    :: a_3             =0.0D0 ! Empirical coefficients for f1(AMa) polynomial (unitless)
    REAL(r64)    :: a_4             =0.0D0 ! Empirical coefficients for f1(AMa) polynomial (unitless)
    REAL(r64)    :: b_0             =0.0D0 ! Empirical coefficients for f1(AOI) polynomial (unitless)
    REAL(r64)    :: b_1             =0.0D0 ! Empirical coefficients for f1(AOI) polynomial (unitless)
    REAL(r64)    :: b_2             =0.0D0 ! Empirical coefficients for f1(AOI) polynomial (unitless)
    REAL(r64)    :: b_3             =0.0D0 ! Empirical coefficients for f1(AOI) polynomial (unitless)
    REAL(r64)    :: b_4             =0.0D0 ! Empirical coefficients for f1(AOI) polynomial (unitless)
    REAL(r64)    :: b_5             =0.0D0 ! Empirical coefficients for f1(AOI) polynomial (unitless)
    REAL(r64)    :: DT0             =0.0D0 ! Temperature difference between Tc and Tm at Eo (°C),
                                         ! (This is d(Tc) in Sandia database)
    REAL(r64)    :: fd              =0.0D0 ! Fraction of diffuse irradiance used by module (unitless)
    REAL(r64)    :: a               =0.0D0 ! Empirical coefficient for module temp.at low wind,
                                         ! high solar irradiance (unitless)
    REAL(r64)    :: b               =0.0D0 ! Empirical coefficient relating module temp.
                                         ! decrease with increasing wind speed (unitless)
    REAL(r64)    :: c_4             =0.0D0 ! Empirical coefficients relating Ix to Ee (unitless)
    REAL(r64)    :: c_5             =0.0D0 ! Empirical coefficients relating Ix to Ee (unitless)
    REAL(r64)    :: Ix0             =0.0D0 ! Current at V = 0.5 Voc and at reference conditions (Amps)
    REAL(r64)    :: Ixx0            =0.0D0 ! Current at V = 0.5 (Vmp + Voc) and at reference conditions (Amps)
    REAL(r64)    :: c_6             =0.0D0 ! Empirical coefficients relating Ixx to Ee (unitless)
    REAL(r64)    :: c_7             =0.0D0 ! Empirical coefficients relating Ixx to Ee (unitless)
  END TYPE SNLModuleParamsStuct

  TYPE SNLPVInputStruct         ! for data obtained elsewhere in EnergyPlus
    REAL(r64)    :: IcBeam         =0.0D0 !incident beam solar (W/m2)
    REAL(r64)    :: IcDiffuse      =0.0D0 ! incident diffuse solar (W/m2)
    REAL(r64)    :: IncidenceAngle =0.0D0 ! angle from normal for beam (deg)
    REAL(r64)    :: ZenithAngle    =0.0D0 !solar zenith angle (deg)
    REAL(r64)    :: Tamb           =0.0D0 ! outdoor drybulb temperature (C)
    REAL(r64)    :: WindSpeed      =0.0D0 ! outdoor windspeed. (m/s)
    REAL(r64)    :: Altitude       =0.0D0 ! elevation above sea level. (m)
  END TYPE SNLPVInputStruct

  TYPE SNLPVCalcStruct ! hold calculated results from PV modeling.
    REAL(r64) :: Vmp              =0.0D0 !(Volts) maximum power voltage
    REAL(r64) :: Imp              =0.0D0 !(Amps) maximum power current
    REAL(r64) :: Pmp              =0.0D0 !(W) (was kJ/hr) maximum power point power
    REAL(r64) :: EffMax           =0.0D0 !(unitless) conversion efficiency at max power point
    REAL(r64) :: Isc              =0.0D0 !(Amps) short circuit current
    REAL(r64) :: Voc              =0.0D0 !(Volts) open circuit voltage
    REAL(r64) :: Tcell            =0.0D0 !(deg C) solar cell operating temperature
    REAL(r64) :: Tback            =0.0D0 !(deg C) solar module operation temp, at back of module
    REAL(r64) :: AMa              =0.0D0 !(unitless) Absolute Air mass
    REAL(r64) :: F1               =0.0D0 !(unitless) holds result of "AMa-Function" for solar spectrum influence
    REAL(r64) :: F2               =0.0D0 !(unitless) holds result of AOI-Function for angle-of-incidence
    REAL(r64) :: Ix               =0.0D0 !(Amps) Current at V = 0.5 Voc
    REAL(r64) :: Vx               =0.0D0 !(Volts) Voltage at 0.5 Voc
    REAL(r64) :: Ixx              =0.0D0 !(Amps) current at V = 0.5(Vmpp + Voc)
    REAL(r64) :: Vxx              =0.0D0 !(Volts) voltage at 0.5(Vmpp + Voc)
    REAL(r64) :: SurfaceSink      =0.0D0 ! (Watts) energy balance term to account for electricity leaving
  END TYPE SNLPVCalcStruct

  TYPE PVReportVariables              !   for  GENERATOR:PV:EQUIVALENT ONE-DIODE MODEL
    REAL(r64) :: DCPower               =0.0D0 ! Direct Current power from PV array
    REAL(r64) :: DCEnergy              =0.0D0 ! Direct Current energy from PV array
    REAL(r64) :: ArrayEfficiency       =0.0D0 !array efficiency at current conditions [0..1]
    REAL(r64) :: CellTemp              =0.0D0 !array cell temperature at current conditions [C]
    REAL(r64) :: ArrayIsc              =0.0D0 !array short circuit current at current conditions [A]
    REAL(r64) :: ArrayVoc              =0.0D0 !array open circuit voltage at current conditions [V]
    REAL(r64) :: ArrayCurrent          =0.0D0
    REAL(r64) :: ArrayVoltage          =0.0D0
  END TYPE PVReportVariables

  TYPE PVArrayStruct
    CHARACTER(len=MaxNameLength) :: Name = ' '
    CHARACTER(len=MaxNameLength) :: SurfaceName = ' ' ! named surface in heat balance domain
    CHARACTER(len=MaxNameLength) :: PerfObjName = ' '
    INTEGER   :: SurfacePtr  = 0 ! index for named surface
    INTEGER   :: PVModelType = 0 ! type of performance modeling, Simple, TRNSYS or Equivalent 1-diode, or Sandia/King model
    INTEGER   :: CellIntegrationMode = 0     ! how are PV cells integrated with other E+ modeling
    REAL(r64) :: NumModNSeries       = 1.0D0 ! number of modules in series in one string
    REAL(r64) :: NumSeriesNParall    = 1.0D0 ! number of series strings in parallel

    INTEGER   :: UTSCPtr       = 0 ! pointer to UTSC number for INTEGRATED TRANSPIRED COLLECTOR mode
    INTEGER   :: ExtVentCavPtr = 0 ! pointer to Exterior Vented Cavity EXTERIOR VENTED CAVITY
    INTEGER   :: PVTPtr        = 0 ! pointer to PVT model
    REAL(r64) :: SurfaceSink   = 0.0D0 ! PV power "sink" for integration
    TYPE(PVReportVariables)           :: Report  ! report variables
    ! nested structs for user input parameters
    TYPE(SimplePVParamsStruct)        :: SimplePVModule ! simple model input params
    TYPE(TRNSYSPVModuleParamsStruct)  :: TRNSYSPVModule ! equivalent one-diode input params
    TYPE(SNLModuleParamsStuct)        :: SNLPVModule ! Sandia/King model input parameter data

    !nested structs for model input from elsewhere and calculations
    TYPE(TRNSYSPVCalcStruct)          :: TRNSYSPVcalc
    TYPE(SNLPVInputStruct)            :: SNLPVinto    ! model input from elsewhere in EnergyPlus
    TYPE(SNLPVCalcStruct)             :: SNLPVCalc      ! calc'd data for GENERATOR:PV:Sandia model

  END TYPE PVArrayStruct
        ! INTERFACE BLOCK SPECIFICATIONS
        ! na

        ! MODULE VARIABLE DECLARATIONS:
  INTEGER :: NumPVs        =0 ! count of number of PV generators
  INTEGER :: Num1DiodePVModuleTypes  = 0 ! count for Equivalent one-diode model
  INTEGER :: NumSimplePVModuleTypes  =0 ! count of number of input objs for simple model
  INTEGER :: NumSNLPVModuleTypes     =0 ! count of number of input objs for Sandia model

  TYPE (PVArrayStruct  ), ALLOCATABLE, DIMENSION(:) :: PVarray

  REAL(r64)    :: ShuntResistance=0.0D0  ! old "RSH" in common block of trnsys code

! ___________________________________________________________________________

!     EnergyPlus V1.2 and beyond include models for photovoltaic calculations called
!     Generator:Photovoltaic:Simple and Generator:PV:Sandia implemented by the Center for
!     Buildings and Thermal Systems, National Renewable Energy Laboratory, 1617 Cole Blvd
!     MS 2722, Golden, CO, 80401
!
!
!     EnergyPlus v1.1.1 and beyond includes model for Photovoltaic calculations, now
!     referred to as the Generator:PV:Equivalent One-Diode model developed by Thermal Energy
!     System Specialists, 2916 Marketplace Drive, Suite 104, Madison, WI 53719;
!     Tel: (608) 274-2577

!     NOTICE
!
!     Copyright © 1996-2013 The Board of Trustees of the University of Illinois
!     and The Regents of the University of California through Ernest Orlando Lawrence
!     Berkeley National Laboratory.  All rights reserved.
!
!     Portions of the EnergyPlus software package have been developed and copyrighted
!     by other individuals, companies and institutions.  These portions have been
!     incorporated into the EnergyPlus software package under license.   For a complete
!     list of contributors, see "Notice" located in EnergyPlus.f90.
!
!     NOTICE: The U.S. Government is granted for itself and others acting on its
!     behalf a paid-up, nonexclusive, irrevocable, worldwide license in this data to
!     reproduce, prepare derivative works, and perform publicly and display publicly.
!     Beginning five (5) years after permission to assert copyright is granted,
!     subject to two possible five year renewals, the U.S. Government is granted for
!     itself and others acting on its behalf a paid-up, non-exclusive, irrevocable
!     worldwide license in this data to reproduce, prepare derivative works,
!     distribute copies to the public, perform publicly and display publicly, and to
!     permit others to do so.
!
!     TRADEMARKS: EnergyPlus is a trademark of the US Department of Energy.
!
END MODULE DataPhotovoltaics

AirflowNetworkBalanceManager.f90 AirflowNetworkSolver.f90 BaseboardRadiator.f90 BaseboardRadiatorElectric.f90 BaseboardRadiatorSteam.f90 BaseboardRadiatorWater.f90 BranchInputManager.f90 BranchNodeConnections.f90 ConductionTransferFunctionCalc.f90 CoolTower.f90 CostEstimateManager.f90 CurveManager.f90 CVFOnlyRoutines.f90 DataAirflowNetwork.f90 DataAirLoop.f90 DataAirSystems.f90 DataBranchAirLoopPlant.f90 DataBranchNodeConnections.f90 DataBSDFWindow.f90 DataComplexFenestration.f90 DataContaminantBalance.f90 DataConvergParams.f90 DataConversions.f90 DataCostEstimate.f90 DataDaylighting.f90 DataDaylightingDevices.f90 Datadefineequip.f90 DataDElight.f90 DataEnvironment.f90 DataEquivalentLayerWindow.f90 DataErrorTracking.f90 DataGenerators.f90 DataGlobalConstants.f90 DataGlobals.f90 DataHeatBalance.f90 DataHeatBalFanSys.f90 DataHeatBalSurface.f90 DataHVACControllers.f90 DataHVACGlobals.f90 DataInterfaces.f90 DataIPShortCuts.f90 DataLoopNode.f90 DataMoistureBalance.f90 DataMoistureBalanceEMPD.f90 DataOutputs.f90 DataPhotovoltaics.f90 DataPlant.f90 DataPlantPipingSystems.f90 DataPrecisionGlobals.f90 DataReportingFlags.f90 DataRoomAir.f90 DataRootFinder.f90 DataRuntimeLanguage.f90 DataShadowingCombinations.f90 DataSizing.f90 DataStringGlobals.f90 DataSurfaceColors.f90 DataSurfaceLists.f90 DataSurfaces.f90 DataSystemVariables.f90 DataTimings.f90 DataUCSDSharedData.f90 DataVectorTypes.f90 DataViewFactorInformation.f90 DataWater.f90 DataZoneControls.f90 DataZoneEnergyDemands.f90 DataZoneEquipment.f90 DaylightingDevices.f90 DaylightingManager.f90 DElightManagerF.f90 DElightManagerF_NO.f90 DemandManager.f90 DesiccantDehumidifiers.f90 DirectAir.f90 DisplayRoutines.f90 DXCoil.f90 EarthTube.f90 EconomicLifeCycleCost.f90 EconomicTariff.f90 EcoRoof.f90 ElectricPowerGenerators.f90 ElectricPowerManager.f90 EMSManager.f90 EnergyPlus.f90 ExteriorEnergyUseManager.f90 ExternalInterface_NO.f90 FanCoilUnits.f90 FaultsManager.f90 FluidProperties.f90 General.f90 GeneralRoutines.f90 GlobalNames.f90 HeatBalanceAirManager.f90 HeatBalanceConvectionCoeffs.f90 HeatBalanceHAMTManager.f90 HeatBalanceInternalHeatGains.f90 HeatBalanceIntRadExchange.f90 HeatBalanceManager.f90 HeatBalanceMovableInsulation.f90 HeatBalanceSurfaceManager.f90 HeatBalFiniteDifferenceManager.f90 HeatRecovery.f90 Humidifiers.f90 HVACControllers.f90 HVACCooledBeam.f90 HVACDualDuctSystem.f90 HVACDuct.f90 HVACDXSystem.f90 HVACEvapComponent.f90 HVACFanComponent.f90 HVACFurnace.f90 HVACHeatingCoils.f90 HVACHXAssistedCoolingCoil.f90 HVACInterfaceManager.f90 HVACManager.f90 HVACMixerComponent.f90 HVACMultiSpeedHeatPump.f90 HVACSingleDuctInduc.f90 HVACSingleDuctSystem.f90 HVACSplitterComponent.f90 HVACStandAloneERV.f90 HVACSteamCoilComponent.f90 HVACTranspiredCollector.f90 HVACUnitaryBypassVAV.f90 HVACUnitarySystem.f90 HVACVariableRefrigerantFlow.f90 HVACWaterCoilComponent.f90 HVACWatertoAir.f90 HVACWatertoAirMultiSpeedHP.f90 InputProcessor.f90 MatrixDataManager.f90 MixedAir.f90 MoistureBalanceEMPDManager.f90 NodeInputManager.f90 NonZoneEquipmentManager.f90 OutAirNodeManager.f90 OutdoorAirUnit.f90 OutputProcessor.f90 OutputReportPredefined.f90 OutputReports.f90 OutputReportTabular.f90 PackagedTerminalHeatPump.f90 PackagedThermalStorageCoil.f90 Photovoltaics.f90 PhotovoltaicThermalCollectors.f90 PlantAbsorptionChillers.f90 PlantBoilers.f90 PlantBoilersSteam.f90 PlantCentralGSHP.f90 PlantChillers.f90 PlantCondLoopOperation.f90 PlantCondLoopTowers.f90 PlantEIRChillers.f90 PlantEvapFluidCoolers.f90 PlantExhaustAbsorptionChiller.f90 PlantFluidCoolers.f90 PlantGasAbsorptionChiller.f90 PlantGroundHeatExchangers.f90 PlantHeatExchanger.f90 PlantIceThermalStorage.f90 PlantLoadProfile.f90 PlantLoopEquipment.f90 PlantLoopSolver.f90 PlantManager.f90 PlantOutsideEnergySources.f90 PlantPipeHeatTransfer.f90 PlantPipes.f90 PlantPipingSystemManager.f90 PlantPondGroundHeatExchanger.f90 PlantPressureSystem.f90 PlantPumps.f90 PlantSolarCollectors.f90 PlantSurfaceGroundHeatExchanger.f90 PlantUtilities.f90 PlantValves.f90 PlantWaterSources.f90 PlantWaterThermalTank.f90 PlantWatertoWaterGSHP.f90 PlantWaterUse.f90 PollutionAnalysisModule.f90 PoweredInductionUnits.f90 PsychRoutines.f90 Purchasedairmanager.f90 RadiantSystemHighTemp.f90 RadiantSystemLowTemp.f90 RefrigeratedCase.f90 ReportSizingManager.f90 ReturnAirPath.f90 RoomAirManager.f90 RoomAirModelCrossVent.f90 RoomAirModelDisplacementVent.f90 RoomAirModelMundt.f90 RoomAirModelUFAD.f90 RoomAirModelUserTempPattern.f90 RootFinder.f90 RuntimeLanguageProcessor.f90 ScheduleManager.f90 SetPointManager.f90 SimAirServingZones.f90 SimulationManager.f90 SizingManager.f90 SolarReflectionManager.f90 SolarShading.f90 SortAndStringUtilities.f90 sqlite3.c SQLiteCRoutines.c SQLiteFortranRoutines.f90 SQLiteFortranRoutines_NO.f90 StandardRatings.f90 SurfaceGeometry.f90 SystemAvailabilityManager.f90 SystemReports.f90 TarcogComplexFenestration.f90 ThermalChimney.f90 ThermalComfort.f90 UnitHeater.f90 UnitVentilator.f90 UserDefinedComponents.f90 UtilityRoutines.f90 VectorUtilities.f90 VentilatedSlab.f90 WaterManager.f90 WeatherManager.f90 WindowAC.f90 WindowComplexManager.f90 WindowEquivalentLayer.f90 WindowManager.f90 WindTurbine.f90 Zoneairloopequipmentmanager.f90 ZoneContaminantPredictorCorrector.f90 ZoneDehumidifier.f90 Zoneequipmentmanager.f90 ZonePlenumComponent.f90 ZoneTempPredictorCorrector.f90