Skip to content

Commit 1831228

Browse files
Added CCG missing faults (#457)
* added missing components, faults, and adapted tests Signed-off-by: pepmts <[email protected]> * Update CHANGELOG.md --------- Signed-off-by: pepmts <[email protected]>
1 parent eb6ee90 commit 1831228

File tree

18 files changed

+293
-5
lines changed

18 files changed

+293
-5
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Use [gitmoji](https://gitmoji.dev/) to identify your changes.
99

1010
### ✨ Added <!--Make sure to add a link to the PR and issues related to your change-->
1111

12+
- Added compressor and gas turbine internal faults, and missing Fuel and FlueGases pipes, with all corresponding tests [PR#457](https://github.com/Metroscope-dev/metroscope-modeling-library/pull/457)
13+
1214
### 🐛 Fixed <!--Make sure to add a link to the PR and issues related to your change-->
1315

1416
### 💥 Changed <!--Make sure to add a link to the PR and issues related to your change-->

MetroscopeModelingLibrary/Examples/CCGT/MetroscopiaCCGT/MetroscopiaCCGT_faulty.mo

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ model MetroscopiaCCGT_faulty "Metroscopia CCGT faulty"
88
Reheater(faulty=true),
99
evaporator(faulty=true),
1010
economiser(faulty=true),
11-
HPST_control_valve(faulty=true));
11+
HPST_control_valve(faulty=true),
12+
airCompressor(faulty=true),
13+
gasTurbine(faulty=true));
1214

1315
// Heat exchangers failures
1416
input Real Fault_Reheater_fouling(start=0);
@@ -28,10 +30,15 @@ model MetroscopiaCCGT_faulty "Metroscopia CCGT faulty"
2830

2931
// Gas turbine failures
3032
input Real Fault_AirFilter_fouling(start=0);
33+
input Real Fault_airCompressor_tau_decrease(start=0);
34+
input Real Fault_airCompressor_eta_is_decrease(start=0);
35+
input Real Fault_gasTurbine_eta_is_decrease(start=0);
36+
3137

3238
// Steam turbine
3339
input Real Fault_HPST_CV_closed_valve(start=0);
3440

41+
3542
MetroscopeModelingLibrary.WaterSteam.Pipes.Leak bypass_HP_turbine_to_condenser_leak
3643
annotation (Placement(transformation(
3744
extent={{-10,-10},{10,10}},
@@ -83,6 +90,9 @@ equation
8390

8491
//Gas turbine
8592
AirFilter.fouling = Fault_AirFilter_fouling;
93+
airCompressor.tau_decrease = Fault_airCompressor_tau_decrease;
94+
airCompressor.eta_is_decrease = Fault_airCompressor_eta_is_decrease;
95+
gasTurbine.eta_is_decrease = Fault_gasTurbine_eta_is_decrease;
8696

8797
connect(P_HPST_in_sensor.C_in, HPST_control_valve.C_out) annotation (Line(
8898
points={{-180,180},{-183.375,180},{-183.375,180},{-186.75,180}}, color={

MetroscopeModelingLibrary/FlueGases/Machines/AirCompressor.mo

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,25 @@ model AirCompressor
1818
Units.SpecificEnthalpy h_is(start=1e6) "Isentropic compression outlet enthalpy";
1919
FlueGasesMedium.ThermodynamicState state_is "Isentropic compression outlet thermodynamic state";
2020

21+
// Failure modes
22+
parameter Boolean faulty = false;
23+
Units.Percentage eta_is_decrease(min = 0, max=100) "percentage decrease of eta_is";
24+
Units.Percentage tau_decrease(min = 0, max=100) "percentage decrease of tau";
2125

2226
Power.Connectors.Inlet C_W_in annotation (Placement(transformation(extent={{90,50},{110,70}}), iconTransformation(extent={{90,50},{110,70}})));
2327
equation
2428

29+
// Failure modes
30+
if not faulty then
31+
eta_is_decrease = 0;
32+
tau_decrease = 0;
33+
end if;
34+
2535
/* Compression ratio */
26-
tau = P_out/P_in;
36+
tau*(1-tau_decrease/100) = P_out/P_in;
2737

2838
/* Fluid specific enthalpy after the expansion */
29-
DH*eta_is = h_is - h_in;
39+
DH*eta_is*(1-eta_is_decrease/100) = h_is - h_in;
3040

3141
/* Mechanical power from the turbine */
3242
C_W_in.W = W;

MetroscopeModelingLibrary/FlueGases/Machines/GasTurbine.mo

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,24 @@ model GasTurbine
2121

2222
Units.Power W_shaft;
2323

24+
// Failure modes
25+
parameter Boolean faulty = false;
26+
Units.Percentage eta_is_decrease(min = 0, max=100) "percentage decrease of eta_is";
27+
28+
2429
Power.Connectors.Outlet C_W_shaft annotation (Placement(transformation(extent={{90,90},{110,110}}), iconTransformation(extent={{90,90},{110,110}})));
2530
equation
2631

32+
// Failure modes
33+
if not faulty then
34+
eta_is_decrease = 0;
35+
end if;
36+
2737
/* Compression ratio */
2838
tau = P_in/P_out;
2939

3040
/* Fluid specific enthalpy after the expansion */
31-
DH = eta_is*(h_is - h_in);
41+
DH = eta_is*(1-eta_is_decrease/100)*(h_is - h_in);
3242

3343
/* Mechanical power produced by the turbine */
3444
W_shaft = - C_W_shaft.W;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pipe
22
Filter
3-
HeatLoss
43
ControlValve
4+
HeatLoss
55
Leak
66
PressureCut
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
within MetroscopeModelingLibrary.Fuel.Pipes;
2+
model HeatLoss
3+
package FuelMedium = MetroscopeModelingLibrary.Utilities.Media.FuelMedium;
4+
extends Partial.Pipes.HeatLoss(
5+
redeclare MetroscopeModelingLibrary.Fuel.Connectors.Inlet C_in,
6+
redeclare MetroscopeModelingLibrary.Fuel.Connectors.Outlet C_out,
7+
redeclare package Medium = FuelMedium,
8+
Q_0 = 500, rho_0=1)
9+
annotation(IconMap(primitivesVisible=false));
10+
annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={
11+
Rectangle(
12+
extent={{-100,30},{100,-30}},
13+
lineColor={95,95,95},
14+
fillColor={213,213,0},
15+
fillPattern=FillPattern.Solid),
16+
Line(
17+
points={{-14,50},{-14,50},{-24,40},{-10,30},{-24,16},{-14,8}},
18+
color={238,46,47},
19+
smooth=Smooth.Bezier,
20+
thickness=0.5),
21+
Line(
22+
points={{0,50},{0,50},{-10,40},{4,30},{-10,16},{0,8}},
23+
color={238,46,47},
24+
smooth=Smooth.Bezier,
25+
thickness=0.5),
26+
Line(
27+
points={{14,50},{14,50},{4,40},{18,30},{4,16},{14,8}},
28+
color={238,46,47},
29+
smooth=Smooth.Bezier,
30+
thickness=0.5)}), Diagram(coordinateSystem(preserveAspectRatio=false)));
31+
end HeatLoss;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
within MetroscopeModelingLibrary.Fuel.Pipes;
2+
model Leak
3+
4+
package FuelMedium = MetroscopeModelingLibrary.Utilities.Media.FuelMedium;
5+
extends Partial.Pipes.Leak(
6+
redeclare MetroscopeModelingLibrary.Fuel.Connectors.Inlet C_in,
7+
redeclare MetroscopeModelingLibrary.Fuel.Connectors.Outlet C_out,
8+
redeclare MetroscopeModelingLibrary.Fuel.BaseClasses.IsoHFlowModel flow_model,
9+
redeclare MetroscopeModelingLibrary.Sensors.Fuel.FlowSensor flow_sensor,
10+
redeclare package Medium = FuelMedium) annotation (IconMap(primitivesVisible=false));
11+
12+
annotation (Icon(graphics={Rectangle(
13+
extent={{-100,40},{0,-40}},
14+
lineColor={95,95,95},
15+
fillColor={213,213,0},
16+
fillPattern=FillPattern.Solid),
17+
Rectangle(
18+
extent={{0,40},{100,-40}},
19+
lineColor={175,175,175},
20+
fillColor={213,213,171},
21+
fillPattern=FillPattern.Solid),
22+
Ellipse(
23+
extent={{12,16},{36,6}},
24+
lineColor={95,95,95},
25+
fillColor={213,213,0},
26+
fillPattern=FillPattern.Solid),
27+
Ellipse(
28+
extent={{8,0},{24,-6}},
29+
lineColor={95,95,95},
30+
fillColor={213,213,0},
31+
fillPattern=FillPattern.Solid),
32+
Ellipse(
33+
extent={{36,2},{60,-6}},
34+
lineColor={95,95,95},
35+
fillColor={213,213,0},
36+
fillPattern=FillPattern.Solid),
37+
Ellipse(
38+
extent={{56,10},{80,2}},
39+
lineColor={95,95,95},
40+
fillColor={213,213,0},
41+
fillPattern=FillPattern.Solid),
42+
Ellipse(
43+
extent={{60,-6},{84,-14}},
44+
lineColor={95,95,95},
45+
fillColor={213,213,0},
46+
fillPattern=FillPattern.Solid),
47+
Ellipse(
48+
extent={{18,-12},{42,-20}},
49+
lineColor={95,95,95},
50+
fillColor={213,213,0},
51+
fillPattern=FillPattern.Solid)}));
52+
end Leak;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
within MetroscopeModelingLibrary.Fuel.Pipes;
2+
model PressureCut
3+
extends Fuel.BaseClasses.IsoHFlowModel
4+
annotation(IconMap(primitivesVisible=false));
5+
annotation (Icon(graphics={Rectangle(
6+
extent={{-100,30},{100,-30}},
7+
lineColor={28,108,200},
8+
fillColor={213,213,0},
9+
fillPattern=FillPattern.Solid,
10+
pattern=LinePattern.None),
11+
Line(
12+
points={{-40,-60},{0,60}},
13+
color={0,0,0},
14+
thickness=1),
15+
Line(
16+
points={{0,-60},{40,60}},
17+
color={0,0,0},
18+
thickness=1)}));
19+
end PressureCut;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
Pipe
22
ControlValve
3+
Leak
4+
HeatLoss
5+
PressureCut
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
within MetroscopeModelingLibrary.Tests.FlueGases.Machines;
2+
model AirCompressor_faulty
3+
extends AirCompressor_direct(airCompressor(faulty=true));
4+
5+
Real Fault_eta_is_decrease(start=0);
6+
Real Fault_tau_decrease(start=0);
7+
8+
equation
9+
10+
// Failure input
11+
Fault_eta_is_decrease = 0 + 10*time;
12+
Fault_tau_decrease = 0 + 10*time;
13+
14+
// Failure definition
15+
airCompressor.eta_is_decrease = Fault_eta_is_decrease;
16+
airCompressor.tau_decrease = Fault_tau_decrease;
17+
18+
end AirCompressor_faulty;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
within MetroscopeModelingLibrary.Tests.FlueGases.Machines;
2+
model GasTurbine_faulty
3+
extends GasTurbine_direct(gasTurbine(faulty=true));
4+
5+
Real Fault_eta_is_decrease(start=0);
6+
7+
equation
8+
9+
// Failure input
10+
Fault_eta_is_decrease = 0 + 10*time;
11+
12+
// Failure definition
13+
gasTurbine.eta_is_decrease = Fault_eta_is_decrease;
14+
15+
end GasTurbine_faulty;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
AirCompressor_direct
22
AirCompressor_reverse
3+
AirCompressor_faulty
34
GasTurbine_direct
45
GasTurbine_reverse
6+
GasTurbine_faulty
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
within MetroscopeModelingLibrary.Tests.FlueGases.Pipes;
2+
model HeatLoss
3+
extends MetroscopeModelingLibrary.Utilities.Icons.Tests.FlueGasesTestIcon;
4+
5+
// Boundary conditions
6+
input Utilities.Units.SpecificEnthalpy source_h(start=0.5e6);
7+
input Utilities.Units.Pressure source_P(start=10e5, min=0, nominal=10e5) "Pa";
8+
input Utilities.Units.NegativeMassFlowRate source_Q(start=-100) "kg/s";
9+
input Utilities.Units.Power W(start=5e6) "W";
10+
11+
MetroscopeModelingLibrary.FlueGases.Pipes.HeatLoss heat_loss annotation (Placement(transformation(extent={{-16,-16},{14,16}})));
12+
MetroscopeModelingLibrary.FlueGases.BoundaryConditions.Source source annotation (Placement(transformation(extent={{-100,-10},{-80,10}})));
13+
MetroscopeModelingLibrary.FlueGases.BoundaryConditions.Sink sink annotation (Placement(transformation(extent={{80,-10},{100,10}})));
14+
equation
15+
// Boundary Conditions
16+
source.h_out = source_h;
17+
source.P_out = source_P;
18+
source.Q_out = source_Q;
19+
source.Xi_out = {0.768,0.232,0.0,0.0,0.0};
20+
heat_loss.W = W;
21+
22+
connect(heat_loss.C_in, source.C_out) annotation (Line(points={{-16,0},{-85,0}}, color={85,170,255}));
23+
connect(heat_loss.C_out, sink.C_in) annotation (Line(points={{14,0},{85,0}}, color={85,170,255}));
24+
annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(coordinateSystem(preserveAspectRatio=false)));
25+
end HeatLoss;

MetroscopeModelingLibrary/Tests/FlueGases/Pipes/package.order

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ Filter_reverse
55
Filter_faulty
66
ControlValve_reverse
77
ControlValve_direct
8+
HeatLoss
89
PressureCut
910
Leak
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
within MetroscopeModelingLibrary.Tests.Fuel.Pipes;
2+
model HeatLoss
3+
extends MetroscopeModelingLibrary.Utilities.Icons.Tests.FuelTestIcon;
4+
5+
// Boundary conditions
6+
input Utilities.Units.Pressure source_P(start=10e5) "Pa";
7+
input Utilities.Units.SpecificEnthalpy source_h(start=0.5e6) "J/kg";
8+
input Utilities.Units.NegativeMassFlowRate source_Q(start=-100) "kg/s";
9+
input Utilities.Units.Power W(start=5e6) "W";
10+
11+
MetroscopeModelingLibrary.Fuel.Pipes.HeatLoss heat_loss annotation (Placement(transformation(extent={{-16,-16},{14,16}})));
12+
MetroscopeModelingLibrary.Fuel.BoundaryConditions.Source source annotation (Placement(transformation(extent={{-100,-10},{-80,10}})));
13+
MetroscopeModelingLibrary.Fuel.BoundaryConditions.Sink sink annotation (Placement(transformation(extent={{80,-10},{100,10}})));
14+
equation
15+
// Boundary Conditions
16+
source.h_out = source_h;
17+
source.P_out = source_P;
18+
source.Q_out = source_Q;
19+
source.Xi_out = {0.92,0.048,0.005,0.002,0.015,0.01};
20+
heat_loss.W = W;
21+
22+
connect(heat_loss.C_in, source.C_out) annotation (Line(points={{-16,0},{-85,0}}, color={85,170,255}));
23+
connect(heat_loss.C_out, sink.C_in) annotation (Line(points={{14,0},{85,0}}, color={85,170,255}));
24+
annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(coordinateSystem(preserveAspectRatio=false)));
25+
end HeatLoss;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
within MetroscopeModelingLibrary.Tests.Fuel.Pipes;
2+
model Leak
3+
import MetroscopeModelingLibrary.Utilities.Units;
4+
extends Utilities.Icons.Tests.FuelTestIcon;
5+
6+
// Boundary conditions
7+
input Units.Pressure source_P(start=10e5) "Pa";
8+
input Units.SpecificEnthalpy source_h(start=0.5e6) "J/kg";
9+
input Units.Pressure sink_P(start=1e5, min=0, nominal=10e5) "Pa";
10+
input Units.PositiveMassFlowRate Q(start=10) "kg/s";
11+
12+
MetroscopeModelingLibrary.Fuel.BoundaryConditions.Source source annotation (Placement(transformation(extent={{-100,-9.99996},{-80,9.99996}})));
13+
MetroscopeModelingLibrary.Fuel.BoundaryConditions.Sink sink annotation (Placement(transformation(
14+
extent={{-10,-10},{10,10}},
15+
rotation=0,
16+
origin={90,-6.10623e-16})));
17+
18+
MetroscopeModelingLibrary.Fuel.Pipes.Leak leak annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
19+
equation
20+
21+
// Boundary conditions
22+
source.h_out = source_h;
23+
source.P_out = source_P;
24+
source.Xi_out = {0.92,0.048,0.005,0.002,0.015,0.01};
25+
sink.P_in = sink_P;
26+
27+
// Leak:
28+
leak.Q = Q;
29+
30+
connect(source.C_out, leak.C_in) annotation (Line(points={{-85,0},{-10,0}}, color={95,95,95}));
31+
connect(leak.C_out, sink.C_in) annotation (Line(points={{10,0},{20,0},{20,0},{85,0}}, color={95,95,95}));
32+
end Leak;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
within MetroscopeModelingLibrary.Tests.Fuel.Pipes;
2+
model PressureCut
3+
import MetroscopeModelingLibrary.Utilities.Units;
4+
extends Utilities.Icons.Tests.FuelTestIcon;
5+
6+
// Boundary conditions
7+
input Units.Pressure source_P(start=10e5) "Pa";
8+
input Units.SpecificEnthalpy source_h(start=0.5e6) "J/kg";
9+
input Units.NegativeMassFlowRate source_Q(start=-100) "kg/s";
10+
input Units.Pressure sink_P(start=1e5, min=0, nominal=10e5) "Pa";
11+
12+
MetroscopeModelingLibrary.Fuel.BoundaryConditions.Source source annotation (Placement(transformation(extent={{-100,-9.99996},{-80,9.99996}})));
13+
MetroscopeModelingLibrary.Fuel.BoundaryConditions.Sink sink annotation (Placement(transformation(
14+
extent={{-10,-10},{10,10}},
15+
rotation=0,
16+
origin={90,-6.10623e-16})));
17+
18+
MetroscopeModelingLibrary.Fuel.Pipes.PressureCut pressureCut annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
19+
equation
20+
21+
// Boundary conditions
22+
source.h_out = source_h;
23+
source.P_out = source_P;
24+
source.Q_out = source_Q;
25+
source.Xi_out = {0.92,0.048,0.005,0.002,0.015,0.01};
26+
sink.P_in = sink_P;
27+
28+
connect(pressureCut.C_out, sink.C_in) annotation (Line(points={{10,0},{85,0}}, color={95,95,95}));
29+
connect(pressureCut.C_in, source.C_out) annotation (Line(points={{-10,0},{-85,0}}, color={95,95,95}));
30+
end PressureCut;

MetroscopeModelingLibrary/Tests/Fuel/Pipes/package.order

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ Pipe_direct
22
Pipe_reverse
33
ControlValve_reverse
44
ControlValve_direct
5+
HeatLoss
6+
PressureCut
7+
Leak

0 commit comments

Comments
 (0)