StatProfilerHTML.jl report
Generated on Thu, 21 Dec 2023 13:06:16
File source code
Line Exclusive Inclusive Code
1 mutable struct TimeGradientWrapper{iip, fType, uType, P} <: AbstractSciMLFunction{iip}
2 f::fType
3 uprev::uType
4 p::P
5 end
6
7 function TimeGradientWrapper{iip}(f::F, uprev, p) where {F, iip}
8 return TimeGradientWrapper{iip, F, typeof(uprev), typeof(p)}(f, uprev, p)
9 end
10 function TimeGradientWrapper(f::F, uprev, p) where {F}
11 return TimeGradientWrapper{isinplace(f, 4)}(f, uprev, p)
12 end
13
14 (ff::TimeGradientWrapper{true})(t) = (du2 = similar(ff.uprev); ff.f(du2, ff.uprev, ff.p, t); du2)
15 (ff::TimeGradientWrapper{true})(du2, t) = ff.f(du2, ff.uprev, ff.p, t)
16
17 (ff::TimeGradientWrapper{false})(t) = ff.f(ff.uprev, ff.p, t)
18
19 mutable struct UJacobianWrapper{iip, fType, tType, P} <: AbstractSciMLFunction{iip}
20 f::fType
21 t::tType
22 p::P
23 end
24
25 function UJacobianWrapper{iip}(f::F, t, p) where {F, iip}
26 return UJacobianWrapper{iip, F, typeof(t), typeof(p)}(f, t, p)
27 end
28 UJacobianWrapper(f::F, t, p) where {F} = UJacobianWrapper{isinplace(f, 4)}(f, t, p)
29
30 (ff::UJacobianWrapper{true})(du1, uprev) = ff.f(du1, uprev, ff.p, ff.t)
31 (ff::UJacobianWrapper{true})(uprev) = (du1 = similar(uprev); ff.f(du1, uprev, ff.p, ff.t); du1)
32 (ff::UJacobianWrapper{true})(du1, uprev, p, t) = ff.f(du1, uprev, p, t)
33 (ff::UJacobianWrapper{true})(uprev, p, t) = (du1 = similar(uprev); ff.f(du1, uprev, p, t); du1)
34
35 (ff::UJacobianWrapper{false})(uprev) = ff.f(uprev, ff.p, ff.t)
36 (ff::UJacobianWrapper{false})(uprev, p, t) = ff.f(uprev, p, t)
37
38 mutable struct TimeDerivativeWrapper{iip, F, uType, P} <: AbstractSciMLFunction{iip}
39 f::F
40 u::uType
41 p::P
42 end
43
44 function TimeDerivativeWrapper{iip}(f::F, u, p) where {F, iip}
45 return TimeDerivativeWrapper{iip, F, typeof(u), typeof(p)}(f, u, p)
46 end
47 function TimeDerivativeWrapper(f::F, u, p) where {F}
48 return TimeDerivativeWrapper{isinplace(f, 4)}(f, u, p)
49 end
50
51 (ff::TimeDerivativeWrapper{false})(t) = ff.f(ff.u, ff.p, t)
52 (ff::TimeDerivativeWrapper{true})(du1, t) = ff.f(du1, ff.u, ff.p, t)
53 (ff::TimeDerivativeWrapper{true})(t) = (du1 = similar(ff.u); ff.f(du1, ff.u, ff.p, t); du1)
54
55 mutable struct UDerivativeWrapper{iip, F, tType, P} <: AbstractSciMLFunction{iip}
56 f::F
57 t::tType
58 p::P
59 end
60
61 function UDerivativeWrapper{iip}(f::F, t, p) where {F, iip}
62 return UDerivativeWrapper{iip, F, typeof(t), typeof(p)}(f, t, p)
63 end
64 UDerivativeWrapper(f::F, t, p) where {F} = UDerivativeWrapper{isinplace(f, 4)}(f, t, p)
65
66 (ff::UDerivativeWrapper{false})(u) = ff.f(u, ff.p, ff.t)
67 (ff::UDerivativeWrapper{true})(du1, u) = ff.f(du1, u, ff.p, ff.t)
68 (ff::UDerivativeWrapper{true})(u) = (du1 = similar(u); ff.f(du1, u, ff.p, ff.t); du1)
69
70 mutable struct ParamJacobianWrapper{iip, fType, tType, uType} <: AbstractSciMLFunction{iip}
71 f::fType
72 t::tType
73 u::uType
74 end
75
76 function ParamJacobianWrapper{iip}(f::F, t, u) where {F, iip}
77 return ParamJacobianWrapper{iip, F, typeof(t), typeof(u)}(f, t, u)
78 end
79 ParamJacobianWrapper(f::F, t, u) where {F} = ParamJacobianWrapper{isinplace(f, 4)}(f, t, u)
80
81 (ff::ParamJacobianWrapper{true})(du1, p) = ff.f(du1, ff.u, p, ff.t)
82 function (ff::ParamJacobianWrapper{true})(p)
83 du1 = similar(p, size(ff.u))
84 ff.f(du1, ff.u, p, ff.t)
85 return du1
86 end
87 (ff::ParamJacobianWrapper{false})(p) = ff.f(ff.u, p, ff.t)
88
89 mutable struct JacobianWrapper{iip, fType, pType} <: AbstractSciMLFunction{iip}
90 f::fType
91 p::pType
92 end
93
94 JacobianWrapper{iip}(f::F, p) where {F, iip} = JacobianWrapper{iip, F, typeof(p)}(f, p)
95 JacobianWrapper(f::F, p) where {F} = JacobianWrapper{isinplace(f, 3)}(f, p)
96
97 (uf::JacobianWrapper{false})(u) = uf.f(u, uf.p)
98 (uf::JacobianWrapper{false})(res, u) = (vec(res) .= vec(uf.f(u, uf.p)))
99 30 (11 %)
30 (11 %) samples spent in JacobianWrapper
30 (100 %) (incl.) when called from chunk_mode_jacobian! line 194
30 (100 %) samples spent calling NonlinearFunction
(uf::JacobianWrapper{true})(res, u) = uf.f(res, u, uf.p)