uvisbox.Datasets.flow3d

Module Contents

uvisbox.Datasets.flow3d.abc_flow(t, x, a=1.0, b=1.0, c=1.0)[source]

Arnold Beltrami Childress flow

uvisbox.Datasets.flow3d.flowmap_3d(seed, t0, t1, n_steps, scale=1.0, xy_scale=1.0)[source]
uvisbox.Datasets.flow3d.create_swirl_ensemble(center_line_start, center_line_end, num_curves=10, num_points=100, major_axis_length=1.0, minor_axis_length=0.3, swirl_frequency=2.0, distribution='uniform', noise_level=0.0, interior_fraction=0.5, expansion_factor=1.0)[source]

Create an ensemble of curves that form elliptical cross-sections that swirl around a straight line in 3D.

Parameters:
  • center_line_start (array-like, shape (3,)) – Starting point of the central straight line [x, y, z]

  • center_line_end (array-like, shape (3,)) – Ending point of the central straight line [x, y, z]

  • num_curves (int) – Number of curves to generate

  • num_points (int) – Number of points per curve

  • major_axis_length (float) – Length of the major axis of the ellipse

  • minor_axis_length (float) – Length of the minor axis of the ellipse

  • swirl_frequency (float) – How many times the ellipse rotates along the straight line

  • distribution (str) – ‘uniform’ for uniform distribution along ellipse perimeter, ‘interior’ for uniform distribution within ellipse interior, ‘mixed’ for combination of both

  • noise_level (float) – Amount of random noise to add to positions

  • interior_fraction (float) – For ‘mixed’ distribution, fraction of curves in interior (0-1)

  • expansion_factor (float) – Controls how much the ellipse expands. 0=no expansion, 1=linear expansion

Returns:

  • curves (list) – List of curves, each curve is an array of shape (num_points, 3)

  • center_line (array, shape (num_points, 3)) – The central straight line