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 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.
-
virtual ~Regular() = default#
Default destructor.
-
virtual std::size_t size() const#
Return the number of states 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.
-
double gradient_tolerance() const#
Return the gradient tolerance.
-
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)#