modelPartialThreeWayValve
Extends from AixLib.Fluid.BaseClasses.PartialThreeWayResistance (Flow splitter with partial resistance model at each port), AixLib.Fluid.Actuators.BaseClasses.ActuatorSignal (Partial model that implements the filtered opening for valves and dampers), AixLib.Fluid.Actuators.BaseClasses.ValveParameters (Model with parameters for valves).
Information
Partial model of a three way valve. This is the base model for valves
with different opening characteristics, such as linear, equal percentage
or quick opening. The three way valve model consists of a mixer where
valves are placed in two of the flow legs. The third flow leg
has no friction.
The flow coefficient Kv for flow from port_1 → port_2 is
a parameter.
The flow coefficient for the bypass flow from port_3 → port_2
is computed as
Kv(port_3 → port_2)
fraK = ----------------------
Kv(port_1 → port_2)
where 0 < fraK ≤ 1 is a parameter with a default value
of fraK=0.7.
Since this model uses two way valves to construct a three way valve, see AixLib.Fluid.Actuators.BaseClasses.PartialTwoWayValve for details regarding the valve implementation.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | homotopyInitialization | true | = true, use homotopy method |
| Real | fraK | 0.7 | Fraction Kv(port_3→port_2)/Kv(port_1→port_2) |
| Real | l | {0.0001, 0.0001} | Valve leakage, l=Kv(y=0)/Kv(y=1) |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from LumpedVolumeDeclarations) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | substanceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of independent mass fraction balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | traceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of trace substance balance: dynamic (3 initialization options) or steady state |
| Modelica.Units.SI.MassFlowRate | mDyn_flow_nominal (from PartialThreeWayResistance) | Nominal mass flow rate for dynamic momentum and energy balance | |
| Advanced › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | massDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from LumpedVolumeDeclarations) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from LumpedVolumeDeclarations) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from LumpedVolumeDeclarations) | Medium.X_default | Start value of mass fractions m_i/m |
| Medium.ExtraProperty[Medium.nC] | C_start (from LumpedVolumeDeclarations) | fill(0, Medium.nC) | Start value of trace substances |
| Medium.ExtraProperty[Medium.nC] | C_nominal (from LumpedVolumeDeclarations) | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
| Dynamics | |||
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| Dynamics › Nominal condition | |||
| Modelica.Units.SI.Time | tau (from PartialThreeWayResistance) | 10 | Time constant at nominal flow for dynamic energy and momentum balance |
| Advanced | |||
| Boolean | from_dp (from PartialThreeWayResistance) | true | = true, use m_flow = f(dp) else dp = f(m_flow) |
| Modelica.Fluid.Types.PortFlowDirection | portFlowDirection_1 (from PartialThreeWayResistance) | Modelica.Fluid.Types.PortFlowDirection.Bidirectional | Flow direction for port_1 |
| Modelica.Fluid.Types.PortFlowDirection | portFlowDirection_2 (from PartialThreeWayResistance) | Modelica.Fluid.Types.PortFlowDirection.Bidirectional | Flow direction for port_2 |
| Modelica.Fluid.Types.PortFlowDirection | portFlowDirection_3 (from PartialThreeWayResistance) | Modelica.Fluid.Types.PortFlowDirection.Bidirectional | Flow direction for port_3 |
| Boolean | verifyFlowReversal (from PartialThreeWayResistance) | false | =true, to assert that the flow does not reverse when portFlowDirection_* does not equal Bidirectional |
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialThreeWayResistance) | Small mass flow rate for checking flow reversal | |
| Boolean | linearized | {false, false} | = true, use linear relation between m_flow and dp for any flow rate |
| Dynamics › Actuator position | |||
| Boolean | use_strokeTime (from ActuatorSignal) | true | Set to true to continuously open and close valve using strokeTime |
| Modelica.Units.SI.Time | strokeTime (from ActuatorSignal) | 120 | Time needed to fully open or close actuator |
| Modelica.Blocks.Types.Init | init (from ActuatorSignal) | Modelica.Blocks.Types.Init.InitialOutput | Type of initialization (no init/steady state/initial state/initial output) |
| Real | y_start (from ActuatorSignal) | 1 | Initial position of actuator |
| Flow Coefficient | |||
| AixLib.Fluid.Types.CvTypes | CvData (from ValveParameters) | AixLib.Fluid.Types.CvTypes.OpPoint | Selection of flow coefficient |
| Real | Kv (from ValveParameters) | Kv (metric) flow coefficient [m3/h/(bar)^(1/2)] | |
| Real | Cv (from ValveParameters) | Cv (US) flow coefficient [USG/min/(psi)^(1/2)] | |
| Modelica.Units.SI.Area | Av (from ValveParameters) | Av (metric) flow coefficient | |
| Pressure-flow linearization | |||
| Real | deltaM (from ValveParameters) | 0.02 | Fraction of nominal flow rate where linearization starts, if y=1 |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from ValveParameters) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dpValve_nominal (from ValveParameters) | Nominal pressure drop of fully open valve, used if CvData=AixLib.Fluid.Types.CvTypes.OpPoint | |
| Modelica.Units.SI.PressureDifference[2] | dpFixed_nominal | {0, 0} | Nominal pressure drop of pipes and other equipment in flow legs at port_1 and port_3 |
| Advanced › Nominal condition | |||
| Modelica.Units.SI.Density | rhoStd (from ValveParameters) | Inlet density for which valve coefficients are defined | |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_1 (from PartialThreeWayResistance) | First port, typically inlet | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_2 (from PartialThreeWayResistance) | Second port, typically outlet | |
| Modelica.Fluid.Interfaces.FluidPort_a | port_3 (from PartialThreeWayResistance) | Third port, can be either inlet or outlet | |
| Modelica.Blocks.Interfaces.RealInput | y (from ActuatorSignal) | Actuator position (0: closed, 1: open) | |
| Modelica.Blocks.Interfaces.RealOutput | y_actual (from ActuatorSignal) | Actual actuator position |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| AixLib.Fluid.Interfaces.PartialTwoPortInterface | res1 (from PartialThreeWayResistance) | ||
| AixLib.Fluid.Interfaces.PartialTwoPortInterface | res2 (from PartialThreeWayResistance) | ||
| AixLib.Fluid.Interfaces.PartialTwoPortInterface | res3 (from PartialThreeWayResistance) | ||
| AixLib.Fluid.Delays.DelayFirstOrder | vol (from PartialThreeWayResistance) | Fluid volume to break algebraic loop |
Revisions
-
February 3, 2023, by Michael Wetter:
Removed start value fordp.
This is for Buildings, #3231. -
November 16, 2022, by Michael Wetter:
Propagated parameterriseTimeto valves. The value is not used as the filter is disabled, but it will show in the result file. Having a consistent value for all these parameters in the result filter helps during debugging. -
April 14, 2020, by Michael Wetter:
ChangedhomotopyInitializationto a constant.
This is for IBPSA, #1341. -
November 5, 2019, by Michael Wetter:
Moved assignment of leakage from AixLib.Fluid.Actuators.BaseClasses.PartialThreeWayValve to the parent classes.
This is for #1227. -
October 25, 2019, by Jianjun Hu:
Improved icon graphics annotation. This is for #1225. -
March 24, 2017, by Michael Wetter:
RenamedfilteredInputtouse_inputFilter.
This is for #665. -
January 22, 2016, by Michael Wetter:
Corrected type declaration of pressure difference. This is for #404. -
December 17, 2015, by Michael Wetter:
Removed assignmentredeclare final package Medium=Mediumas this is now done in the base class. This is for https://github.com/lbl-srg/modelica-buildings/issues/475. -
November 23, 2015 by Filip Jorissen:
Corrected valve leakage value to avoid warnings. -
February 28, 2013, by Michael Wetter:
Reformulated assignment of parameters. Removed default value fordpValve_nominal, as this parameter has the attributefixed=falsefor some values ofCvData. In this case, assigning a value is not allowed. Corrected wrong documentation of parameterfraK(min=0, max=1) = 0.7. The documenation was Fraction Kv(port_1→port_2)/Kv(port_3→port_2) instead of Fraction Kv(port_3→port_2)/Kv(port_1→port_2). Because the parameter set correctly its attributesmin=0andmax=1, instances of this model used the correct value. -
April 12, 2012 by Michael Wetter:
Removed duplicate declaration ofm_flow_nominal. -
February 20, 2012 by Michael Wetter:
Renamed parameterdp_nominaltodpValve_nominal, and added new parameterdpFixed_nominal=0. See AixLib.Fluid.Actuators.UsersGuide. -
March 25, 2011, by Michael Wetter:
Added homotopy method. -
June 3, 2008 by Michael Wetter:
First implementation.