# Explicit Jacobian on DAEs?

**URL:** <https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477>\
**Category:** Numerics\
**Tags:** diffeq\
**Created:** [March 4, 2019, 8:26pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477 "2019-03-04T20:26:47Z")\
**Posts on this page:** 13\
**Page:** 4

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [April 9, 2019, 5:28pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/62 "2019-04-09T17:28:09Z")

</div>

I sent you one by direct mail some time ago, in private through this channel -  
If you don’t have it - I can make it public again - Please let me know 🙂

A

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [April 10, 2019, 4:33pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/63 "2019-04-10T16:33:45Z")

</div>

Here is the code - thanks

I don’t have a toy example so I’ll share the full code with you. Hope you don’t mind .  
could the issue be that my server runf julia 1.0 and not 1.1?  
I am happy to share it with you 🙂 but I’ll have to take it down soon as this is not public yet - hope that’s not an issue.

thanks,

A

```julia
using Distributed
using SymPy
#using Sundials
using DifferentialEquations
@everywhere using DiffEqSensitivity
#using ParameterizedFunctions # not necesary
#using LinearAlgebra
using Plots
using Unitful
using LaTeXStrings
#using DelimitedFiles
using JLD2
using IterableTables
using DataFrames
using CSV

```

```julia
# system of equations

function PKPD3(du,u,p,t)
    
#=
    X1 = X1_ADC
    X2 = X2_ADC
    X3 = ADC_Tumor_Free_Extracellular
    X4 = ADC_Tumor_Bound_Extracellular
    X5 = ADC_Tumor_Intracellular
    X6 = PL_Tumor_Intracellular
    X7 = PL_Bound_Tubulin
    X8 = PL_Tumor_Extracellular
    X9 = C1_PL
    X10 = C2_PL
    X11 = DAR
    X12 = V1
    X13 = V2
    X14 = V3
    X15 = V4
    X16 = TV = V1 + V2 + V3 + V4
    X17 = Growth
    X18 = Kill
    X19 = R_tum
    X20 = Diff_adc
    X21 = Diff_drug 
=#
    (CL_adc, CLD_adc, V1_adc, V2_adc, Kdec, e_adc, P_adc, D_adc,
    Kon_adc, Koff_adc, Agtot, Kint_ag, Kdeg, Kdiff_drug, Kout_drug,
    Kon_tub, Tub, Koff_tub, e_drug, P_drug, D_drug,
    CL_drug, CLD_drug, V1_drug, V2_drug, 
    Vmax, τ, Kgex, Kglin, ψ, KKillmax, KC50, R_cap,R_kro) = p 
    
    # Define varaibles:
    
    X1 = u[1] ; dX1 = du[1] 
    X2 = u[2] ; dX2 = du[2] 
    X3 = u[3] ; dX3 = du[3] 
    X4 = u[4] ; dX4 = du[4] 
    X5 = u[5] ; dX5 = du[5] 
    X6 = u[6] ; dX6 = du[6] 
    X7 = u[7] ; dX7 = du[7] 
    X8 = u[8] ; dX8 = du[8] 
    X9 = u[9] ; dX9 = du[9] 
    X10 = u[10] ; dX10 = du[10] 
    X11 = u[11] ; dX11 = du[11] 
    DAR = X11
    X12 = u[12] ; dX12 = du[12] 
    X13 = u[13] ; dX13 = du[13] 
    X14 = u[14] ; dX14 = du[14] 
    X15 = u[15] ; dX15 = du[15] 
    X16 = u[16]
    X17 = u[17]
    X18 = u[18]    
    X19 = u[19]
    X20 = u[20]
    X21 = u[21]
    
    TV = X16
    Growth = X17
    Kill = X18
    R_tum = X19
    Diff_adc= X20
    Diff_drug = X21
    
    
# ADC 2 Compartment Equations
    
    du[1] =-((CL_adc/V1_adc) + (CLD_adc/V1_adc))*X1 +
         (CLD_adc/V2_adc)*X2 - ((e_adc*X1/V1_adc -X3 )*TV*((2*P_adc*R_cap/(R_kro^2))+Diff_adc))#- Kdec*X1 - X3
     
    du[2] = (CLD_adc/V1_adc)*X1 - (CLD_adc/V2_adc)*X2
    
    
    # ADC Cellular Equations
    
    du[3] = (e_adc*(X1/V1_adc)- X3)*((2*P_adc*R_cap/(R_kro^2))+Diff_adc) +
        - Kon_adc*X3*((Agtot - X4)/e_adc) + Koff_adc*X4#- Kdec*X3
         
    du[4] = Kon_adc*X3*((Agtot - X4)/e_adc) +
         -(Koff_adc+Kint_ag)*X4 # -Kdec*X4 -dX4

    du[5] = Kint_ag*X4 - Kdeg*X5
    
    
    # Drug Cellular Equations
    
    du[6] = Kdeg*X5*DAR + Kdiff_drug*(X8-X6) - Kout_drug*X6 +
         - Kon_tub*X6*(Tub - X7) + Koff_tub*X7 

    du[7] = Kon_tub*X6*(Tub - X7) - Koff_tub*X7

    du[8] = (e_drug*X9 - X8)*((2*P_drug*R_cap/(R_kro^2)) + Diff_drug) + 
         - Kdiff_drug*(X8 - X6) + Kout_drug*X6 + DAR*Kdec*(X3 + X4)
    
    
    # Drug 2 Compartment Equations
    
    du[9] = -(CL_drug/V1_drug)*X9 - (CLD_drug/V1_drug)*X9 +
         + (CLD_drug/V1_drug)*X10 + (X1*DAR*Kdec)/V1_drug +
         + (CL_adc*DAR*(X1/V1_adc))/V1_drug +
          - (e_drug*X9 - X8)*((2*P_drug*R_cap/(R_kro^2)) + Diff_drug) #*TV

    du[10] = (CLD_drug/V2_drug)*X9 - (CLD_drug/V2_drug)*X10
    
    
    # ADC deacy Equation
    
    du[11] = -Kdec*X11 
    
    # PD Equations
    
    du[12] = (Growth-Kill)*X12
      
    du[13] = Kill*X12 - (1/τ)*X13 
      
    du[14] = (1/τ)*(X13 - X14) 
    
    du[15] = (1/τ)*(X14 - X15)
            
            # Equations 16 and on are algebraic
    
    du[16] = (X12 + X13 + X14 + X15)-TV
    
    du[17] = Kgex*(1-(TV/Vmax))/(1+abs((Kgex*TV)/Kglin)^ψ)^(1/ψ)-Growth
    
    du[18] = KKillmax*(X6+X7)/(KC50 + X6+X7)-Kill
    
    
    # Dynamic Parameters
        
    du[19] = cbrt((3/(4π))*abs(TV))*100000 - R_tum
    
    du[20] = 6*D_adc/(abs(R_tum)^2) -Diff_adc
    
    du[21] = 6*D_drug/(abs(R_tum)^2) - Diff_drug

end 

```

