Has anyone else experienced this problem?  Is it just because I have
so many cells in one block?  To reproduce: compile structured grid
generator that is attached, create grid with dimensions 1000 x 1000 x
80, use clean to grid to make unstructured, and then try viewing the
surface.

Note: this uses quite a bit of memory....

Regards,
Paul

2008/10/17 Edwards, Paul <[EMAIL PROTECTED]>:
> I think this int needs to be unsigned (or more bits)…..
>
>
>
> (gdb) frame 3
>
> #3  0x00002aaab2c053ea in vtkDataSetSurfaceFilter::NewFastGeomQuad
> (this=0x14fe670, numPts=4)
>
>     at
> /tmp/padramgui-1.1/tmp/src/paraview/VTK/Graphics/vtkDataSetSurfaceFilter.cxx:1730
>
> 1730        this->FastGeomQuadArrays[this->NextArrayIndex]
>
>  (gdb) list
>
> 1720            }
>
> 1721          }
>
> 1722        delete [] this->FastGeomQuadArrays;
>
> 1723        this->FastGeomQuadArrays = newArrays;
>
> 1724        this->NumberOfFastGeomQuadArrays = num;
>
> 1725        }
>
> 1726
>
> 1727      // Next: allocate a new array if necessary.
>
> 1728      if (this->FastGeomQuadArrays[this->NextArrayIndex] == NULL)
>
> 1729        {
>
> 1730        this->FastGeomQuadArrays[this->NextArrayIndex]
>
> 1731          = new unsigned char[this->FastGeomQuadArrayLength];
>
> 1732        }
>
> 1733
>
> 1734      vtkFastGeomQuad* q = reinterpret_cast<vtkFastGeomQuad*>
>
> 1735        (this->FastGeomQuadArrays[this->NextArrayIndex] +
> this->NextQuadIndex);
>
> 1736      q->numPts = numPts;
>
> 1737
>
> 1738      this->NextQuadIndex += polySize;
>
> 1739
>
> (gdb) print this->FastGeomQuadArrayLength
>
> $2 = -1721647736
>
> (gdb) whatis this->FastGeomQuadArrayLength
>
> type = int
>
> (gdb)
>
>
>
> More than just that variable needs to be updated though.
>
>
>
> I experienced this when viewing the surface of a mesh with 90M cells on a
> single machine.  Cuts worked without any problems.
>
>
>
> Regards,
>
> Paul
>
> The data contained in, or attached to, this e-mail, may contain confidential
> information. If you have received it in error you should notify the sender
> immediately by reply e-mail, delete the message from your system and contact
> +44 (0) 1332 242424 (the Rolls-Royce IT Security Director) if you need
> assistance. Please do not copy it for any purpose, or disclose its contents
> to any other person.
>
> An e-mail response to this address may be subject to interception or
> monitoring for operational reasons or for lawful business practices.
>
> (c) 2008 Rolls-Royce plc
>
> Registered office: 65 Buckingham Gate, London SW1E 6AT Company number:
> 1003142. Registered in England.
>
> _______________________________________________
> ParaView mailing list
> ParaView@paraview.org
> http://www.paraview.org/mailman/listinfo/paraview
>
>
#ifndef __vtkStructuredGridGenerator_h
#define __vtkStructuredGridGenerator_h

#include <vtkStructuredGridAlgorithm.h>

class vtkStructuredGridGenerator : public vtkStructuredGridAlgorithm
{
public:
    static vtkStructuredGridGenerator* New();
    vtkTypeRevisionMacro(vtkStructuredGridGenerator, vtkStructuredGridAlgorithm);
    void PrintSelf(ostream& os, vtkIndent indent);

    vtkSetVector2Macro(IRange, double);
    vtkGetVectorMacro(IRange, double, 2);

    vtkSetVector2Macro(JRange, double);
    vtkGetVectorMacro(JRange, double, 2);

    vtkSetVector2Macro(KRange, double);
    vtkGetVectorMacro(KRange, double, 2);

    vtkSetVector3Macro(Dimensions, int);
    vtkGetVectorMacro(Dimensions, int, 3);

    virtual int RequestInformation(
        vtkInformation *vtkNotUsed(request),
        vtkInformationVector **vtkNotUsed(inputVector),
        vtkInformationVector *outputVector);
    virtual int RequestData(vtkInformation*,
                            vtkInformationVector**,
                            vtkInformationVector*);
protected:
    vtkStructuredGridGenerator();
    ~vtkStructuredGridGenerator();

    double IRange[2];
    double JRange[2];
    double KRange[2];
    int Dimensions[3];

private:
    vtkStructuredGridGenerator(const vtkStructuredGridGenerator&);  // Not implemented.
    void operator=(const vtkStructuredGridGenerator&);  // Not implemented.
};

#endif
#include "vtkStructuredGridGenerator.h"

#include <vtkObjectFactory.h>
#include <vtkStructuredGrid.h>
#include <vtkInformation.h>
#include <vtkInformationVector.h>
#include <vtkSmartPointer.h>
#include <vtkStreamingDemandDrivenPipeline.h>
#include <vtkPoints.h>

