@@ -28,6 +28,15 @@ struct CoefficientVectorialType{B<:AbstractBasis} <: AbstractVectorialType
28
28
basis:: B
29
29
end
30
30
31
+ function to_iterable_indices (A, i)
32
+ idx = to_indices (A, (i,))[1 ]
33
+ if idx isa Base. Slice
34
+ return idx. indices
35
+ else
36
+ return idx
37
+ end
38
+ end
39
+
31
40
@doc raw """
32
41
ComponentVectorialType <: AbstractVectorialType
33
42
@@ -316,8 +325,9 @@ function get_gradient!(
316
325
) where {FT}
317
326
n = _vgf_index_to_length (i, vgf. range_dimension)
318
327
pM = PowerManifold (M, range, n)
319
- for (j, f) in zip (i, vgf. jacobian!![i])
320
- copyto! (M, X[pM, j], p, f (M, p))
328
+ rep_size = representation_size (M)
329
+ for (j, f) in zip (to_iterable_indices (vgf. jacobian!!, i), vgf. jacobian!![i])
330
+ copyto! (M, _write (pM, rep_size, X, (j,)), f (M, p))
321
331
end
322
332
return X
323
333
end
@@ -430,8 +440,9 @@ function get_gradient!(
430
440
) where {FT}
431
441
n = _vgf_index_to_length (i, vgf. range_dimension)
432
442
pM = PowerManifold (M, range, n)
433
- for (j, f) in zip (i, vgf. jacobian!![i])
434
- f (M, X[pM, j], p)
443
+ rep_size = representation_size (M)
444
+ for (j, f) in zip (to_iterable_indices (vgf. jacobian!!, i), vgf. jacobian!![i])
445
+ f (M, _write (pM, rep_size, X, (j,)), p)
435
446
end
436
447
return X
437
448
end
0 commit comments