```julia
# parameters

weight = 20.0u"g"
MW_adc = uconvert(u"g/nmol",153000u"g/mol")
MW_drug = uconvert(u"g/nmol",717.993u"g/mol")
Dose = uconvert(u"g/g",2u"mg/kg")*weight/MW_adc
CL_adc = 0.025u"L/(d*kg)"*uconvert(u"kg",weight)
CLD_adc = 0.036u"L/(d*kg)"*uconvert(u"kg",weight)
V1_adc = 0.054u"L/kg"*uconvert(u"kg",weight)
V2_adc = 0.1u"L/kg"*uconvert(u"kg",weight)
Kdec = 0.072u"1/d"
e_adc = 0.241
P_adc = 334u"μm/d"
D_adc = 0.022u"cm^2/d"
D_adc = uconvert(u"μm^2/d",D_adc)
Kon_adc = 6.22u"L/(nmol*d)"
Koff_adc = 12.5u"1/d"
Agtot = 166u"nmol/L"
Kint_ag = 0.61u"1/d"
Kdeg = 0.72u"1/d"
Kdiff_drug = 9.66u"1/d"
Kout_drug = 1.1u"1/d"
Kon_tub = 0.44u"L/(nmol*d)"#6.22u"L/(nmol*d)"
Tub = 65u"nmol/L" 
Koff_tub = 13.1u"1/(d)"
e_drug = 0.44
P_drug = 2.1e4u"μm/d"
D_drug = 0.25u"cm^2/d"
D_drug = uconvert(u"μm^2/d",D_drug)
CL_drug = 0.93u"L/(d*kg)"*uconvert(u"kg",weight)
CLD_drug = 3.03u"L/(d*kg)"*uconvert(u"kg",weight)
V1_drug = 1.26u"L/kg"*uconvert(u"kg",weight)
V2_drug = 0.799u"L/kg"*uconvert(u"kg",weight)
Vmax = 500u"mm^3"
Vmax = uconvert(u"L",Vmax)
τ = 0.128u"d"
Kgex = 0.245u"1/(d)"
Kglin = 43.3u"mm^3/(d)"
Kglin = uconvert(u"L/d",Kglin)
ψ = 20
KKillmax = 0.761u"1/(d)"
KC50 = 100u"nmol/L"

R_cap = 8u"μm"
R_kro = 75u"μm"
#R_tum = 200u"μm"
ITV = 100u"mm^3"
ITV = uconvert(u"L",ITV)
IR_tum = cbrt((3/(4π))*(uconvert(u"μm^3",ITV)))
IDiff_adc = 6*D_adc/(IR_tum^2)
IDiff_drug = 6*D_drug/(IR_tum)^2

Perm_adc = (2*P_adc*R_cap/(R_kro^2))
Perm_drug = (2*P_drug*R_cap/(R_kro^2))

p=ustrip.([CL_adc, CLD_adc, V1_adc, V2_adc,  
    Kdec, e_adc, P_adc, D_adc, Kon_adc, Koff_adc,
    Agtot, Kint_ag, Kdeg, Kdiff_drug, Kout_drug, Kon_tub, Tub, Koff_tub, 
    e_drug, P_drug, D_drug, CL_drug, CLD_drug, V1_drug, V2_drug, #, TV])
    Vmax, τ, Kgex, Kglin, ψ, KKillmax, KC50, R_cap, R_kro])
;

```

