Skip to content

Commit a89bfc2

Browse files
committed
Merge #20 from branch gradgen-operator-constructor
2 parents 0ff751d + 76b265a commit a89bfc2

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

src/gradgen_operator.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import QuantumControl.QuantumPropagators.Interfaces:
1212
using QuantumPropagators.Controls: evaluate
1313
1414
G::GradgenOperator = evaluate(gradgen::GradGenerator; vals_dict)
15+
16+
G = GradgenOperator(G.G, G.control_deriv_ops)
1517
```
1618
1719
is the result of plugging in specific values for all controls in a
@@ -26,6 +28,14 @@ struct GradgenOperator{num_controls,GT,CGT}
2628
end
2729

2830

31+
function GradgenOperator(G, control_deriv_ops)
32+
num_controls = length(control_deriv_ops)
33+
GT = typeof(G)
34+
CGT = eltype(control_deriv_ops)
35+
return GradgenOperator{num_controls,GT,CGT}(G, control_deriv_ops)
36+
end
37+
38+
2939
function get_controls(O1::GradgenOperator)
3040
return Tuple([])
3141
end
@@ -34,7 +44,7 @@ end
3444
function random_state(H::GradgenOperator; rng = GLOBAL_RNG, _...)
3545
state = random_state(H.G; rng)
3646
num_controls = length(H.control_deriv_ops)
37-
grad_states = [random_state(H.G; rng) for i eachindex(H.control_deriv_ops)]
47+
grad_states = [random_state(H.G; rng) for _ in eachindex(H.control_deriv_ops)]
3848
return GradVector{num_controls,typeof(state)}(state, grad_states)
3949
end
4050

test/test_gradgen.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ using QuantumPropagators.Controls: evaluate
3232
= evaluate(G̃_of_t; vals_dict)
3333
= evaluate(Ĥ_of_t; vals_dict)
3434

35+
G̃2 = GradgenOperator(G̃.G, G̃.control_deriv_ops)
36+
@test G̃2 ==
37+
3538
Û_Ψ = exp(-𝕚 ** dt) * Ψ
3639

3740
num_controls = length(Ĥ_of_t) - 1

0 commit comments

Comments
 (0)