Isochromat Model#

Defined in sycomore/isochromat/Model.h

class Model#

Isochromat simulator.

Public Functions

Model(Quantity const &T1, Quantity const &T2, TensorR<1> const &M0, TensorQ<2> const &positions, Quantity const &delta_omega = 0 * sycomore::units::Hz)#

Create a spatially constant model.

Model(TensorQ<1> const &T1, TensorQ<1> const &T2, TensorR<2> const &M0, TensorQ<2> const &positions, TensorQ<1> const &delta_omega = {})#

Create a spatially-varying model.

Operator build_pulse(Quantity const &angle, Quantity const &phase = 0 * units::rad) const#

Create a spatially constant RF pulse operator.

Operator build_pulse(TensorQ<1> const &angle, TensorQ<1> const &phase = TensorQ<1>{}) const#

Create a spatially-varying RF pulse operator.

Operator build_time_interval(Quantity const &duration, Quantity const &delta_omega = 0 * units::Hz, TensorQ<1> const &gradient = {}) const#

Create a spatially constant time interval operator.

Operator build_time_interval(Quantity const &duration, TensorQ<1> const &delta_omega, TensorQ<2> const &gradient = {}) const#

Create a spatially-varying time interval operator.

Operator build_relaxation(Quantity const &duration) const#

Create a relaxation operator.

Operator build_phase_accumulation(Quantity const &angle) const#

Create a spatially constant phase accumulation operator.

Operator build_phase_accumulation(TensorQ<1> const &angle) const#

Create a spatially-varying phase accumulation operator.

void apply(Operator const &operator_)#

Apply an operator to the magnetization.

TensorQ<1> T1() const#

Return the T1 field.

TensorQ<1> T2() const#

Return the T2 field.

TensorR<1> const &M0() const#

Return the M0 field.

TensorR<1> const &delta_omega() const#

Return the off-resonance field.

TensorR<2> magnetization() const#

Return the magnetization field.

TensorQ<2> positions() const#

Return the positions of the isochromats.