```julia
#IC
IX1 = Dose
IX2 = 0u"nmol"
IX3 = 0u"nmol/L" 
IX4 = 0u"nmol/L" 
IX5 = 0u"nmol/L" 
IX6 = 0u"nmol/L" 
IX7 = 0u"nmol/L" 
IX8 = 0u"nmol/L"  
IX9 = 0u"nmol/L" 
IX10 = 0u"nmol/L" 
IX11 = 4
IX12 = ITV
IX13 = 0u"L" 
IX14 = 0u"L" 
IX15 = 0u"L" 
IX16 = ITV
IX17 = Kgex*(1-(ITV/Vmax))/(1+((Kgex*ITV)/Kglin)^ψ)^(1/ψ)
IX18 = KKillmax*(IX6+IX7)/(KC50 + IX6+IX7)
IX19 = IR_tum
IX20 = IDiff_adc
IX21 = IDiff_drug

IC = ustrip.([IX1, IX2, IX3, IX4, IX5, IX6, IX7, IX8, IX9, 
              IX10, IX11, IX12, IX13, IX14, IX15, IX16, IX17, IX18, IX19, IX20, IX21])
IC2 = copy(IC)
IC2[1]=IC[1]/4

# tspan and others

tspan = ustrip.((0.0u"d",100u"d"))
tspan2 = ustrip.((0.0u"d",28u"d"))
# diff_vars = [true,true,true,true,true, true, true, true,true,true, true, true, true, true, true, 
# false, false, false, false, false, false]

varnum=21
algnum=6
dv=varnum - algnum
diff_vars=[if i≤dv true else false end for i in 1:varnum]
MM = zeros(varnum,varnum)
[MM[i,i] = 1 for i in 1:dv]

;

```

```julia
# Solve equations
PKPD3_test = ODEFunction(PKPD3;mass_matrix=MM)
PKPD3_Prob = ODEProblem(PKPD3_test,IC,tspan,p)
PKPD3_sol = DifferentialEquations.solve(PKPD3_Prob,Rodas5())#;dt=1//2^(5))#, alghint=:stiff)

# convert solution to dataframe
DataFrame(PKPD3_sol)

```

I know it is a lot of text, but I am not sure why it doesn’t work so I rather share the actual code other than make a toy sample -

thanks

a-

---

<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:** [April 11, 2019, 12:53pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/64 "2019-04-11T12:53:28Z")

</div>

