Skip to content

Boundary Conditions for Cardiovascular CFD

Overview

Setting physiologically accurate boundary conditions is crucial for cardiovascular CFD simulations. This page covers the theory behind inlet, outlet, and wall boundary conditions for patient-specific aortic flow modelling.

Key Learning Objectives

  • Understand the role of inlet velocity profiles in WSS prediction
  • Know why Windkessel models are preferred over fixed-pressure outlets
  • Recognise which wall assumptions apply to aortic simulations
  • Choose appropriate boundary conditions for specific clinical applications

For practical configuration in AortaCFD, see Boundary Conditions in AortaCFD. For research directions not yet implemented, see Advanced Boundary Condition Methods.


Inlet: Velocity Profile Theory

Why Cross-Sectional Resolution Matters

Key Principle

Modern approaches focus on analytically-resolved velocity profiles rather than simple plug or parabolic assumptions, as downstream wall shear stress (WSS) and secondary flows are highly sensitive to inlet shape Campbell 2018; Madhavan & Kemmerling 2018.

Womersley Solution (Gold Standard)

The Womersley profile provides the exact analytical solution for pulsatile flow in circular vessels using Bessel functions Womersley 1955; Ku 1997:

def womersley_profile(r, R, t, Q_harmonics, omega, nu):
    """
    Compute Womersley velocity profile
    r: radial position
    R: vessel radius
    t: time
    Q_harmonics: Fourier coefficients of flow rate
    omega: angular frequency (2*pi/cardiac_period)
    nu: kinematic viscosity
    """
    alpha = R * np.sqrt(omega / nu)  # Womersley number
    # Complex Bessel function solution
    # See references [Womersley 1955](references.md#womersley-1955); [Ku 1997](references.md#ku-1997) for full implementation

Why it matters: Womersley profiles yield more realistic helical flow structures in the aortic arch compared to parabolic/plug profiles, directly impacting WSS predictions Les 2010.

Inverse Womersley (From Measured Flow)

When only flow rate Q(t) is available, the inverse Womersley method reconstructs the physically consistent cross-sectional profile Ponzini 2012:

def inverse_womersley(Q_measured, inlet_radius, blood_properties):
    """
    Reconstruct velocity profile from measured flow rate
    Maintains correct phase relations and avoids ad-hoc scaling
    Reference: Ponzini et al. [Ponzini 2012](references.md#ponzini-2012)
    """
    # FFT of measured flow
    Q_harmonics = np.fft.fft(Q_measured)
    # Apply inverse Womersley for each harmonic
    # Returns u(r,t) maintaining physical consistency

Non-Circular and Patient-Specific Inlets

For irregular cross-sections, exact closed forms are limited. Current best practices include Morbiducci 2013; Pirola 2021:

  • Divergence-free projection methods for arbitrary geometries
  • Shape-constrained mappings preserving flux and no-slip conditions
  • Direct 4D-Flow MRI velocity field mapping with smoothing

Outlet: Windkessel Models

3-Element Windkessel (RCR)

The Windkessel model provides physiologically accurate outlet conditions by representing the downstream vasculature as an electrical analogue circuit:

outlet_1
{
    type            RCROutletPressure;
    Rp              1.2e7;    // Proximal resistance [Pa.s/m³]
    Rd              1.5e8;    // Distal resistance [Pa.s/m³]
    C               1.0e-9;   // Compliance [m³/Pa]
    P0              10000;    // Reference pressure [Pa]

    value           uniform 10000;
}
Parameter Physical Meaning Controls
Z (impedance) Resistance to pressure waves Wave reflections
C (compliance) Arterial wall distensibility Pulse pressure amplitude
R (resistance) Downstream vascular resistance Mean pressure level

For the full mathematical derivation, see Windkessel Theory.

Parameter Estimation

Murray's Law for Flow Distribution

For aortic branches, Murray's law distributes total flow proportionally to the outlet cross-sectional area raised to a power (typically 2.7):

# From AortaCFD-app/src/aortacfd_lib/wk_setup.py
# Method (Westerhof et al. 2009):
# 1. MAP = DP + (SP - DP) / 3
# 2. Flow distribution via Murray's law: Q_i proportional to r_i^2.7
# 3. R_total = (MAP - P_venous) / mean_flow
# 4. For 3-element: R1 = rho * PWV / A, R2 = R_total - R1, C = tau / R2

Age-Adjusted Values

def calculate_windkessel_parameters(age, vessel_diameter):
    """
    Estimate Windkessel parameters based on age and vessel size
    """
    # Systemic vascular resistance increases with age
    SVR_base = 1.0e8  # Pa.s/m³
    age_factor = 1 + (age - 30) * 0.015

    # Distribute resistance: 10% proximal, 90% distal
    Rp = 0.1 * SVR_base * age_factor
    Rd = 0.9 * SVR_base * age_factor

    # Compliance decreases with age
    C_base = 1.5e-9  # m³/Pa
    C = C_base * np.exp(-0.01 * (age - 30))

    return Rp, Rd, C

Simple Pressure Outlet

For initial testing and stability validation before Windkessel:

outlet
{
    type            totalPressure;
    p0              uniform 10666;    // 80 mmHg diastolic
    value           uniform 10666;
    gamma           1;
    psi             none;
}

Wall Boundary Conditions

Rigid Wall (No-Slip)

Standard no-slip condition used in the majority of aortic CFD studies:

wall
{
    type            noSlip;
}

For pressure:

wall
{
    type            zeroGradient;
}

Turbulence Wall Functions

For RANS simulations, appropriate wall functions are applied:

// k field at walls
{{ wall_patch }}
{
    type            kqRWallFunction;
    value           uniform {{ k_initial }};
}

// omega field at walls
{{ wall_patch }}
{
    type            omegaWallFunction;
    value           uniform {{ omega_initial }};
}

Best Practices for Specific Applications

Coarctation of Aorta (CoA) Studies

Based on the AortaCFD capabilities and current literature LaDisa 2011; Goubergrits 2019:

Recommended CoA Configuration

  1. Inlet: Use Womersley profile for pulsatile inlet conditions with automatic orientation detection

  2. Outlets: Start with 3-element Windkessel using Murray's law automatic flow distribution, or use zero-gradient outlets for initial validation

  3. Mesh: Use coarse refinement for initial studies, upgrade to higher refinement based on convergence requirements

Physiological Validation Ranges

Parameter Physiological Range Units
Peak velocity 1.0-1.5 m/s
Mean flow rate 70-100 mL/s
Systolic pressure 110-140 mmHg
Diastolic pressure 60-90 mmHg

Further Reading


References

Full bibliography on the References page.

Found an issue or have a suggestion for this page?

Open a GitHub issue