From 94325cf56bdbfc101e2604a58558af5ae3c14f3b Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Mon, 29 Jan 2024 15:01:17 +0000
Subject: [PATCH] Set start times of pulsed gradient parts

---
 src/gradients/pulsed_gradients.jl | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/gradients/pulsed_gradients.jl b/src/gradients/pulsed_gradients.jl
index c57041e..0e6aa73 100644
--- a/src/gradients/pulsed_gradients.jl
+++ b/src/gradients/pulsed_gradients.jl
@@ -98,9 +98,9 @@ end
 
 rise_time(pg::PulsedGradient) = duration(pg.rise)
 flat_time(pg::PulsedGradient) = duration(pg.flat)
-gradient_strength_vec(g::PulsedGradient) = rise_time(g) * slew_rate(g)
+gradient_strength_vec(g::PulsedGradient) = rise_time(g) * slew_rate_vec(g)
 gradient_strength(g::PulsedGradient) = isnothing(g.scaling) ? maximum(gradient_strength_vec(g)) : (res.scaling * rise_time(g))
-slew_rate_vec(g::PulsedGradient) = g.slew_rate_vec
+slew_rate_vec(g::PulsedGradient) = abs.(g.slew_rate_vec)
 slew_rate(g::PulsedGradient) = isnothing(g.scaling) ? maximum(slew_rate_vec(g)) : res.scaling
 δ(g::PulsedGradient) = rise_time(g) + flat_time(g)
 duration(g::PulsedGradient) = 2 * rise_time(g) + flat_time(g)
@@ -113,6 +113,11 @@ Base.getindex(pg::PulsedGradient, ::Val{:rise}) = pg.rise
 Base.getindex(pg::PulsedGradient, ::Val{:flat}) = pg.flat
 Base.getindex(pg::PulsedGradient, ::Val{:fall}) = pg.fall
 
+start_time(pg::PulsedGradient, symbol::Symbol) = pg[Val(symbol)]
+start_time(pg::PulsedGradient, ::Val{:rise}) = 0.
+start_time(pg::PulsedGradient, ::Val{:flat}) = rise_time(pg)
+start_time(pg::PulsedGradient, ::Val{:fall}) = δ(pg)
+
 
 variables(::Type{<:PulsedGradient}) = [qval, δ, gradient_strength_vec, duration, rise_time, flat_time]
 
-- 
GitLab