Regular EPG Model#

Defined in sycomore/epg/Regular.h

class Regular : public sycomore::epg::Base#

Regular EPG model, where the gradient dephasing is assumed to be a multiple of a user-specified unitary dephasing during each time interval.

In this model, the orders of the model are consecutive positive integers starting at 0.

Public Types

using Order = Quantity#

Order of the model, as gradient area.

Public Functions

Regular(Species const &species, Vector3R const &initial_magnetization = {0, 0, 1}, unsigned int initial_size = 100, Quantity const &unit_dephasing = 0 * units::rad / units::m, double dephasing_tolerance = 1e-5)#

Create a single-pool model.

Regular(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, unsigned int initial_size = 100, Quantity const &unit_dephasing = 0 * units::rad / units::m, double gradient_tolerance = 1e-5)#

Create an exchange model.

Regular(Species const &species_a, Quantity const &R1_b_or_T1_b, Vector3R const &M0_a, Vector3R const &M0_b, Quantity const &k_a, unsigned int initial_size = 100, Quantity const &unit_dephasing = 0 * units::rad / units::m, double gradient_tolerance = 1e-5)#

Create an MT model.

Regular(Regular const&) = default#

Default copy constructor.

Regular(Regular&&) = default#

Default move constructor.

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

Default copy assignment.

Regular &operator=(Regular&&) = default#

Default move assignment.

virtual ~Regular() = default#

Default destructor.

virtual std::size_t size() const#

Return the number of states of the model.

TensorQ<1> orders() const#

Return the orders or the models.

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()#

Apply a unit gradient; in regular EPG, this shifts all orders by 1.

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

Apply an arbitrary gradient; in regular EPG, this shifts all orders by an integer number corresponding to a multiple of the unit gradient.

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

Simulate diffusion during given duration with given gradient amplitude.

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

Simulate bulk motion during given duration with given gradient amplitude.

Quantity const &unit_dephasing() const#

Return the unit dephasing.

double gradient_tolerance() const#

Return the gradient tolerance.

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 velocity.