> [@alewolf](#):
>
> I know it is a lot of text, but I am not sure why it doesn’t work so I rather share the actual code other than make a toy sample

That’s not a good excuse. The best way to find out why it doesn’t work is to make a toy example.

```julia
using OrdinaryDiffEq

f_2dlinear = (du,u,p,t) -> du.=1.01u
prob = ODEProblem(f_2dlinear,rand(2,2),(0.0,1.0))
sol1 =solve(prob,Tsit5())
using IterableTables, DataFrames
df = DataFrame(sol1)

```

works while

```julia
using OrdinaryDiffEq

f_2dlinear = (du,u,p,t) -> du.=1.01u
prob = ODEProblem(f_2dlinear,rand(2),(0.0,1.0))
sol1 =solve(prob,Tsit5())
using IterableTables, DataFrames
df = DataFrame(sol1)

```

fails. Probably an issue with IterableTables.jl. I opened an issue: [Forcing the most specialized iterator · Issue #92 · queryverse/IterableTables.jl · GitHub](https://github.com/queryverse/IterableTables.jl/issues/92)

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [April 11, 2019, 1:19pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/65 "2019-04-11T13:19:23Z")

</div>

Ok-

My apologies.

I was really not sure if the issue was related to my code- that’s why I wanted to share the the real problem.

A

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [April 11, 2019, 1:22pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/66 "2019-04-11T13:22:15Z")

</div>

Next time I’ll make sure to simplify.

As always thanks for the help!

A

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [June 12, 2019, 6:32pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/67 "2019-06-12T18:32:35Z")

</div>

Hi Chirs-

I hope you are doing well!  
Sorry to bother you again-  
Is measurement type compatible with DAEs?  
I wrote the following test code:

```julia
# Equation
function test(du,u,p,t)
    du[1]=-p[1]*u[1]
    du[2]=-(p[2])*u[2]
    du[3]=2*u[2] - u[1]
end
# test = @ode_def begin
# dx=-k*x
# end k
x0 = [10.0 ± 1, 5.0 ± 1, 1±0]
k=1 ± 0.1
k2=5 ± 0.05

# Solve Equation
# Mass=generate_MassMatrix(3,1)
# Mass=[1±0 0.0 0.0; 0.0 1±0 0.0; 0.0 0.0 0.0]
Mass=[1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 0.0]
System = ODEFunction(test;mass_matrix=Mass)
prob = ODEProblem(System,x0,(0.0,10.0),[k,k2])
condition(u,t,integrator) = t in [2,4,6,8] # && u[1]/V<1
affect!(integrator) = integrator.u[1] += 10±1
affect2!(integrator) = integrator.u[2] += 5±1
cb = DiscreteCallback(condition,affect!;save_positions=(false,false))
cb2 = DiscreteCallback(condition,affect2!;save_positions=(false,false))
cbset=CallbackSet(cb,cb2)
sol = solve(prob,Rodas5())#,callback=cbset,tstops=[2,4,6,8])

```

If I use Tsit() and no mass\_matrix- the problems solves.  
However once I change the solver to Rodas5() or other Rosenbrock methods to make the problem into a DAE - the code fails. This happens even if I use Rodas to solve the system as ODE (no mass matrix).  
Is the issue with my code or just DAE/ Rodas solvers do not work with measurement type, Is there any solution or solver I could use to actually solev this problem?

The error message seems to indicate that the issue is with forward differentiation, but that I don;t know how to fix.

Thanks,

A

Truncated Error:  
MethodError: \*(::Measurement{Float64}, ::ForwardDiff.Dual{ForwardDiff.Tag{DiffEqDiffTools.UJacobianWrapper{ODEFunction{true,typeof(test),Array{Float64,2},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Measurement{Float64},1}},Measurement{Float64}},Measurement{Float64},3}) is ambiguous. Candidates:  
\*(a::Measurement, b::Real) in Measurements at /opt/julia/packages/Measurements/VjRMd/src/math.jl:197  
\*(x::AbstractFloat, y::ForwardDiff.Dual{Ty,V,N} where N where V) where Ty in ForwardDiff at /opt/julia/packages/ForwardDiff/N0wMF/src/dual.jl:140  
Possible fix, define  
\*(::Measurement, ::ForwardDiff.Dual{Ty,V,N} where N where V)

Stacktrace:  
[1] test(::Array{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqDiffTools.UJacobianWrapper{ODEFunction{true,typeof(test),Array{Float64,2},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Measurement{Float64},1}},Measurement{Float64}},Measurement{Float64},3},1}, ::Array{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqDiffTools.UJacobianWrapper{ODEFunction{true,typeof(test),Array{Float64,2},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Measurement{Float64},1}},Measurement{Float64}},Measurement{Float64},3},1}, ::Array{Measurement{Float64},1}, ::Float64) at ./In[39]:3  
[2] (::ODEFunction{true,typeof(test),Array{Float64,2},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing})(::Array{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqDiffTools.UJacobianWrapper{ODEFunction{true,typeof(test),Array{Float64,2},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Measurement{Float64},1}},Measurement{Float64}},Measurement{Float64},3},1}, ::Array{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqDiffTools.UJacobianWrapper{ODEFunction{true,typeof(test),Array{Float64,2},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Measurement{Float64},1}},Measurement{Float64}},Measurement{Float64},3},1}, ::Vararg{Any,N} where N) at /opt/julia/packages/DiffEqBase/6ewdP/src/diffeqfunction.jl:188  
[3]

