diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 906367a962..88780a8a88 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -79,8 +79,7 @@ jobs: - name: Test IDEAS.Fluid.Movers run: make test-dymola PACKAGE=\"IDEAS.Fluid.Movers\" INTERACTIVE=false - name: Test IDEAS.Fluid.PVTCollectors - run: make test-dymola PACKAGE=\"IDEAS.Fluid.PVTCollectors.BaseClasses.Examples\" INTERACTIVE=false - && make test-dymola PACKAGE=\"IDEAS.Fluid.PVTCollectors.Examples\" INTERACTIVE=false + run: make test-dymola PACKAGE=\"IDEAS.Fluid.PVTCollectors\" INTERACTIVE=false - name: Test IDEAS.Fluid.Sensors run: make test-dymola PACKAGE=\"IDEAS.Fluid.Sensors\" INTERACTIVE=false - name: Test IDEAS.Fluid.SolarCollectors diff --git a/IDEAS/Fluid/PVTCollectors/BaseClasses/ElectricalPVT.mo b/IDEAS/Fluid/PVTCollectors/BaseClasses/ElectricalPVT.mo index 09f9e9e4ac..e2bc4f1faa 100644 --- a/IDEAS/Fluid/PVTCollectors/BaseClasses/ElectricalPVT.mo +++ b/IDEAS/Fluid/PVTCollectors/BaseClasses/ElectricalPVT.mo @@ -1,23 +1,23 @@ within IDEAS.Fluid.PVTCollectors.BaseClasses; model ElectricalPVT - "Calculate the electrical power output of a PVT using the PVWatts v5 approach" + "Calculate the electrical power output of a PVT collector" extends Modelica.Blocks.Icons.Block; extends IDEAS.Fluid.SolarCollectors.BaseClasses.PartialParameters; // Parameters parameter Modelica.Units.SI.Irradiance HGloHorNom = 1000 "global horizontal irradiances"; - parameter Modelica.Units.SI.Efficiency eleLosFac = 0.09 "PV loss factor"; + parameter Modelica.Units.SI.Efficiency eleLosFac = 0.09 "Electrical system loss factor"; parameter Modelica.Units.SI.Temperature TpvtRef = 298.15 "Reference cell temperature"; - parameter Real gamma "Temperature coefficient [1/K]"; + parameter Real beta "Temperature coefficient [1/K]"; parameter Modelica.Units.SI.Power P_nominal "Nominal PV power"; parameter Modelica.Units.SI.Area A "PV area"; parameter Modelica.Units.SI.Efficiency eta0 "Zero-loss efficiency"; parameter Modelica.Units.SI.DimensionlessRatio tauAlpEff "Effective transmittance–absorptance product"; - parameter Modelica.Units.SI.CoefficientOfHeatTransfer c1 "First-order heat loss coefficient"; + parameter Modelica.Units.SI.CoefficientOfHeatTransfer a1 "First-order heat loss coefficient"; parameter Modelica.Units.SI.Efficiency etaEl "Electrical efficiency"; parameter Modelica.Units.SI.CoefficientOfHeatTransfer UAbsFluid = - ((tauAlpEff - etaEl) * (c1 + abs(gamma)*HGloHorNom)) / ((tauAlpEff - etaEl) - eta0) + ((tauAlpEff - etaEl) * a1) / ((tauAlpEff - etaEl) - eta0) "Heat transfer coefficient between the fluid and the PV cells, calculated from datasheet parameters"; // Inputs @@ -25,7 +25,7 @@ model ElectricalPVT "Fluid temperatures per segment [K]" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Modelica.Blocks.Interfaces.RealInput Qth[nSeg] + Modelica.Blocks.Interfaces.RealInput qth[nSeg] "Thermal power density per segment [W/m2]" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); @@ -34,7 +34,7 @@ model ElectricalPVT annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - // Outputs (user-facing) + // Outputs Modelica.Blocks.Interfaces.RealOutput Pel "Total electrical power output [W]" annotation (Placement(transformation(extent={{100,40},{140,80}}), @@ -58,10 +58,10 @@ protected equation for i in 1:nSeg loop - TCel[i] = Tflu[i] +Qth[i] / UAbsFluid; + TCel[i] = Tflu[i] + qth[i] / UAbsFluid; TDif[i] = TCel[i] - TpvtRef; Pel_int[i] = (A_c/nSeg) * (P_nominal/A) * (HGloTil/HGloHorNom) * - (1 + gamma * TDif[i]) * (1 - eleLosFac); + (1 + beta * TDif[i]) * (1 - eleLosFac); end for; Pel = sum(Pel_int); @@ -75,14 +75,14 @@ annotation ( Documentation(info="
This component computes the electrical power output of a photovoltaic-thermal (PVT) collector using the PVWatts v5 methodology (Dobos, 2014), adapted for PVT systems. -It is part of a validated, open-source Modelica implementation that relies solely on manufacturer datasheet parameters, as described in Meertens et al. (2025). +It is part of a validated, open-source Modelica implementation that relies solely on manufacturer datasheet parameters, as described in Meertens et al. (2026).
The model calculates the electrical output for each segment i ∈ {1, ..., nseg} as:
Pel,i = (Ac / nseg) · (Pnom / A) -· (Gtilt / Gnom) · (1 + γ · ΔTi) · (1 - eleLosFac) +· (Gtilt / Gnom) · (1 + β · ΔTi) · (1 - eleLosFac)
where: @@ -106,7 +106,7 @@ where: Gnom: nominal irradiance (typically 1000 W/m²)
-For well-maintained, unshaded modules, experimental validation (Meertens et al., 2025)
+For well-maintained, unshaded modules, experimental validation (Meertens et al., 2026)
found that using eleLosFac = 9% gives excellent agreement with
measured electrical output. For PVT collectors with a high positive tolerance on the
electrical output, this system loss factor can even be lower.
@@ -182,7 +182,7 @@ Users may adjust eleLosFac to account for site-specific soiling or
This model is designed for (unglazed) PVT collectors and supports discretization into multiple segments to capture temperature gradients along the flow path. -It is compatible with the thermal model based on ISO 9806:2013 and is suitable for dynamic simulations where irradiance and fluid temperatures vary over time. +It is compatible with the thermal model based on ISO 9806:2017 and is suitable for dynamic simulations where irradiance and fluid temperatures vary over time.
This example demonstrates the implementation of - + IDEAS.Fluid.PVTCollectors.BaseClasses.ISO9806QuasiDynamicHeatLoss, which calculates the quasi-dynamic heat loss of a PVT or solar thermal collector -according to the ISO 9806:2013 standard. +according to the ISO 9806:2017 standard.
-In addition to showcasing the ISO 9806-based model, this example also compares its behavior +In addition to showcasing the ISO 9806:2017-based model, this example also compares its behavior to the steady-state heat loss model IDEAS.Fluid.SolarCollectors.BaseClasses.EN12975HeatLoss, @@ -117,7 +118,7 @@ First implementation of ISO 9806 quasi-dynamic heat loss example. This is for 1436. -"), +