modelPVTQuasiDynamicCollector
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.
- Electrical generation: see IDEAS.Fluid.PVTCollectors.BaseClasses.ElectricalPVT
- Quasi-dynamic thermal losses: see IDEAS.Fluid.PVTCollectors.BaseClasses.ISO9806QuasiDynamicHeatLoss
- Solar (thermal) heat gain: see IDEAS.Fluid.SolarCollectors.BaseClasses.EN12975SolarGain
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
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization (from PartialSolarCollector) | true | = true, use homotopy method |
| Integer | nSeg (from PartialSolarCollector) | 3 | Number of segments used to discretize the collector model |
| Modelica.Units.SI.Angle | azi (from PartialSolarCollector) | Surface azimuth (0 for south-facing; -90 degree for east-facing; +90 degree for west facing | |
| Modelica.Units.SI.Angle | til (from PartialSolarCollector) | Surface tilt (0 for horizontally mounted collector) | |
| Real | rho (from PartialSolarCollector) | Ground reflectance | |
| Modelica.Units.SI.HeatCapacity | CTot (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_default | Heat capacity of solar collector with fluid |
| IDEAS.Fluid.SolarCollectors.Data.GenericASHRAE93 | per (from PartialSolarCollector) | ||
| IDEAS.Fluid.PVTCollectors.Types.CollectorType | collectorType | per.colTyp | Type of collector used to select a proper default value for the effective transmittance-absorptance product (tauAlpEff) |
| Modelica.Units.SI.DimensionlessRatio | tauAlpEff | (if collectorType == IDEAS.Fluid.PVTCollectors.Types.CollectorType.Uncovered then 0.901 else 0.84) | Effective transmittance–absorptance product |
| Modelica.Units.SI.Irradiance | HGloHorNom | 1000 | global horizontal irradiances |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from LumpedVolumeDeclarations) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | substanceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of independent mass fraction balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | traceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of trace substance balance: dynamic (3 initialization options) or steady state |
| Advanced › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | massDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from LumpedVolumeDeclarations) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from LumpedVolumeDeclarations) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from LumpedVolumeDeclarations) | Medium.X_default | Start 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 | |||
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| Flow resistance | |||
| Boolean | computeFlowResistance (from TwoPortFlowResistanceParameters) | true | =true, compute flow resistance. Set to false to assume no friction |
| Boolean | from_dp (from TwoPortFlowResistanceParameters) | false | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Boolean | linearizeFlowResistance (from TwoPortFlowResistanceParameters) | false | = true, use linear relation between m_flow and dp for any flow rate |
| Real | deltaM (from TwoPortFlowResistanceParameters) | 0.1 | Fraction of nominal flow rate where flow transitions to laminar |
| Nominal condition | |||
| Modelica.Units.SI.PressureDifference | dp_nominal (from TwoPortFlowResistanceParameters) | Pressure difference | |
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Shading | |||
| Boolean | use_shaCoe_in (from PartialSolarCollector) | false | Enables an input connector for shaCoe |
| Real | shaCoe (from PartialSolarCollector) | 0 | Shading coefficient. 0.0: no shading, 1.0: full shading |
| Area declarations | |||
| IDEAS.Fluid.SolarCollectors.Types.NumberSelection | nColType (from PartialSolarCollector) | IDEAS.Fluid.SolarCollectors.Types.NumberSelection.Number | Selection of area specification format |
| Integer | nPanels (from PartialSolarCollector) | 0 | Desired number of panels in the simulation |
| Modelica.Units.SI.Area | totalArea (from PartialSolarCollector) | 0 | Total area of panels in the simulation |
| Configuration declarations | |||
| IDEAS.Fluid.SolarCollectors.Types.SystemConfiguration | sysConfig (from PartialSolarCollector) | IDEAS.Fluid.SolarCollectors.Types.SystemConfiguration.Series | Selection of system configuration |
| Integer | nPanelsPar (from PartialSolarCollector) | 0 | Number of array panels in parallel |
| Electrical parameters | |||
| Modelica.Units.SI.Efficiency | eleLosFac | 0.10 | Loss factor of the PV panel(s) |
| Advanced › Electrical parameters | |||
| Modelica.Units.SI.CoefficientOfHeatTransfer | UAbsFluid | ((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
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Blocks.Interfaces.RealInput | shaCoe_in (from PartialSolarCollector) | Shading coefficient | |
| IDEAS.BoundaryConditions.WeatherData.Bus | weaBus (from PartialSolarCollector) | Weather data bus | |
| Modelica.Blocks.Interfaces.RealOutput | Pel | Total electrical power output [W] | |
| Modelica.Blocks.Interfaces.RealOutput | Qth | Total thermal power output[W] |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_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.ThermodynamicState | sta_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.DiffusePerez | HDifTilIso (from PartialSolarCollector) | Diffuse solar irradiation on a tilted surface | |
| IDEAS.BoundaryConditions.SolarIrradiation.DirectTiltedSurface | HDirTil (from PartialSolarCollector) | Direct solar irradiation on a tilted surface | |
| IDEAS.Fluid.Sensors.MassFlowRate | senMasFlo (from PartialSolarCollector) | Mass flow rate sensor | |
| IDEAS.Fluid.FixedResistances.PressureDrop | res (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.Velocity | winSpeTil | Effective wind speed normal to collector plane | |
| Modelica.Units.SI.HeatFlux[nSeg] | qThSeg | Thermal power per segment | |
| IDEAS.Fluid.SolarCollectors.BaseClasses.EN12975SolarGain | solGaiStc | Calculates the heat gained from the sun using the ISO 9806:2013 quasi-dynamic standard calculations | |
| IDEAS.Fluid.PVTCollectors.BaseClasses.ISO9806QuasiDynamicHeatLoss | heaLosStc | Calculates the heat lost to the surroundings using the ISO 9806:2013 quasi-dynamic standard calculations | |
| IDEAS.Fluid.PVTCollectors.BaseClasses.ElectricalPVT | eleGen | Calculates the electrical power output of the PVT model | |
| Modelica.Blocks.Math.Add | HGloTil | ||
| Modelica.Blocks.Sources.RealExpression | qThSegExp |
Revisions
-
July 7, 2025, by Lone Meertens:
First implementation PVT model. This is for #1436.