---

<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:** [June 12, 2019, 7:41pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/68 "2019-06-12T19:41:22Z")

</div>

Try `sol = solve(prob,Rodas5(autodiff=false))`

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [June 12, 2019, 7:50pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/69 "2019-06-12T19:50:57Z")

</div>

> [@ChrisRackauckas](#):
>
> sol = solve(prob,Rodas5(autodiff=false))

That worked - once I chabged the toy example to one that wasn’t singular 🙂  
Thanks,

A

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [June 12, 2019, 9:32pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/70 "2019-06-12T21:32:54Z")

</div>

so this worked well for the toy system - once I tried to apply to a bigger system it doesn’t.  
Do you think it might be an issue with error porpagation - The sstem solves perfectly with Float64.

Thanks,

Ale

Here is the error

MethodError: no method matching gemm!(::Char, ::Char, ::Measurement{Float64}, ::SubArray{Measurement{Float64},2,Array{Measurement{Float64},2},Tuple{UnitRange{Int64},UnitRange{Int64}},false}, ::SubArray{Measurement{Float64},2,Array{Measurement{Float64},2},Tuple{UnitRange{Int64},UnitRange{Int64}},false}, ::Measurement{Float64}, ::SubArray{Measurement{Float64},2,Array{Measurement{Float64},2},Tuple{UnitRange{Int64},UnitRange{Int64}},false})  
Closest candidates are:  
gemm!(::AbstractChar, ::AbstractChar, !Matched::Float64, !Matched::Union{AbstractArray{Float64,1}, AbstractArray{Float64,2}}, !Matched::Union{AbstractArray{Float64,1}, AbstractArray{Float64,2}}, !Matched::Float64, !Matched::Union{AbstractArray{Float64,1}, AbstractArray{Float64,2}}) at /opt/julia-1.0.0/share/julia/stdlib/v1.0/LinearAlgebra/src/blas.jl:1109  
gemm!(::AbstractChar, ::AbstractChar, !Matched::Float32, !Matched::Union{AbstractArray{Float32,1}, AbstractArray{Float32,2}}, !Matched::Union{AbstractArray{Float32,1}, AbstractArray{Float32,2}}, !Matched::Float32, !Matched::Union{AbstractArray{Float32,1}, AbstractArray{Float32,2}}) at /opt/julia-1.0.0/share/julia/stdlib/v1.0/LinearAlgebra/src/blas.jl:1109  
gemm!(::AbstractChar, ::AbstractChar, !Matched::Complex{Float64}, !Matched::Union{AbstractArray{Complex{Float64},1}, AbstractArray{Complex{Float64},2}}, !Matched::Union{AbstractArray{Complex{Float64},1}, AbstractArray{Complex{Float64},2}}, !Matched::Complex{Float64}, !Matched::Union{AbstractArray{Complex{Float64},1}, AbstractArray{Complex{Float64},2}}) at /opt/julia-1.0.0/share/julia/stdlib/v1.0/LinearAlgebra/src/blas.jl:1109

---

<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:** [June 12, 2019, 10:19pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/71 "2019-06-12T22:19:17Z")

</div>

It’s a missing method gemm! for measurements. Please do not continue one thread for so many different questions. It is not inviting other people to answer.

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [June 12, 2019, 10:25pm UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/72 "2019-06-12T22:25:35Z")

</div>

OK -  
Last question here!  
Is this something I need to install? update?  
Is there a version of Measurements that you use?  
Or just not available?  
Thanks,

Ale  
PS-I’ll start new thread after 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:** [June 13, 2019, 1:33am UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/73 "2019-06-13T01:33:12Z")

</div>

It’s probably a method missing in Measurements.jl. You should either open an issue in the repo mentioning that `gemm!` is missing for matrices of measurements, or open a PR to Measurements.jl that fixes it.

---

<div class="post-metadata">

**Author:** ![alewolf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alewolf/32/9000_2.png) [@alewolf](https://discourse.julialang.org/u/alewolf)\
**Post date:** [June 13, 2019, 2:40am UTC](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477/74 "2019-06-13T02:40:38Z")

</div>

Thanks 🙂  
Next question will be in new thread 🙂

[Previous page](https://discourse.julialang.org/t/explicit-jacobian-on-daes/21477.md?page=3)
