# Error using SplitODEProblem: type GMRESIterable has no field reltol

**URL:** <https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661>\
**Category:** Modelling & Simulations\
**Tags:** diffeq\
**Created:** [February 20, 2021, 3:24am UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661 "2021-02-20T03:24:09Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bastien](https://avatars.discourse-cdn.com/v4/letter/b/51bf81/32.png) [@Bastien](https://discourse.julialang.org/u/Bastien)\
**Post date:** [February 20, 2021, 3:24am UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/1 "2021-02-20T03:24:09Z")

</div>

Hi,

I have been trying to use a `SplitODEProblem` to solve the equations of motion of a pulse propagating along a transmission line but I get the following message:  
` ERROR: LoadError: type GMRESIterable has no field reltol`  
I am using DifferentialEquation v6.16.0.  
Here’s a code snippet that reproduces the issue:

```julia
using DifferentialEquations

struct TL2
    L::Float64
    C::Float64
    Rl::Float64
    N::Int
end

struct Drive2{F}
    Rd::Float64    
    waveform::F
end

struct GaussianPulse2
    amp::Float64
    t0::Float64
    width::Float64   
end   

V(s::GaussianPulse2, t) = s.amp*exp.( -(t-s.t0)^2/(2*s.width) )/sqrt(2π*s.width) 
(s::GaussianPulse2)(t) = V(s, t)

struct Circuit2{F}
    tl::TL2
    drive::Drive2{F}
end

function matrix_tl(tl::TL2)
    L = tl.L 
    C = tl.C 
    N = tl.N    
    Rl = tl.Rl 

    A = zeros(2*(N+1)+2, 2*(N+1)+2)
    A[1,3] = 1.0
    A[N+3, N+2] = 1.0/Rl/C 
    A[N+3, N+3] = -1.0/Rl/C    
    for i in 3:N+2
        A[i,(N+1)+ i] = 1.0/L
        A[i,(N+1)+ i+1] = -1.0/L
        A[(N+1)+ i + 1, i] = 1.0/C
        A[(N+1)+ i + 1, i+1] = -1.0/C
    end
    return DiffEqArrayOperator(A)
end

matrix_tl(circuit::Circuit2) = matrix_tl(circuit.tl)

function drive_tl(dy, y, circuit::Circuit2, t)    
    Vd_dot = gradient(circuit.drive.waveform, t)[1]
    Rd = circuit.drive.Rd     
    N = circuit.tl.N  
    dy[2 + (N+1) + 1] = Vd_dot - Rd*dy[3] - dy[2]    
end

g = GaussianPulse2(0.3, 1.0, 1e-3)
drive = Drive2(50.0, g)
tl = TL2(0.02, 0.005, 0.008, 51)
circuit = Circuit2(tl, drive)

y0 = zeros(2*(tl.N+1)+2)
prob = SplitODEProblem(matrix_tl(circuit), drive_tl, y0, (0.0, 5.0), circuit)
sol = solve(prob, tstops=(1.0))

```

Thanks for letting me know if you how how to fix this error.

P.S. Any comments that would help speedup the code is also highly appreciated

---

<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:** [February 20, 2021, 3:46am UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/2 "2021-02-20T03:46:11Z")

</div>

Use Julia v1.5 and the latest package versions. This is just a versioning error. Delete packages holding things back. Share `]st` and `]st -m` if you need help identifying the offending package.

Your problem is unstable though, so when it solves it diverges. `dy[2 + (N+1) + 1] = Vd_dot - Rd*dy[3] - dy[2]` as a line doesn’t make sense in an ODE because `dy[3]` and `dy[2]` are undefined here, so this has a random divergent solution.

---

<div class="post-metadata">

**Author:** ![Bastien](https://avatars.discourse-cdn.com/v4/letter/b/51bf81/32.png) [@Bastien](https://discourse.julialang.org/u/Bastien)\
**Post date:** [February 20, 2021, 10:42pm UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/3 "2021-02-20T22:42:47Z")

</div>

Thanks @ChrisRackauckas. Guidance on how to fix the versioning error is appreciated, here is the `]st`:

```julia
  [6e4b80f9] BenchmarkTools v0.5.0
  [0f109fa4] BifurcationKit v0.1.3
  [336ed68f] CSV v0.8.3
  [717857b8] DSP v0.6.10
  [a93c6f00] DataFrames v0.22.5
  [0c46a032] DifferentialEquations v6.16.0
  [f6369f11] ForwardDiff v0.10.16
  [7073ff75] IJulia v1.23.1
  [916415d5] Images v0.23.3
  [c601a237] Interact v0.10.3
  [98e50ef6] JuliaFormatter v0.13.2
  [b964fa9f] LaTeXStrings v1.2.0
  [961ee093] ModelingToolkit v3.20.1
  [6741aa20] Neptune v0.14.0
  [1dea7af3] OrdinaryDiffEq v5.42.3
  [d96e819e] Parameters v0.12.2
  [18e31ff7] Peaks v0.3.0
  [a03496cd] PlotlyBase v0.4.3
  [f0f68f2c] PlotlyJS v0.14.0
  [91a5bcdd] Plots v1.10.5
  [c3e4b0f8] Pluto v0.12.20
  [d330b81b] PyPlot v2.9.0
  [307c2aad] SimplePlots v0.2.0
  [0ae4a718] VegaDatasets v2.1.0
  [112f6efa] VegaLite v2.3.1
  [0f1e0344] WebIO v0.8.15
  [e88e6eb3] Zygote v0.6.3
  [ade2ca70] Dates

```

and of `]st -m`;

```julia
[c3fe647b] AbstractAlgebra v0.11.2
  [621f4979] AbstractFFTs v1.0.0
  [1520ce14] AbstractTrees v0.3.3
  [79e6a3ab] Adapt v2.4.0
  [ec485272] ArnoldiMethod v0.1.0
  [7d9fca2a] Arpack v0.5.0
  [68821587] Arpack_jll v3.8.0+0
  [4fba245c] ArrayInterface v2.14.17
  [4c555306] ArrayLayouts v0.3.8
  [56f22d72] Artifacts v1.3.0
  [bf4720bc] AssetRegistry v0.1.0
  [13072b0f] AxisAlgorithms v1.0.0
  [39de3d68] AxisArrays v0.4.3
  [aae01518] BandedMatrices v0.15.15
  [6e4b80f9] BenchmarkTools v0.5.0
  [0f109fa4] BifurcationKit v0.1.3
  [9e28174c] BinDeps v1.0.2
  [ad839575] Blink v0.12.4
  [8e7c35d0] BlockArrays v0.12.11
  [764a87c0] BoundaryValueDiffEq v2.7.1
  [6e34b625] Bzip2_jll v1.0.6+5
  [fa961155] CEnum v0.4.1
  [70588ee8] CSSUtil v0.1.1
  [00ebfdb7] CSTParser v2.5.0
  [336ed68f] CSV v0.8.3
  [83423d85] Cairo_jll v1.16.0+6
  [a603d957] CanonicalTraits v0.2.4
  [aafaddc9] CatIndices v0.2.2
  [324d7699] CategoricalArrays v0.9.2
  [082447d4] ChainRules v0.7.52
  [d360d2e6] ChainRulesCore v0.9.29
  [944b1d66] CodecZlib v0.7.0
  [35d6a980] ColorSchemes v3.10.2
  [3da002f7] ColorTypes v0.10.9
  [c3611d14] ColorVectorSpace v0.8.7
  [5ae59095] Colors v0.12.6
  [861a8166] Combinatorics v1.0.2
  [a80b9123] CommonMark v0.7.2
  [38540f10] CommonSolve v0.2.0
  [bbf7d656] CommonSubexpressions v0.3.0
  [34da2185] Compat v3.25.0
  [e66e0078] CompilerSupportLibraries_jll v0.3.4+0
  [ed09eef8] ComputationalResources v0.3.2
  [8f4d0f93] Conda v1.5.0
  [88cd18e8] ConsoleProgressMonitor v0.1.2
  [187b0558] ConstructionBase v1.1.0
  [d38c429a] Contour v0.5.7
  [150eb455] CoordinateTransformations v0.6.1
  [a8cc5b0e] Crayons v4.0.4
  [dc8bdbbb] CustomUnitRanges v1.0.1
  [717857b8] DSP v0.6.10
  [9a962f9c] DataAPI v1.6.0
  [a93c6f00] DataFrames v0.22.5
  [864edb3b] DataStructures v0.17.20
  [e2d170a0] DataValueInterfaces v1.0.0
  [e7dc6d0d] DataValues v0.4.13
  [bcd4f6db] DelayDiffEq v5.24.1
  [2b5f629d] DiffEqBase v6.44.3
  [459566f4] DiffEqCallbacks v2.13.5
  [5a0ffddc] DiffEqFinancial v2.4.0
  [c894b116] DiffEqJump v6.10.0
  [77a26b50] DiffEqNoiseProcess v5.6.0
  [055956cb] DiffEqPhysics v3.9.0
  [163ba53b] DiffResults v1.0.3
  [b552c78f] DiffRules v1.0.2
  [0c46a032] DifferentialEquations v6.16.0
  [c619ae07] DimensionalPlotRecipes v1.2.0
  [b4f34e82] Distances v0.10.2
  [31c24e10] Distributions v0.23.8
  [ffbed154] DocStringExtensions v0.8.3
  [e30172f5] Documenter v0.26.2
  [497a8b3b] DoubleFloats v1.1.15
  [5ae413db] EarCut_jll v2.1.5+1
  [da5c29d0] EllipsisNotation v1.0.0
  [2e619515] Expat_jll v2.2.7+6
  [d4d017d3] ExponentialUtilities v1.8.0
  [e2ba6199] ExprTools v0.1.3
  [8f5d6c58] EzXML v1.1.0
  [c87230d0] FFMPEG v0.4.0
  [b22a6f82] FFMPEG_jll v4.3.1+4
  [4f61f5a4] FFTViews v0.3.1
  [7a1cc6ca] FFTW v1.3.2
  [f5851436] FFTW_jll v3.3.9+7
  [9aa1b823] FastClosures v0.3.2
  [5789e2e9] FileIO v1.4.5
  [8fc22ac5] FilePaths v0.8.1
  [48062228] FilePathsBase v0.9.9
  [1a297f60] FillArrays v0.8.14
  [6a86dc24] FiniteDiff v2.8.0
  [53c48c17] FixedPointNumbers v0.8.4
  [a3f928ae] Fontconfig_jll v2.13.1+14
  [59287772] Formatting v0.4.2
  [f6369f11] ForwardDiff v0.10.16
  [d7e528f0] FreeType2_jll v2.10.1+5
  [559328eb] FriBidi_jll v1.0.5+6
  [069b7b12] FunctionWrappers v1.1.2
  [de31a74c] FunctionalCollections v0.5.0
  [fb4132e2] FuzzyCompletions v0.4.0
  [0656b61e] GLFW_jll v3.3.2+1
  [28b8d3ca] GR v0.54.0
  [d2c73de3] GR_jll v0.53.0+0
  [6b9d7cbe] GeneralizedGenerated v0.2.8
  [01680d73] GenericSVD v0.3.0
  [c145ed77] GenericSchur v0.4.1
  [5c1252a2] GeometryBasics v0.3.9
  [78b55507] Gettext_jll v0.20.1+7
  [7746bdde] Glib_jll v2.59.0+4
  [c27321d9] Glob v1.3.0
  [a2bd30eb] Graphics v1.1.0
  [42e2da0e] Grisu v1.0.0
  [cd3eb016] HTTP v0.9.0
  [9fb69e20] Hiccup v0.2.2
  [0e44f5e4] Hwloc v1.2.0
  [e33a78d0] Hwloc_jll v2.4.0+0
  [7073ff75] IJulia v1.23.1
  [b5f81e59] IOCapture v0.1.1
  [7869d1d1] IRTools v0.4.2
  [bbac6d45] IdentityRanges v0.3.1
  [615f187c] IfElse v0.1.0
  [2803e5a7] ImageAxes v0.6.8
  [f332f351] ImageContrastAdjustment v0.3.6
  [a09fc81d] ImageCore v0.8.20
  [51556ac3] ImageDistances v0.2.10
  [6a3955dd] ImageFiltering v0.6.19
  [bc367c6b] ImageMetadata v0.9.4
  [787d08f9] ImageMorphology v0.2.9
  [2996bd0c] ImageQualityIndexes v0.2.1
  [4e3cecfd] ImageShow v0.2.3
  [02fcd773] ImageTransformations v0.8.9
  [916415d5] Images v0.23.3
  [9b13fd28] IndirectArrays v0.5.1
  [d25df0c9] Inflate v0.1.2
  [83e8ac13] IniFile v0.5.0
  [1d5cc7b8] IntelOpenMP_jll v2018.0.3+2
  [c601a237] Interact v0.10.3
  [d3863d7c] InteractBase v0.10.6
  [a98d9a8b] Interpolations v0.13.1
  [8197267c] IntervalSets v0.5.2
  [d8418881] Intervals v1.5.0
  [41ab1584] InvertedIndices v1.0.0
  [c8e1da08] IterTools v1.3.0
  [1c8ee90f] IterableTables v1.0.0
  [42fd0dbc] IterativeSolvers v0.8.5
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.2.0
  [97c1335a] JSExpr v0.5.2
  [682c06a0] JSON v0.21.1
  [7d188eb4] JSONSchema v0.3.3
  [aacddb02] JpegTurbo_jll v2.0.1+3
  [98e50ef6] JuliaFormatter v0.13.2
  [b14d175d] JuliaVariables v0.2.3
  [bcebb21b] Knockout v0.2.4
  [0b1a1467] KrylovKit v0.5.2
  [c1c5ebd0] LAME_jll v3.100.0+3
  [dd4b983a] LZO_jll v2.10.0+3
  [b964fa9f] LaTeXStrings v1.2.0
  [2ee39098] LabelledArrays v1.5.0
  [23fbe1c1] Latexify v0.14.7
  [50d2b5c4] Lazy v0.15.1
  [4af54fe1] LazyArtifacts v1.3.0
  [1d6d02ad] LeftChildRightSiblingTrees v0.1.2
  [dd192d2f] LibVPX_jll v1.9.0+1
  [e9f186c6] Libffi_jll v3.2.1+4
  [d4300ac3] Libgcrypt_jll v1.8.5+4
  [7e76a0d4] Libglvnd_jll v1.3.0+3
  [7add5ba3] Libgpg_error_jll v1.36.0+3
  [94ce4f54] Libiconv_jll v1.16.0+7
  [4b2f31a3] Libmount_jll v2.34.0+3
  [89763e89] Libtiff_jll v4.1.0+2
  [38a345b3] Libuuid_jll v2.34.0+7
  [093fc24a] LightGraphs v1.3.5
  [d3d80556] LineSearches v7.1.1
  [7a12625a] LinearMaps v3.2.0
  [e6f89c97] LoggingExtras v0.4.5
  [bdcacae8] LoopVectorization v0.10.0
  [d00139f3] METIS_jll v5.1.0+5
  [856f044c] MKL_jll v2021.1.1+1
  [d8e11817] MLStyle v0.4.6
  [1914dd2f] MacroTools v0.5.6
  [dbb5928d] MappedArrays v0.3.0
  [739be429] MbedTLS v1.0.3
  [c8ffd9c3] MbedTLS_jll v2.16.8+1
  [442fdcdd] Measures v0.3.1
  [e1d29d7a] Missings v0.4.5
  [78c3b35d] Mocking v0.7.1
  [961ee093] ModelingToolkit v3.20.1
  [e94cdb99] MosaicViews v0.2.4
  [99f44e22] MsgPack v1.1.0
  [46d2c3a1] MuladdMacro v0.2.2
  [f9640e96] MultiScaleArrays v1.8.1
  [ffc61752] Mustache v1.0.10
  [a975b10e] Mux v0.7.5
  [d41bc354] NLSolversBase v7.7.1
  [2774e3e8] NLsolve v4.5.1
  [77ba4419] NaNMath v0.3.5
  [71a1bf82] NameResolution v0.1.5
  [6741aa20] Neptune v0.14.0
  [2bd173c7] NodeJS v1.1.1
  [4d1e1d77] Nullables v1.0.0
  [510215fc] Observables v0.3.3
  [6fe1bfb0] OffsetArrays v1.6.0
  [e7412a2a] Ogg_jll v1.3.4+2
  [4536629a] OpenBLAS_jll v0.3.9+5
  [458c3c95] OpenSSL_jll v1.1.1+6
  [efe28fd5] OpenSpecFun_jll v0.5.3+4
  [429524aa] Optim v1.2.4
  [91d4177d] Opus_jll v1.3.1+3
  [bac558e1] OrderedCollections v1.4.0
  [1dea7af3] OrdinaryDiffEq v5.42.3
  [2f80f16e] PCRE_jll v8.42.0+4
  [90014a1f] PDMats v0.10.1
  [5432bcbf] PaddedViews v0.5.8
  [65888b18] ParameterizedFunctions v5.6.0
  [d96e819e] Parameters v0.12.2
  [69de0a69] Parsers v1.0.15
  [18e31ff7] Peaks v0.3.0
  [fa939f87] Pidfile v1.2.0
  [30392449] Pixman_jll v0.40.0+0
  [ccf2f8ad] PlotThemes v2.0.1
  [995b91a9] PlotUtils v1.0.10
  [a03496cd] PlotlyBase v0.4.3
  [f0f68f2c] PlotlyJS v0.14.0
  [91a5bcdd] Plots v1.10.5
  [c3e4b0f8] Pluto v0.12.20
  [e409e4f3] PoissonRandom v0.4.0
  [f27b6e38] Polynomials v1.2.0
  [2dfb63ee] PooledArrays v1.1.0
  [85a6dd25] PositiveFactorizations v0.2.4
  [8162dcfd] PrettyPrint v0.2.0
  [08abe8d2] PrettyTables v0.11.1
  [33c8b6b6] ProgressLogging v0.1.4
  [92933f4c] ProgressMeter v1.5.0
  [438e738f] PyCall v1.92.2
  [d330b81b] PyPlot v2.9.0
  [ede63266] Qt_jll v5.15.2+1
  [1fd47b50] QuadGK v2.4.1
  [be4d8f0f] Quadmath v0.5.5
  [74087812] Random123 v1.3.1
  [fb686558] RandomExtensions v0.4.3
  [e6cf234a] RandomNumbers v1.4.0
  [b3c3ace0] RangeArrays v0.3.2
  [c84ed2f1] Ratios v0.4.0
  [3cdcf5f2] RecipesBase v1.1.1
  [01d81517] RecipesPipeline v0.3.1
  [731186ca] RecursiveArrayTools v2.11.0
  [f2c3362d] RecursiveFactorization v0.1.11
  [189a3867] Reexport v0.2.0
  [ae029012] Requires v1.1.2
  [ae5879a3] ResettableStacks v1.1.0
  [79098fc4] Rmath v0.6.1
  [f50d1b31] Rmath_jll v0.2.2+1
  [f2b01f46] Roots v1.0.8
  [6038ab10] Rotations v1.0.2
  [476501e8] SLEEFPirates v0.6.8
  [1bc83da4] SafeTestsets v0.0.1
  [0bca4576] SciMLBase v1.7.3
  [6c6a2e73] Scratch v1.0.3
  [91c51154] SentinelArrays v1.2.16
  [efcf1570] Setfield v0.5.4
  [992d4aef] Showoff v0.3.2
  [307c2aad] SimplePlots v0.2.0
  [699a6c99] SimpleTraits v0.9.3
  [b85f4697] SoftGlobalScope v1.1.0
  [a2af1166] SortingAlgorithms v0.3.1
  [47a9eef4] SparseDiffTools v1.13.0
  [276daf66] SpecialFunctions v0.10.3
  [90137ffa] StaticArrays v0.12.5
  [2913bbd2] StatsBase v0.33.3
  [4c63d2b9] StatsFuns v0.9.6
  [9672c7b4] SteadyStateDiffEq v1.6.1
  [789caeaf] StochasticDiffEq v6.25.0
  [09ab397b] StructArrays v0.4.4
  [856f2bd8] StructTypes v1.2.3
  [bea87d4a] SuiteSparse_jll v5.4.0+9
  [c3572dad] Sundials v4.2.6
  [fb77eaff] Sundials_jll v5.2.0+1
  [d1185830] SymbolicUtils v0.5.2
  [5e66a065] TableShowUtils v0.2.5
  [3783bdb8] TableTraits v1.0.0
  [382cd787] TableTraitsUtils v1.0.1
  [bd369af6] Tables v1.3.2
  [5d786b92] TerminalLoggers v0.1.3
  [e0df1984] TextParse v1.0.1
  [8290d209] ThreadingUtilities v0.2.3
  [06e1c1a7] TiledIteration v0.2.5
  [f269a46b] TimeZones v1.5.3
  [a759f4b9] TimerOutputs v0.5.7
  [0796e94c] Tokenize v0.5.13
  [3bb67fe8] TranscodingStreams v0.9.5
  [a2a6695c] TreeViews v0.3.0
  [30578b45] URIParser v0.4.1
  [5c2747f8] URIs v1.2.0
  [3a884ed6] UnPack v1.0.2
  [b8865327] UnicodePlots v1.3.0
  [1986cc42] Unitful v1.6.0
  [3d5dd08c] VectorizationBase v0.16.2
  [239c3e63] Vega v2.0.0
  [0ae4a718] VegaDatasets v2.1.0
  [112f6efa] VegaLite v2.3.1
  [81def892] VersionParsing v1.2.0
  [19fa3120] VertexSafeGraphs v0.1.2
  [a2964d1f] Wayland_jll v1.17.0+4
  [2381bf8a] Wayland_protocols_jll v1.18.0+4
  [ea10d353] WeakRefStrings v0.6.2
  [0f1e0344] WebIO v0.8.15
  [104b5d7c] WebSockets v1.5.9
  [cc8bc4a8] Widgets v0.6.2
  [efce3f68] WoodburyMatrices v0.5.3
  [02c8fc9c] XML2_jll v2.9.10+3
  [aed1982a] XSLT_jll v1.1.33+4
  [4f6342f7] Xorg_libX11_jll v1.6.9+4
  [0c0b7dd1] Xorg_libXau_jll v1.0.9+4
  [935fb764] Xorg_libXcursor_jll v1.2.0+4
  [a3789734] Xorg_libXdmcp_jll v1.1.3+4
  [1082639a] Xorg_libXext_jll v1.3.4+4
  [d091e8ba] Xorg_libXfixes_jll v5.0.3+4
  [a51aa0fd] Xorg_libXi_jll v1.7.10+4
  [d1454406] Xorg_libXinerama_jll v1.1.4+4
  [ec84b674] Xorg_libXrandr_jll v1.5.2+4
  [ea2f1a96] Xorg_libXrender_jll v0.9.10+4
  [14d82f49] Xorg_libpthread_stubs_jll v0.1.0+3
  [c7cfdc94] Xorg_libxcb_jll v1.13.0+3
  [cc61e674] Xorg_libxkbfile_jll v1.1.0+4
  [12413925] Xorg_xcb_util_image_jll v0.4.0+1
  [2def613f] Xorg_xcb_util_jll v0.4.0+1
  [975044d2] Xorg_xcb_util_keysyms_jll v0.4.0+1
  [0d47668e] Xorg_xcb_util_renderutil_jll v0.3.9+1
  [c22f9ab0] Xorg_xcb_util_wm_jll v0.4.1+1
  [35661453] Xorg_xkbcomp_jll v1.4.2+4
  [33bec58e] Xorg_xkeyboard_config_jll v2.27.0+4
  [c5fb5394] Xorg_xtrans_jll v1.4.0+3
  [c2297ded] ZMQ v1.2.1
  [8f1865be] ZeroMQ_jll v4.3.2+6
  [a5390f91] ZipFile v0.9.3
  [83775a58] Zlib_jll v1.2.11+18
  [3161d3a3] Zstd_jll v1.4.8+0
  [e88e6eb3] Zygote v0.6.3
  [700de1a5] ZygoteRules v0.2.1
  [0ac62f75] libass_jll v0.14.0+4
  [f638f0a6] libfdk_aac_jll v0.1.6+4
  [b53b4c65] libpng_jll v1.6.37+6
  [a9144af2] libsodium_jll v1.0.18+1
  [f27f6e37] libvorbis_jll v1.3.6+6
  [1270edf5] x264_jll v2020.7.14+2
  [dfaa095f] x265_jll v3.0.0+3
  [d8fb68d0] xkbcommon_jll v0.9.1+5
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [8bb1440f] DelimitedFiles
  [8ba89e20] Distributed
  [7b1f6079] FileWatching
  [9fa8497b] Future
  [b77e0a4c] InteractiveUtils
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [a63ad114] Mmap
  [44cfe95a] Pkg
  [de0858da] Printf
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA
  [9e88b42a] Serialization
  [1a1011a3] SharedArrays
  [6462fe0b] Sockets
  [2f01184e] SparseArrays
  [10745b16] Statistics
  [4607b0f0] SuiteSparse
  [8dfed614] Test
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode

```

Concerning the fact that `dy[3]` and `dy[2]` are undefined, it’s partly due to a mistake when I simplified the problem before posting it and partly because I thought that the function `drive_tl` had access to the `dy` defined by `DiffEqArrayOperator(A)*y`…

Thanks

---

<div class="post-metadata">

**Author:** ![Bastien](https://avatars.discourse-cdn.com/v4/letter/b/51bf81/32.png) [@Bastien](https://discourse.julialang.org/u/Bastien)\
**Post date:** [February 21, 2021, 12:47am UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/4 "2021-02-21T00:47:49Z")

</div>

It looks like the error `type GMRESIterable has no field reltol` was caused by a `using OrdinaryDiffEq` that was ran in a file included above the code snippet that I shared (i.e. seems like there was a conflict between `OrdinaryDiffEq` and `DifferentialEquations`). Replacing `OrdinaryDiffEq` by `DifferentialEquations` fixed the issue.

I run into an unstability problem however if I try to run the code defined as a `SplitODEProblem` whereas I get the expected result using the problem defined in term of an `ODEProblem`. here’s the code:

```julia
using DifferentialEquations
using Zygote
using Plots

struct TL2
    L::Float64
    C::Float64
    Rl::Float64
    N::Int
end

struct Drive2{F}
    Rd::Float64    
    waveform::F
end

struct GaussianPulse2
    amp::Float64
    t0::Float64
    width::Float64   
end   

V(s::GaussianPulse2, t) = s.amp*exp.( -(t-s.t0)^2/(2*s.width) )/sqrt(2π*s.width) 
(s::GaussianPulse2)(t) = V(s, t)

struct Circuit2{F}
    tl::TL2
    drive::Drive2{F}
end

function matrix_tl(tl::TL2)
    L = tl.L 
    C = tl.C 
    N = tl.N    
    Rl = tl.Rl 

    A = zeros(2*(N+1)+2, 2*(N+1)+2)
    A[1,3] = 1.0
    A[N+3, N+2] = 1.0/Rl/C 
    A[N+3, N+3] = -1.0/Rl/C
    A[(N+1)+ 3 + 1, 3] = 1.0/C
    A[(N+1)+ 3 + 1, 3+1] = -1.0/C    
    for i in 4:N+2
        A[i,(N+1)+ i] = 1.0/L
        A[i,(N+1)+ i+1] = -1.0/L
        A[(N+1)+ i + 1, i] = 1.0/C
        A[(N+1)+ i + 1, i+1] = -1.0/C
    end

    return DiffEqArrayOperator(A)
end

matrix_tl(circuit::Circuit2) = matrix_tl(circuit.tl)

function drive_tl(dy, y, circuit::Circuit2, t)    
    Vd_dot = gradient(circuit.drive.waveform, t)[1]
    Rd = circuit.drive.Rd     
    N = circuit.tl.N
    L = circuit.tl.L  

    dy[3] = (y[N+4]-y[N+5])/L
    dy[2] = 0.0 # a non-linear function in the general case
    dy[2 + (N+1) + 1] = Vd_dot - Rd*dy[3] - dy[2]     
    
end

##

function eom!(dy,y, circuit::Circuit2,t)
    L = circuit.tl.L 
    C = circuit.tl.C 
    N = circuit.tl.N   
    Rl = circuit.tl.Rl    

    dy[1] = y[3]
    dy[2] = 0.0 # a non-linear function in the general case
    dy[3] = (y[(N+3) + 1] - y[(N+3) + 2])/L 
    dy[(N+3) + 1] = gradient(circuit.drive.waveform, t)[1] - circuit.drive.Rd*dy[3] - dy[2]

    @inbounds @simd for k = 2:N 
        dy[k + 2] = (y[(N+3) + k] - y[(N+3) + k+1])/L
        dy[k + (N+3)] = (y[2 + k-1] - y[2 + k])/C
    end

    dy[(N+3)] = (y[N+2] - y[N+3])/Rl/C
    
    dy[(N+1) + (N+3)] = (y[2 + (N+1)-1] - y[2 + (N+1)])/C
end;

##
t0 = 0.50
tend = 3.0
g = GaussianPulse2(0.3, t0, 1e-3)
drive = Drive2(50.0, g)
tl = TL2(0.02, 0.005, 0.008, 51)
circuit = Circuit2(tl, drive)
y0 = zeros(2*(tl.N+1)+2)
##
prob = ODEProblem(eom!, y0, (0.0, tend), circuit)
sol = solve(prob, tstops=(t0)); 
##
split_prob = SplitODEProblem(matrix_tl(circuit), drive_tl, y0, (0.0, tend), circuit)
split_sol = solve(split_prob, tstops=(t0))

```

So I suppose my question is now: how do I get rid of the unstability issue when using a `SplitODEProblem` and should I expect any performance improvement using a `SplitODEProblem` (provided it works) vs `ODEProblem`?

---

<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:** [February 21, 2021, 10:45am UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/5 "2021-02-21T10:45:21Z")

</div>

You are 2 major versions on ModelingToolkit behind. If you do `]add ModelingToolkit@5` it’ll probably tell you what the offending package is.

---

<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:** [February 21, 2021, 10:47am UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/6 "2021-02-21T10:47:22Z")

</div>

> [@Bastien](#):
>
> So I suppose my question is now: how do I get rid of the unstability issue when using a `SplitODEProblem` and should I expect any performance improvement using a `SplitODEProblem` (provided it works) vs `ODEProblem` ?

Which ODE solver is being used in the two cases? `sol.alg` will say. My guess is we might need a better default on SplitODEProblem.

---

<div class="post-metadata">

**Author:** ![Bastien](https://avatars.discourse-cdn.com/v4/letter/b/51bf81/32.png) [@Bastien](https://discourse.julialang.org/u/Bastien)\
**Post date:** [February 21, 2021, 11:55pm UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/7 "2021-02-21T23:55:08Z")

</div>

Looks like `ModelingToolkit` installed without any issue:

```julia
add ModelingToolkit@5

    Updating registry at `C:\Users\bjd3\.julia\registries\General`
    Updating git-repo `https://github.com/JuliaRegistries/General.git`
   Resolving package versions...
    Updating `K:\bjd3\Test\Project.toml`
  [961ee093] + ModelingToolkit v5.6.4
  No Changes to `K:\bjd3\Test\Manifest.toml`

```

Here’s the algorithm that works well for the `ODEProblem`:

```julia
CompositeAlgorithm{Tuple{Tsit5, Rosenbrock23{0, false, DefaultLinSolve, DataType}}, OrdinaryDiffEq.AutoSwitchCache{Tsit5, Rosenbrock23{0, false, DefaultLinSolve, DataType}, Rational{Int64}, Int64}}((Tsit5(), Rosenbrock23{0, false, DefaultLinSolve, DataType}(DefaultLinSolve(nothing, nothing), Val{:forward})), OrdinaryDiffEq.AutoSwitchCache{Tsit5, Rosenbrock23{0, false, DefaultLinSolve, DataType}, Rational{Int64}, Int64}(9553, Tsit5(), Rosenbrock23{0, false, DefaultLinSolve, DataType}(DefaultLinSolve(nothing, nothing), Val{:forward}), true, 10, 3, 9//10, 9//10, 2, false))

```

and for the `SplitODEProblem`:

```julia
KenCarp4{0, false, DefaultLinSolve, NLNewton{Rational{Int64}, Rational{Int64}, Rational{Int64}}, DataType}(DefaultLinSolve(nothing, nothing), NLNewton{Rational{Int64}, Rational{Int64}, Rational{Int64}}(1//100, 10, 1//5, 1//5), Val{:forward}, true, :linear, :PI)

```

Also, following [Handling Instability When Solving ODE Problems - #5 by ChrisRackauckas](https://discourse.julialang.org/t/handling-instability-when-solving-ode-problems/9019/5),  
I tried

```julia
split_sol = solve(split_prob, tstops=(t0), Rodas4(autodiff=false)) 

```

with `split_prob` defined as previously posted. It breaks after 6 points and I get:

```julia
Warning: dt <= dtmin. Aborting. There is either an error in your model specification or the true solution is unstable.
└ @ SciMLBase C:\Users\bjd3\.julia\packages\SciMLBase\sRVBG\src\integrator_interface.jl:342

```

I also tried  
`split_sol = solve(split_prob, tstops=(t0), Rosenbrock23(autodiff=false)) `  
but that was still running after a few minutes whereas the `ODEProblem` approach solves in less than a minute so I killed it before it was over… I can time it if you think it’d be useful to see if the integration finally gets done.

---

<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:** [February 22, 2021, 12:29am UTC](https://discourse.julialang.org/t/error-using-splitodeproblem-type-gmresiterable-has-no-field-reltol/55661/8 "2021-02-22T00:29:29Z")

</div>

Are you sure the second part of the problem is non-stiff?
