Nektar++
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
Nektar::Utilities::OutputVtk Class Reference

Converter from fld to vtk. More...

#include <OutputVtk.h>

Inheritance diagram for Nektar::Utilities::OutputVtk:
Inheritance graph
[legend]
Collaboration diagram for Nektar::Utilities::OutputVtk:
Collaboration graph
[legend]

Public Member Functions

 OutputVtk (FieldSharedPtr f)
 
virtual ~OutputVtk ()
 
virtual void Process (po::variables_map &vm)
 Write fld to output file. More...
 
 OutputVtk (MeshSharedPtr m)
 
virtual ~OutputVtk ()
 
virtual void Process ()
 Write mesh to output file. More...
 
- Public Member Functions inherited from Nektar::Utilities::OutputModule
 OutputModule (FieldSharedPtr p_f)
 
void OpenStream ()
 Open a file for output. More...
 
 OutputModule (MeshSharedPtr p_m)
 
void OpenStream ()
 
- Public Member Functions inherited from Nektar::Utilities::Module
 Module (FieldSharedPtr p_f)
 
void RegisterConfig (string key, string value)
 Register a configuration option with a module. More...
 
void PrintConfig ()
 Print out all configuration options for a module. More...
 
void SetDefaults ()
 Sets default configuration options for those which have not been set. More...
 
bool GetRequireEquiSpaced (void)
 
void SetRequireEquiSpaced (bool pVal)
 
void EvaluateTriFieldAtEquiSpacedPts (LocalRegions::ExpansionSharedPtr &exp, const Array< OneD, const NekDouble > &infield, Array< OneD, NekDouble > &outfield)
 
 Module (MeshSharedPtr p_m)
 
void RegisterConfig (string key, string value)
 
void PrintConfig ()
 
void SetDefaults ()
 
MeshSharedPtr GetMesh ()
 
virtual void ProcessVertices ()
 Extract element vertices. More...
 

Static Public Member Functions

static boost::shared_ptr< Modulecreate (FieldSharedPtr f)
 Creates an instance of this class. More...
 
static boost::shared_ptr< Modulecreate (MeshSharedPtr m)
 Creates an instance of this class. More...
 

Static Public Attributes

static ModuleKey m_className
 
static ModuleKey className
 

Additional Inherited Members

- Protected Member Functions inherited from Nektar::Utilities::Module
 Module ()
 
virtual void ProcessEdges (bool ReprocessEdges=true)
 Extract element edges. More...
 
virtual void ProcessFaces (bool ReprocessFaces=true)
 Extract element faces. More...
 
virtual void ProcessElements ()
 Generate element IDs. More...
 
virtual void ProcessComposites ()
 Generate composites. More...
 
void ReorderPrisms (PerMap &perFaces)
 Reorder node IDs so that prisms and tetrahedra are aligned correctly. More...
 
void PrismLines (int prism, PerMap &perFaces, set< int > &prismsDone, vector< ElementSharedPtr > &line)
 
- Protected Attributes inherited from Nektar::Utilities::OutputModule
ofstream m_fldFile
 Output stream. More...
 
std::ofstream m_mshFile
 Output stream. More...
 
- Protected Attributes inherited from Nektar::Utilities::Module
FieldSharedPtr m_f
 Field object. More...
 
map< string, ConfigOptionm_config
 List of configuration values. More...
 
bool m_requireEquiSpaced
 
MeshSharedPtr m_mesh
 Mesh object. More...
 

Detailed Description

Converter from fld to vtk.

Converter for Gmsh files.

Definition at line 48 of file FieldConvert/OutputModules/OutputVtk.h.

Constructor & Destructor Documentation

Nektar::Utilities::OutputVtk::OutputVtk ( FieldSharedPtr  f)
Nektar::Utilities::OutputVtk::~OutputVtk ( )
virtual

Definition at line 57 of file FieldConvert/OutputModules/OutputVtk.cpp.

58 {
59 }
Nektar::Utilities::OutputVtk::OutputVtk ( MeshSharedPtr  m)

Definition at line 57 of file MeshConvert/OutputModules/OutputVtk.cpp.

57  : OutputModule(m)
58  {
59 
60  }
virtual Nektar::Utilities::OutputVtk::~OutputVtk ( )
virtual

Member Function Documentation

static boost::shared_ptr<Module> Nektar::Utilities::OutputVtk::create ( MeshSharedPtr  m)
inlinestatic

Creates an instance of this class.

Definition at line 51 of file MeshConvert/OutputModules/OutputVtk.h.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

51  {
53  }
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
static boost::shared_ptr<Module> Nektar::Utilities::OutputVtk::create ( FieldSharedPtr  f)
inlinestatic

Creates an instance of this class.

Definition at line 52 of file FieldConvert/OutputModules/OutputVtk.h.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr().

52  {
54  }
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
void Nektar::Utilities::OutputVtk::Process ( )
virtual

Write mesh to output file.

Implements Nektar::Utilities::Module.

Definition at line 67 of file MeshConvert/OutputModules/OutputVtk.cpp.

References Nektar::iterator, Nektar::Utilities::Module::m_config, and Nektar::Utilities::Module::m_mesh.