#define VTK_CREATE(type, name) \
  vtkSmartPointer<type> name = vtkSmartPointer<type>::New()

vtkCxxRevisionMacro(vtkStructuredGridGenerator, "$Revision: 0.1 $");
vtkStandardNewMacro(vtkStructuredGridGenerator);

vtkStructuredGridGenerator::vtkStructuredGridGenerator()
{
    this->SetNumberOfInputPorts(0);

    this->IRange[0] = -1.0;
    this->IRange[1] = 1.0;
    this->JRange[0] = -1.0;
    this->JRange[1] = 1.0;
    this->KRange[0] = -1.0;
    this->KRange[1] = 1.0;

    this->Dimensions[0] = 2;
    this->Dimensions[1] = 2;
    this->Dimensions[2] = 2;
}

vtkStructuredGridGenerator::~vtkStructuredGridGenerator()
{
}

int vtkStructuredGridGenerator::RequestInformation(
    vtkInformation *vtkNotUsed(request),
    vtkInformationVector **vtkNotUsed(inputVector),
    vtkInformationVector *outputVector)
{
    vtkInformation *outInfo = outputVector->GetInformationObject(0);

    int wholeExtent[6];
    wholeExtent[0] = 0;   wholeExtent[1] = this->Dimensions[0] - 1;
    wholeExtent[2] = 0;   wholeExtent[3] = this->Dimensions[1] - 1;
    wholeExtent[4] = 0;   wholeExtent[5] = this->Dimensions[2] - 1;

    outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),
                 wholeExtent, 6);
    return 1;
}

int vtkStructuredGridGenerator::RequestData(
    vtkInformation* vtkNotUsed(request),
    vtkInformationVector** inputVector,
    vtkInformationVector* outputVector)
{
    vtkInformation* outInfo = outputVector->GetInformationObject(0);
    vtkStructuredGrid* output = vtkStructuredGrid::SafeDownCast(
                                    outInfo->Get(vtkDataObject::DATA_OBJECT()));
    if (!output)
    {
        vtkDebugMacro( << "Invalid output");
        return 0;
    }

    int extent[6];
    outInfo->Get(vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT(), extent);
    output->SetExtent(extent);

    double steps[3];
    steps[0] = (this->IRange[1] - this->IRange[0])
               / static_cast<double>(this->Dimensions[0] - 1);
    steps[1] = (this->JRange[1] - this->JRange[0])
               / static_cast<double>(this->Dimensions[1] - 1);
    steps[2] = (this->KRange[1] - this->KRange[0])
               / static_cast<double>(this->Dimensions[2] - 1);

    VTK_CREATE(vtkPoints, points);

    points->Allocate((extent[1] - extent[0] + 1)
                     * (extent[3] - extent[2] + 1)
                     * (extent[5] - extent[4] + 1));

    for (int k = extent[4]; k <= extent[5]; ++k)
        for (int j = extent[2]; j <= extent[3]; ++j)
            for (int i = extent[0]; i <= extent[1]; ++i)
            {
                double p[3];

                p[0] = IRange[0] + (steps[0] * static_cast<double>(i));
                p[1] = JRange[0] + (steps[1] * static_cast<double>(j));
                p[2] = KRange[0] + (steps[2] * static_cast<double>(k));

                points->InsertNextPoint(p);
            }

    output->SetPoints(points);

    return 1;
}

void vtkStructuredGridGenerator::PrintSelf(ostream& os, vtkIndent indent)
{
    this->Superclass::PrintSelf(os, indent);
}
<ServerManagerConfiguration>
  <ProxyGroup name="sources">
    <SourceProxy name="StructuredGridGenerator" class="vtkStructuredGridGenerator" label="StructuredGridGenerator">
      <Documentation
        long_help="StructuredGridGenerator"
        short_help="StructuredGridGenerator.">
	    StructuredGridGenerator
      </Documentation>
 
	  <DoubleVectorProperty
						   name="IRange"
						   command="SetIRange"
						   number_of_elements="2"
						   default_values="-1.0 1.0">
		  <DoubleRangeDomain name="range"/>
	  </DoubleVectorProperty>
	  
	  <DoubleVectorProperty
						   name="JRange"
						   command="SetJRange"
						   number_of_elements="2"
						   default_values="-1.0 1.0">
		  <DoubleRangeDomain name="range"/>
	  </DoubleVectorProperty>
	  
	  <DoubleVectorProperty
						   name="KRange"
						   command="SetKRange"
						   number_of_elements="2"
						   default_values="-1.0 1.0">
		  <DoubleRangeDomain name="range"/>
	  </DoubleVectorProperty>
	  
	  <IntVectorProperty
						name="Dimensions"
						command="SetDimensions"
						number_of_elements="3"
						default_values="2 2 2"
						label="Dimensions (I, J, K)" >
		  <IntRangeDomain name="range"/>
		  <Documentation>
			  This property specifies the number of points along the I, J, and J axes of the data set.
		  </Documentation>
	  </IntVectorProperty>
	  
    </SourceProxy>
  </ProxyGroup>
</ServerManagerConfiguration>
_______________________________________________
ParaView mailing list
ParaView@paraview.org
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to