re-formulating function space from u.vector().array()

Asked by nicole t

hi, i'm quite new to FEniCS so i apologise if this is a silly question.

I have as an output to a program the solution field U = u.vector().array(), i.e. it exists as a numpy array and is not a function object anymore.

I would like to use it as an input to another program, but am not sure how to convert it back into a function object - i can't just use interpolate(U,V) since U is not a function or expression but is a numpy array right? Hence, how would i go about doing this?

Thanks!

Question information

Language:
English Edit question
Status:
Solved
For:
DOLFIN Edit question
Assignee:
No assignee Edit question
Solved by:
Johan Hake
Solved:
Last query:
Last reply:
Revision history for this message
Best Johan Hake (johan-hake) said :
#1

Several ways:

1) Either save the function instead of the numpy array

   File("u.xml.gz") << u

other program:

   File("u.xml.gz") >> u1

2) Save the numpy array:

  u.vector().array().tofile("u.npy")

other program:

  u1.vector()[:] = numpy.fromfile("u.npy")

Also: u and u1 need to be in the same FunctionSpace.

Johan

On 04/04/2013 11:21 PM, nicole t wrote:
> New question #225909 on DOLFIN:
> https://answers.launchpad.net/dolfin/+question/225909
>
> hi, i'm quite new to FEniCS so i apologise if this is a silly question.
>
> I have as an output to a program the solution field U = u.vector().array(), i.e. it exists as a numpy array and is not a function object anymore.
>
> I would like to use it as an input to another program, but am not sure how to convert it back into a function object - i can't just use interpolate(U,V) since U is not a function or expression but is a numpy array right? Hence, how would i go about doing this?
>
> Thanks!
>

Revision history for this message
nicole t (nicole12) said :
#2

Thanks Johan Hake, that solved my question.