68  {
69  if (m_mesh->m_verbose)
70  {
71  cout << "OutputVtk: Writing file..." << endl;
72  }
73 
74  vtkPolyData *vtkMesh = vtkPolyData::New();
75  vtkPoints *vtkPoints = vtkPoints::New();
76  vtkCellArray *vtkPolys = vtkCellArray::New();
77 
79 
80  std::set<NodeSharedPtr> tmp(
81  m_mesh->m_vertexSet.begin(),
82  m_mesh->m_vertexSet.end());
83 
84  for (it = tmp.begin(); it != tmp.end(); ++it)
85  {
86  NodeSharedPtr n = *it;
87  vtkPoints->InsertPoint(n->m_id, n->m_x, n->m_y, n->m_z);
88  }
89 
90  vtkIdType p[8];
91  vector<ElementSharedPtr> &elmt =
92  m_mesh->m_element[m_mesh->m_expDim];
93  for(int i = 0; i < elmt.size(); ++i)
94  {
95  int vertexCount = elmt[i]->GetVertexCount();
96  for (int j = 0; j < vertexCount; ++j)
97  {
98  p[j] = elmt[i]->GetVertex(j)->m_id;
99  }
100  vtkPolys->InsertNextCell(vertexCount, &p[0]);
101  }
102 
103  vtkMesh->SetPoints(vtkPoints);
104  vtkMesh->SetPolys(vtkPolys);
105 
106  // Write out the new mesh
107  vtkPolyDataWriter *vtkMeshWriter = vtkPolyDataWriter::New();
108  vtkMeshWriter->SetFileName(m_config["outfile"].as<string>().c_str());
109 #if VTK_MAJOR_VERSION <= 5
110  vtkMeshWriter->SetInput(vtkMesh);
111 #else
112  vtkMeshWriter->SetInputData(vtkMesh);
113 #endif
114  vtkMeshWriter->Update();
115  }
map< string, ConfigOption > m_config
List of configuration values.
MeshSharedPtr m_mesh
Mesh object.
boost::shared_ptr< Node > NodeSharedPtr
Shared pointer to a Node.
Definition: MeshElements.h:195
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
void Nektar::Utilities::OutputVtk::Process ( po::variables_map &  vm)
virtual

Write fld to output file.

Implements Nektar::Utilities::Module.

Definition at line 61 of file FieldConvert/OutputModules/OutputVtk.cpp.

References Nektar::Utilities::Module::m_config, and Nektar::Utilities::Module::m_f.

62 {
63  if(!m_f->m_exp.size()) // do nothing if no expansion defined
64  {
65  return;
66  }
67 
68  int i, j;
69  if (m_f->m_verbose)
70  {
71  cout << "OutputVtk: Writing file..." << endl;
72  }
73 
74  // Extract the output filename and extension
75  string filename = m_config["outfile"].as<string>();
76 
77  // amend for parallel output if required
78  if(m_f->m_session->GetComm()->GetSize() != 1)
79  {
80  int dot = filename.find_last_of('.');
81  string ext = filename.substr(dot,filename.length()-dot);
82  string procId = "_P" + boost::lexical_cast<std::string>(
83  m_f->m_session->GetComm()->GetRank());
84  string start = filename.substr(0,dot);
85  filename = start + procId + ext;
86  }
87 
88  // Write solution.
89  ofstream outfile(filename.c_str());
90  m_f->m_exp[0]->WriteVtkHeader(outfile);
91 
92  int nfields, nstrips;
93  if (m_f->m_fielddef.size() == 0)
94  {
95  nfields = 0;
96  }
97  else
98  {
99  nfields = m_f->m_fielddef[0]->m_fields.size();
100  }
101  m_f->m_session->LoadParameter("Strip_Z", nstrips, 1);
102 
103  // Homogeneous strip variant
104  for(int s = 0; s < nstrips; ++s)
105  {
106  // For each field write out field data for each expansion.
107  for (i = 0; i < m_f->m_exp[0]->GetNumElmts(); ++i)
108  {
109  m_f->m_exp[0]->WriteVtkPieceHeader(outfile,i,s);
110 
111  // For this expansion write out each field.
112  for (j = 0; j < nfields; ++j)
113  {
114  m_f->m_exp[s*nfields+j]->WriteVtkPieceData(
115  outfile, i, m_f->m_fielddef[0]->m_fields[j]);
116  }
117  m_f->m_exp[0]->WriteVtkPieceFooter(outfile, i);
118  }
119  }
120  m_f->m_exp[0]->WriteVtkFooter(outfile);
121  cout << "Written file: " << filename << endl;
122 }
map< string, ConfigOption > m_config
List of configuration values.
FieldSharedPtr m_f
Field object.

Member Data Documentation

ModuleKey Nektar::Utilities::OutputVtk::className
static
Initial value:

Definition at line 54 of file MeshConvert/OutputModules/OutputVtk.h.

ModuleKey Nektar::Utilities::OutputVtk::m_className
static
Initial value:

Definition at line 55 of file FieldConvert/OutputModules/OutputVtk.h.