You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
function HC.ModelKit.taylor!(u::AbstractVector, ::Val{N}, sys::HomotopySystemWrapper{Inplace}, x::HC.ModelKit.TaylorVector{M}, p =nothing) where {N, M}
84
-
f = sys.prob.f
85
-
p =parameter_values(sys.prob)
86
-
buffer, vars = sys.taylorvars
88
+
for V in (Inplace, OutOfPlace, Scalar)
89
+
@evalfunction HC.ModelKit.evaluate_and_jacobian!(u, U, sys::HomotopySystemWrapper{$V, F, J}, x, p =nothing) where {F, J <:ComplexJacobianWrapper}
90
+
p = sys.p
91
+
U_tmp = sys.jacobian_buffers
92
+
x =reinterpret(Float64, x)
93
+
u =reinterpret(Float64, u)
94
+
DI.value_and_jacobian!(sys.jac, u, U_tmp, sys.prep, sys.autodiff, x, DI.Constant(p))
95
+
U =reinterpret(Float64, U)
96
+
@inboundsfor j inaxes(U, 2)
97
+
jj =2j -1
98
+
for i inaxes(U, 1)
99
+
U[i, j] = U_tmp[i, jj]
100
+
end
101
+
end
102
+
u =parent(u)
103
+
U =parent(U)
104
+
105
+
return u, U
106
+
end
107
+
end
108
+
109
+
functionupdate_taylorvars_from_taylorvector!(vars, x::HC.ModelKit.TaylorVector{M}) where {M}
87
110
for i ineachindex(vars)
88
111
for j in0:M-1
89
112
vars[i][j] = x[i, j +1]
@@ -92,44 +115,57 @@ function HC.ModelKit.taylor!(u::AbstractVector, ::Val{N}, sys::HomotopySystemWra
function HC.ModelKit.taylor!(u::AbstractVector, ::Val{N}, sys::HomotopySystemWrapper{OutOfPlace}, x::HC.ModelKit.TaylorVector{M}, p =nothing) where {N, M}
109
-
f = sys.prob.f
110
-
p =parameter_values(sys.prob)
111
-
vars = sys.taylorvars
129
+
functionupdate_maybe_taylorvector_from_taylorvars!(u::Vector, vars, buffer, ::Val{N}) where {N}
112
130
for i ineachindex(vars)
113
-
for j in0:M
114
-
vars[i][j] = x[i, j +1]
115
-
end
131
+
u[i] = buffer[i][N]
116
132
end
117
-
buffer = f.f(vars, p)
133
+
end
134
+
135
+
functionupdate_maybe_taylorvector_from_taylorvars!(u::HC.ModelKit.TaylorVector, vars, buffer, ::Val{N}) where {N}
118
136
for i ineachindex(vars)
119
137
u[i] =ntuple(j -> buffer[i][j -1], Val(N +1))
120
138
end
121
139
end
122
140
123
-
function HC.ModelKit.taylor!(u::AbstractVector, ::Val{N}, sys::HomotopySystemWrapper{Scalar}, x::HC.ModelKit.TaylorVector{M}, p =nothing) where {N, M}
124
-
f = sys.prob.f
125
-
p =parameter_values(sys.prob)
141
+
function HC.ModelKit.taylor!(u::AbstractVector, ::Val{N}, sys::HomotopySystemWrapper{Inplace}, x, p =nothing) where {N}
0 commit comments