<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear Mohammad,<br>
    <br>
    <br>
    it doesn't help me, or I did not understand your explanation.<br>
    <br>
    If I do this:<br>
    <br>
    <tt>&nbsp; /* copy internal values (THIS WORKS, BUT COPIES NO BUFFER
      VALUES) */<br>
      &nbsp; for(Int i=0; i&lt;n; i++) {<br>
      &nbsp;&nbsp;&nbsp; Int gi = mesh.nodes[i].global_number;<br>
      &nbsp;&nbsp;&nbsp; VecGetValues(x, 1, &amp;gi, &amp;unk[i]);<br>
      &nbsp; }<br>
      <br>
      &nbsp; /* copy ghost values (CREATES MANY WARNINGS */<br>
      &nbsp; for(Int i=n; i&lt;N; i++) {<br>
      &nbsp;&nbsp;&nbsp; VecGetValues(x, 1, &amp;i, &amp;unk[i]);<br>
      &nbsp; }</tt><br>
    <br>
    I get arnings are like this.<br>
    <br>
    <tt>[0]PETSC ERROR: --------------------- Error Message
      ------------------------------------<br>
      [0]PETSC ERROR: Argument out of range!<br>
      [0]PETSC ERROR: Can only get local values, trying 3518!<br>
      [3]PETSC ERROR: --------------------- Error Message
      ------------------------------------<br>
      [3]PETSC ERROR: Argument out of range!<br>
      [3]PETSC ERROR: Can only get local values, trying 3511!<br>
      [3]PETSC ERROR:
      ------------------------------------------------------------------------<br>
    </tt><br>
    What am I doing wrong here?<br>
    <br>
    <br>
    &nbsp;&nbsp;&nbsp; Cheers,<br>
    <br>
    <br>
    &nbsp;&nbsp;&nbsp; Bojan<br>
    <br>
    <br>
    On 2/23/2012 11:23 PM, Mohammad Mirzadeh wrote:
    <blockquote
cite="mid:CAKsPKwk7wgD9E3iHeG37+qB2d4aW4zmFe4GCJhx98Br_2hLkyQ@mail.gmail.com"
      type="cite">
      <p>just index x with the local numberings. if you have 'n' local
        nodes and 'g' ghost nodes in x, ghost nodes indecies run from
        'n' to 'n+g-1'</p>
      <div class="gmail_quote">On Feb 23, 2012 1:16 PM, "Bojan Niceno"
        &lt;<a moz-do-not-send="true" href="mailto:bojan.niceno@psi.ch"
          target="_blank">bojan.niceno@psi.ch</a>&gt; wrote:<br
          type="attribution">
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000"> Dear Jed,<br>
            <br>
            thanks.<br>
            <br>
            Now I have the following:<br>
            <br>
            - Array unk, which should hold values inside the partition
            and in ghost cells.&nbsp; It is big enough to hold both<br>
            - Vec x, created by command VecCreateGhost, with proper
            padding for ghost cells<br>
            - Successful call to linear solver in parallel.<br>
            <br>
            But I need to copy ghost values from x to my array unk. <br>
            <br>
            How can I do it?<br>
            <br>
            <br>
            &nbsp;&nbsp;&nbsp; Kind regards,<br>
            <br>
            <br>
            &nbsp;&nbsp;&nbsp; Bojan<br>
            <br>
            On 2/23/2012 10:10 PM, Jed Brown wrote:
            <blockquote type="cite">
              <div class="gmail_quote">On Thu, Feb 23, 2012 at 15:05,
                Bojan Niceno <span dir="ltr">&lt;<a
                    moz-do-not-send="true"
                    href="mailto:bojan.niceno@psi.ch" target="_blank">bojan.niceno@psi.ch</a>&gt;</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">No, I use
                    global.<br>
                  </div>
                </blockquote>
                <div><br>
                </div>
                <div>The local form is just a local vector. It doesn't
                  even know that a global problem exists. You can't
                  index into it using global indices. (In general, there
                  is no efficient way to look up information in the
                  local vector (includes ghost points) using global
                  indices.)</div>
                <div>&nbsp;</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>
                    <tt>&nbsp; for(Int i=0; i&lt;n; i++) {<br>
                      &nbsp;&nbsp;&nbsp; Int gi = mesh.nodes[i].global_number;<br>
                      &nbsp;&nbsp;&nbsp; VecGetValues(x, 1, &amp;gi, &amp;unk[i]);<br>
                      &nbsp; }<br>
                    </tt><br>
                    "n" is defined as the number of cells inside, i.e.
                    without buffers.&nbsp; "unk" is my external array.&nbsp; If I
                    try to access buffer values, I use:<br>
                    <br>
                    <tt>&nbsp; for(Int i=0; i&lt;N; i++) {<br>
                      &nbsp;&nbsp;&nbsp; Int gi = mesh.nodes[i].global_number;<br>
                      &nbsp;&nbsp;&nbsp; VecGetValues(x, 1, &amp;gi, &amp;unk[i]);<br>
                      &nbsp; }<br>
                    </tt><br>
                    But then I end up with tons of warnings, presumably
                    because I am going beyond "n".&nbsp; Vector x was created
                    with VecCreateGhost.</div>
                </blockquote>
              </div>
              <br>
            </blockquote>
            <br>
            <br>
            <div>-- <br>
              <img src="cid:part1.06080103.04090309@psi.ch" border="0"></div>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <br>
    <br>
    <div class="moz-signature">-- <br>
      <img src="cid:part2.08050202.06020503@psi.ch" border="0"></div>
  </body>
</html>