<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Hi again. I have a quick question
      below.<br>
      <br>
      On 08/07/2015 10:47 AM, Jeff Becker wrote:<br>
    </div>
    <blockquote cite="mid:55C4EF18.7050102@nasa.gov" type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <div class="moz-cite-prefix">Hi Berk,<br>
        <br>
        On 08/07/2015 10:08 AM, Berk Geveci wrote:<br>
      </div>
      <blockquote
cite="mid:CAE32kpWvMxdCWz5s9uJQH01arxHJDD=nZUWv2XKwFwP93_C2+Q@mail.gmail.com"
        type="cite">
        <div dir="ltr">Hey Jeff,
          <div><br>
          </div>
          <div>Can you clarify a bit? What kind of wrong is the output?</div>
        </div>
      </blockquote>
      <br>
      I have an updated report in the mail I sent to the list on
      Wednesday. I will forward you that directly.  Please see updated
      code in that mail. Right now, if I run my script on two
      processors, it looks like both processors get the same half of the
      data.<br>
      <br>
      In the meantime, I will try to incorporate your suggestion below.
      Thanks.<br>
    </blockquote>
    <br>
    In your version of my code below, you commented out the line:<br>
    <br>
    imagedata = self.GetOutput()<br>
    <br>
    I was using the example in:<br>
    <br>
<a class="moz-txt-link-freetext" href="http://www.paraview.org/Wiki/ParaView/Simple_ParaView_3_Python_Filters#Producing_Image_Data_.28Source.29">http://www.paraview.org/Wiki/ParaView/Simple_ParaView_3_Python_Filters#Producing_Image_Data_.28Source.29</a><br>
    <br>
    Instead should I generate a new vtkImageData instance?<br>
    <br>
    <br>
    Thanks again,<br>
    <br>
    -jeff<br>
    <blockquote cite="mid:55C4EF18.7050102@nasa.gov" type="cite"> <br>
      -jeff<br>
      <blockquote
