{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl/issues/385","repository_url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl","labels_url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl/issues/385/labels{/name}","comments_url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl/issues/385/comments","events_url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl/issues/385/events","html_url":"https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/pull/385","id":332117172,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk0NjgwMDE3","number":385,"title":"WIP: classical/semilinear ExpRK integrators","user":{"login":"MSeeker1340","id":30965945,"node_id":"MDQ6VXNlcjMwOTY1OTQ1","avatar_url":"https://avatars1.githubusercontent.com/u/30965945?v=4","gravatar_id":"","url":"https://api.github.com/users/MSeeker1340","html_url":"https://github.com/MSeeker1340","followers_url":"https://api.github.com/users/MSeeker1340/followers","following_url":"https://api.github.com/users/MSeeker1340/following{/other_user}","gists_url":"https://api.github.com/users/MSeeker1340/gists{/gist_id}","starred_url":"https://api.github.com/users/MSeeker1340/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MSeeker1340/subscriptions","organizations_url":"https://api.github.com/users/MSeeker1340/orgs","repos_url":"https://api.github.com/users/MSeeker1340/repos","events_url":"https://api.github.com/users/MSeeker1340/events{/privacy}","received_events_url":"https://api.github.com/users/MSeeker1340/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2018-06-13T18:44:51Z","updated_at":"2018-06-15T18:42:40Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl/pulls/385","html_url":"https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/pull/385","diff_url":"https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/pull/385.diff","patch_url":"https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/pull/385.patch"},"body":"This PR will contain a series of updates to update and implement the \"classical\" ExpRK integrators. These methods do not use internal time-stepping for Krylov, and are casted in the semilinear formulation. \r\n\r\nFirst some minor updates on the interface part. Note that for `integrator.opts.internalnorm`, the default choice (`ODE_DEFAULT_NORM`) does not support `norm(A, Inf)`, so I have to switch to using `Base.norm` in the tests. Might be a good idea to just change `norm(A, Inf)` in `arnoldi!` to `norm(A)` though, considering that we will be using fast normest for large sparse `A` anyways."},"comment":{"url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl/issues/comments/397709406","html_url":"https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/pull/385#issuecomment-397709406","issue_url":"https://api.github.com/repos/JuliaDiffEq/OrdinaryDiffEq.jl/issues/385","id":397709406,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NzcwOTQwNg==","user":{"login":"MSeeker1340","id":30965945,"node_id":"MDQ6VXNlcjMwOTY1OTQ1","avatar_url":"https://avatars1.githubusercontent.com/u/30965945?v=4","gravatar_id":"","url":"https://api.github.com/users/MSeeker1340","html_url":"https://github.com/MSeeker1340","followers_url":"https://api.github.com/users/MSeeker1340/followers","following_url":"https://api.github.com/users/MSeeker1340/following{/other_user}","gists_url":"https://api.github.com/users/MSeeker1340/gists{/gist_id}","starred_url":"https://api.github.com/users/MSeeker1340/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MSeeker1340/subscriptions","organizations_url":"https://api.github.com/users/MSeeker1340/orgs","repos_url":"https://api.github.com/users/MSeeker1340/repos","events_url":"https://api.github.com/users/MSeeker1340/events{/privacy}","received_events_url":"https://api.github.com/users/MSeeker1340/received_events","type":"User","site_admin":false},"created_at":"2018-06-15T18:42:40Z","updated_at":"2018-06-15T18:42:40Z","author_association":"CONTRIBUTOR","body":"@ChrisRackauckas Not sure how you feel about using macro expansion in source files but I feel like it's the way to go if we want to minimize boilerplate code. \r\n\r\nThe aim is to consolidate `alg_cache` and `perform_step` to the point that a new algorithm can be easily added simply defining its version of `expRK_operators`. This is partially done for constant caches. For the in-place style I'm not sure how far I can go but at least for precomputing the operators `expRK_operators` can also be of use.\r\n\r\nAn implementation detail is that I cannot set the type signature of `ops` to be `NTuple{N, opType}` and for the Krylov case use the empty tuple `()`. For some reason this is not accepted, as shown by the demo:\r\n\r\n```julia\r\nstruct S{N, T}\r\n    val::NTuple{N, T}\r\nend\r\n```\r\n\r\n\r\n```julia\r\nS((1,2,3))\r\n```\r\n\r\n\r\n\r\n\r\n    S{3,Int64}((1, 2, 3))\r\n\r\n\r\n\r\n\r\n```julia\r\nS(())\r\n```\r\n\r\n\r\n    MethodError: Cannot `convert` an object of type Tuple{} to an object of type S\r\n    This may have arisen from a call to the constructor S(...),\r\n    since type constructors fall back to convert methods.\r\n\r\n    \r\n\r\n    Stacktrace:\r\n\r\n     [1] S(::Tuple{}) at .\\sysimg.jl:77"}}
{"actor":{"display_login":"MSeeker1340"}}