Skip to content

Commit

Permalink
no reshape in rosenbrock
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisRackauckas committed Nov 17, 2017
1 parent 77ff7a5 commit 503edd4
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 70 deletions.
98 changes: 42 additions & 56 deletions src/caches/rosenbrock_caches.jl
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,9 @@ function alg_cache(alg::Rosenbrock23,u,rate_prototype,uEltypeNoUnits,tTypeNoUnit
W = similar(J);
tmp = similar(u,indices(u))
tab = Rosenbrock23ConstantCache(uEltypeNoUnits,identity,identity)
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -119,10 +118,9 @@ function alg_cache(alg::Rosenbrock32,u,rate_prototype,uEltypeNoUnits,tTypeNoUnit
J = zeros(uEltypeNoUnits,length(u),length(u)) # uEltype?
W = similar(J); tmp = similar(u,indices(u))
tab = Rosenbrock32ConstantCache(uEltypeNoUnits,identity,identity)
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -226,10 +224,9 @@ function alg_cache(alg::ROS3P,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev
W = similar(J);
tmp = similar(u,indices(u))
tab = ROS3PConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -293,10 +290,9 @@ function alg_cache(alg::Rodas3,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,upre
W = similar(J);
tmp = similar(u,indices(u))
tab = Rodas3ConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -375,10 +371,9 @@ function alg_cache(alg::RosShamp4,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,u
W = similar(J);
tmp = similar(u,indices(u))
tab = RosShamp4ConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -412,10 +407,9 @@ function alg_cache(alg::Veldd4,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,upre
W = similar(J);
tmp = similar(u,indices(u))
tab = Veldd4ConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -449,10 +443,9 @@ function alg_cache(alg::Velds4,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,upre
W = similar(J);
tmp = similar(u,indices(u))
tab = Velds4ConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -486,10 +479,9 @@ function alg_cache(alg::GRK4T,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev
W = similar(J);
tmp = similar(u,indices(u))
tab = GRK4TConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -523,10 +515,9 @@ function alg_cache(alg::GRK4A,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev
W = similar(J);
tmp = similar(u,indices(u))
tab = GRK4AConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -560,10 +551,9 @@ function alg_cache(alg::Ros4LStab,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,u
W = similar(J);
tmp = similar(u,indices(u))
tab = Ros4LStabConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -645,10 +635,9 @@ function alg_cache(alg::Rodas4,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,upre
W = similar(J);
tmp = similar(u,indices(u))
tab = Rodas4ConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -687,10 +676,9 @@ function alg_cache(alg::Rodas42,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,upr
W = similar(J);
tmp = similar(u,indices(u))
tab = Rodas42ConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -729,10 +717,9 @@ function alg_cache(alg::Rodas4P,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,upr
W = similar(J);
tmp = similar(u,indices(u))
tab = Rodas4PConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down Expand Up @@ -819,10 +806,9 @@ function alg_cache(alg::Rodas5,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,upre
W = similar(J);
tmp = similar(u,indices(u))
tab = Rodas5ConstantCache(real(uEltypeNoUnits),real(tTypeNoUnits))
vf = VectorF(f,size(u))
vfr = VectorFReturn(f,size(u))
tf = TimeGradientWrapper(vf,uprev,zeros(uprev))
uf = UJacobianWrapper(vfr,t,vec(uprev),vec(du1))

tf = TimeGradientWrapper(f,uprev,zeros(uprev))
uf = UJacobianWrapper(f,t,uprev,du1)
linsolve_tmp = similar(u,indices(u))
linsolve_tmp_vec = vec(linsolve_tmp)
if alg_autodiff(alg)
Expand Down
27 changes: 13 additions & 14 deletions src/integrators/rosenbrock_integrators.jl
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ end
if has_tgrad(f)
f(Val{:tgrad}, t, uprev, dT)
else
tf.vf.sizeu = sizeu
tf.uprev = uprev
derivative!(dT, tf, t, vec(du2), integrator)
end
Expand All @@ -46,7 +45,7 @@ end
if has_jac(f)
f(Val{:jac}, t, uprev, J)
else
uf.vfr.sizeu = sizeu

uf.t = t
jacobian!(J, uf, vec(uprev), vec(du1), integrator, jac_config)
end
Expand Down Expand Up @@ -136,7 +135,7 @@ end
if has_tgrad(f)
f(Val{:tgrad}, t, uprev, dT)
else
tf.vf.sizeu = sizeu

tf.uprev = uprev
derivative!(dT, tf, t, vec(du2), integrator)
end
Expand All @@ -154,7 +153,7 @@ end
if has_jac(f)
f(Val{:jac}, t, uprev, J)
else
uf.vfr.sizeu = sizeu

uf.t = t
jacobian!(J, uf, vec(uprev), vec(du1), integrator, jac_config)
end
Expand Down Expand Up @@ -435,7 +434,7 @@ end
if has_tgrad(f)
f(Val{:tgrad}, t, uprev,dT)
else
tf.vf.sizeu = sizeu

tf.uprev = uprev
derivative!(dT, tf, t, vec(du2), integrator)
end
Expand All @@ -454,7 +453,7 @@ end
if has_jac(f)
f(Val{:jac}, t, uprev, J)
else
uf.vfr.sizeu = sizeu

uf.t = t
jacobian!(J, uf, vec(uprev), vec(du1), integrator, jac_config)
end
Expand Down Expand Up @@ -635,7 +634,7 @@ end
if has_tgrad(f)
f(Val{:tgrad},t,uprev,dT)
else
tf.vf.sizeu = sizeu

tf.uprev = uprev
derivative!(dT, tf, t, vec(du2), integrator)
end
Expand All @@ -653,7 +652,7 @@ end
if has_jac(f)
f(Val{:jac}, t, uprev,J)
else
uf.vfr.sizeu = sizeu

uf.t = t
jacobian!(J, uf, vec(uprev), vec(du1), integrator, jac_config)
end
Expand Down Expand Up @@ -859,7 +858,7 @@ end
if has_tgrad(f)
f(Val{:tgrad}, t, uprev, dT)
else
tf.vf.sizeu = sizeu

tf.uprev = uprev
derivative!(dT, tf, t, vec(du2), integrator)
end
Expand All @@ -878,7 +877,7 @@ end
if has_jac(f)
f(Val{:jac}, t, uprev, J)
else
uf.vfr.sizeu = sizeu

uf.t = t
jacobian!(J, uf, vec(uprev), vec(du1), integrator, jac_config)
end
Expand Down Expand Up @@ -1107,7 +1106,7 @@ end
if has_tgrad(f)
f(Val{:tgrad}, t, uprev, dT)
else
tf.vf.sizeu = sizeu

tf.uprev = uprev
derivative!(dT, tf, t, vec(du2), integrator)
end
Expand All @@ -1128,7 +1127,7 @@ end
if has_jac(f)
f(Val{:jac}, t, uprev, J)
else
uf.vfr.sizeu = sizeu

uf.t = t
jacobian!(J, uf, vec(uprev), vec(du1), integrator, jac_config)
end
Expand Down Expand Up @@ -1484,7 +1483,7 @@ end
if has_tgrad(f)
f(Val{:tgrad},t,uprev,dT)
else
tf.vf.sizeu = sizeu

tf.uprev = uprev
derivative!(dT, tf, t, vec(du2), integrator)
end
Expand All @@ -1505,7 +1504,7 @@ end
if has_jac(f)
f(Val{:jac}, t, uprev, J)
else
uf.vfr.sizeu = sizeu

uf.t = t
jacobian!(J, uf, vec(uprev), vec(du1), integrator, jac_config)
end
Expand Down

0 comments on commit 503edd4

Please sign in to comment.