3D Discrete EPG Model#

Defined in sycomore/epg/Discrete3D.h

class Discrete3D : public sycomore::epg::Base#

Discrete EPG in which the gradients may be specified in three dimensions.

Public Types

using Order = Vector3Q#

Order of the model, as gradient area.

Public Functions

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

Create a single-pool model.

Discrete3D(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.

Discrete3D(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.

Discrete3D(Discrete3D const&) = default#

Default copy constructor.

Discrete3D(Discrete3D&&) = default#

Default move constructor.

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

Default copy assignment.

Discrete3D &operator=(Discrete3D&&) = default#

Default move assignment.

virtual ~Discrete3D() = default#

Default destructor.

virtual std::size_t size() const#

Return the number of states of the model.

TensorQ<2> 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, Vector3Q const &gradient = {0 * units::T / units::m, 0 * units::T / units::m, 0 * units::T / units::m})#

Apply a time interval, i.e. relaxation, diffusion, and gradient.

void apply_time_interval(TimeInterval const &interval)#

Apply a time interval, i.e. relaxation, diffusion, and gradient.

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

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

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

Simulate diffusion during given duration with given gradient amplitude.

Quantity const &bin_width() const#

Return the bin width.

ArrayC state(std::size_t order) const#

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