Trajectory Modules#

This module contains various implementations of CMRsim compatible trajectory modules. The implementation requirements are defined as abstract base class (BaseTrajectoryModule), which should serve as primary superclass for all concrete trajectory module.

The general use of Trajectory modules can be summarized by two methods:

1. Increment particle positions: A tf.function compatible method that takes the current position of particles and a temporal step width as input and returns the new positions. Additionally, a dictionary is returned that is not empty if a look-up is involved in the method.

2. Calling the module (invoking __call__) which directly computes the position of particles for a specified set of time points. This can be used for pre-computation of positions .

Summary#

Currently available trajectory modules:

cmrsim.trajectory.BaseTrajectoryModule([name])

Base implementation for Trajectory modules compatible with the Bloch simulation module as well as containing a guaranteed method for position pre-calculation on call.

cmrsim.trajectory.StaticParticlesTrajectory([name])

Trivial implementation for static particles to match the trajectory-module definition for Bloch simulations.

cmrsim.trajectory.DiffusionTaylor(order, ...)

Combines gaussian diffusional motion with bulk-motion defined as reference-particle trajectories.

cmrsim.trajectory.TaylorTrajectoryN(order, ...)

Fits a taylor Polynomial of specified order to the given 3D particle trajectories and stores the resulting coefficients per particle.

cmrsim.trajectory.SimpleBreathingMotionModule(...)

Trajectory module wrapping another trajectory module with a global pure translational breathing motion.

cmrsim.trajectory.FlowTrajectory(...[, ...])

Numerically integrates the path of particles in a velocity field and simultaneoulsy looks up all additional field values for the previous particle positions.

cmrsim.trajectory.TurbulentTrajectory(...[, ...])

Numerically integrates the path of particles in a mean velocity field and incorporates random turbulent velocity fluctuations based on Langevin updates from sampled RST values.

cmrsim.trajectory.TimeVaryingVelocityField(...)

Implements a the the path integration for particles in a temporally varying velocity field and also lookups for temporally varying fields.

cmrsim.trajectory.PODTrajectoryModule(...[, ...])

Captures the trajectories of an arbitrary set of particles (e.g. Nodes of structured meshes) by computing the proper orthogonal decomposition (POD) from a set of snapshots.