-
Notifications
You must be signed in to change notification settings - Fork 84
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add NIST validation and final paper status #1575
- Loading branch information
1 parent
b29b8c5
commit 6e263f8
Showing
16 changed files
with
1,066,783 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
within IBPSA.Electrical.DC.Sources; | ||
model PVTwoDiodes | ||
"Photovoltaic module(s) model based on two diodes approach" | ||
extends IBPSA.Electrical.BaseClasses.PV.PartialPVSystem( | ||
replaceable IBPSA.Electrical.Data.PV.TwoDiodesData data, | ||
redeclare IBPSA.Electrical.BaseClasses.PV.PVOpticalAbsRat | ||
PVOptical( | ||
final alt=alt, | ||
final til=til, | ||
final groRef=groRef, | ||
final glaExtCoe=glaExtCoe, | ||
final glaThi=glaThi, | ||
final refInd=refInd), | ||
redeclare IBPSA.Electrical.BaseClasses.PV.PVElectricalTwoDiodesMPP | ||
PVElectrical(redeclare IBPSA.Electrical.Data.PV.TwoDiodesData | ||
data=data), | ||
replaceable IBPSA.Electrical.BaseClasses.PV.BaseClasses.PartialPVThermalEmp | ||
PVThermal( | ||
redeclare IBPSA.Electrical.Data.PV.TwoDiodesData data=data)); | ||
|
||
|
||
equation | ||
connect(PVElectrical.eta, PVThermal.eta) annotation (Line( | ||
points={{-3.45455,-53},{40,-53},{40,-20},{-72,-20},{-72,-11.8},{-17.0909, | ||
-11.8}}, | ||
color={0,0,127})); | ||
connect(PVThermal.TCel, PVElectrical.TCel) annotation (Line( | ||
points={{-4.54545,-10},{0,-10},{0,-14},{-58,-14},{-58,-47},{-16,-47}}, | ||
color={0,0,127})); | ||
connect(PVElectrical.P, PDC) annotation (Line(points={{-3.45455,-47},{20,-47}, | ||
{20,-40},{60,-40},{60,0},{90,0}}, color={0,0,127})); | ||
connect(PVOptical.absRadRat, PVElectrical.absRadRat) | ||
annotation (Line(points={{-4.54545,30},{20,30},{20,-34},{-64,-34},{-64,-51.8}, | ||
{-16,-51.8}}, color={0,0,127})); | ||
connect(HGloTil, PVElectrical.HGloTil) annotation (Line(points={{-100,-60},{-100, | ||
-60},{-100,-54},{-68,-54},{-68,-54.2},{-16,-54.2}}, color={0, | ||
0,127})); | ||
connect(TDryBul, PVThermal.TDryBul) annotation (Line(points={{-100,0},{ | ||
-60,0},{-60,-4.6},{-17.0909,-4.6}},color={0,0,127})); | ||
connect(HGloTil, PVThermal.HGloTil) annotation (Line(points={{-100,-60}, | ||
{-80,-60},{-80,6},{-40,6},{-40,-15.4},{-17.0909,-15.4}}, | ||
color={0,0,127})); | ||
connect(vWinSpe, PVThermal.winVel) annotation (Line(points={{-100,30},{ | ||
-40,30},{-40,28},{-52,28},{-52,-8.2},{-17.0909,-8.2}}, | ||
color={0,0,127})); | ||
connect(zenAngle, PVOptical.zenAng) annotation (Line(points={{-100,90}, | ||
{-44,90},{-44,34.2},{-17.0909,34.2}}, | ||
color={0,0,127})); | ||
connect(incAngle, PVOptical.incAng) annotation (Line(points={{-100,60}, | ||
{-100,64},{-22,64},{-22,31.8},{-17.0909,31.8}}, color={0,0,127})); | ||
connect(HDifHor, PVOptical.HDifHor) annotation (Line(points={{-100,-90}, | ||
{-100,70},{-72,70},{-72,27},{-17.0909,27}}, color={0,0,127})); | ||
|
||
connect(HGloHor, PVOptical.HGloHor) annotation (Line(points={{-100,-30}, | ||
{-20,-30},{-20,29.4},{-17.0909,29.4}},color={0,0,127})); | ||
annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( | ||
coordinateSystem(preserveAspectRatio=false)), | ||
Documentation(info="<html> | ||
<p>This is a photovoltaic generator model based on a two diodes approach with replaceable thermal models accounting for different mountings. </p> | ||
</html>",revisions="<html> | ||
<ul> | ||
<li> | ||
Dec 12, 2022, by Christoph Nytsch-Geusen:<br/> | ||
First implementation. | ||
</li> | ||
</ul> | ||
</html>")); | ||
end PVTwoDiodes; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
196 changes: 196 additions & 0 deletions
196
IBPSA/Electrical/DC/Sources/Validation/PVSingleDiodeNISTValidation.mo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,196 @@ | ||
within IBPSA.Electrical.DC.Sources.Validation; | ||
model PVSingleDiodeNISTValidation | ||
"Model validation based on NIST measurement data" | ||
extends Modelica.Icons.Example; | ||
|
||
parameter Modelica.Units.SI.Time timZon=-5*3600 | ||
"Time zone"; | ||
|
||
parameter Modelica.Units.SI.Angle lon=-77.2156*Modelica.Constants.pi/180 | ||
"Longitude"; | ||
parameter Modelica.Units.SI.Angle lat=39.1354*Modelica.Constants.pi/180 | ||
"Latitude"; | ||
parameter Modelica.Units.SI.Angle azi=0 | ||
"Surface azimuth. azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south"; | ||
parameter Modelica.Units.SI.Angle til=10*Modelica.Constants.pi/180 | ||
"Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof"; | ||
|
||
parameter Modelica.Units.SI.Time nDay=(31+28+31+30+31+14)*24*3600 "Day at which simulation starts"; | ||
|
||
|
||
parameter Real alt(final unit="m")= 0.08 "Site altitude"; | ||
|
||
parameter Real rho=0.2 "Ground reflectance"; | ||
|
||
constant Real G_sc( | ||
final quantity="Irradiance", | ||
final unit = "W/m2") = 1376 | ||
"Solar constant"; | ||
|
||
Modelica.Units.SI.Irradiance HGloHor; | ||
Modelica.Units.SI.Irradiance HGloHorDif; | ||
Real k_t(final unit="1", start=0.5) "Clearness index"; | ||
Modelica.Units.SI.Angle solDec; | ||
Modelica.Units.SI.Angle solHouAng; | ||
Modelica.Units.SI.Time cloTim; | ||
|
||
Modelica.Blocks.Sources.CombiTimeTable NISTdata( | ||
tableOnFile=true, | ||
tableName="Roof2016", | ||
fileName=ModelicaServices.ExternalReferences.loadResource("modelica://IBPSA/Resources/Data/Electrical/DC/Sources/Validation/NIST_onemin_Roof_2016.txt"), | ||
columns={3,5,2,4}, | ||
smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative) | ||
"The PVSystem model is validaded with measurement data from: https://pvdata.nist.gov/ " | ||
annotation (Placement(transformation(extent={{-96,-10},{-76,10}}))); | ||
|
||
PVSingleDiode pVSingleDiode( | ||
redeclare IBPSA.Electrical.Data.PV.SingleDiodeShardNUU235F2 data, | ||
PVTechType=IBPSA.Electrical.BaseClasses.PV.BaseClasses.PVOptical.PVType.MonoSI, | ||
n_mod=312, | ||
groRef=rho, | ||
alt=alt, | ||
til=til, | ||
redeclare IBPSA.Electrical.BaseClasses.PV.PVThermalEmpMountCloseToGround | ||
PVThermal) | ||
annotation (Placement(transformation(extent={{64,0},{80,20}}))); | ||
|
||
Modelica.Blocks.Interfaces.RealOutput PDCSim "Simulated DC output power" | ||
annotation (Placement(transformation(extent={{100,-10},{120,10}}))); | ||
BoundaryConditions.SolarGeometry.IncidenceAngle incAng(azi=azi, til=til) | ||
annotation (Placement(transformation(extent={{-36,-58},{-20,-42}}))); | ||
Modelica.Blocks.Routing.RealPassThrough zen | ||
annotation (Placement(transformation(extent={{0,-80},{20,-60}}))); | ||
BoundaryConditions.SolarIrradiation.GlobalPerezTiltedSurface HGloTil( | ||
H(start=100), | ||
til=til, | ||
azi=azi, | ||
rho=rho) | ||
annotation (Placement(transformation(extent={{22,30},{42,50}}))); | ||
BoundaryConditions.WeatherData.ReaderTMY3 weaDat( | ||
filNam=ModelicaServices.ExternalReferences.loadResource( | ||
"modelica://IBPSA/Resources/weatherdata/USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3.mos"), | ||
computeWetBulbTemperature=false, | ||
TDryBulSou=IBPSA.BoundaryConditions.Types.DataSource.Input, | ||
winSpeSou=IBPSA.BoundaryConditions.Types.DataSource.Input, | ||
HSou=IBPSA.BoundaryConditions.Types.RadiationDataSource.Input_HGloHor_HDifHor) | ||
annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); | ||
|
||
Modelica.Blocks.Sources.Constant sounDay(k=nDay) | ||
"Number of validation day (July 28th 2023) in seconds" | ||
annotation (Placement(transformation(extent={{-96,54},{-80,70}}))); | ||
BoundaryConditions.WeatherData.Bus weaBus "Weather data bus" | ||
annotation (Placement(transformation(extent={{-16,-10},{4,10}}))); | ||
Modelica.Blocks.Math.UnitConversions.From_degC from_degC | ||
annotation (Placement(transformation(extent={{-62,-4},{-54,4}}))); | ||
Modelica.Blocks.Sources.RealExpression souGloHorDif(y=HGloHorDif) | ||
annotation (Placement(transformation(extent={{-78,-40},{-58,-20}}))); | ||
Modelica.Blocks.Interfaces.RealOutput PDCMea "Measured DC output power" | ||
annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); | ||
Modelica.Blocks.Interfaces.RealOutput SolHouAng(final unit="rad") "Solar hour angle" | ||
annotation (Placement(transformation(extent={{100,-62},{120,-42}}))); | ||
Modelica.Blocks.Interfaces.RealOutput SolDec(final unit="rad") | ||
"Solar decimal angle" | ||
annotation (Placement(transformation(extent={{100,-80},{120,-60}}))); | ||
Modelica.Blocks.Interfaces.RealOutput CloTim(final unit="s") "Clock time" | ||
annotation (Placement(transformation(extent={{100,-100},{120,-80}}))); | ||
Modelica.Blocks.Math.Gain frokW_toW(k=1000) | ||
"From Kilowatt to Watt transformation" | ||
annotation (Placement(transformation(extent={{72,-26},{84,-14}}))); | ||
equation | ||
|
||
//Approximation of diffuse horizontal irradiation still necessary because | ||
//the validation data does not contain this information so far | ||
|
||
HGloHor=NISTdata.y[3]; | ||
solDec=SolDec; | ||
solHouAng=SolHouAng; | ||
cloTim=CloTim; | ||
|
||
k_t = if HGloHor <= 0.01 then 0 else min(1, max(0, (HGloHor/(G_sc* | ||
(1+0.033*cos(360*(Modelica.Constants.pi/180)*cloTim/24/60/60/365)* | ||
(cos(lat)*cos(SolDec)*cos(SolHouAng)+sin(lat)*sin(SolDec))))))); | ||
|
||
// Erb´s diffuse fraction relation | ||
HGloHorDif = if HGloHor <=0.01 then | ||
0 | ||
elseif k_t <= 0.22 then | ||
(HGloHor)*(1.0-0.09*k_t) | ||
elseif k_t > 0.8 then | ||
(HGloHor)*0.165 | ||
else | ||
(HGloHor)*(0.9511-0.1604*k_t+4.388*k_t^2-16.638*k_t^3+12.336*k_t^4); | ||
connect(pVSingleDiode.PDC, PDCSim) | ||
annotation (Line(points={{81,10},{96,10},{96,0},{110,0}}, | ||
color={0,0,127})); | ||
connect(zen.y, pVSingleDiode.zenAngle) annotation (Line(points={{21,-70},{54,-70}, | ||
{54,19},{62,19}}, color={0,0,127})); | ||
connect(weaDat.weaBus, weaBus) annotation (Line( | ||
points={{-20,0},{-6,0}}, | ||
color={255,204,51}, | ||
thickness=0.5)); | ||
connect(NISTdata.y[1], from_degC.u) | ||
annotation (Line(points={{-75,0},{-62.8,0}}, color={0,0,127})); | ||
connect(from_degC.y, weaDat.TDryBul_in) annotation (Line(points={{-53.6,0},{-46, | ||
0},{-46,9},{-41,9}}, color={0,0,127})); | ||
connect(NISTdata.y[2], weaDat.winSpe_in) annotation (Line(points={{-75,0},{-68, | ||
0},{-68,-8},{-46,-8},{-46,-3.9},{-41,-3.9}}, color={0,0,127})); | ||
connect(souGloHorDif.y, pVSingleDiode.HDifHor) | ||
annotation (Line(points={{-57,-30},{62,-30},{62,1}}, color={0,0,127})); | ||
connect(NISTdata.y[3], pVSingleDiode.HGloHor) annotation (Line(points={{-75,0}, | ||
{-68,0},{-68,-16},{32,-16},{32,7},{62,7}}, color={0,0,127})); | ||
connect(HGloTil.H, pVSingleDiode.HGloTil) | ||
annotation (Line(points={{43,40},{56,40},{56,4},{62,4}}, color={0,0,127})); | ||
connect(weaBus, HGloTil.weaBus) annotation (Line( | ||
points={{-6,0},{-8,0},{-8,40},{22,40}}, | ||
color={255,204,51}, | ||
thickness=0.5)); | ||
connect(incAng.y, pVSingleDiode.incAngle) annotation (Line(points={{-19.2,-50}, | ||
{-12,-50},{-12,-14},{30,-14},{30,16},{62,16}}, color={0,0,127})); | ||
connect(NISTdata.y[2], pVSingleDiode.vWinSpe) annotation (Line(points={{-75,0}, | ||
{-68,0},{-68,-8},{-44,-8},{-44,-16},{32,-16},{32,6},{52,6},{52,13},{62, | ||
13}}, color={0,0,127})); | ||
connect(weaBus, incAng.weaBus) annotation (Line( | ||
points={{-6,0},{-6,-24},{-46,-24},{-46,-50},{-36,-50}}, | ||
color={255,204,51}, | ||
thickness=0.5)); | ||
connect(weaBus.solZen, zen.u) annotation (Line( | ||
points={{-6,0},{-6,-54},{-12,-54},{-12,-70},{-2,-70}}, | ||
color={255,204,51}, | ||
thickness=0.5)); | ||
connect(weaBus.solHouAng,SolHouAng) annotation (Line( | ||
points={{-6,0},{-6,-52},{110,-52}}, | ||
color={255,204,51}, | ||
thickness=0.5)); | ||
connect(weaBus.solDec,SolDec) annotation (Line( | ||
points={{-6,0},{-6,-70},{110,-70}}, | ||
color={255,204,51}, | ||
thickness=0.5)); | ||
connect(weaBus.cloTim,CloTim) annotation (Line( | ||
points={{-6,0},{-6,-90},{110,-90}}, | ||
color={255,204,51}, | ||
thickness=0.5)); | ||
connect(from_degC.y, pVSingleDiode.TDryBul) | ||
annotation (Line(points={{-53.6,0},{62,0},{62,10}}, color={0,0,127})); | ||
connect(souGloHorDif.y, weaDat.HDifHor_in) annotation (Line(points={{-57,-30}, | ||
{-48,-30},{-48,-18},{-41,-18},{-41,-9.5}}, color={0,0,127})); | ||
connect(NISTdata.y[3], weaDat.HGloHor_in) annotation (Line(points={{-75,0},{-68, | ||
0},{-68,-13},{-41,-13}}, color={0,0,127})); | ||
connect(frokW_toW.y, PDCMea) | ||
annotation (Line(points={{84.6,-20},{110,-20}}, color={0,0,127})); | ||
connect(NISTdata.y[4], frokW_toW.u) annotation (Line(points={{-75,0},{-68,0}, | ||
{-68,-16},{64,-16},{64,-20},{70.8,-20}}, color={0,0,127})); | ||
annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( | ||
coordinateSystem(preserveAspectRatio=false), graphics={Text( | ||
extent={{-94,46},{-36,12}}, | ||
lineColor={28,108,200}, | ||
horizontalAlignment=TextAlignment.Left, | ||
textString="1 - Air temperature in °C | ||
2 - Wind speed in m/s | ||
3 - Global horizontal irradiance in W/m2 | ||
4 - Ouput power in kW")}), | ||
experiment( | ||
StopTime=86400, | ||
Interval=300, | ||
__Dymola_Algorithm="Dassl"), | ||
__Dymola_experimentSetupOutput(events=false)); | ||
end PVSingleDiodeNISTValidation; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
IBPSA/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
within IBPSA.Electrical.DC.Sources.Validation; | ||
model PVTwoDiodesRooftopBuildingValidation | ||
"Validation of the two-diodes PV model with empirical data from a rooftop PV system with CIGS modules at UdK, Berlin" | ||
extends Modelica.Icons.Example; | ||
extends | ||
IBPSA.Electrical.DC.Sources.Validation.BaseClasses.partialPVRooftopBuildingValidation; | ||
IBPSA.Electrical.DC.Sources.PVTwoDiodes pVSystemTwoDiodes( | ||
PVTechType=IBPSA.Electrical.BaseClasses.PV.BaseClasses.PVOptical.PVType.ThinFilmSI, | ||
til=til, | ||
n_mod=6, | ||
redeclare IBPSA.Electrical.Data.PV.TwoDiodesSolibroSL2CIGS110 data, | ||
groRef=rho, | ||
alt=0.08, | ||
redeclare IBPSA.Electrical.BaseClasses.PV.PVThermalEmpMountCloseToGround | ||
PVThermal) | ||
annotation (Placement(transformation(extent={{64,0},{84,20}}))); | ||
|
||
equation | ||
|
||
connect(pVSystemTwoDiodes.PDC, PDCSim) annotation (Line(points={{85.25,10},{96, | ||
10},{96,40},{110,40}}, color={0,0,127})); | ||
connect(zen.y, pVSystemTwoDiodes.zenAngle) annotation (Line(points={{41,-50},{ | ||
52,-50},{52,19},{61.5,19}}, color={0,0,127})); | ||
connect(incAng.y, pVSystemTwoDiodes.incAngle) annotation (Line(points={{38.8,-10}, | ||
{54,-10},{54,16},{61.5,16}}, color={0,0,127})); | ||
connect(MeaDatWinAngSpe.y[2], pVSystemTwoDiodes.vWinSpe) annotation (Line( | ||
points={{-79,10},{-46,10},{-46,24},{48,24},{48,13},{61.5,13}}, color={0, | ||
0,127})); | ||
connect(MeaDatHGloHor.y[1], pVSystemTwoDiodes.HGloHor) annotation (Line( | ||
points={{-79,-90},{-60,-90},{-60,-80},{-20,-80},{-20,-24},{14,-24},{14,7}, | ||
{61.5,7}}, color={0,0,127})); | ||
connect(souGloHorDif.y, pVSystemTwoDiodes.HDifHor) annotation (Line(points={{-79, | ||
-24},{-16,-24},{-16,-22},{61.5,-22},{61.5,1}}, color={0,0,127})); | ||
connect(HGloTil.H, pVSystemTwoDiodes.HGloTil) annotation (Line(points={{41,50}, | ||
{52,50},{52,20},{54,20},{54,4},{61.5,4}}, color={0,0,127})); | ||
connect(from_degC.y, pVSystemTwoDiodes.TDryBul) annotation (Line(points={{-41.2, | ||
-50},{-41.2,-6},{-44,-6},{-44,22},{46,22},{46,10},{61.5,10}}, color={0, | ||
0,127})); | ||
annotation ( | ||
Icon(coordinateSystem(preserveAspectRatio=false, extent={{-120,-100},{100, | ||
100}})), | ||
Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-120,-100},{ | ||
100,100}})), | ||
experiment( | ||
StartTime=12182400, | ||
StopTime=13046400, | ||
Interval=900, | ||
Tolerance=1e-06, | ||
__Dymola_Algorithm="Dassl"), | ||
__Dymola_Commands(file= | ||
"modelica://IBPSA/Resources/Scripts/Dymola/Electrical/DC/Sources/Validation/PVTwoDiodesRooftopBuildingValidation.mos" | ||
"Simulate and plot"), | ||
Documentation(info="<html> | ||
<p>The PVSystem 2 diode model is validaded with empirical data from the Rooftop solar builidng of UdK Berlin: <a href=\"http://www.solar-rooftop.de/\">http://www.solar-rooftop.de/</a> </p> | ||
<p>The date 18.04.2023 was chosen as an example for the PVSystem model. </p> | ||
</html>",revisions="<html> | ||
<ul> | ||
<li> | ||
March 30, 2023, by Christoph Nytsch-Geusen:<br/> | ||
First implementation. | ||
</li> | ||
</ul> | ||
</html>")); | ||
end PVTwoDiodesRooftopBuildingValidation; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
PVSingleDiodeRooftopBuildingValidation | ||
PVSingleDiodeNISTValidation | ||
PVTwoDiodesRooftopBuildingValidation | ||
BaseClasses |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
ConstantVoltage | ||
PVSingleDiode | ||
PVTwoDiodes | ||
VoltageSource | ||
Examples | ||
Validation | ||
Examples | ||
BaseClasses |
Oops, something went wrong.