From 531b22696f88f854aa4d410ce1de5c0e4d13341f Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <MichielCottaar@protonmail.com>
Date: Wed, 22 May 2024 16:49:10 +0100
Subject: [PATCH] Add stretch parameter for RF pulse adjustments

---
 src/components/pulses/constant_pulses.jl | 4 ++--
 src/components/pulses/generic_pulses.jl  | 4 ++--
 src/components/pulses/sinc_pulses.jl     | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/components/pulses/constant_pulses.jl b/src/components/pulses/constant_pulses.jl
index a15ea30..9604335 100644
--- a/src/components/pulses/constant_pulses.jl
+++ b/src/components/pulses/constant_pulses.jl
@@ -64,10 +64,10 @@ end
 
 split_timestep(pulse::ConstantPulse, precision) = Inf
 
-function adjust_internal(block::ConstantPulse; scale=1., frequency=0.)
+function adjust_internal(block::ConstantPulse; scale=1., frequency=0., stretch=1.)
     ConstantPulse(
         block.amplitude * scale,
-        block.duration,
+        block.duration * stretch,
         block.phase,
         block.frequency + frequency,
         block.group,
diff --git a/src/components/pulses/generic_pulses.jl b/src/components/pulses/generic_pulses.jl
index 856bf8a..df4b580 100644
--- a/src/components/pulses/generic_pulses.jl
+++ b/src/components/pulses/generic_pulses.jl
@@ -153,9 +153,9 @@ function split_timestep(gp::GenericPulse, precision)
     return sqrt(2 * precision / max_second_der)
 end
 
-function adjust_internal(block::GenericPulse; scale=1., frequency=0.)
+function adjust_internal(block::GenericPulse; scale=1., frequency=0., stretch=1.)
     GenericPulse(
-        block.time,
+        block.time .* stretch,
         block.amplitude .* scale,
         block.phase .+ (360. * frequency) .* (block.time .- effective_time(block))
     )
diff --git a/src/components/pulses/sinc_pulses.jl b/src/components/pulses/sinc_pulses.jl
index 8ced23f..1fb52ae 100644
--- a/src/components/pulses/sinc_pulses.jl
+++ b/src/components/pulses/sinc_pulses.jl
@@ -107,7 +107,7 @@ function split_timestep(block::SincPulse, precision)
     return sqrt(2 * precision / max_second_derivative)
 end
 
-function adjust_internal(block::SincPulse; scale=1., frequency=0.)
+function adjust_internal(block::SincPulse; scale=1., frequency=0., stretch=1.)
     SincPulse(
         block.apodise,
         block.Nzeros,
@@ -115,7 +115,7 @@ function adjust_internal(block::SincPulse; scale=1., frequency=0.)
         block.amplitude * scale,
         block.phase,
         block.frequency + frequency,
-        block.lobe_duration,
+        block.lobe_duration * stretch,
         block.group
     )
 end
-- 
GitLab