Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FieldVectors #305

Open
zsunberg opened this issue Feb 18, 2018 · 1 comment
Open

FieldVectors #305

zsunberg opened this issue Feb 18, 2018 · 1 comment

Comments

@zsunberg
Copy link

Hi all,

We have a big codebase that uses FieldVectors from static arrays. It would be extremely powerful for us (and I'm sure many others in the future) to be able to do the following:

using StaticArrays
using ForwardDiff

struct Point{R<:Real} <: FieldVector{2,R}
    x::R
    y::R
end

StaticArrays.similar_type(p::Type{P}, ::Type{R}, size::Size{(2,)}) where {P<:Point, R<:Real} = Point{R}

f(p) = p.x
ForwardDiff.gradient(f, Point(2.0,3.0))

Currently this fails with ERROR: LoadError: type MArray has no field x because it's trying to evaluate f with an MArray of Duals.

This seems pretty easy to fix - maybe just writing a new version of dualize and adding a little more code where you have specialized things for SArray to also handle FieldVector. Do you think it is that simple? Should we take a crack at it, or do you foresee massive difficulties?

cc: @kylejbrown17 @MaximeBouton

@jrevels
Copy link
Member

jrevels commented Feb 20, 2018

This seems pretty easy to fix - maybe just writing a new version of dualize and adding a little more code where you have specialized things for SArray to also handle FieldVector. Do you think it is that simple? Should we take a crack at it, or do you foresee massive difficulties?

Seems like a good idea!

If FieldVectors have similar indexing behavior to SVectors, you might even be able to just tweak the current SArray-specialized methods in order to achieve this (instead of adding new methods just for FieldVector).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants