modelPVTQuasiDynamicCollector

Model of a photovoltaic–thermal (PVT) collector using the ISO 9806:2013 quasi-dynamic thermal method with integrated electrical coupling

Extends from IDEAS.Fluid.SolarCollectors.BaseClasses.PartialSolarCollector (Partial model for solar collectors).

Information

This component models a photovoltaic–thermal (PVT) collector by coupling the ISO 9806 quasi-dynamic thermal method with an internal electrical model. The model uses only datasheet parameters (no measured calibration data) and has been validated experimentally for unglazed PVT collectors (with and without rear insulation) under a wide range of weather conditions.

The main equations used in this model can be found in the following submodels, as described in the IDEAS.Fluid.PVTCollectors.UsersGuide.

Implementation Notes

This model supports PVT collectors, discretized into segments to capture temperature gradients. It is compatible with dynamic simulations where irradiance and fluid temperatures vary over time.

Parameters

TypeNameDefaultDescription
BooleanhomotopyInitialization (from PartialSolarCollector)true= true, use homotopy method
IntegernSeg (from PartialSolarCollector)3Number of segments used to discretize the collector model
Modelica.Units.SI.Angleazi (from PartialSolarCollector)Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing
Modelica.Units.SI.Angletil (from PartialSolarCollector)Surface tilt (0 for horizontally mounted collector)
Realrho (from PartialSolarCollector)Ground reflectance
Modelica.Units.SI.HeatCapacityCTot (from PartialSolarCollector)if per.CTyp == IDEAS.Fluid.SolarCollectors.Types.HeatCapacity.TotalCapacity then per.C elseif per.CTyp == IDEAS.Fluid.SolarCollectors.Types.HeatCapacity.DryCapacity then per.C + rho_default*per.V*cp_default else 385*per.mDry + rho_default*per.V*cp_defaultHeat capacity of solar collector with fluid
IDEAS.Fluid.SolarCollectors.Data.GenericASHRAE93per (from PartialSolarCollector)
IDEAS.Fluid.PVTCollectors.Types.CollectorTypecollectorTypeper.colTypType of collector used to select a proper default value for the effective transmittance-absorptance product (tauAlpEff)
Modelica.Units.SI.DimensionlessRatiotauAlpEff(if collectorType == IDEAS.Fluid.PVTCollectors.Types.CollectorType.Uncovered then 0.901 else 0.84)Effective transmittance–absorptance product
Modelica.Units.SI.IrradianceHGloHorNom1000global horizontal irradiances
Dynamics › Conservation equations
Modelica.Fluid.Types.DynamicsenergyDynamics (from LumpedVolumeDeclarations)Modelica.Fluid.Types.Dynamics.DynamicFreeInitialType of energy balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicssubstanceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of independent mass fraction balance: dynamic (3 initialization options) or steady state
Modelica.Fluid.Types.DynamicstraceDynamics (from LumpedVolumeDeclarations)energyDynamicsType of trace substance balance: dynamic (3 initialization options) or steady state
Advanced › Dynamics
Modelica.Fluid.Types.DynamicsmassDynamics (from LumpedVolumeDeclarations)energyDynamicsType of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state
Initialization
Medium.AbsolutePressurep_start (from LumpedVolumeDeclarations)Medium.p_defaultStart value of pressure
Medium.TemperatureT_start (from LumpedVolumeDeclarations)Medium.T_defaultStart value of temperature
Medium.MassFraction[Medium.nX]X_start (from LumpedVolumeDeclarations)Medium.X_defaultStart value of mass fractions m_i/m
Medium.ExtraProperty[Medium.nC]C_start (from LumpedVolumeDeclarations)fill(0, Medium.nC)Start value of trace substances
Medium.ExtraProperty[Medium.nC]C_nominal (from LumpedVolumeDeclarations)fill(1E-2, Medium.nC)Nominal value of trace substances. (Set to typical order of magnitude.)
Dynamics
RealmSenFac (from LumpedVolumeDeclarations)1Factor for scaling the sensible thermal mass of the volume
Flow resistance
BooleancomputeFlowResistance (from TwoPortFlowResistanceParameters)true=true, compute flow resistance. Set to false to assume no friction
Booleanfrom_dp (from TwoPortFlowResistanceParameters)false= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistance (from TwoPortFlowResistanceParameters)false= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM (from TwoPortFlowResistanceParameters)0.1Fraction of nominal flow rate where flow transitions to laminar
Nominal condition
Modelica.Units.SI.PressureDifferencedp_nominal (from TwoPortFlowResistanceParameters)Pressure difference
Modelica.Units.SI.MassFlowRatem_flow_nominal (from PartialTwoPortInterface)Nominal mass flow rate
Assumptions
BooleanallowFlowReversal (from PartialTwoPort)true= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
Modelica.Units.SI.MassFlowRatem_flow_small (from PartialTwoPortInterface)1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow
Advanced › Diagnostics
Booleanshow_T (from PartialTwoPortInterface)false= true, if actual temperature at port is computed
Shading
Booleanuse_shaCoe_in (from PartialSolarCollector)falseEnables an input connector for shaCoe
RealshaCoe (from PartialSolarCollector)0Shading coefficient. 0.0: no shading, 1.0: full shading
Area declarations
IDEAS.Fluid.SolarCollectors.Types.NumberSelectionnColType (from PartialSolarCollector)IDEAS.Fluid.SolarCollectors.Types.NumberSelection.NumberSelection of area specification format
IntegernPanels (from PartialSolarCollector)0Desired number of panels in the simulation
Modelica.Units.SI.AreatotalArea (from PartialSolarCollector)0Total area of panels in the simulation
Configuration declarations
IDEAS.Fluid.SolarCollectors.Types.SystemConfigurationsysConfig (from PartialSolarCollector)IDEAS.Fluid.SolarCollectors.Types.SystemConfiguration.SeriesSelection of system configuration
IntegernPanelsPar (from PartialSolarCollector)0Number of array panels in parallel
Electrical parameters
Modelica.Units.SI.EfficiencyeleLosFac0.10Loss factor of the PV panel(s)
Advanced › Electrical parameters
Modelica.Units.SI.CoefficientOfHeatTransferUAbsFluid((tauAlpEff - per.etaEl)*(per.c1 + abs(per.gamma)*HGloHorNom))/((tauAlpEff - per.etaEl) - per.eta0)Internal heat transfer coefficient between the fluid and PV cells; computed from datasheet parameters by default.

