MY SIMULATOR
HR - CO - L/min MAP - mmHg RAP - mmHg FPS 0
Whole loop Heart Lungs
Drag to orbit, wheel / pinch to zoom. Blue = low-oxygen blood, red = oxygenated. Chambers swell and shrink with their volume; glow = pressure; green lamp = open valve, red lamp = closed.
WebGL is not available here — the numbers, charts and numerical checks on the right still work.
Guyton Circulation Lab: Cardiac Output, Venous Return and Blood Volume in a Closed-Loop Heart Model
A beating 3D heart inside a closed loop of vessels. Change blood volume, heart rate, contractility, vessel resistance and venous tone and watch where the circulation settles: the point where the heart's pumping curve crosses the venous-return line (Guyton's graph).
Educational model, not medical advice. Seven lumped compartments with typical textbook values (illustrative, not a patient). No valve inertia, no capillary exchange, no breathing, no heart-rate variability; the reflex option is a simple first-order controller.
Pause Jump 30 s ahead Reset Quality: High Labels: on
Scenario
Heart, vessels and blood
Baroreflex (nervous compensation) Cardiac arrest (no contraction)
Live readout (last beat)
Pressure traces, last 6 s
Left-ventricle pressure-volume loop
Guyton graph: cardiac function vs venous return
Curve = isolated heart pumping against the current arterial load for each right-atrial pressure (Frank-Starling). Line = venous return from the current filling of the body's vessels. The circulation sits where they cross; the white dot is the live closed-loop result.
Experiment: blood volume sweep
For eight blood volumes the closed loop runs for 60 s and is compared with the graphical (curve x line) prediction.
Run sweep
Independent numerical checks running...
Also run in Node: node src/check.js.
Controls Drag / one finger: orbit; wheel / pinch: zoom; buttons jump to Heart, Whole loop and Lungs views. Sliders act at once; the system relaxes over a few seconds (venous time constant about 5 s). Playback speed scales model time. Scenarios load tested settings and settle the circulation first. "Jump 30 s ahead" lets any slider change reach its steady state. Blue = low-oxygen blood, red = oxygenated; chamber size follows its volume; glow follows pressure; green lamps = open valves, red = closed.
The science
Compartments. Left ventricle (LV), systemic arteries (SA), systemic veins (SV), right atrium (RA), right ventricle (RV), pulmonary arteries (PA) and pulmonary veins with the left atrium (PV). Vessels are linear: P = (V - Vu )/C with unstressed volume Vu and compliance C; flow through a resistance is Q = ΔP/R. Only the stressed volume V - Vu creates pressure.
Ventricles. Time-varying elastance: P = E(t)(V - V0 ), E(t) = Ed + (Ees - Ed ) sin²(πt/Ts ) during systole (Ts = 0.37 √T) and Ed in diastole. Valves are ideal diodes with a small resistance. Frank-Starling behaviour emerges: more filling gives a bigger stroke volume.
Mean systemic filling pressure. With the heart stopped every pressure equalises to Pms = (Vtotal - ΣVu )/ΣC (here about 8.5 mmHg for 5 L; real value about 7). It is the "push" that returns blood to the heart.
Venous return. For the body's vessels in series (arteries Ca , veins Cv , resistances Rs , Rv ): VR = (Pms ' - RAP)/RVR with RVR = Rv + Rs Ca /(Ca + Cv ). Lower right-atrial pressure sucks more blood back until veins collapse (not modelled). More blood, venoconstriction or a faster-filling pump raise Pms ' and the line moves up.
Guyton's equilibrium. Cardiac output must equal venous return, so the operating point is the intersection of the heart's function curve and the venous-return line. The simulation computes the curve with the same heart pumping at a fixed right-atrial pressure, then compares the graphical answer with the live closed loop.
Baroreflex. Optional: low mean arterial pressure raises a sympathetic drive s (time constant 8 s) which increases heart rate, contractility, arterial resistance and venous tone. Without it a 500 mL haemorrhage shows the raw physics.
Honest simplifications. Linear vessels, no collapse of veins at negative pressure, no pulmonary or cerebral autoregulation, no inertia in the aorta (no reflected waves), constant total volume, ventricles without a nonlinear passive curve, no atrial contraction. Units are mmHg, mL, s; parameters are typical textbook figures, so a healthy adult baseline gives about 4.4 L/min here (real 5-6). Anatomy in the 3D view is stylised.
3D heart modelled in Blender, baked PBR textures; rendered with Three.js