# UpperTriangular arrays in RecursiveArrayTools

**URL:** <https://discourse.julialang.org/t/uppertriangular-arrays-in-recursivearraytools/129352>\
**Category:** Numerics\
**Tags:** differentialequation\
**Created:** [May 26, 2025, 2:39pm UTC](https://discourse.julialang.org/t/uppertriangular-arrays-in-recursivearraytools/129352 "2025-05-26T14:39:21Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Menno](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Menno](https://discourse.julialang.org/u/Menno)\
**Post date:** [May 26, 2025, 2:39pm UTC](https://discourse.julialang.org/t/uppertriangular-arrays-in-recursivearraytools/129352/1 "2025-05-26T14:39:21Z")

</div>

Hi all,

In the (otherwise absolutely wonderful) RecursiveArrayTools package, I’m fairly sure it must be possible to use UpperTriangular or LowerTriangular arrays as parts of an ArrayPartition. The source code ([RecursiveArrayTools.jl/src/array\_partition.jl at master · SciML/RecursiveArrayTools.jl · GitHub](https://github.com/SciML/RecursiveArrayTools.jl/blob/master/src/array_partition.jl)) explicitly implements the right ldiv for them. However, I haven’t gotten it to work. Here is a MWE:

```julia
using DifferentialEquations
using RecursiveArrayTools
using LinearAlgebra

function f!(du, u, p, t)
	v=u.x[1] #vector
	A=u.x[2] #UpperTriangular array

	du.x[1] .= A*v
	du.x[2] .= -A
end

N=3

u0=ArrayPartition(rand(N), UpperTriangular(rand(N, N)))
prob=ODEProblem(f!, u0, (0.0, 10.0), [])
sol=solve(prob)

```

This returns the error message

```julia
conflicting broadcast rules defined

  Broadcast.BroadcastStyle(::RecursiveArrayTools.ArrayPartitionStyle{LinearAlgebra.StructuredMatrixStyle{LinearAlgebra.UpperTriangular}}, ::RecursiveArrayTools.ArrayPartitionStyle{Base.Broadcast.DefaultArrayStyle{2}}) = RecursiveArrayTools.ArrayPartitionStyle{LinearAlgebra.StructuredMatrixStyle{LinearAlgebra.UpperTriangular}}()

  Broadcast.BroadcastStyle(::RecursiveArrayTools.ArrayPartitionStyle{Base.Broadcast.DefaultArrayStyle{2}}, ::RecursiveArrayTools.ArrayPartitionStyle{LinearAlgebra.StructuredMatrixStyle{LinearAlgebra.UpperTriangular}}) = RecursiveArrayTools.ArrayPartitionStyle{Base.Broadcast.Unknown}()

One of these should be undefined (and thus return Broadcast.Unknown).

```

Does anyone know how I can fix this?

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [May 26, 2025, 6:32pm UTC](https://discourse.julialang.org/t/uppertriangular-arrays-in-recursivearraytools/129352/2 "2025-05-26T18:32:15Z")

</div>

That would probably need some work. Open an issue.