cite="mid:CAE32kpWvMxdCWz5s9uJQH01arxHJDD=nZUWv2XKwFwP93_C2+Q@mail.gmail.com"
        type="cite">
        <div dir="ltr">
          <div><br>
          </div>
          <div>Also, I would probably do this a bit differently,
            assuming you use a newer ParaView (>= 4.2). The issue is
            that <span style="font-size:12.8000001907349px">vtkTransmitImageDataPiece

              is not a "CAN_PRODUCE_SUB_EXTENT()" filter. Rather it is a
              "CAN_HANDLE_PIECE_REQUEST()" filter. Meaning that it wants
              to determine the extents of the output based on the piece
              request it receives. So some changes:</span></div>
          <div><span style="font-size:12.8000001907349px"><br>
            </span></div>
          <div><span style="font-size:12.8000001907349px">* Swap </span><span
              style="font-size:12.8000001907349px">CAN_PRODUCE_SUB_EXTENT()

              with </span><span style="font-size:12.8000001907349px">CAN_HANDLE_PIECE_REQUEST()

              in request info.</span></div>
          <div><span style="font-size:12.8000001907349px">* In the main
              script, do something like this:</span></div>
          <div><span style="font-size:12.8000001907349px"><br>
            </span></div>
          <div><span style="font-size:12.8000001907349px">executive =
              self.GetExecutive()</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">outInfo =
              executive.GetOutputInformation</span><span
              style="font-size:12.8000001907349px">(0)</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">#updateExtent =
              [executive.UPDATE_EXTENT().Get</span><span
              style="font-size:12.8000001907349px">(outInfo, i) for i in
              xrange(6)]</span><br style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">#imageData =
              self.GetOutput()</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">#imageData.SetExtent(updateExte</span><span
              style="font-size:12.8000001907349px">nt)</span></div>
          <div># >> this probably needs to happen on rank 0 only<br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">myout =
              ns.numpy_to_vtk(bmag.ravel(),1</span><span
              style="font-size:12.8000001907349px">,vtk.VTK_FLOAT)</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">myout.SetName("B
              field magnitude")</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">imageData.GetPointData().SetSc</span><span
              style="font-size:12.8000001907349px">alars(myout)</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">tp =
              vtk.vtkTrivialProducer()</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">tp.SetOutput(imageData)</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">tp.SetWholeExtent(0,

              mesh.MX-1, 0, mesh.MY-1, 0, mesh.MZ-1)</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">xmit =
              vtk.vtkTransmitImageDataPiece(</span><span
              style="font-size:12.8000001907349px">)</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">xmit.SetInputConnection(tp.Get</span><span
              style="font-size:12.8000001907349px">OutputPort())</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">xmit.UpdateInformation()</span><br
              style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">xmit.SetUpdateExtent(rank,

              nranks, 0)</span><br style="font-size:12.8000001907349px">
            <span style="font-size:12.8000001907349px">xmit.Update()</span><span
              style="font-size:12.8000001907349px"><br>
            </span></div>
          <div><span style="font-size:12.8000001907349px">self.GetOutput().ShallowCopy(xmit,GetOutput())</span></div>
          <div><span style="font-size:12.8000001907349px"><br>
            </span></div>
          <div><span style="font-size:12.8000001907349px">I didn't
              verify the code so it may need tweaking.</span></div>
          <div><span style="font-size:12.8000001907349px"><br>
            </span></div>
          <div><span style="font-size:12.8000001907349px">Best,</span></div>
          <div><span style="font-size:12.8000001907349px">-berk</span></div>
          <div><span style="font-size:12.8000001907349px"><br>
            </span></div>
        </div>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Tue, Aug 4, 2015 at 2:14 PM, Jeff
            Becker <span dir="ltr"><<a moz-do-not-send="true"
                href="mailto:jeffrey.c.becker@nasa.gov" target="_blank">jeffrey.c.becker@nasa.gov</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi. I'm
              trying to run a Python Programmable source across four
              nodes (started with mpirun -np 4 pvserver). My script
              contains the following code, but the output looks wrong,
              so I'm not sure if the extents are right.  The
              partitioning among nodes is correct (using processId
              filter). Also I'm careful to set Output Data Set Type to
              vtkImageData.<br>
              <br>
              import vtk<br>
              import vtk.util.numpy_support as ns<br>
              contr =
              vtk.vtkMultiProcessController.GetGlobalController()<br>
              nranks = contr.GetNumberOfProcesses()<br>
              rank = contr.GetLocalProcessId()<br>
              <br>
              ...<br>
              executive = self.GetExecutive()<br>
              outInfo = executive.GetOutputInformation(0)<br>
              updateExtent = [executive.UPDATE_EXTENT().Get(outInfo, i)
              for i in xrange(6)]<br>
              imageData = self.GetOutput()<br>
              imageData.SetExtent(updateExtent)<br>
              myout = ns.numpy_to_vtk(bmag.ravel(),1,vtk.VTK_FLOAT)<br>
              myout.SetName("B field magnitude")<br>
              imageData.GetPointData().SetScalars(myout)<br>
              tp = vtk.vtkTrivialProducer()<br>
              tp.SetOutput(imageData)<br>
              tp.SetWholeExtent(0, mesh.MX-1, 0, mesh.MY-1, 0,
              mesh.MZ-1)<br>
              xmit = vtk.vtkTransmitImageDataPiece()<br>
              xmit.SetInputConnection(tp.GetOutputPort())<br>
              xmit.UpdateInformation()<br>
              xmit.SetUpdateExtent(rank, nranks, 0)<br>
              xmit.Update()<br>
              <br>
              For completeness, here is my requestInformation script
              (mesh has dimensions, and coordinate arrays for each of
              X,Y,Z)<br>
              <br>
              executive = self.GetExecutive()<br>
              outInfo = executive.GetOutputInformation(0)<br>
              outInfo.Set(vtk.vtkAlgorithm.CAN_PRODUCE_SUB_EXTENT(), 1)<br>
              outInfo.Set(executive.WHOLE_EXTENT(), 0, mesh.MX-1, 0,
              mesh.MY-1, 0, mesh.MZ-1)<br>
              xspacing = (mesh.xcoords[-1] - mesh.xcoords[0])/mesh.MX<br>
              yspacing = (mesh.ycoords[-1] - mesh.ycoords[0])/mesh.MY<br>
              zspacing = (mesh.zcoords[-1] - mesh.zcoords[0])/mesh.MZ<br>
              outInfo.Set(vtk.vtkDataObject.SPACING(), xspacing,
              yspacing, zspacing)<br>
              <br>
              This is what I've been able to come up with after spending
              much time reading documentation and examples, but I've
              obviously missed something. Please advise. Thanks.<br>
              <br>
              -jeff<br>
              <br>
              _______________________________________________<br>
              Powered by <a moz-do-not-send="true"
                href="http://www.kitware.com" rel="noreferrer"
                target="_blank">www.kitware.com</a><br>
              <br>
              Visit other Kitware open-source projects at <a
                moz-do-not-send="true"
                href="http://www.kitware.com/opensource/opensource.html"
                rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
              <br>
              Please keep messages on-topic and check the ParaView Wiki
              at: <a moz-do-not-send="true"
                href="http://paraview.org/Wiki/ParaView"
                rel="noreferrer" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
              <br>
              Search the list archives at: <a moz-do-not-send="true"
                href="http://markmail.org/search/?q=ParaView"
                rel="noreferrer" target="_blank">http://markmail.org/search/?q=ParaView</a><br>
              <br>
              Follow this link to subscribe/unsubscribe:<br>
              <a moz-do-not-send="true"
                href="http://public.kitware.com/mailman/listinfo/paraview"
                rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview</a><br>
            </blockquote>
          </div>
          <br>
        </div>
      </blockquote>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Powered by <a class="moz-txt-link-abbreviated" href="http://www.kitware.com">www.kitware.com</a>

Visit other Kitware open-source projects at <a class="moz-txt-link-freetext" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>

Please keep messages on-topic and check the ParaView Wiki at: <a class="moz-txt-link-freetext" href="http://paraview.org/Wiki/ParaView">http://paraview.org/Wiki/ParaView</a>

Search the list archives at: <a class="moz-txt-link-freetext" href="http://markmail.org/search/?q=ParaView">http://markmail.org/search/?q=ParaView</a>

Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext" href="http://public.kitware.com/mailman/listinfo/paraview">http://public.kitware.com/mailman/listinfo/paraview</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>