Skip to content

Commit 60ecfc1

Browse files
Merge branch 'broadcast_changes'
2 parents c16e1bc + e7f7271 commit 60ecfc1

27 files changed

+1081
-1947
lines changed

REQUIRE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
julia 0.6.0-pre
2-
DiffEqBase 1.5.0
2+
DiffEqBase 1.10.0
33
Parameters 0.5.0
44
ForwardDiff 0.5.0
55
GenericSVD 0.0.2

src/caches.jl

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -925,7 +925,7 @@ end
925925
alg_cache(alg::Feagin14,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev,uprev2,f,t,::Type{Val{false}}) = Feagin14ConstantCache(realtype(uEltypeNoUnits),realtype(tTypeNoUnits))
926926

927927

928-
type Rosenbrock23Cache{uType,uArrayType,rateType,du2Type,vecuType,JType,TabType,TFType,UFType,F,JCType} <: OrdinaryDiffEqMutableCache
928+
type Rosenbrock23Cache{uType,uArrayType,rateType,du2Type,LinuType,vecuType,JType,TabType,TFType,UFType,F,JCType} <: OrdinaryDiffEqMutableCache
929929
u::uType
930930
uprev::uType
931931
k₁::rateType
@@ -946,7 +946,8 @@ type Rosenbrock23Cache{uType,uArrayType,rateType,du2Type,vecuType,JType,TabType,
946946
tab::TabType
947947
tf::TFType
948948
uf::UFType
949-
linsolve_tmp::vecuType
949+
linsolve_tmp::LinuType
950+
linsolve_tmp_vec::vecuType
950951
linsolve::F
951952
jac_config::JCType
952953
end
@@ -956,7 +957,7 @@ du_cache(c::Rosenbrock23Cache) = (c.k₁,c.k₂,c.k₃,c.du1,c.du2,c.f₁,c.fsal
956957
jac_cache(c::Rosenbrock23Cache) = (c.J,c.W)
957958
vecu_cache(c::Rosenbrock23Cache) = (c.vectmp,c.vectmp2,c.vectmp3)
958959

959-
type Rosenbrock32Cache{uType,uArrayType,rateType,du2Type,vecuType,JType,TabType,TFType,UFType,F,JCType} <: OrdinaryDiffEqMutableCache
960+
type Rosenbrock32Cache{uType,uArrayType,rateType,du2Type,LinuType,vecuType,JType,TabType,TFType,UFType,F,JCType} <: OrdinaryDiffEqMutableCache
960961
u::uType
961962
uprev::uType
962963
k₁::rateType
@@ -977,7 +978,8 @@ type Rosenbrock32Cache{uType,uArrayType,rateType,du2Type,vecuType,JType,TabType,
977978
tab::TabType
978979
tf::TFType
979980
uf::UFType
980-
linsolve_tmp::vecuType
981+
linsolve_tmp::LinuType
982+
linsolve_tmp_vec::vecuType
981983
linsolve::F
982984
jac_config::JCType
983985
end
@@ -1009,11 +1011,12 @@ function alg_cache(alg::Rosenbrock23,u,rate_prototype,uEltypeNoUnits,tTypeNoUnit
10091011
vfr = VectorFReturn(f,size(u))
10101012
tf = TimeGradientWrapper(vf,uprev)
10111013
uf = UJacobianWrapper(vfr,t)
1012-
linsolve_tmp = vec(similar(u,indices(u)))
1014+
linsolve_tmp = similar(u,indices(u))
1015+
linsolve_tmp_vec = vec(linsolve_tmp)
10131016
jac_config = ForwardDiff.JacobianConfig(uf,vec(du1),vec(uprev),ForwardDiff.Chunk{determine_chunksize(u,alg)}())
10141017
Rosenbrock23Cache(u,uprev,k₁,k₂,k₃,du1,du2,f₁,vectmp,vectmp2,vectmp3,fsalfirst,
1015-
fsallast,dT,J,W,tmp,tab,tf,uf,linsolve_tmp,alg.linsolve,
1016-
jac_config)
1018+
fsallast,dT,J,W,tmp,tab,tf,uf,linsolve_tmp,linsolve_tmp_vec,
1019+
alg.linsolve,jac_config)
10171020
end
10181021

10191022
function alg_cache(alg::Rosenbrock32,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev,uprev2,f,t,::Type{Val{true}})
@@ -1037,9 +1040,10 @@ function alg_cache(alg::Rosenbrock32,u,rate_prototype,uEltypeNoUnits,tTypeNoUnit
10371040
vfr = VectorFReturn(f,size(u))
10381041
tf = TimeGradientWrapper(vf,uprev)
10391042
uf = UJacobianWrapper(vfr,t)
1040-
linsolve_tmp = vec(similar(u,indices(u)))
1043+
linsolve_tmp = similar(u,indices(u))
1044+
linsolve_tmp_vec = vec(linsolve_tmp)
10411045
jac_config = ForwardDiff.JacobianConfig(uf,vec(du1),vec(uprev),ForwardDiff.Chunk{determine_chunksize(u,alg)}())
1042-
Rosenbrock32Cache(u,uprev,k₁,k₂,k₃,du1,du2,f₁,vectmp,vectmp2,vectmp3,fsalfirst,fsallast,dT,J,W,tmp,tab,tf,uf,linsolve_tmp,alg.linsolve,jac_config)
1046+
Rosenbrock32Cache(u,uprev,k₁,k₂,k₃,du1,du2,f₁,vectmp,vectmp2,vectmp3,fsalfirst,fsallast,dT,J,W,tmp,tab,tf,uf,linsolve_tmp,linsolve_tmp_vec,alg.linsolve,jac_config)
10431047
end
10441048

10451049
immutable Rosenbrock23ConstantCache{T,TF,UF} <: OrdinaryDiffEqConstantCache
@@ -1100,15 +1104,16 @@ vecu_cache(c::ImplicitEulerCache) = (c.uhold,)
11001104
dual_cache(c::ImplicitEulerCache) = (c.dual_cache,)
11011105

11021106
function alg_cache(alg::ImplicitEuler,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev,uprev2,f,t,::Type{Val{true}})
1103-
u_old = similar(u,indices(u)); k = zeros(rate_prototype)
1107+
tmp = similar(u)
1108+
u_old = vec(tmp); k = zeros(rate_prototype)
11041109
dual_cache = DiffCache(u,Val{determine_chunksize(u,get_chunksize(alg.nlsolve))})
11051110
uhold = vec(u) # this makes uhold the same values as integrator.u
11061111
rhs = RHS_IE(f,u_old,t,t,dual_cache,size(u),eachindex(u))
11071112
fsalfirst = zeros(rate_prototype)
11081113
nl_rhs = alg.nlsolve(Val{:init},rhs,uhold)
1109-
tmp = u_old
1110-
ImplicitEulerCache{typeof(u),typeof(u_old),typeof(uhold),typeof(dual_cache),typeof(k),
1111-
typeof(rhs),typeof(nl_rhs)}(
1114+
1115+
ImplicitEulerCache{typeof(u),typeof(u_old),typeof(uhold),typeof(dual_cache),
1116+
typeof(k),typeof(rhs),typeof(nl_rhs)}(
11121117
u,uprev,uprev2,uhold,dual_cache,u_old,tmp,k,fsalfirst,rhs,nl_rhs)
11131118
end
11141119

@@ -1147,12 +1152,13 @@ vecu_cache(c::TrapezoidCache) = (c.uhold,)
11471152
dual_cache(c::TrapezoidCache) = (c.dual_cache,)
11481153

11491154
function alg_cache(alg::Trapezoid,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev,uprev2,f,t,::Type{Val{true}})
1150-
u_old = similar(u,indices(u)); k = zeros(rate_prototype)
1155+
tmp = similar(u)
1156+
u_old = vec(tmp); k = zeros(rate_prototype)
11511157
uhold = vec(u); fsalfirst = zeros(rate_prototype)
1158+
f_old = vec(fsalfirst)
11521159
dual_cache = DiffCache(u,Val{determine_chunksize(u,get_chunksize(alg.nlsolve))})
1153-
rhs = RHS_Trap(f,u_old,fsalfirst,t,t,size(u),dual_cache,eachindex(u))
1160+
rhs = RHS_Trap(f,u_old,f_old,t,t,size(u),dual_cache,eachindex(u))
11541161
nl_rhs = alg.nlsolve(Val{:init},rhs,uhold)
1155-
tmp = u_old
11561162
TrapezoidCache{typeof(u),typeof(u_old),typeof(uhold),typeof(dual_cache),typeof(k),
11571163
typeof(rhs),typeof(nl_rhs)}(u,uprev,uprev2,uhold,u_old,fsalfirst,dual_cache,tmp,k,rhs,nl_rhs)
11581164
end
@@ -1206,7 +1212,6 @@ function alg_cache(alg::IIF1,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev,
12061212
end
12071213

12081214
function alg_cache(alg::IIF1,u,rate_prototype,uEltypeNoUnits,tTypeNoUnits,uprev,uprev2,f,t,::Type{Val{true}})
1209-
12101215
tmp = similar(u,indices(u)); rtmp1 = zeros(rate_prototype)
12111216
dual_cache = DiffCache(u,Val{determine_chunksize(u,get_chunksize(alg.nlsolve))})
12121217
uhold = vec(u) # this makes uhold the same values as integrator.u

0 commit comments

Comments
 (0)