Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "PETScDiffEq"
uuid = "0a65194f-a16f-47d0-900e-080c22068669"
authors = ["Harsh Singh"]
version = "0.14.0"
version = "0.14.1"

[deps]
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
Expand Down
34 changes: 17 additions & 17 deletions src/PETScDiffEq.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1087,7 +1087,7 @@ end
function _scatter!(pl, dm, u, loc)
glob = _dm_vec!(pl, :DMGetGlobalVector, dm)
try
_writevec!(pl, PETSc.VecPtr(pl, glob[], false), u)
_writevec!(pl, PETScCompat.VecPtr(pl, glob[]), u)
_check_code(
ccall(_symbol(pl, :VecZeroEntries), LibPETSc.PetscErrorCode, (Ptr{Cvoid},), loc),
)
Expand Down Expand Up @@ -1124,7 +1124,7 @@ function _ghosted(call, g::Union{Ghosted, GhostedPart}, u)
loc = _dm_vec!(pl, :DMGetLocalVector, dm)
try
_scatter!(pl, dm, u, loc[])
v = PETSc.VecPtr(pl, loc[], false)
v = PETScCompat.VecPtr(pl, loc[])
a = LibPETSc.VecGetArrayRead(pl, v)
try
call(a)
Expand Down Expand Up @@ -1893,7 +1893,7 @@ function _mat_add_diagonal!(pl, A, d)
),
)
try
_writevec!(pl, PETSc.VecPtr(pl, v[], false), d)
_writevec!(pl, PETScCompat.VecPtr(pl, v[]), d)
_check_code(
ccall(
_symbol(pl, :MatDiagonalSet), LibPETSc.PetscErrorCode,
Expand All @@ -1918,8 +1918,8 @@ function _mat_diagonal_scale!(pl, A, l, r)
),
)
try
l === nothing || _writevec!(pl, PETSc.VecPtr(pl, left[], false), l)
r === nothing || _writevec!(pl, PETSc.VecPtr(pl, right[], false), r)
l === nothing || _writevec!(pl, PETScCompat.VecPtr(pl, left[]), l)
r === nothing || _writevec!(pl, PETScCompat.VecPtr(pl, right[]), r)
_check_code(
ccall(
_symbol(pl, :MatDiagonalScale), LibPETSc.PetscErrorCode,
Expand Down Expand Up @@ -2027,7 +2027,7 @@ function _post_step_serial!(ctx, ts)
(LibPETSc.CTS, Ptr{LibPETSc.CVec}), ts, x,
),
)
flat = ctx.flat_vec === nothing ? PETSc.VecPtr(pl, x[], false) : ctx.flat_vec
flat = ctx.flat_vec === nothing ? PETScCompat.VecPtr(pl, x[]) : ctx.flat_vec
u = _read_state!(ctx.u, ctx, flat)
ctx.unstable !== nothing &&
ctx.unstable(ctx.tdir * hnext, _as_u0(ctx, u), ctx.p, _user_t(ctx.tdir, s)) &&
Expand Down Expand Up @@ -2065,7 +2065,7 @@ function _post_step_collective!(ctx, ts_ptr)
(LibPETSc.CTS, Ptr{LibPETSc.CVec}), ts_ptr, x,
),
)
flat = ctx.flat_vec === nothing ? PETSc.VecPtr(pl, x[], false) : ctx.flat_vec
flat = ctx.flat_vec === nothing ? PETScCompat.VecPtr(pl, x[]) : ctx.flat_vec
u = _read_state!(ctx.u, ctx, flat)
ctx.wrapped_u === nothing || (u = copyto!(ctx.wrapped_u, u))
if ctx.unstable !== nothing
Expand Down Expand Up @@ -4223,15 +4223,15 @@ end
function _mprk_part!(ctx, t, x_ptr, f_ptr, idxs)
pl = ctx.petsclib
try
_readvec!(ctx.u, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(ctx.u, pl, PETScCompat.VecPtr(pl, x_ptr))
if !_everywhere(ctx.comm, ctx.part_valid && ctx.part_t == t && ctx.part_u == ctx.u)
_call_f!(ctx, ctx.du, ctx.u, t)
ctx.nf += 1
ctx.part_t = t
copyto!(ctx.part_u, ctx.u)
ctx.part_valid = true
end
sub = PETSc.VecPtr(pl, f_ptr, false)
sub = PETScCompat.VecPtr(pl, f_ptr)
vals = LibPETSc.VecGetArrayWrite(pl, sub)
try
@inbounds for (k, i) in enumerate(idxs)
Expand Down Expand Up @@ -4284,15 +4284,15 @@ function _symplectic_part!(ctx, sub_ts, t, x_ptr, f_ptr, momentum::Bool)
d, n = ctx.f!, length(ctx.u)
momentum && (t = _kick_time(d, sub_ts, pl, t))
v, u = view(ctx.u, 1:d.nv), view(ctx.u, (d.nv + 1):n)
_readvec!(momentum ? u : v, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(momentum ? u : v, pl, PETScCompat.VecPtr(pl, x_ptr))
out = momentum ? view(ctx.du, 1:d.nv) : view(ctx.du, (d.nv + 1):n)
if momentum
_kick!(d, out, v, u, ctx, t) && (ctx.nf += 1)
else
_call!(d.f2, ctx, out, v, u, ctx.p, t)
ctx.nf2 += 1
end
_writevec!(pl, PETSc.VecPtr(pl, f_ptr, false), out)
_writevec!(pl, PETScCompat.VecPtr(pl, f_ptr), out)
catch e
ctx.err = e
return LibPETSc.PetscErrorCode(CALLBACK_THREW)
Expand Down Expand Up @@ -4322,8 +4322,8 @@ end

function _read_second_order!(ctx, u_ptr, v_ptr)
pl, nv = ctx.petsclib, ctx.f!.nv
_readvec!(view(ctx.u, 1:nv), pl, PETSc.VecPtr(pl, v_ptr, false))
_readvec!(view(ctx.u, (nv + 1):length(ctx.u)), pl, PETSc.VecPtr(pl, u_ptr, false))
_readvec!(view(ctx.u, 1:nv), pl, PETScCompat.VecPtr(pl, v_ptr))
_readvec!(view(ctx.u, (nv + 1):length(ctx.u)), pl, PETScCompat.VecPtr(pl, u_ptr))
_flip_velocity!(ctx, ctx.u)
return nv
end
Expand Down Expand Up @@ -4359,14 +4359,14 @@ function _i2function_body!(ctx, t, u_ptr, v_ptr, a_ptr, f_ptr)
pl = ctx.petsclib
try
nv = _read_second_order!(ctx, u_ptr, v_ptr)
a = _readvec!(view(ctx.mudot, 1:nv), pl, PETSc.VecPtr(pl, a_ptr, false))
a = _readvec!(view(ctx.mudot, 1:nv), pl, PETScCompat.VecPtr(pl, a_ptr))
acc, r = view(ctx.du, 1:nv), view(ctx.resid, 1:nv)
v, u = view(ctx.u, 1:nv), view(ctx.u, (nv + 1):length(ctx.u))
_call!(ctx.f!.f1, ctx, acc, v, u, ctx.p, t)
# Reversed, f1 returns -f, while w'' = f(-w', w, p, -s) keeps its sign.
tdir = ctx.tdir
@. r = a - tdir * acc
_writevec!(pl, PETSc.VecPtr(pl, f_ptr, false), r)
_writevec!(pl, PETScCompat.VecPtr(pl, f_ptr), r)
ctx.nf += 1
catch e
ctx.err = e
Expand Down Expand Up @@ -4598,7 +4598,7 @@ function _dm_ijacobian_body!(ctx, ts, t, x_ptr, xdot_ptr, shift, A_ptr, B_ptr)
err = nothing
try
if ctx.dae
_readvec!(ctx.mudot, pl, PETSc.VecPtr(pl, xdot_ptr, false))
_readvec!(ctx.mudot, pl, PETScCompat.VecPtr(pl, xdot_ptr))
ctx.jac!(J, ctx.mudot, ctx.u, ctx.p, shift, t)
else
ctx.jac!(J, ctx.u, ctx.p, t)
Expand Down Expand Up @@ -4650,7 +4650,7 @@ function _sparse_ijacobian!(
end

function _sparse_ijacobian_body!(ctx, ts, t, x_ptr, xdot_ptr, shift, A_ptr, B_ptr)
x = PETSc.VecPtr(ctx.petsclib, x_ptr, false)
x = PETScCompat.VecPtr(ctx.petsclib, x_ptr)
A = LibPETSc.PetscMat(A_ptr, ctx.petsclib)
B = LibPETSc.PetscMat(B_ptr, ctx.petsclib)
try
Expand Down
10 changes: 5 additions & 5 deletions src/adjoint.jl
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ end
function _adjoint_rhsjacobian_body!(adj, s, x_ptr, A_ptr)
pl = adj.petsclib
try
_readvec!(adj.u, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(adj.u, pl, PETScCompat.VecPtr(pl, x_ptr))
_adjoint_call!(() -> adj.jac!(adj.J, adj.u, adj.p, s), adj, _stored_values(adj.J))
A = LibPETSc.PetscMat(A_ptr, pl)
_load_jacobian!(adj, A)
Expand Down Expand Up @@ -323,7 +323,7 @@ end
function _adjoint_dm_rhsjacobian_body!(adj, s, x_ptr, A_ptr)
pl = adj.petsclib
try
_readvec!(adj.u, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(adj.u, pl, PETScCompat.VecPtr(pl, x_ptr))
A = LibPETSc.PetscMat(A_ptr, pl)
_mat_zero!(pl, A)
err = nothing
Expand Down Expand Up @@ -377,7 +377,7 @@ end
function _adjoint_paramjac_body!(adj, s, x_ptr, A_ptr)
pl = adj.petsclib
try
_readvec!(adj.u, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(adj.u, pl, PETScCompat.VecPtr(pl, x_ptr))
_adjoint_call!(adj, adj.pJ) do
adj.paramjac!(adj.pJ, adj.u, adj.p, _user_t(adj.tdir, s))
end
Expand Down Expand Up @@ -419,7 +419,7 @@ function _adjoint_record_body!(adj, step, s, x_ptr, ts_ptr)
try
R = adj.clock
tol = _cost_tol(R, step, s, s - adj.s_prev, adj.tbound)
x = PETSc.VecPtr(pl, x_ptr, false)
x = PETScCompat.VecPtr(pl, x_ptr)
order, cost_s = adj.order, adj.cost_s
while adj.next <= length(order) && cost_s[order[adj.next]] <= s
k = order[adj.next]
Expand Down Expand Up @@ -663,7 +663,7 @@ end
function _integral_body!(q, s, x_ptr, A_ptr, dg!, out)
pl = q.petsclib
try
_readvec!(q.u, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(q.u, pl, PETScCompat.VecPtr(pl, x_ptr))
fill!(out, 0.0)
dg! === nothing ||
_adjoint_call!(() -> dg!(out, q.u, q.p, _user_t(q.tdir, s)), q, out)
Expand Down
6 changes: 3 additions & 3 deletions src/initialization.jl
Original file line number Diff line number Diff line change
Expand Up @@ -619,9 +619,9 @@ function _init_residual!(
s = unsafe_pointer_to_objref(ctx_ptr)::InitNewton
pl = s.petsclib
try
_readvec!(s.x, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(s.x, pl, PETScCompat.VecPtr(pl, x_ptr))
_init_call!(() -> s.residual!(s.r, s.x), s, s.r)
_writevec!(pl, PETSc.VecPtr(pl, f_ptr, false), s.r)
_writevec!(pl, PETScCompat.VecPtr(pl, f_ptr), s.r)
catch e
s.err = e
return LibPETSc.PetscErrorCode(CALLBACK_THREW)
Expand All @@ -638,7 +638,7 @@ function _init_jacobian!(
A = LibPETSc.PetscMat(A_ptr, pl)
B = LibPETSc.PetscMat(B_ptr, pl)
try
_readvec!(s.x, pl, PETSc.VecPtr(pl, x_ptr, false))
_readvec!(s.x, pl, PETScCompat.VecPtr(pl, x_ptr))
if s.comm === nothing
_set_matrix!(pl, B, s.jacobian(s.x), s.idx)
elseif s.fills
Expand Down
7 changes: 7 additions & 0 deletions src/petsc_compat.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ using MPI: MPI

const V05 = pkgversion(PETSc) >= v"0.5.0-"

# PETSc.jl 0.5.4 takes `own` as a keyword and warns on the positional form.
@static if pkgversion(PETSc) >= v"0.5.4-"
VecPtr(pl, ptr) = PETSc.VecPtr(pl, ptr; own = false)
else
VecPtr(pl, ptr) = PETSc.VecPtr(pl, ptr, false)
end

@static if V05
const with_local_array! = PETSc.with_local_array!
const destroy! = PETSc.destroy!
Expand Down
Loading