Thanks for your kind replies. I will give a result after the test.
On 2017年05月28日 19:32, Matthew Knepley wrote:
On Sun, May 28, 2017 at 1:49 AM, Dave May <dave.mayhe...@gmail.com
<mailto:dave.mayhe...@gmail.com>> wrote:
On Sun, 28 May 2017 at 08:31, leejearl <leeje...@126.com
<mailto:leeje...@126.com>> wrote:
Hi, PETSc developer:
I need to create a PetscSection with a struct. The struct is
defined as follow,
typedef struct
{
PetscReal x;
PetscInt id;
} testStruct;
When I run the program, I got a wrong output as follow,
Vec Object: 1 MPI processes
type: seq
2.
4.94066e-324
2.
4.94066e-324
2.
4.94066e-324
2.
4.94066e-324
2.
4.94066e-324
2.
4.94066e-324
2.
4.94066e-324
2.
4.94066e-324
But when I defined the struct as
typedef struct
{
PetscReal x;
PetscReal id;
} testStruct;
The output is ok. It seems that there is some wrong with the
memories
when I define the "id" as a PetscInt type.
Yep.
I can not find out the reasons, and any one can help me with it?
The Vec object can only store quantities of type PetscScalar. It
cannot store PetscInt's and it definitely cannot represent a
mixture of PetscReal's and PetscInt's.
Dave is correct. However this usage completely misses the point of
Section. Section is a device for storing indices into
ANY storage, not just Vec and IS. I would manage an array of the
structs that I allocate, and use the Section to index into.
Matt
Thanks,
Dave
The
source file "test.c" is attached.
Thanks,
leejearl
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which
their experiments lead.
-- Norbert Wiener
http://www.caam.rice.edu/~mk51/ <http://www.caam.rice.edu/%7Emk51/>
--
李季
西北工业大学航空学院流体力学系
Phone: 17792092487
QQ: 188524324