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:
For pressure:
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
-
Inlet: Use Womersley profile for pulsatile inlet conditions with automatic orientation detection
-
Outlets: Start with 3-element Windkessel using Murray's law automatic flow distribution, or use zero-gradient outlets for initial validation
-
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
- Boundary Conditions in AortaCFD -- Practical configuration and troubleshooting
- Advanced Boundary Condition Methods -- Research directions and future methods
- Windkessel Theory -- Full RCR model derivation and numerical implementation
- OpenFOAM-WK Library -- Windkessel boundary condition source code
References
Full bibliography on the References page.
Found an issue or have a suggestion for this page?
Open a GitHub issue