Re: [firedrake] Problem with Jacobian
On Fri, 6 Nov 2015 at 14:54 Buesing, Henrik <HBuesing@eonerc.rwth-aachen.de> wrote:
Firedrake uses the UFL derivative function, but does not expose this extra argument in the interface. It is straightforward to alter the definition in firedrake/ufl_expr.py to take this extra argument and pass it through.
[Buesing, Henrik]
@Lawrence: So how would I pass the "coefficient_derivatives" field through?
If you change the definition of derivative in firedrake/ufl_expr.py to take an optional coefficient_derivatives argument:
def derivative(F, u, du=None, coefficient_derivatives=None): ...
And just pass that value through to the ufl.derivative call:
ufl.derivative(..., coefficient_derivatives=coefficient_derivatives)
If you do this in the firedrake source directly, you will be able to commit your change in the local git repository. You can send us these changes by forking firedrake on github and proposing a pull-request that way.
Hmm... Okay I did this. Then I did a "make" in the firedrake directory. But then I'm still getting a
*TypeError: derivative() takes at most 3 arguments (4 given)*
So how can I test this? Thank you!
It depends a little on how you originally installed firedrake. If you installed firedrake by running firedrake-install (i.e. not with --developer) then you change to the firedrake/src directory and (with the virtualenv active) type: pip install --upgrade firedrake/ If you have installed firedrake some other way, please say how and we can tell you how to build. David
Henrik
If you change the definition of derivative in firedrake/ufl_expr.py to take an optional coefficient_derivatives argument:
def derivative(F, u, du=None, coefficient_derivatives=None): ...
And just pass that value through to the ufl.derivative call:
ufl.derivative(..., coefficient_derivatives=coefficient_derivatives)
If you do this in the firedrake source directly, you will be able to commit your change in the local git repository. You can send us these changes by forking firedrake on github and proposing a pull-request that way.
Hmm... Okay I did this. Then I did a "make" in the firedrake directory. But then I'm still getting a TypeError: derivative() takes at most 3 arguments (4 given) So how can I test this? Thank you! It depends a little on how you originally installed firedrake. If you installed firedrake by running firedrake-install (i.e. not with --developer) then you change to the firedrake/src directory and (with the virtualenv active) type: pip install --upgrade firedrake/ If you have installed firedrake some other way, please say how and we can tell you how to build. [Buesing, Henrik] I followed the „Installing from individual components” manual. I cloned the firedrake repository git clone https://github.com/firedrakeproject/firedrake.git Then I did make in the firedrake directory. cd firedrake export PYTHONPATH=$PWD:$PYTHONPATH make Henrik
participants (2)
-
Buesing, Henrik
-
David Ham