heArtx · User guide, Part II

User guide, Part II — from mesh to simulated heartbeat

Five workflows turn an FE-ready mesh into a beating, measured heart. They share one job model, so it is worth learning once.

1. What every workflow shares

Each workflow is launched from the Runtime panel and runs on the cluster, not in your browser. You may close the tab and come back.

The Runtime panel as a vertical stack of three controls: Calibration, Simulation and Gallery, then Document, Sessions and Sign out.
The Runtime panel before a mesh is loaded. A button you cannot use yet is greyed out rather than hidden, so the panel itself tells you what is ready.
BehaviourWhat that means for you
One job at a time A second submission waits until your current job of that kind finishes
The Run button turns red While the job runs, its tab's Run ends it. Red always means terminate, never emphasis
Progress appears in two places Prose and failures in the status box at the top; numbers, phases and the raw log under Advanced
Four ways to end SUCCEEDED, FAILED, TIMED_OUT, CANCELLED
One archive per job Everything a job produced downloads as a single .zip from the Results gallery
Cancelling is safe A shared upstream job keeps running and stays reusable; only the job you cancelled stops

2. How they fit together

The arrows are the whole story. Unload is the root: everything that needs a resting heart reuses one rather than recomputing it, and ED/ES quietly builds one first if none exists. Optimize is the exception — it never chains, and asks you to pick the Calibrate run it should refine.

WorkflowWhat it computesWhat it needsWhat you get
Unload The stress-free resting shape the heart would take with no blood in it An FE-ready mesh Unloaded geometry, and a fitted passive stiffness
ED / ES Wall stress at both ends of the cycle, and the contractility that reaches end-systole A mesh, and an Unload — built for you if absent A stress summary, plotted in Results
Calibrate Passive and active material parameters for this heart An FE-ready mesh The parameter set every later run reads
Optimize A refined parameter set matched to pressure–volume targets A finished Calibrate run, chosen by you A refined parameter set
Simulate A complete heartbeat A mesh; calibrated parameters if you have them Pressure–volume loop, strain, and a moving mesh
DL A predicted end-systolic shape, from a trained network instead of a solve An FE-ready mesh with fibres The predicted mesh, added to the album

3. The stages you will see

Every workflow begins by staging the mesh (staging_mesh) and ends by publishing its archive. Between those, the named stages differ.

WorkflowStages reported in order
Unload staging_mesh · running_unloading · uploading_artifacts · preparing_mesh_view
ED / ES, Calibrate, Optimize writing_targets · running_calibration · uploading_output
Simulate selecting_runtime · staging_params · running_legacy_fe · postprocessing_strain

4. Unload

A heart imaged in a living patient is already stretched by the blood inside it, so it is the wrong starting shape for a simulation. Unload runs the inflation backwards: it searches for the geometry that, pressurised to the assumed end-diastolic pressure, returns the shape you actually imaged. Along the way it fits an empirical filling curve to your ventricle and reports the passive stiffness implied by it.

5. ED / ES

Two quasi-static solves bracket the heartbeat. The first fills the ventricle passively to its measured end-diastolic volume. The second searches for the peak active tension that squeezes it down to the measured end-systolic volume against arterial pressure. Both solves must converge, both volumes must land within volume_match_frac of their targets, the end-systolic pressure within es_pressure_tol_mmhg millimetres of mercury. The tension itself must sit strictly inside its plausible band rather than resting against a limit — a value pinned at tmax_lo_pa means the search never truly found one.

6. Calibrate

Calibrate fits the passive filling behaviour first, then the active twitch, and writes the parameter set that every later run on this mesh reads. It also leaves behind a fast approximate model of the ventricle, which is what makes Optimize cheap.

7. Optimize

Optimize searches the fast approximate model — not the full heart — against your pressure–volume targets, so it explores thousands of parameter sets in the time one simulation would take. It refuses to start without a finished Calibrate run to draw that model from.

8. Simulate

Simulate solves the beating ventricle in three dimensions, coupled to a circulation model that supplies realistic filling and afterload, and returns a full pressure–volume loop with regional strain. It always starts from the canonical parameter set, inheriting this case's current upstream results where they exist. A mesh with no upstream results may still be submitted, and may fail to get off the ground. If the solver cannot complete its first pressurisation, the job stops with LEGACY_FE_NLOAD_NON_CONVERGENCE rather than stalling; calibrate the mesh and resubmit.

The Simulation popup on its FE tab: a tab row reading FE, DL and Batch above a collapsible tree of the simulation parameters, grouped into passive and active material properties, support conditions, valve controls and the closed-loop circulation, with Reset, Close and Run along the bottom.
Parameters shows exactly what a run will use — including the closed-loop circulation — and is the fallback set when a mesh has never been calibrated.

9. Reading the results

Results opens on the pressure–volume loop, live while the job runs. Strain and the ED/ES summary get their own tabs, and the Artifacts tab holds one archive per job — never a list of loose files.

10. Where the work happens

Each workflow runs either on this platform's own compute or, when your account is granted access, on the university's high-performance cluster. Unload and ED/ES prefer the cluster. The choice changes nothing about what you submit or what you get back.

11. When something goes wrong

The status box names the reason; the raw log under Advanced holds the detail. These are the failures you can act on yourself.

ReasonWhat it meansWhat to do
LEGACY_FE_NLOAD_NON_CONVERGENCE The heart would not inflate with the parameters it was given Run Calibrate on this mesh, then submit again
LV_UNLOADING_LV_LABELS_MISSING The mesh has no inside, outside or base to push against Infer the facet regions on the mesh first
LV_CALIBRATION_MESH_NOT_READY The mesh it points at has not finished building Wait for the mesh, then resubmit
LV_CALIBRATION_REUSE_BUNDLE_MISSING_SURROGATE The Calibrate run you gave Optimize has no approximate model in it Pick a Calibrate run that finished successfully
HEART_WORKER_ORPHANED The machine running your job died; the platform noticed and cleaned up Resubmit
LEGACY_FE_ENV_MISSING The solver runtime is not installed on the compute node Nothing you can fix — tell an operator

12. The science behind it

MethodSourceWhere it acts
Single-beat filling curve Klotz et al., 2006 — 10.1152/ajpheart.01240.2005 The target Unload fits, and the passive stiffness it reports
Inverse reference-configuration recovery Sellier, 2011 — 10.1016/j.jfluidstructs.2011.08.002 Running the inflation backwards in Unload
Transversely isotropic passive law Guccione et al., 1991 — 10.1115/1.2894084 How the muscle resists filling
Active fibre tension Guccione & McCulloch, 1993 — 10.1115/1.2895473 The contraction ED/ES solves for, and Simulate replays
Closed-loop circulation coupling Kerckhoffs et al., 2007 — 10.1007/s10439-006-9212-7 Filling and afterload during Simulate

Thresholds, units and confidence levels for each of these are recorded alongside the code, together with the ranges the platform treats as physiologically plausible.