sedtrails.particle_tracer.diffusion_library

Module Contents

Classes

DiffusionStrategy

Abstract base class for diffusion strategies.

GradientDiffusion

Diffusion based on spatial gradients of the velocity field.

RandomDiffusion

Random walk diffusion model.

DiffusionCalculator

Main class for calculating diffusion effects.

API

class sedtrails.particle_tracer.diffusion_library.DiffusionStrategy

Bases: abc.ABC

Abstract base class for diffusion strategies.

abstractmethod calculate(dt: float, x: numpy.ndarray, y: numpy.ndarray, u: numpy.ndarray, v: numpy.ndarray, nu: float) Tuple[numpy.ndarray, numpy.ndarray]

Apply diffusion to the given positions and velocities.

dt: Time step for diffusion calculation x: Array of x-coordinates. y: Array of y-coordinates. u: Array of x-velocity components. v: Array of y-velocity components. nu: Diffusion coefficient.

Tuple of updated x and y positions after diffusion (xdif, ydif).

class sedtrails.particle_tracer.diffusion_library.GradientDiffusion

Bases: sedtrails.particle_tracer.diffusion_library.DiffusionStrategy

Diffusion based on spatial gradients of the velocity field.

calculate(dt: float, x: numpy.ndarray, y: numpy.ndarray, u: numpy.ndarray, v: numpy.ndarray, nu: float) Tuple[numpy.ndarray, numpy.ndarray]

Example dummy diffusion calculation using gradients of the velocity field.

For unstructured grids, gradients are approximated using nearest-neighbor differences.

class sedtrails.particle_tracer.diffusion_library.RandomDiffusion

Bases: sedtrails.particle_tracer.diffusion_library.DiffusionStrategy

Random walk diffusion model.

calculate(dt: float, x: numpy.ndarray, y: numpy.ndarray, u: numpy.ndarray, v: numpy.ndarray, nu: float) Tuple[float, float]
class sedtrails.particle_tracer.diffusion_library.DiffusionCalculator(strategy: sedtrails.particle_tracer.diffusion_library.DiffusionStrategy)

Main class for calculating diffusion effects.

Initialization

Initialize with a diffusion strategy.

strategy: DiffusionStrategy object to use

property strategy: sedtrails.particle_tracer.diffusion_library.DiffusionStrategy

Get the current diffusion strategy.

calc_diffusion(x: float, y: float, u: numpy.ndarray, v: numpy.ndarray, nu: float, dt: float) Tuple[numpy.ndarray, numpy.ndarray]

Calculate diffusion effect on position.

x: Current x position y: Current y position u: Velocity field x-component (2D array) v: Velocity field y-component (2D array) nu: Diffusion coefficient dt: Current time step

Tuple of (x_diffusion, y_diffusion) representing position changes