Connectors

TypeNameDefaultDescription
Modelica.Fluid.Interfaces.FluidPort_aport_a (from PartialTwoPort)Fluid connector a (positive design flow direction is from port_a to port_b)
Modelica.Fluid.Interfaces.FluidPort_bport_b (from PartialTwoPort)Fluid connector b (positive design flow direction is from port_a to port_b)
Modelica.Blocks.Interfaces.RealInputshaCoe_in (from PartialSolarCollector)Shading coefficient
IDEAS.BoundaryConditions.WeatherData.BusweaBus (from PartialSolarCollector)Weather data bus
Modelica.Blocks.Interfaces.RealOutputPelTotal electrical power output [W]
Modelica.Blocks.Interfaces.RealOutputQthTotal thermal power output[W]

Components

TypeNameDefaultDescription
Modelica.Units.SI.MassFlowRatem_flow (from PartialTwoPortInterface)port_a.m_flowMass flow rate from port_a to port_b (m_flow > 0 is design flow direction)
Modelica.Units.SI.PressureDifferencedp (from PartialTwoPortInterface)port_a.p - port_b.pPressure difference between port_a and port_b
Medium.ThermodynamicStatesta_a (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow)))Medium properties in port_a
Medium.ThermodynamicStatesta_b (from PartialTwoPortInterface)if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow))Medium properties in port_b
IDEAS.BoundaryConditions.SolarIrradiation.DiffusePerezHDifTilIso (from PartialSolarCollector)Diffuse solar irradiation on a tilted surface
IDEAS.BoundaryConditions.SolarIrradiation.DirectTiltedSurfaceHDirTil (from PartialSolarCollector)Direct solar irradiation on a tilted surface
IDEAS.Fluid.Sensors.MassFlowRatesenMasFlo (from PartialSolarCollector)Mass flow rate sensor
IDEAS.Fluid.FixedResistances.PressureDropres (from PartialSolarCollector)Flow resistance
IDEAS.Fluid.MixingVolumes.MixingVolume[nSeg]vol (from PartialSolarCollector)Volume of fluid in one segment of the solar collector
Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor[nSeg]temSen (from PartialSolarCollector)Temperature sensor
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow[nSeg]QGai (from PartialSolarCollector)Rate of solar heat gain
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow[nSeg]QLos (from PartialSolarCollector)Rate of heat loss
Modelica.Units.SI.VelocitywinSpeTilEffective wind speed normal to collector plane
Modelica.Units.SI.HeatFlux[nSeg]qThSegThermal power per segment
IDEAS.Fluid.SolarCollectors.BaseClasses.EN12975SolarGainsolGaiStcCalculates the heat gained from the sun using the ISO 9806:2013 quasi-dynamic standard calculations
IDEAS.Fluid.PVTCollectors.BaseClasses.ISO9806QuasiDynamicHeatLossheaLosStcCalculates the heat lost to the surroundings using the ISO 9806:2013 quasi-dynamic standard calculations
IDEAS.Fluid.PVTCollectors.BaseClasses.ElectricalPVTeleGenCalculates the electrical power output of the PVT model
Modelica.Blocks.Math.AddHGloTil
Modelica.Blocks.Sources.RealExpressionqThSegExp

Revisions

  • July 7, 2025, by Lone Meertens:
    First implementation PVT model. This is for #1436.