Module summary

Tags: PressureFlowControl

Pressure Flow Control by fitting ArtVen resistance and total volume.


p0 [Pa]: float

Target pressure.

q0 [m3/s]: float

Target mean flow

stable_threshold [-]: float

Threshhold to determine hemodynamic stability

is_active [-]: bool

activates or disactivates pressure flow control

fac [-]: float

Exponent to control speed.

fac_pfc [-]: float

Deviation from p0, driving factor for changing blood volume.

epsilon [-]: float

Minimal hemodynamic stability needed to allow pressure flow control.

Physiological background

The PressureFlowControl module is a homeostatic pressure-flow regulating model. Traditionally, it regulates mean arterial pressure and venous return (cardiac output) by changing peripheral resistance and total blood volume. However, the current implementation allows optimizing any pressure in a Node object and any cumulative flow through a Connector object to the target values.

Linking Objects

This module links to several other objects:

  • node_pressure: Node from which the pressure is read. Traditionally, this node represents the aorta.

  • connector_return: Connector object from which the total cumulative flow is read. Traditionally, this is the valve from the veins to the right atrium.

  • artven_resistance: ArtVen element in which the resistance is changed. Traditionally, this is the systemic resistance.

  • link_fac_pfc: List of Connector objects in which the flow is manipulated. Traditionally, these are all artven objects.

  • valve_flow_vec: List of Connector objects to determine hemodynamic stability within a beat. Traditionally, these are all valve objects in the closed physiological system.

Module Behavior

The PressureFlowControl module acts at the end of a beat. It only acts if it is active (is_active parameter) or when the system is hemodynamically stable enough (based on the standard deviation of mean flow in the valve_flow_vec valves and the parameter stable_threshold).

\[\text{apply PFC if } e_{q,std} < \epsilon\]


\[e_{q,std} = \sum_{v \in \textit{valve\_flow\_vec}} \sqrt{ \frac{ \overline{q}_v - \overline{\overline{q}} }{ n_{valve\_flow\_vec} } }\]

When the pressure flow control is triggered, first, the mean pressure deviation from its target is calculated. Note: If node_pressure is not set, \(fac_{pfc}=1\)

\[fac_{pfc} = \left( \frac{\overline{p} }{p_0}\right)^{fac}\]

This \(fac_{pfc}\) is then used in the Connector elements.

\[ \begin{align}\begin{aligned}q_{connector,prox} = q_{connector} \cdot fac_{pfc}\\q_{connector,dist} = \frac{q_{connector} }{ fac_{pfc}}\end{aligned}\end{align} \]

This artificial manipulation of the proximal and distal flow results in a change in total blood volume.

The final step is to update the peripheral resistance. This is done based on \(fac_{pfc}\) and on the deviation of the total cumulative flow from its target.

\[p0_{ArtVen} = \frac{p0_{ArtVen}}{fac_{pfc}} \cdot \left( \frac{\overline{q} }{q_0} \right)^{fac}\]

Hemodynamic stability

This module can detect whether the connected system is hemodynamically stable or not. This is achieved by calculating the flow error.

When the module is activated (is_active = true), it calculates the flow error as follows:

\[e_{flow} = \sqrt{e_{q,std}^2 + (e_{q,q0} - 1)^2}\]


  • \(e_{q,q0}\) is defined as:

    \[e_{q,q0} = \frac{\overline{q}}{q_0}\]

When the module is not active (is_active = false), hemodynamic stability is determined solely based on the mean flow distribution over the valves, and the flow error is calculated as:

\[e_{flow} = e_{q,std}\]

How to Build


Explain how to build from scratch and how to link walls


Pressure Flow Control by fitting ArtVen resistance and total volume.