Skip to content

Commit

Permalink
Add ClimaCore perf patch
Browse files Browse the repository at this point in the history
  • Loading branch information
charleskawczynski committed Nov 10, 2021
1 parent 38d0ebb commit c41ec7c
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/Fields.jl
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,16 @@ function FieldFromNamedTuple(space, nt::NamedTuple)
cmv(z) = nt
return cmv.(CC.Fields.coordinate_field(space))
end

# https://github.com/CliMA/ClimaCore.jl/issues/275
transform_broadcasted(bc::Base.Broadcast.Broadcasted{CC.Fields.FieldVectorStyle}, symb, axes) =
Base.Broadcast.Broadcasted(bc.f, map(arg -> transform_broadcasted(arg, symb, axes), bc.args), axes)
transform_broadcasted(fv::CC.Fields.FieldVector, symb, axes) = parent(getproperty(fv, symb))
transform_broadcasted(x, symb, axes) = x
@inline function Base.copyto!(dest::CC.Fields.FieldVector, bc::Base.Broadcast.Broadcasted{CC.Fields.FieldVectorStyle})
for symb in propertynames(dest)
p = parent(getproperty(dest, symb))
Base.copyto!(p, transform_broadcasted(bc, symb, axes(p)))
end
return dest
end

0 comments on commit c41ec7c

Please sign in to comment.