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 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.
-
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.
-
Discrete3D(Species const &species, Vector3R const &initial_magnetization = {0, 0, 1}, Quantity bin_width = 1 * units::rad / units::m)#