using "types";
Model BallWithSafetyValve
ATTRIBUTES
Info = "A fixed volume ball with a safety valve
for the pressure.";
PARAMETERS
ValveMode as Switcher(Valid = ["closed", "opened"], Default = "closed");
R as Real(Unit='J/(K*mol)', Default=8.314472);
V as volume;
T as temperature;
Pout as pressure;
k as Real(Default=30e-3, Unit='kmol/h/kPa^0.5');
VARIABLES
flow_in as flow_mol;
flow_out as flow_mol;
P as pressure;
n as mol;
EQUATIONS
"Ideal gas relation"
P*V = n*R*T;
"Mass balance"
diff(n) = flow_in - flow_out;
switch ValveMode
case "closed":
flow_out = 0 * 'mol/h';
when P > 2*'atm' switchto "opened";
case "opened":
flow_out = k*sqrt(P - Pout);
when P < Pout * 1.1 switchto "closed";
end
end
FlowSheet BallWithSafetyValveTest
DEVICES
ball as BallWithSafetyValve;
SET
ball.V = 1 * 'l';
ball.T = 300 * 'K';
ball.Pout = 1 * 'atm';
ball.ValveMode = "opened";
SPECIFY
ball.flow_in = 50 * 'mol/h';
INITIAL
ball.P = 1.2 * 'atm';
OPTIONS
TimeStep = 0.05;
TimeEnd = 10;
end