Hi there
I have implemented a simple test case and have attached it. In writing
it, I made a discovery. The vector that is passed as a list of
coefficients to the function constructor (h_e in the example) needs to
be a multidimensional array with the first dimension 1. If one swaps
the dimensions (1, num_dofs) on line 26, then the test crashes when
field.eval is called.
However, according to me, the eval function does not work as expected.
Since the list of coefficients is zero and the function should be
evaluated as the weighted sum of the basis functions using the
coefficients as weights, this means that the function value returned for
any position within the mesh should be zero. However, the first
component (let us say x) of H is always -1 and the second component is
not changed and retains the value that was assigned to it before the
call to evaluate.
I will see about getting a C++ test up and running to test the same thing.
Please let me know if there are any other questions.
Evan
On Thu, Aug 21, 2008 at 6:06 PM, Evan Lezar <evanlezar@xxxxxxxxx
<mailto:evanlezar@xxxxxxxxx>> wrote:
On Thu, Aug 21, 2008 at 5:49 PM, Ola Skavhaug <skavhaug@xxxxxxxxx
<mailto:skavhaug@xxxxxxxxx>> wrote:
Evan Lezar skrev den 21/08-2008 følgende:
> Thanks for the speedy replies from all of you.
>
> Firstly platform information
>
> I am running ubuntu hardy, gcc version 4.2.3, swig 1.3.33,
python 2.5 with
> release versions of numpy and scipy. I am building dolfin
directly from
> source with mpi, but have not enabled petsc or any of the
other optional
> packages.
>
> What other information do you require?
>
> In terms of my specific problem, see the following code snippet:
>
> from dolfin import *
> import numpy as N
>
> mesh = UnitSquare(4,4)
> element = FiniteElement("Nedelec", "triangle", 0)
>
> ### Code to assemble system matrices and solve an eigenvalue
problem
>
> # h_e is an array of coefficients associated with the degrees
of freedom in
> the system obtained from the eigenvectors V
> h_e = V[:,sorted_index[first_index]]
>
> # setup a function to evaluate - the solution of the magnetic
field
> field = Function(element, self.mesh, h_e)
>
> # arbitrary point to evaluate the field
> points = N.array((0.5,0.25))
> # array to store the field value at a point
> H = N.array((0.0,0.0))
>
> print "pre_eval"
>
> #evaluate the function
> field.eval(H, points)
>
> # Ouput the field at the point
> print "H",
> print H
>
>
> When I run this code, I get the following output:
>
> pre_eval
> [labby:25160] *** Process received signal ***
> [labby:25160] Signal: Segmentation fault (11)
> [labby:25160] Signal code: Address not mapped (1)
> [labby:25160] Failing at address: 0xde8f58ec
> [labby:25160] [ 0] [0xb7f81440]
> [labby:25160] [ 1] /usr/bin/python(PyEval_EvalCodeEx+0x6e7)
[0x80cb0d7]
> [labby:25160] [ 2] /usr/bin/python(PyEval_EvalFrameEx+0x565e)
[0x80c92de]
> [labby:25160] [ 3] /usr/bin/python(PyEval_EvalCodeEx+0x6e7)
[0x80cb0d7]
> [labby:25160] [ 4] /usr/bin/python(PyEval_EvalFrameEx+0x565e)
[0x80c92de]
> [labby:25160] [ 5] /usr/bin/python(PyEval_EvalCodeEx+0x6e7)
[0x80cb0d7]
> [labby:25160] [ 6] /usr/bin/python(PyEval_EvalCode+0x57)
[0x80cb227]
> [labby:25160] [ 7] /usr/bin/python(PyRun_FileExFlags+0xf8)
[0x80ea6d8]
> [labby:25160] [ 8] /usr/bin/python(PyRun_SimpleFileExFlags+0x199)
> [0x80ea979]
> [labby:25160] [ 9] /usr/bin/python(Py_Main+0xa35) [0x8059335]
> [labby:25160] [10] /usr/bin/python(main+0x22) [0x80587f2]
> [labby:25160] [11]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)
> [0xb7de8450]
> [labby:25160] [12] /usr/bin/python [0x8058761]
> [labby:25160] *** End of error message ***
>
> With a previous build I have gotten different output and was
able to
> actually display the contents of H, but it would shill crash
once the method
> where the code was being run was terminated. I logged a bug
against it at
> http://www.fenics.org/cgi-bin/bugzilla/show_bug.cgi?id=55
>
> As I said in my mail, I see myself using fenics in the long
run and would
> like to get involved as much as possible, but some pointers
as to where to
> start would be much apprciated.
Have you implemented the C++ version as well, such that you know
that what you
do is correct?
Clearly, we are not catching what's going wrong here (missing
check of some
sort).
My guess is that the error occurs in
site-packages/dolfin/function.py, when
the Function is initialized. Can you boil down the example to a
shorter script
and post it to this list? I'll have a look at it.
Ola
Hi
I have not implemented a C++ version, but I will look into it - I am
a little more comfortable with python at the moment, but I suppose I
need to jump into the deep end :)
I will write a simple example script and then attach that.
Evan
------------------------------------------------------------------------
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev