From 1472ca27d38bf4ea023349357459027bf1326e04 Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Mon, 25 Mar 2024 17:13:15 +0000
Subject: [PATCH] qval should be positive

---
 src/components/instant_gradients.jl | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/components/instant_gradients.jl b/src/components/instant_gradients.jl
index 8785641..0ef67ae 100644
--- a/src/components/instant_gradients.jl
+++ b/src/components/instant_gradients.jl
@@ -1,6 +1,8 @@
 module InstantGradients
 import StaticArrays: SVector, SMatrix
+import JuMP: @constraint
 import ...Variables: VariableType, duration, qval, bmat_gradient, get_free_variable, set_simple_constraints!, effective_time, make_generic
+import ...BuildSequences: global_model
 import ..AbstractTypes: EventComponent, GradientWaveform
 
 """
@@ -23,6 +25,9 @@ function (::Type{InstantGradient})(; orientation=nothing, group=nothing, qval=no
         res = InstantGradient3D(get_free_variable.(qval), group)
     else
         res = InstantGradient1D(get_free_variable(qval), orientation, group)
+        if res.qval isa Number
+            @constraint global_model() res.qval >= 0
+        end
     end
     set_simple_constraints!(res, variables)
     return res
-- 
GitLab