Discrete EPG Model#

Defined in sycomore/epg/Discrete.h

class Discrete : public sycomore::epg::Base#

Discrete EPG model, where the gradient dephasing may vary across time intervals.

In this model, the orders of the model are stored in bins of user-specified width (hence the term “discrete”), expressed in rad/m.

Public Types

using Order = Quantity#

Order of the model, as gradient area.

Public Functions

Discrete(Species const &species, Vector3R const &initial_magnetization = {0, 0, 1}, Quantity bin_width = 1 * units::rad / units::m)#

Create a single-pool model.

Discrete(Species const &species_a, Species const &species_b, Vector3R const &M0_a, Vector3R const &M0_b, Quantity const &k_a, Quantity const &delta_b = 0 * units::Hz, Quantity bin_width = 1 * units::rad / units::m)#

Create an exchange model.

Discrete(Species const &species_a, Quantity const &R1_b_or_T1_b, Vector3R const &M0_a, Vector3R const &M0_b, Quantity const &k_a, Quantity bin_width = 1 * units::rad / units::m)#

Create an MT model.

Discrete(Discrete const&) = default#

Default copy constructor.

Discrete(Discrete&&) = default#

Default move constructor.

Discrete &operator=(Discrete const&) = default#

Default copy assignment.

Discrete &operator=(Discrete&&) = default#

Default move assignment.

virtual ~Discrete() = default#

Default destructor.

virtual std::size_t size() const#

Return the number of states of the model.

TensorQ<1> orders() const#

Return the orders of the model.

ArrayC state(Order const &order) const#

Return a given state of the model.

void apply_time_interval(Quantity const &duration, Quantity const &gradient = 0 * units::T / units::m)#

Apply a time interval, i.e. relaxation, diffusion, gradient, and off-resonance effects.

void apply_time_interval(TimeInterval const &interval)#

Apply a time interval, i.e. relaxation, diffusion, gradient, and off-resonance effects.

void shift(Quantity const &duration, Quantity const &gradient)#

Apply a gradient; in discrete EPG, this shifts all orders by specified value.

void diffusion(Quantity const &duration, Quantity const &gradient)#

Simulate diffusion during given duration with given gradient amplitude.

Quantity const &bin_width() const#

Return the bin width.

void bulk_motion(Quantity const &duration, Quantity const &gradient)#

Simulate bulk motion during given duration with given gradient amplitude.

ArrayC state(std::size_t order) const#

Return a given state of the model, as a concatenation of (F, F*, Z) for each pool.

Public Members

Quantity velocity = 0 * units::m / units::s#

Bulk velociy.