diff --git a/lib/NonlinearSolveBase/src/jacobian.jl b/lib/NonlinearSolveBase/src/jacobian.jl index 8e23b6632..04a61789f 100644 --- a/lib/NonlinearSolveBase/src/jacobian.jl +++ b/lib/NonlinearSolveBase/src/jacobian.jl @@ -52,9 +52,9 @@ function construct_jacobian_cache( end autodiff = construct_concrete_adtype(f, autodiff) di_extras = if SciMLBase.isinplace(f) - DI.prepare_jacobian(f, fu_cache, autodiff, u, Constant(p)) + DI.prepare_jacobian(f, fu_cache, autodiff, u, Constant(p), strict = Val(false)) else - DI.prepare_jacobian(f, autodiff, u, Constant(p)) + DI.prepare_jacobian(f, autodiff, u, Constant(p), strict = Val(false)) end else di_extras = nothing diff --git a/lib/SciMLJacobianOperators/src/SciMLJacobianOperators.jl b/lib/SciMLJacobianOperators/src/SciMLJacobianOperators.jl index a90c983b3..3f85706cb 100644 --- a/lib/SciMLJacobianOperators/src/SciMLJacobianOperators.jl +++ b/lib/SciMLJacobianOperators/src/SciMLJacobianOperators.jl @@ -307,14 +307,14 @@ function prepare_vjp(::Val{false}, prob::AbstractNonlinearProblem, @assert DI.check_inplace(autodiff) "Backend: $(autodiff) doesn't support in-place \ problems." fu_cache = copy(fu) - di_extras = DI.prepare_pullback(f, fu_cache, autodiff, u, (fu,), Constant(prob.p)) + di_extras = DI.prepare_pullback(f, fu_cache, autodiff, u, (fu,), Constant(prob.p), strict=Val(false)) return @closure (vJ, v, u, p) -> begin DI.pullback!(f, fu_cache, (reshape(vJ, size(u)),), di_extras, autodiff, u, (reshape(v, size(fu_cache)),), Constant(p)) return end else - di_extras = DI.prepare_pullback(f, autodiff, u, (fu,), Constant(prob.p)) + di_extras = DI.prepare_pullback(f, autodiff, u, (fu,), Constant(prob.p), strict=Val(false)) return @closure (v, u, p) -> begin return only(DI.pullback( f, di_extras, autodiff, u, (reshape(v, size(fu)),), Constant(p))) @@ -352,14 +352,14 @@ function prepare_jvp(::Val{false}, prob::AbstractNonlinearProblem, @assert DI.check_inplace(autodiff) "Backend: $(autodiff) doesn't support in-place \ problems." fu_cache = copy(fu) - di_extras = DI.prepare_pushforward(f, fu_cache, autodiff, u, (u,), Constant(prob.p)) + di_extras = DI.prepare_pushforward(f, fu_cache, autodiff, u, (u,), Constant(prob.p), strict=Val(false)) return @closure (Jv, v, u, p) -> begin DI.pushforward!(f, fu_cache, (reshape(Jv, size(fu_cache)),), di_extras, autodiff, u, (reshape(v, size(u)),), Constant(p)) return end else - di_extras = DI.prepare_pushforward(f, autodiff, u, (u,), Constant(prob.p)) + di_extras = DI.prepare_pushforward(f, autodiff, u, (u,), Constant(prob.p), strict=Val(false)) return @closure (v, u, p) -> begin return only(DI.pushforward( f, di_extras, autodiff, u, (reshape(v, size(u)),), Constant(p))) @@ -375,7 +375,7 @@ function prepare_scalar_op(::Val{false}, prob::AbstractNonlinearProblem, @assert autodiff!==nothing "`autodiff` must be provided if `f` doesn't have \ analytic `vjp` or `jvp` or `jac`." - di_extras = DI.prepare_derivative(f, autodiff, u, Constant(prob.p)) + di_extras = DI.prepare_derivative(f, autodiff, u, Constant(prob.p), strict=Val(false)) return @closure (v, u, p) -> DI.derivative(f, di_extras, autodiff, u, Constant(p)) * v end diff --git a/lib/SimpleNonlinearSolve/src/utils.jl b/lib/SimpleNonlinearSolve/src/utils.jl index eae1fab55..88bac15db 100644 --- a/lib/SimpleNonlinearSolve/src/utils.jl +++ b/lib/SimpleNonlinearSolve/src/utils.jl @@ -87,10 +87,10 @@ end function prepare_jacobian(prob, autodiff, fx, x) SciMLBase.has_jac(prob.f) && return AnalyticJacobian() if SciMLBase.isinplace(prob.f) - return DIExtras(DI.prepare_jacobian(prob.f, fx, autodiff, x, Constant(prob.p))) + return DIExtras(DI.prepare_jacobian(prob.f, fx, autodiff, x, Constant(prob.p), strict = Val(false))) else x isa SArray && return DINoPreparation() - return DIExtras(DI.prepare_jacobian(prob.f, autodiff, x, Constant(prob.p))) + return DIExtras(DI.prepare_jacobian(prob.f, autodiff, x, Constant(prob.p), strict = Val(false))) end end