I've been working within the ThermoPower Library of OpenModelica for a while now trying to build a Combined Power Cycle by first modeling the Brayton and Rankine Power Cycles first.
Every time I attempt to use a pump, I always receive errors like:
[1] 10:31:00 Translation Error [ThermoPower.Examples: 2523:70-2523:81]: Variable q_nom not found in scope ThermoPower.Examples.RankineCycle.Models.
[2] 10:31:00 Translation Error [ThermoPower.Examples: 2531:21-2531:69]: Cyclically dependent constants or parameters found in scope : {q_nom}, {head_nom} (ignore with -d=ignoreCycles).
Any pump chosen, will always declare these errors for my models. I've tried many different types of solutions, all without success.
1) I've tried declaring values for the pump's component parameters using a vector format i.e. : q_nom = {1,1,1}. Same errors pop up when trying to simulate.
2) I've tried clicking the error directly only to be re-directed to ThermoPower.PowerPlants. Here I'm directed towards a line of code:
function flowCharacteristic =
ThermoPower.Functions.PumpCharacteristics.quadraticFlow (q_nom=
q_nom, head_nom=head_nom);
Here, I've tried manually entering values for q_nom & head_nom with no success. I've also tried copying the line of code above at the top of my model trying to "redeclare" the function "flowCharacteristic". This only results in an error about incorrectly redeclaring a class that is un-declarable.
I've tried other solutions but with no success.
If you have any advice on how to troubleshoot this issue please feel free to leave your input below!
UPDATE:
Here is the code to the model I have been working on for some time now.
model Rankine_HRSG
ThermoPower.PowerPlants.HRSG.Components.HE Superheater(
Cfnom_F = 0,
Cfnom_G = 0,
FFtype_F = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FluidPhaseStart = ThermoPower.Choices.FluidPhase.FluidPhases.Steam,
HCtype_F = ThermoPower.Choices.Flow1D.HCtypes.Downstream,
Kfnom_F = 0,
Kfnom_G = 0,
N_F = 2,
N_G = 2,
Nt = 1,
Tstartbar_G = 1073.15,
dpnom_F = 0,
dpnom_G = 0,
exchSurface_F = 10,
exchSurface_G = 10,
extSurfaceTub = 20,
fluidNomFlowRate = 50,
fluidNomPressure = 1e+06,
fluidVol = 10,
gasNomFlowRate = 102,
gasNomPressure = 101325,
gasQuasiStatic = false,
gasVol = 10,
lambda = 366,
metalVol = 10,
pstart_F = 5e+06,
pstart_G = 101325,
rhonom_F = 1000,
rhonom_G = 0.33)
annotation(
Placement(visible = true, transformation(origin = {50, 50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.PowerPlants.HRSG.Components.HE Economizer(
Cfnom_F = 0,
Cfnom_G = 0,
FFtype_F = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
FluidPhaseStart = ThermoPower.Choices.FluidPhase.FluidPhases.Liquid,
HCtype_F = ThermoPower.Choices.Flow1D.HCtypes.Downstream,
Kfnom_F = 0,
Kfnom_G = 0,
N_F = 2,
N_G = 2,
Nt = 1,
Tstartbar_G = 1023.15,
dpnom_F = 0,
dpnom_G = 0,
exchSurface_F = 10,
exchSurface_G = 10,
extSurfaceTub = 20,
fluidNomFlowRate = 50,
fluidNomPressure = 1e+06,
fluidVol = 10,
gasNomFlowRate = 102,
gasNomPressure = 101325,
gasVol = 10,
lambda = 366,
metalVol = 10,
pstart_F = 5e+06,
pstart_G = 101325,
rhonom_F = 1000,
rhonom_G = 0.33)
annotation(
Placement(visible = true, transformation(origin = {50, -50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Examples.HRB.Models.Evaporator Evaporator(
Cfnom_G = 0,
FFtype_G = ThermoPower.Choices.Flow1D.FFtypes.NoFriction,
Kfnom_G = 0,
N = 2,
Tstart = 1048.15,
cm = 376.812,
dpnom_G = 0,
exchSurface = 10,
fluidNomFlowRate = 50,
fluidNomPressure = 1e+06,
fluidVol = 10,
gamma = 300,
gasNomFlowRate = 102,
gasNomPressure = 101325,
gasVol = 10,
metalVol = 10,
rhom = 8400,
rhonom_G = 0.33)
annotation(
Placement(visible = true, transformation(origin = {50, 0}, extent = {{-10,
-10}, {10, 10}}, rotation = 180)));
ThermoPower.Gas.SourcePressure FlueGasSource(
redeclare package Medium = ThermoPower.Media.FlueGas,
R = 0,
T = 800,
p0 = 101325)
annotation(
Placement(visible = true, transformation(origin = {94, 50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Gas.SinkPressure FlueGasSink(
redeclare package Medium = ThermoPower.Media.FlueGas,
R = 0,
T = 700,
p0 = 101325)
annotation(
Placement(visible = true, transformation(origin = {10, -50}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Water.SteamTurbineStodola SteamTurbine(
PRstart = 1,
eta_iso_nom = 0.92,
explicitIsentropicEnthalpy = true,
partialArc_nom = 1,
pnom = 10e5,
wnom = 50,
wstart = 50)
annotation(
Placement(visible = true, transformation(origin = {0, 80}, extent = {{-10,
-10}, {10, 10}}, rotation = 180)));
ThermoPower.Examples.RankineCycle.Models.PrescribedPressureCondenser
Condenser(
Vtot = 10,
p = 1e+06)
annotation(
Placement(visible = true, transformation(origin = {-50, 30}, extent =
{{-10, -10}, {10, 10}}, rotation = 0)));
ThermoPower.Water.Pump Pump(
CheckValve = true,Np0 = 1,
V = 10,
dp0 = 0, head(start = 1),
hstart = 1e5,
n0 = 150,
n_const = 150, q_single(fixed = false), rho0 = 1000,
w0 = 50,
w_single(fixed = false),
wstart = 50)
annotation(
Placement(visible = true, transformation(origin = {-38, -12}, extent =
{{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Mechanics.Rotational.Sensors.PowerSensor PowerSensor annotation(
Placement(visible = true, transformation(origin = {-38, 68}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
ThermoPower.Electrical.Generator Generator annotation(
Placement(visible = true, transformation(origin = {-68, 68}, extent =
{{-10, -10}, {10, 10}}, rotation = 180)));
Modelica.Blocks.Continuous.FirstOrder firstOrder1 annotation(
Placement(visible = true, transformation(origin = {-50, 92}, extent =
{{-8, -8}, {8, 8}}, rotation = 180)));
Modelica.Blocks.Interfaces.RealOutput Power annotation(
Placement(visible = true, transformation(origin = {-110, 0}, extent =
{{-10, -10}, {10, 10}}, rotation = 180), iconTransformation(origin =
{-110, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 180)));
inner ThermoPower.System system annotation(
Placement(visible = true, transformation(origin = {90, 90}, extent =
{{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(PowerSensor.flange_b, Generator.shaft) annotation(
Line(points = {{-48, 68}, {-59, 68}}));
connect(SteamTurbine.shaft_b, PowerSensor.flange_a) annotation(
Line(points = {{-6, 80}, {-14, 80}, {-14, 68}, {-28, 68}}));
connect(SteamTurbine.outlet, Condenser.steamIn) annotation(
Line(points = {{-8, 72}, {-8, 52}, {-50, 52}, {-50, 40}}, color = {0, 0,
255}));
connect(Superheater.waterOut, SteamTurbine.inlet) annotation(
Line(points = {{50, 60}, {50, 64}, {8, 64}, {8, 72}}, color = {0, 0,
255}));
connect(Evaporator.waterOut, Superheater.waterIn) annotation(
Line(points = {{50, 10}, {50, 10}, {50, 40}, {50, 40}}, color = {0, 0,
255}));
connect(Economizer.waterOut, Evaporator.waterIn) annotation(
Line(points = {{50, -40}, {50, -40}, {50, -10}, {50, -10}}, color = {0, 0,
255}));
connect(firstOrder1.y, Power) annotation(
Line(points = {{-58, 92}, {-90, 92}, {-90, 0}, {-102, 0}, {-102, 0},
{-110, 0}}, color = {0, 0, 127}));
connect(PowerSensor.power, firstOrder1.u) annotation(
Line(points = {{-30, 80}, {-30, 80}, {-30, 92}, {-40, 92}, {-40, 92},
{-40, 92}}, color = {0, 0, 127}));
connect(Condenser.waterOut, Pump.infl) annotation(
Line(points = {{-50, 20}, {-50, -10}, {-46, -10}}, color = {0, 0, 255}));
connect(Pump.outfl, Economizer.waterIn) annotation(
Line(points = {{-32, -4}, {-26, -4}, {-26, -80}, {50, -80}, {50, -60},
{50, -60}}, color = {0, 0, 255}));
connect(Economizer.gasOut, FlueGasSink.flange) annotation(
Line(points = {{40, -50}, {20, -50}, {20, -50}, {20, -50}}, color = {159,
159, 223}));
connect(Superheater.gasOut, Evaporator.gasIn) annotation(
Line(points = {{40, 50}, {20, 50}, {20, 30}, {80, 30}, {80, 0}, {60, 0}},
color = {159, 159, 223}));
connect(Evaporator.gasOut, Economizer.gasIn) annotation(
Line(points = {{40, 0}, {20, 0}, {20, -26}, {20, -26}, {20, -30}, {80,
-30}, {80, -50}, {60, -50}, {60, -50}}, color = {159, 159, 223}));
connect(FlueGasSource.flange, Superheater.gasIn) annotation(
Line(points = {{84, 50}, {60, 50}, {60, 50}, {60, 50}}, color = {159, 159,
223}));
annotation(
uses(ThermoPower(version = "3.1"), Modelica(version = "3.2.2")));end
Rankine_HRSG;