<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hi Matthew,<br>
<br>
How about the matview output? Is this automatically permuted to
the natural ordering too?<br>
<br>
Thanks,<br>
<br>
Danyang<br>
<br>
On 20/05/2014 12:25 PM, Matthew Knepley wrote:<br>
</div>
<blockquote
cite="mid:CAMYG4Gmb-pZ7Y7FNSt8qvjtMzRuMQs43ci9-xp35rs0ROTUBAA@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Tue, May 20, 2014 at 1:31 PM,
Danyang Su <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:danyang.su@gmail.com" target="_blank">danyang.su@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hi All,<br>
<br>
I use DMDA for a flow problem and found the local vector
and global vector does not match for 2D and 3D problem
when dof >1.<br>
<br>
For example, the mesh is as follows:<br>
<br>
|proc 1| proc 2 | proc 3 |<br>
|7 8 9|16 17 18|25 26 27|<br>
|4 5 6|13 14 15|22 23 24|<br>
|1 2 3|10 11 12|19 20 21|<br>
<br>
<font color="#ff0000"><i>The following functions are
used to create DMDA object, global vector and local
vector.</i></font><br>
<br>
call
DMDACreate2d(Petsc_Comm_World,DMDA_BOUNDARY_NONE,
&<br>
DMDA_BOUNDARY_NONE,
DMDA_STENCIL_BOX, &<br>
nvxgbl,nvzgbl,PETSC_DECIDE,PETSC_DECIDE, &<br>
dmda_flow%dof,
dmda_flow%swidth, &<br>
PETSC_NULL_INTEGER,PETSC_NULL_INTEGER, &<br>
dmda_flow%da,ierr) <br>
call DMCreateGlobalVector(dmda_flow%da,x_flow,ierr)<br>
call VecDuplicate(x_flow,b_flow,ierr)<br>
call DMCreateLocalVector(dmda_flow%da,x_flow_loc,ierr)<br>
call VecDuplicate(x_flow_loc,b_flow_loc,ierr)<br>
<br>
<i><font color="#ff0000">The following functions are
used to compute the function (b_flow_loc)</font></i><br>
<br>
call VecGetArrayF90(b_flow_loc, vecpointer, ierr)<br>
<font color="#000099">vecpointer = (compute the values
here...)</font><br>
call VecRestoreArrayF90(b_flow_loc,vecpointer,ierr)<br>
call
DMLocalToGlobalBegin(dmda_flow%,b_flow_loc,INSERT_VALUES,
&<br>
b_flow,ierr)<br>
call
DMLocalToGlobalEnd(dmda_flow%,b_flow_loc,INSERT_VALUES,
&<br>
b_flow,ierr)<br>
<br>
<br>
<i><font color="#ff0000">The data of local vector
b_flow_loc for proc1, proc2 and proc3 are as follows
(just an example, without ghost value)</font></i><br>
proc 1 proc 2 proc 3<br>
1 10 19<br>
2 11 20<br>
3 12 21<br>
4 13 22<br>
5 14 23<br>
6 15 24<br>
... ... ...<br>
<br>
<i><font color="#ff0000">But the global vector b_flow
from Vecview shows that the data is stored as
follows (left column). I thought the global vector
b_flow is like the right column. Is anything wrong
here?</font></i></div>
</blockquote>
<div><br>
</div>
<div>On output, the global vectors are automatically
permuted to the natural ordering.</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><br>
Process [0] Process [0]<br>
1 1<br>
2 2<br>
3 3<br>
10 4<br>
11 5<br>
12 6<br>
... ... <br>
Process [1] Process [1]<br>
4 10<br>
5 11<br>
6 12<br>
13 13<br>
14 14<br>
15 15<br>
... ...<br>
Process [2] Process [2]<br>
... ...<br>
<br>
Though the data distribution is different from what I
thought before, the code works well for 1D problem and
most of the 2D and 3D problem, but failed in newton
iteration for some 2D problem with dof > 1. I use KSP
solver, not SNES solver at present.<br>
<br>
Thanks and regards,<br>
<br>
Danyang<br>
<br>
<br>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
What most experimenters take for granted before they begin
their experiments is infinitely more interesting than any
results to which their experiments lead.<br>
-- Norbert Wiener
</div>
</div>
</blockquote>
<br>
</body>
</html>