Skip to content

Issue1473 pvt validation ext#1481

Open
LoneMeertens wants to merge 42 commits intomasterfrom
issue1473_PvtValidationExt
Open

Issue1473 pvt validation ext#1481
LoneMeertens wants to merge 42 commits intomasterfrom
issue1473_PvtValidationExt

Conversation

@LoneMeertens
Copy link
Contributor

Summary

This PR upgrades the PVT validation framework to use EN ISO 9806:2017 quasi-dynamic parameters as the canonical input for the developed PVT model.

To ensure compatibility with other datasheet standards, an Excel conversion template is included in
IDEAS.Resources.Data.Fluid.PVTCollectors that converts coefficients from:

  • EN ISO 9806:2013 (Unglazed steady-state and Quasi-dynamic)
  • EN ISO 9806:2025 Quasi-dynamic

to the ISO 9806:2017 parameter set.

Reference

Conversion methodology and model upgrades and model validation are described in:
Meertens, L.; Jansen, J.; Helsen, L. (2026).
Development and Experimental Validation of an Open-Source Unglazed Photovoltaic-Thermal Collector Modelica Model that only needs Datasheet Parameters.
Submitted to Mathematical and Computer Modelling of Dynamical Systems.

Related issue: #1473

… wind speed to reduced wind speed as required by ISO9806:2017
… 2017 standard supports broader range of collectors
@LoneMeertens LoneMeertens self-assigned this Mar 12, 2026
@LoneMeertens
Copy link
Contributor Author

Before merging, we need to fix the OpenModelica parse error caused by break in
IDEAS/Fluid/PVTCollectors/Validation/PVT_UI/PVTQuasiDynamicCollectorValidation.mo.

OpenModelica reports:

No viable alternative near token: break

This prevents the IDEAS library from loading in OpenModelica, as described in #1482.
The break identifier should therefore be worked around to avoid the parser conflict so the library can load and the PR can be properly tested.

<li>
March 11, 2026, by Lone Meertens:<br/>
Updated thermal formulation from ISO 9806:2013 to ISO 9806:2017 and added
conversion support.This is for <a href=\"https://github.com/open-ideas/IDEAS/issues/1473\">#1473</a>.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing whitespace before "This" (please update everywhere)


parameter Modelica.Units.SI.CoefficientOfHeatTransfer UAbsFluid =
((tauAlpEff - etaEl) * (c1 + abs(gamma)*HGloHorNom)) / ((tauAlpEff - etaEl) - eta0)
((tauAlpEff - etaEl) * (a1 + abs(gamma)*HGloHorNom)) / ((tauAlpEff - etaEl) - eta0)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You use the beta-symbol in the paper to denote the power temperature coefficient. I would update this here as well to be consistent.

Comment on lines -194 to -196
Meertens, L., Jansen, J., Helsen, L. (2025).
<i>Development and Experimental Validation of an Unglazed Photovoltaic-Thermal Collector Modelica Model that only needs Datasheet Parameters</i>,
submitted to the 16th International Modelica & FMI Conference, Lucerne, Switzerland, Sep 8–10, 2025.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the conference paper not relevant any more? Maybe refer to this one in the user's guide and/or when you introduce the conversion script.

<li>
March 11, 2026, by Lone Meertens:<br/>
Updated thermal formulation from ISO 9806:2013 to ISO 9806:2017 and added
conversion support.This is for <a href=\"https://github.com/open-ideas/IDEAS/issues/1473\">#1473</a>.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you mean with conversion support? The revision note should refer to the model you're updating, not to all changes of the issue/PR.

@@ -0,0 +1,166 @@
within IDEAS.Fluid.PVTCollectors.BaseClasses;
model ISO9806HeatLoss
"Calculate the heat loss of a PVT/solar collector using ISO9806:2017"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This package is for PVT collectors, so I would remove the solar reference.

Comment on lines +42 to +44
IDEAS.Utilities.IO.SignalExchange.Read reaP(description=
"Power generated by the PV installation", y(unit="W")) "Read"
annotation (Placement(transformation(extent={{-20,-50},{-40,-30}})));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you add this block? What's the added value?

Comment on lines +46 to +48
final parameter Modelica.Units.SI.Temperature _T_ref=25+273 "Reference temperature of the cell";
final parameter Modelica.Units.SI.Temperature _noct=49+273 "Nominal operating cell temperature";
final parameter Modelica.Units.SI.Velocity wind_init=9.5 "Reference wind speed";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are these set as protected? And why did you add an underscore?

