Design Sweep
This module allows for the rapid exploration of the design space using virtual Design of Experiments (DOEs). By evaluating multiple design configurations automatically, this tool helps visualize the complex relationships between catheter design inputs and performance outputs via interactive 3D response surface plots.
It is the Design Sweep tab, reachable from the tab bar or from Tools → Design Sweep. It requires a built model; until there is one the tab shows a short "build the model first" state with a button that takes you to Catheter Setup.
While it runs
This is a tab, not a dialog, so a run does not tie up the application:
- Start it and walk away. Switch to another tab and the run keeps going. A dot on this tab pulses while it is working and turns solid when it finishes, and the status bar posts a short note, so you can carry on designing and come back to it.
- Cancel stops the run cleanly and leaves the inputs as they were.
- Rebuilding the model while results are on screen does not delete them. They are marked as belonging to the previous build, with a banner offering to clear them and start again; you decide whether they are still representative.
Optimization Setup
This left panel is where you define the parameters of your virtual experiment.
-
Select Sweep Parameters: Choose the input variables you want to evaluate from the parameter tree. You can select up to two continuous variables and/or one categorical attribute for an A/B split test. Click the checkbox next to a parameter to add it.
- Variables: Continuous parameters such as layer thickness or braid PPI.
- Attributes: Categorical choices such as material selection or wire shape.
Triaxial Braid layers expose their axial reinforcement as additional parameters (axial wire count, size, and material) so you can sweep or A/B-test the axial wires independently of the bias braid (for example, EI or pushability versus axial wire count).
Multi-lumen core designs: the core is fixed tooling (an extrusion die), not a design variable: its OD is shown read-only in the parameter tree and cannot be swept. Sweep wall-stack parameters instead; the core geometry is honored at every design point, and the core KPIs (EI min/max, first-yield bend radius) and the EIx/EIy device-axis pair for asymmetric sections are available as output metrics.
-
Active Variables: For each selected variable, define the Minimum and Maximum values to establish the boundaries of your design space.
-
Include Kink Radius simulation (slow): Off by default, because it is the one option here that turns a sweep from seconds into minutes.
What it costs. A sweep is 25 design points for two variables, 5 for one, doubled again if you add an A/B attribute. Every design point bends every meshable section, so the work is design points × sections × bend directions. Each of those solves takes a few seconds at the sweep's screening resolution and they run across several CPU cores, so a 25-point sweep of a 3-section design lands in the low minutes. The label under the checkbox estimates your design rather than a typical one: it times one real section and scales it. Identical sections across design points are solved once.
What you get. Four extra centerline radii per section become plottable: collapse onset, 50 % lumen loss (the ISO kink), first crease (permanent set) and first failure (the earlier of the last two). The same run also gives the section's ovalization at a reference bend radius: OD and ID major/minor axes and ovality (100 × (1 − minor/major)) at the Ovalization at bend radius you set under the checkbox, default 10 × the design OD, so it costs nothing extra.
Worth knowing. These are radii, not the mandrel diameters the Kink Radius tab leads with: a mandrel is
2R − OD, so it only compares at a fixed OD, and OD is exactly the kind of thing a sweep varies. The run uses a fixed DOE resolution, no guidewire, and one bend direction unless you ask for more. Sections that fail before reaching the reference radius leave the ovalization columns blank, and sections the model cannot mesh (manual stiffness) come back blank. -
Run Sweep: Click this button to begin the automated simulation sweep. VirtuCath™ generates a 5×5 grid (25 design points) for 2-variable sweeps or a 5-point linear sweep for 1-variable sweeps, calculates the static and dynamic properties at every design point, and fits a cubic response surface. If too many simulations error out to support the cubic fit, a simpler quadratic surface is fitted instead so you still get a usable result.
-
Cancel: While a sweep is running the button is replaced by a progress bar and a Cancel button. Cancelling stops the sweep at the next solve step (a second or two, even mid-way through a Kink Radius run), discards the partial sweep, and leaves any results already on screen untouched.
Running an experiment with two continuous variables generates a full 3D response surface, while selecting one variable produces a 2D response curve. Adding an attribute to either setup will generate a comparative A/B split analysis with two surfaces overlaid for direct comparison.
Bend directions
Bending toward a pull-wire lumen is not the same load as bending away from it. The lumen is a void in the wall: on the inside of the bend it sits in compressed material, on the outside in stretched material, and the wall gives way at a different radius in the two cases. An asymmetric section therefore has more than one honest kink radius, and a sweep that runs one direction reports one of them.
Labels name the side of the cross-section that ends up on the outside of the bend, so they read straight off the wizard's end view: +Y puts the top of the section on the outside, -Y the bottom, and ±X the two perpendicular to them. (symmetric) means both directions of that pair give the same answer, so the pair is solved once and reported once.
- Bend directions: A row of checkboxes under Include Kink Radius simulation, shown only when this design genuinely distinguishes more than one direction. Hovering a box names the section rotation it solves: the same 90° steps as the Kink Radius tab's Section orientation control.
- Only the first is ticked. Each additional direction is a full extra set of solves, so the tool does not spend that on your behalf. The last ticked box cannot be unticked.
- The first direction is the one the sweep has always run (rotation 0°, the top of the end view on the outside). Tick the Kink Radius box, change nothing else, and you get the number you got before, under the column name you got it under before.
- The list is rebuilt from the current design every time you tick the box, so adding a section, editing the core or changing the pull-wire count cannot leave a stale direction behind.
- A design that is symmetric in both its geometry and its stiffness has nothing to choose, so the row never appears.
What you are offered follows from the pull-wire layout, the core's own symmetry, and whether any section bends differently about its two axes:
| Pull-wires | Directions offered |
|---|---|
| 1, at the top | +Y, -Y, X (symmetric) |
| 2, left and right | Y (symmetric), X (symmetric) |
| 4, on the cross | any (fully symmetric), or Y (symmetric) and X (symmetric) when the layup still makes the two planes different to bend |
What it costs
Each ticked direction is a full extra set of solves: every section of every design point, again. Two directions take twice as long as one. The estimate under the checkbox counts the ticked directions and says so, so the number you are choosing is on screen before the run rather than after it. Identical sections are still solved once, but once per direction.
What the results are called
The familiar column names mean rotation 0 and nothing else. One direction, at the orientation every sweep has always run, keeps sec{N}_kink_sim_*. Ask for any other direction, alone or alongside others, and the columns name it:
| What was run | Column names |
|---|---|
| the first direction alone (rotation 0), or a design with no picker at all | sec{N}_kink_sim_* (unchanged) |
| anything else, including a single non-default direction | sec{N}_{slug}_kink_sim_*: for example sec0_yneg_kink_sim_first_failure_R_mm |
The slug is fixed per label rather than derived from its wording, so rewording a label in the interface cannot silently rename a column something is scripted against:
| Label | Slug |
|---|---|
+Y | ypos |
-Y | yneg |
Y (symmetric) | y |
+X | xpos |
-X | xneg |
X (symmetric) | x |
any (fully symmetric) | any |
A default sweep's results are what they always were. Every sweep run before this option existed, and every sweep of a symmetric design after it, produces an identical column set, so an already-exported CSV and anything reading sec{N}_kink_sim_* stays correct. Because the plain names are reserved for that one orientation, a column that carries no slug can only ever be the rotation the sweep has always used, and every other answer arrives under a name that says which direction it is.
In Select Metric to Display, the Kink Radius group names the direction on each section row (Section 1: Distal - bend +Y), so a two-direction sweep gives two distinguishable rows per section instead of two rows both reading Section 1 and pointing at different columns.
The same choice is the kink_bend_directions key on run_doe, alongside include_kink_simulation. Omit it for one direction; pass "auto" to run every direction this design distinguishes; pass a list of labels to run exactly those. Naming a direction the design does not distinguish is rejected with the ones it does offer, so "auto" is how you discover them, and the response echoes the labels it actually ran. The column-naming rule above is the same one the CLI follows.
One sign trap: get_static_kpis uses this same +X/-X alphabet for pull-wire control axes, which is a different quantity (which way the tip moves when a wire is pulled) with the opposite sign, since pulling a wire puts it on the inside of the bend. The CLI reference states the relationship.
Design Sweep
The right panel provides an interactive 3D visualization of the experiment results.
-
Interactive 3D Plot: Displays the predicted performance metric across your defined design space. You can rotate the view with the left mouse button, pan with the middle button, and zoom with the scroll wheel or right button.
-
Surface visualization layers:
- Fitted surface: The main 3D surface, color-mapped by the metric value.
- Sample dots: Off-white spheres at each simulated design point so you can see exactly what was tested versus what is interpolated. The surface is a statistical fit, not an interpolator: small gaps between dot and surface are expected and reflect how well the cubic model captures the underlying behavior.
- Floor contour projection: A 2D heatmap at the bottom of the cube showing the surface value as a function of the two input variables.
- Scalar bar: Color legend on the right edge, labeled in the metric's display units.
-
A/B Split Comparison: If an attribute was included in your setup, the plot displays two solid-colored surfaces (Blue and Orange) for the two categorical choices. Two cursor spheres (one per surface) update together as you move the sliders.
-
Exploration Sliders (X & Y): Use the sliders below the plot to navigate specific points on the response surface. As you move a slider, a red cursor sphere (or a blue+orange pair in A/B mode) and a dashed drop line to the floor projection update in real-time to pinpoint your exact location within the design space.
-
Predicted value: The numerical readout dynamically updates to display the model's predicted performance metric for the specific combination of inputs selected by the sliders, formatted in the metric's display units.
-
Fit quality: Below the predicted value, a line names the fitted degree (Linear, Quadratic or Cubic) and its adjusted R² score, which tells you how trustworthy the surface is for the selected metric. Adjusted R² stays honest when the data is noisy or near-flat, so you can read it directly without worrying about overfitting artifacts. The line is color-coded so you can read fit quality at a glance:
- Green (adj R² ≥ 0.95): the surface tracks the data closely; predictions are trustworthy within the swept range.
- Amber (0.70 ≤ adj R² < 0.95): the surface is usable but the underlying physics likely has features the cubic doesn't fully capture. Treat predictions directionally.
- Red (adj R² < 0.70): the surface is mostly fitting noise. Read values off the sample dots directly rather than relying on the prediction.
- Gray (metric is essentially constant): the selected metric barely varies across the design space, so a fit quality score isn't meaningful. The surface is still drawn but tells you the parameter sweep doesn't affect this output.
In A/B mode, both surfaces' scores are shown and the color reflects the worse of the two.
Reset View snaps the camera back to the default isometric orientation. Save PNG exports the current plot view to a PNG file.
Select Metric to Display
The middle panel is where you choose which calculated output to visualize on the response surface. Before a sweep has run it shows the catalogue greyed out, so you can see up front what the sweep will make available for this design; the entries become selectable as soon as results arrive, and the tool lands on one of them automatically so the plot is never blank.
- Output Selection Tree: Choose from a comprehensive list of calculated metrics.
-
Static Metrics: Properties derived directly from the catheter's construction, such as bending stiffness (EI), torsional stiffness (GJ), axial stiffness (EA), the axial and torsional compliance pair (L/EA, L/GJ), burst pressure, crush pressure, linear density, tensile failure load, and torque failure.
Metrics that do not apply to the loaded construction are not offered: a round-bore design omits the multi-lumen core rows, and a core design omits the round-bore family (burst, crush), so every metric in the tree has data behind it. The closed-form kink radii (Central Lumen Collapse Radius, Material Kink Radius) were retired from this module in 1.5.0.
-
Kink Radius: Present only when the sweep was run with the Include Kink Radius simulation box ticked: per section, the first-failure, collapse-onset, 50 % lumen-loss and first-crease centerline radii from bending the real cross-section, and an Ovalization at R = … group with the ID/OD ovality and major/minor axes at the reference bend radius the sweep was run with. If the sweep ran more than one bend direction, each section appears once per direction with the direction named on its row.
-
Dynamic Metrics: Performance indicators derived from the steering simulation, such as tip deflection, tip position and orientation, wire tension, strain energy, and per-section bend radius / bending moment / axial shortening. (The closed-form per-section ovalization rows were retired in 1.5.0; ovalization now comes from the section simulation above.)
-
Related pages
- Catheter Setup Tab: define the baseline catheter design that the DOE sweeps around.
- Reflow Calculator: manufacturing-feasibility analysis on the design space being explored.
- Steering Simulation: run individual configurations interactively before launching a sweep.
- Model Accuracy: accuracy notes that apply to the predicted stiffnesses used by the response surface.