diff --git a/src/building_blocks.jl b/src/building_blocks.jl index 7434ec68686c83b07bdd78815a55da4657ebd627..0e069e8663a78a5399da9c3103a9df5502a593ce 100644 --- a/src/building_blocks.jl +++ b/src/building_blocks.jl @@ -1,7 +1,7 @@ module BuildingBlocks import JuMP: value, Model, @constraint, @objective, objective_function, AbstractJuMPScalar import Printf: @sprintf -import ..Variables: Variables, variables, start_time, duration, end_time, gradient_strength, slew_rate, effective_time, VariableType, alternative_variables +import ..Variables: Variables, variables, start_time, duration, end_time, gradient_strength, slew_rate, effective_time, VariableType, alternative_variables, qval_square import ..BuildSequences: global_model, global_scanner, fixed import ..Scanners: Scanner @@ -122,6 +122,9 @@ end for variable_func in keys(variables) + if variable_func in [:qval_square, :qval] + continue + end @eval function Variables.$variable_func(bb::BuildingBlock) if Variables.$variable_func in keys(alternative_variables) alt_var, forward, backward, _ = alternative_variables[Variables.$variable_func] @@ -144,6 +147,13 @@ for variable_func in keys(variables) end end +function Variables.qval_square(bb::BuildingBlock, args...; kwargs...) + vec = Variables.qvec(bb, args...; kwargs...) + return vec[1]^2 + vec[2]^2 + vec[3]^2 +end + +Variables.qval(bb::BuildingBlock, args...; kwargs...) = sqrt(Variables.qval_square(bb, args...; kwargs...)) + struct BuildingBlockPrinter{T<:BuildingBlock} bb::T diff --git a/src/variables.jl b/src/variables.jl index b423a7612693837ae398c6ec7802e377a00d8072..c1d971c55c12470869e13688b4f59dd1f7ac9d35 100644 --- a/src/variables.jl +++ b/src/variables.jl @@ -65,12 +65,6 @@ for (block_symbol, all_functions) in all_variables_symbols end -# helper functions -function qval_square(bb, args...; kwargs...) - vec = qvec(bb, args...; kwargs...) - return vec[1]^2 + vec[2]^2 + vec[3]^2 -end - alternative_variables = Dict( qval => (qval_square, n->n^2, sqrt, false), slice_thickness => (inverse_slice_thickness, inv, inv, true),