outer Modelica.Blocks.Sources.CombiTimeTable meaDat(
tableOnFile=true,
tableName="data",
fileName=Modelica.Utilities.Files.loadResource("modelica://PvTfluod/Resources/Validation/MeasurementData/Typ1_modelica.txt"),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

URL in loadResource seems incorrect

Comment on lines +158 to +159
<p>This model is an adapted PV-oriented electrical submodel (based on the MoPED <code>PVOrientedDCPower</code>) provided for <strong>validation only</strong>.</p>
<p><strong>Purpose / validation note:</strong> Demonstrate the bias caused by using PV-only cell-temperature equations for PVT collectors. Unglazed PVT collectors operate at lower cell temperatures due to thermal extraction; applying PV-based T<sub>cell</sub> estimates typically overpredicts cell temperature and underestimates electrical output.</p>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cannot be read easily in text mode. Add end-of-lines where appropriate.

Comment on lines +56 to +58
Modelica.Blocks.Sources.RealExpression Qdir(y=meaDat.y[2] - meaDat.y[3])
"[W/m2]" annotation (Placement(transformation(extent={{-31.5,
44},{-12.5,60}})));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix obsolete whitespaces

<p><strong>Purpose / validation note:</strong> Demonstrate the bias caused by using PV-only cell-temperature equations for PVT collectors. Unglazed PVT collectors operate at lower cell temperatures due to thermal extraction; applying PV-based T<sub>cell</sub> estimates typically overpredicts cell temperature and underestimates electrical output.</p>


<h4>References</h4>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add MoPED reference as you based your implementation on this model.

<h4>References</h4>
<ul>
<li>
Dobos, A. P. (2014). <i><a href='https://docs.nrel.gov/docs/fy14osti/62641.pdf'>PVWatts Version 5 Manual</a></i>. NREL/TP-6A20-62641
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought this model is, in contract to your PVT model, not based on the PVWatts model?

coordinateSystem(preserveAspectRatio=false)),
Documentation(info="<html>
<p>This model is an adapted PV-oriented electrical submodel (based on the MoPED <code>PVOrientedDCPower</code>) provided for <strong>validation only</strong>.</p>
<p><strong>Purpose / validation note:</strong> Demonstrate the bias caused by using PV-only cell-temperature equations for PVT collectors. Unglazed PVT collectors operate at lower cell temperatures due to thermal extraction; applying PV-based T<sub>cell</sub> estimates typically overpredicts cell temperature and underestimates electrical output.</p>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sentences are somewhat "abbreviated" versions. Please make them grammatically correct.

@@ -0,0 +1,62 @@
within IDEAS.Fluid.PVTCollectors.Validation.PVT_UI.BaseClasses;
record UI_Validation =
IDEAS.Fluid.PVTCollectors.Data.Generic (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove obsolete whitespaces

Comment on lines +56 to +60
<li>
July 7, 2025, by Lone Meertens:<br/>
First implementation PVT model.
This is for <a href=\"https://github.com/open-ideas/IDEAS/issues/1436\">#1436</a>.
</li>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Model is new according to Github

Comment on lines +7 to +8
This package contains a physics‑based, datasheet‑driven model for
photovoltaic–thermal (PVT) collectors. The thermal formulation follows the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

physics-based PVT collector model relying solely on datasheet parameters

Comment on lines +37 to +52
The thermal parameters used by this model are expressed in the
ISO 9806:2017 quasi‑dynamic format.
</p>
<p>
Because some commercial PVT collectors are still tested under
ISO 9806:2013 (steady‑state unglazed or quasi‑dynamic) or the
newly published ISO 9806:2025 quasi‑dynamic method, a
unified conversion procedure is provided to translate datasheet
parameters from these standards into their ISO 9806:2017 equivalents.
This guarantees that the model can be used for all commercially tested
PVT collectors.
The standard‑to‑standard conversion routines are provided in the easy‑to‑use Excel file located at
<code>IDEAS.Resources.Data.Fluid.PVTCollectors</code>.
The conversion procedure is based on (i) SKN‑N0474R0 for ISO 9806:2013
to ISO 9806:2017, and (ii) a newly introduced conversion for
ISO 9806:2025 to ISO 9806:2017 as published in Meertens et al. (2026).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Improve readability in text view (as it was before).

Comment on lines +83 to +85
<div style='display:flex; align-items:center; justify-content:center;'>
<div style='padding-right:8px;'><i>U<sub>AbsFluid</sub> = </i></div>
<table style='border-collapse:collapse; text-align:center;'>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revise equation based on latest paper updates

<i>(&tau;&#183;&alpha;)<sub>eff</sub> – &eta;<sub>0,el</sub>
&#183; (c<sub>1</sub> + c<sub>3</sub>&#183;u + b<sub>1,el</sub>)</i>
<td style='padding:4px;'>
<i>(τ·α)<sub>eff</sub> – η<sub>0,el</sub> · (a<sub>1</sub> + a<sub>3</sub>·u<sub>r</sub> + b<sub>1,el</sub>)</i>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why don't you use the <i>&tau;</i> notation for all greek symbols? This is also done for other IBPSA and IDEAS models.

</p>
<p style=\"text-align:center; font-style:italic; font-size:90%;\">
Figure 1: Two-node, one-capacitance thermal network for PVT collectors (ISO 9806: dashed lines; extension: solid lines) (Meertens et al., 2025).
Figure 1: Two-node, one-capacitance thermal network for PVT collectors (ISO 9806: dashed lines; extension: solid lines) (Meertens et al., 2026).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update figure according to latest paper changes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants