diff --git a/src/Arrays/Autodiff.jl b/src/Arrays/Autodiff.jl index 3b75dad42..7765864cb 100644 --- a/src/Arrays/Autodiff.jl +++ b/src/Arrays/Autodiff.jl @@ -21,7 +21,8 @@ function autodiff_array_hessian(a,i_to_x) end function autodiff_array_gradient(a,i_to_x,j_to_i) - i_to_xdual = lazy_map(DualizeMap(ForwardDiff.gradient),i_to_x) + T = Vector{ForwardDiff.Dual{Nothing, Float64, 4}} #,Vector{ForwardDiff.Dual{Nothing, Float64, 0}}} + i_to_xdual = lazy_map(DualizeMap(ForwardDiff.gradient),T,i_to_x) j_to_ydual = a(i_to_xdual) j_to_x = lazy_map(Reindex(i_to_x),j_to_i) j_to_cfg = lazy_map(ConfigMap(ForwardDiff.gradient),j_to_x) diff --git a/src/FESpaces/FEAutodiff.jl b/src/FESpaces/FEAutodiff.jl index 3a37dcb2f..baa706c48 100644 --- a/src/FESpaces/FEAutodiff.jl +++ b/src/FESpaces/FEAutodiff.jl @@ -81,7 +81,11 @@ end function _change_argument(op,f,trian,uh::SingleFieldFEFunction) U = get_fe_space(uh) function g(cell_u) - cf = CellField(U,cell_u) + v = get_fe_basis(U) + cell_basis = get_data(v) + T=typeof(cell_u) + cell_field = lazy_map(linear_combination,T,cell_u,cell_basis) + cf = GenericCellField(cell_field,get_triangulation(v),DomainStyle(v)) cell_grad = f(cf) get_contribution(cell_grad,trian) end