WriterVTK Class Reference

#include <WriterVTK.hpp>

Inheritance diagram for WriterVTK:

Inheritance graph
[legend]
Collaboration diagram for WriterVTK:

Collaboration graph
[legend]

List of all members.

Public Types

typedef std::vector
< ConstReferenceCounting
< FieldOfScalarFunction > > 
FieldList
typedef std::vector
< ConstReferenceCounting
< ScalarFunctionBase > > 
ScalarFunctionList

Public Member Functions

void proceed () const
 WriterVTK (ConstReferenceCounting< Mesh > mesh, const std::string &filename, const FileDescriptor &fileDescriptor)
 ~WriterVTK ()
void add (ConstReferenceCounting< ScalarFunctionBase > function)
void add (ConstReferenceCounting< FieldOfScalarFunction > field)

Protected Attributes

ConstReferenceCounting< Mesh__mesh
const std::string __filename
const FileDescriptor__fileDescriptor
const std::string __CR
FieldList __fieldList
ScalarFunctionList __scalarFunctionList

Private Member Functions

template<typename MeshType>
void __proceed () const
 WriterVTK (const WriterVTK &)
void __fillCrossedComponent (const FieldOfScalarFunction &field, Vector< real_t > &values) const

Private Attributes

const bool __binary

Classes

struct  Traits
struct  Traits< CartesianHexahedron >
struct  Traits< Hexahedron >
struct  Traits< Quadrangle >
struct  Traits< Tetrahedron >
struct  Traits< Triangle >


Detailed Description

Definition at line 33 of file WriterVTK.hpp.


Member Typedef Documentation

Definition at line 44 of file WriterBase.hpp.

Definition at line 45 of file WriterBase.hpp.


Constructor & Destructor Documentation

WriterVTK::WriterVTK ( const WriterVTK  )  [private]

Copy constructor is forbidden

WriterVTK::WriterVTK ( ConstReferenceCounting< Mesh mesh,
const std::string &  filename,
const FileDescriptor fileDescriptor 
)

Constructor

Parameters:
mesh given mesh
filename basename of the VTK file
fileDescriptor describes file type

Definition at line 936 of file WriterVTK.cpp.

00939   : WriterBase(mesh,
00940                filename,
00941                fileDescriptor),
00942     __binary((fileDescriptor.type() == FileDescriptor::binary) or 
00943              (fileDescriptor.type() == FileDescriptor::formatDefault))
00944 {
00945   ;
00946 }

WriterVTK::~WriterVTK (  ) 

Destructor

Definition at line 949 of file WriterVTK.cpp.

00950 {
00951   ;
00952 }


Member Function Documentation

void WriterVTK::__proceed< Structured3DMesh > (  )  const [inline, private]

Save data on a specific mesh type

Definition at line 228 of file WriterVTK.cpp.

References __binary, WriterBase::__fieldList, WriterBase::__filename, __fillCrossedComponent(), WriterBase::__mesh, WriterBase::__scalarFunctionList, BinarySerializerVTK::add(), XMLWriter::add(), XMLTag::add(), FEMFunctionBase::baseMesh(), XMLWriter::closeTag(), FEMFunctionBase::discretizationType(), ScalarFunctionBase::femfunction, XMLWriter::insert(), XMLWriter::insertNewLine(), XMLWriter::insertUnderscore(), ScalarDiscretizationTypeBase::lagrangianFEM1, FieldOfScalarFunction::numberOfComponents(), BinarySerializerVTK::offset(), stringify(), ScalarFunctionBase::type(), and XMLWriter::writeHeader().

00229 {
00230   typedef typename MeshType::CellType CellType;
00231 
00232   std::string filename = __filename;
00233   filename += ".vtu";
00234 
00235   const MeshType& mesh
00236     = static_cast<const MeshType&>(*__mesh);
00237 
00238 //   size_t surfaceMeshNumberOfCells = 0;
00239 //   if (mesh.hasaceMesh()) {
00240 //     surfaceMeshNumberOfCells = mesh.surfaceMesh()->numberOfCells();
00241 //   }
00242 
00243   std::ofstream file(filename.c_str());
00244   file.precision(15);
00245 
00246   XMLWriter xmlWriter(file);
00247 
00248   xmlWriter.writeHeader();
00249   {
00250     XMLTag vtkFile("VTKFile");
00251     ReferenceCounting<XMLAttribute> attribute
00252       = new XMLAttribute("type","UnstructuredGrid");
00253     vtkFile.add(attribute);
00254 
00255     if (this->__binary) {
00256       ReferenceCounting<XMLAttribute> endiannes
00257         = new XMLAttribute("byte_order","LittleEndian");
00258       vtkFile.add(endiannes);
00259     }
00260 
00261     xmlWriter.add(vtkFile);
00262   }
00263 
00264   {
00265     XMLTag unstructuredGrid("UnstructuredGrid");
00266     xmlWriter.add(unstructuredGrid);
00267   }
00268 
00269   {
00270     XMLTag piece("Piece");
00271     ReferenceCounting<XMLAttribute>
00272       nbPoints = new XMLAttribute("NumberOfPoints",
00273                                   stringify(mesh.numberOfVertices()));
00274     piece.add(nbPoints);
00275     ReferenceCounting<XMLAttribute>
00276       nbCells = new XMLAttribute("NumberOfCells",
00277                                  stringify(mesh.numberOfCells()));
00278     piece.add(nbCells);
00279     xmlWriter.add(piece);
00280 
00281     {
00282       XMLTag points("Points");
00283       xmlWriter.add(points);
00284    
00285       {  
00286         XMLTag dataarray("DataArray");
00287         ReferenceCounting<XMLAttribute>
00288           type = new XMLAttribute("type","Float64");
00289         dataarray.add(type);
00290         ReferenceCounting<XMLAttribute>
00291           name = new XMLAttribute("Name","Position");
00292         dataarray.add(name);
00293         ReferenceCounting<XMLAttribute>
00294           nbComponent = new XMLAttribute("NumberOfComponents","3");
00295         dataarray.add(nbComponent);
00296 
00297         if (not this->__binary) {
00298           ReferenceCounting<XMLAttribute>
00299             format = new XMLAttribute("format","ascii");
00300           dataarray.add(format);
00301 
00302           xmlWriter.add(dataarray);
00303 
00304           for (size_t i=0; i<mesh.numberOfVertices(); ++i) {
00305             const Vertex& x = mesh.vertex(i); 
00306             xmlWriter.insert(x[0]);
00307             xmlWriter.insert(x[1]);
00308             xmlWriter.insert(x[2]);
00309           }
00310           xmlWriter.insertNewLine();
00311           xmlWriter.closeTag();
00312         } else {
00313           ReferenceCounting<XMLAttribute>
00314             format = new XMLAttribute("format","appended");
00315           dataarray.add(format);
00316 
00317           ReferenceCounting<XMLAttribute>
00318             offset = new XMLAttribute("offset",stringify(serializer.offset()));
00319           dataarray.add(offset);
00320 
00321           xmlWriter.add(dataarray);
00322 
00323           Vector<real_t> coords(3*mesh.numberOfVertices());
00324           for (size_t i=0; i<mesh.numberOfVertices(); ++i) {
00325             const Vertex& x = mesh.vertex(i); 
00326             coords[3*i+0] = x[0];
00327             coords[3*i+1] = x[1];
00328             coords[3*i+2] = x[2];
00329           }
00330 
00331           serializer.add(coords);
00332           xmlWriter.closeTag();
00333         }
00334       }
00335       xmlWriter.closeTag();
00336     }
00337 
00338     {
00339       XMLTag cells("Cells");
00340       xmlWriter.add(cells);
00341 
00342       {
00343         XMLTag dataarray("DataArray");
00344         ReferenceCounting<XMLAttribute>
00345           type = new XMLAttribute("type","Int32");
00346         dataarray.add(type);
00347         ReferenceCounting<XMLAttribute>
00348           name = new XMLAttribute("Name","connectivity");
00349         dataarray.add(name);
00350         ReferenceCounting<XMLAttribute>
00351           nbComponent = new XMLAttribute("NumberOfComponents","1");
00352         dataarray.add(nbComponent);
00353 
00354         if (not this->__binary) {
00355           ReferenceCounting<XMLAttribute>
00356             format = new XMLAttribute("format","ascii");
00357           dataarray.add(format);
00358           xmlWriter.add(dataarray);
00359 
00360           for (size_t i=0;i<mesh.numberOfCells(); ++i) {
00361             const CellType& cell = mesh.cell(i);
00362             for (size_t j=0; j<CellType::NumberOfVertices; ++j) {
00363               xmlWriter.insert(mesh.vertexNumber(cell(j)));
00364             }
00365           }
00366           xmlWriter.insertNewLine();
00367           xmlWriter.closeTag();
00368         } else {
00369           ReferenceCounting<XMLAttribute>
00370             format = new XMLAttribute("format","appended");
00371           dataarray.add(format);
00372 
00373           ReferenceCounting<XMLAttribute>
00374             offset = new XMLAttribute("offset",stringify(serializer.offset()));
00375           dataarray.add(offset);
00376 
00377           Vector<int> cellDescription(CellType::NumberOfVertices*mesh.numberOfCells());
00378 
00379           for (size_t i=0;i<mesh.numberOfCells(); ++i) {
00380             const CellType& cell = mesh.cell(i);
00381             for (size_t j=0; j<CellType::NumberOfVertices; ++j) {
00382               cellDescription[i*CellType::NumberOfVertices+j]
00383                 = mesh.vertexNumber(cell(j));
00384             }
00385           }
00386 
00387           serializer.add(cellDescription);
00388 
00389           xmlWriter.add(dataarray);
00390           xmlWriter.closeTag();
00391         }
00392       }
00393 
00394       {
00395         XMLTag dataarray("DataArray");
00396         ReferenceCounting<XMLAttribute>
00397           type = new XMLAttribute("type","Int32");
00398         dataarray.add(type);
00399         ReferenceCounting<XMLAttribute>
00400           name = new XMLAttribute("Name","offsets");
00401         dataarray.add(name);
00402         ReferenceCounting<XMLAttribute>
00403           nbComponent = new XMLAttribute("NumberOfComponents","1");
00404         dataarray.add(nbComponent);
00405         if (not this->__binary) {
00406           ReferenceCounting<XMLAttribute>
00407             format = new XMLAttribute("format","ascii");
00408           dataarray.add(format);
00409           xmlWriter.add(dataarray);
00410      
00411           for (size_t i=1; i<=mesh.numberOfCells(); ++i) {
00412             xmlWriter.insert(i*CellType::NumberOfVertices);
00413           }
00414 
00415           xmlWriter.insertNewLine();
00416           xmlWriter.closeTag();      
00417         } else {
00418           ReferenceCounting<XMLAttribute>
00419             format = new XMLAttribute("format","appended");
00420           dataarray.add(format);
00421 
00422           ReferenceCounting<XMLAttribute>
00423             offset = new XMLAttribute("offset",stringify(serializer.offset()));
00424           dataarray.add(offset);
00425 
00426           Vector<int> offsets(mesh.numberOfCells());
00427           for (size_t i=0; i<mesh.numberOfCells(); ++i) {
00428             offsets[i] = ((i+1)*CellType::NumberOfVertices);
00429           }
00430 
00431           serializer.add(offsets);
00432 
00433           xmlWriter.add(dataarray);
00434           xmlWriter.closeTag();
00435         }
00436       }
00437 
00438       {
00439         XMLTag dataarray("DataArray");
00440         ReferenceCounting<XMLAttribute>
00441           type = new XMLAttribute("type","UInt8");
00442         dataarray.add(type);
00443         ReferenceCounting<XMLAttribute>
00444           name = new XMLAttribute("Name","types");
00445         dataarray.add(name);
00446         ReferenceCounting<XMLAttribute>
00447           nbComponent = new XMLAttribute("NumberOfComponents","1");
00448         dataarray.add(nbComponent);
00449 
00450         if (not this->__binary) {
00451           ReferenceCounting<XMLAttribute>
00452             format = new XMLAttribute("format","ascii");
00453           dataarray.add(format);
00454           xmlWriter.add(dataarray);
00455      
00456           for (size_t i=0; i<mesh.numberOfCells(); ++i) {
00457             xmlWriter.insert(Traits<CellType>::VTKType);
00458           }
00459           xmlWriter.insertNewLine();
00460           xmlWriter.closeTag();
00461         } else {
00462           ReferenceCounting<XMLAttribute>
00463             format = new XMLAttribute("format","appended");
00464           dataarray.add(format);
00465 
00466           ReferenceCounting<XMLAttribute>
00467             offset = new XMLAttribute("offset",stringify(serializer.offset()));
00468           dataarray.add(offset);
00469 
00470           Vector<unsigned char> types(mesh.numberOfCells());
00471           for (size_t i=0; i<mesh.numberOfCells(); ++i) {
00472             types[i] = Traits<CellType>::VTKType;
00473           }
00474 
00475           serializer.add(types);
00476 
00477           xmlWriter.add(dataarray);
00478           xmlWriter.closeTag();
00479         }
00480       }
00481     }
00482     xmlWriter.closeTag();
00483   }
00484   {
00485     XMLTag pointdata("PointData");
00486     xmlWriter.add(pointdata);
00487 
00488     for (size_t i=0; i<__scalarFunctionList.size(); ++i) {
00489 
00490       const ScalarFunctionBase& function = *__scalarFunctionList[i];
00491 
00492       if (not this->__binary) {
00493         XMLTag dataarray("DataArray");
00494         ReferenceCounting<XMLAttribute>
00495           type = new XMLAttribute("type","Float64");
00496         dataarray.add(type);
00497         ReferenceCounting<XMLAttribute>
00498           name = new XMLAttribute("Name",stringify(function));
00499         dataarray.add(name);
00500         ReferenceCounting<XMLAttribute>
00501           nbComponent = new XMLAttribute("NumberOfComponents","1");
00502         dataarray.add(nbComponent);
00503         ReferenceCounting<XMLAttribute>
00504           format = new XMLAttribute("format","ascii");
00505         dataarray.add(format);
00506     
00507         xmlWriter.add(dataarray);
00508 
00509         switch (function.type()) {
00510         case ScalarFunctionBase::femfunction: {
00511           const FEMFunctionBase& fem
00512             = static_cast<const FEMFunctionBase&>(function);
00513 
00514           if ((fem.discretizationType() == ScalarDiscretizationTypeBase::lagrangianFEM1)
00515               and (fem.baseMesh() == __mesh)) {
00516             for (size_t i=0; i<mesh.numberOfVertices(); ++i) {
00517               xmlWriter.insert(fem[i]);
00518             }
00519             break;
00520           }
00521         }
00522         default: {
00523           for (size_t i=0; i<mesh.numberOfVertices(); ++i) {
00524             const Vertex& x = mesh.vertex(i);
00525             xmlWriter.insert(function(x));
00526           }
00527         }
00528         }
00529 
00530         xmlWriter.insertNewLine();
00531         xmlWriter.closeTag();
00532       } else {
00533         XMLTag dataArray("DataArray");
00534         ReferenceCounting<XMLAttribute> type
00535           = new XMLAttribute("type","Float64");
00536         dataArray.add(type);
00537         ReferenceCounting<XMLAttribute> name
00538           = new XMLAttribute("Name",stringify(function));
00539         dataArray.add(name);
00540         ReferenceCounting<XMLAttribute>
00541           nbComponent = new XMLAttribute("NumberOfComponents","1");
00542         dataArray.add(nbComponent);
00543 
00544         ReferenceCounting<XMLAttribute>
00545           format = new XMLAttribute("format","appended");
00546         dataArray.add(format);
00547 
00548         ReferenceCounting<XMLAttribute>
00549           offset = new XMLAttribute("offset",stringify(serializer.offset()));
00550         dataArray.add(offset);
00551 
00552         xmlWriter.add(dataArray);
00553         xmlWriter.closeTag();
00554 
00555         Vector<real_t> values(mesh.numberOfVertices());
00556 
00557         switch (function.type()) {
00558         case ScalarFunctionBase::femfunction: {
00559           const FEMFunctionBase& fem
00560             = static_cast<const FEMFunctionBase&>(function);
00561 
00562           if ((fem.discretizationType() == ScalarDiscretizationTypeBase::lagrangianFEM1)
00563               and (fem.baseMesh() == __mesh)) {
00564             for (size_t i=0; i<mesh.numberOfVertices(); ++i) {
00565               values[i] = fem[i];
00566             }
00567             break;
00568           }
00569         }
00570         default: {
00571           for (size_t i=0; i<mesh.numberOfVertices(); ++i) {
00572             const Vertex& x = mesh.vertex(i);
00573             values[i] = function(x);
00574           }
00575         }
00576         }
00577         serializer.add(values);
00578       }
00579     }
00580 
00581     for (size_t i=0; i<__fieldList.size(); ++i) {
00582 
00583       const FieldOfScalarFunction& field = *__fieldList[i];
00584 
00585       XMLTag dataArray("DataArray");
00586       ReferenceCounting<XMLAttribute> type
00587         = new XMLAttribute("type","Float64");
00588       dataArray.add(type);
00589       ReferenceCounting<XMLAttribute> name
00590         = new XMLAttribute("Name",stringify(field));
00591       dataArray.add(name);
00592       ReferenceCounting<XMLAttribute>
00593         nbComponent = new XMLAttribute("NumberOfComponents",
00594                                        stringify(field.numberOfComponents()));
00595       dataArray.add(nbComponent);
00596 
00597       Vector<real_t> values(field.numberOfComponents()*__mesh->numberOfVertices());
00598 
00599       this->__fillCrossedComponent(field,values);
00600       if (not this->__binary) {
00601         ReferenceCounting<XMLAttribute> format
00602           = new XMLAttribute("format","ascii");
00603         dataArray.add(format);
00604         xmlWriter.add(dataArray);
00605 
00606 
00607         for (size_t i=0; i<values.size(); ++i) {
00608           xmlWriter.insert(values[i]);
00609         }
00610 
00611         xmlWriter.insertNewLine();
00612         xmlWriter.closeTag();
00613       } else {
00614         ReferenceCounting<XMLAttribute>
00615           format = new XMLAttribute("format","appended");
00616         dataArray.add(format);
00617 
00618         ReferenceCounting<XMLAttribute>
00619           offset = new XMLAttribute("offset",stringify(serializer.offset()));
00620         dataArray.add(offset);
00621 
00622         xmlWriter.add(dataArray);
00623         xmlWriter.closeTag();
00624 
00625         serializer.add(values);
00626       }
00627     }
00628 
00629     xmlWriter.closeTag();
00630   }
00631 
00632   if (this->__binary) {
00633     xmlWriter.closeTag();
00634     xmlWriter.closeTag();
00635     {
00636       XMLTag appended("AppendedData");
00637 
00638       ReferenceCounting<XMLAttribute>
00639         encoding = new XMLAttribute("encoding","raw");
00640 
00641       appended.add(encoding);
00642       xmlWriter.add(appended);
00643  
00644       xmlWriter.insertUnderscore();
00645 
00646       file << serializer;
00647 
00648       xmlWriter.insertNewLine();
00649     }
00650   }
00651 }

Here is the call graph for this function:

void WriterVTK::__fillCrossedComponent ( const FieldOfScalarFunction field,
Vector< real_t > &  values 
) const [private]

Fills crossed component

Parameters:
field the field that will have its component crossed
values values vector

Definition at line 154 of file WriterVTK.cpp.

References WriterBase::__mesh, ASSERT, FEMFunctionBase::baseMesh(), Mesh::cartesianHexahedraMesh, FEMFunctionBase::discretizationType(), ScalarFunctionBase::femfunction, FieldOfScalarFunction::function(), ScalarDiscretizationTypeBase::lagrangianFEM1, FieldOfScalarFunction::numberOfComponents(), Structured3DMeshShape::nx(), Structured3DMeshShape::ny(), Structured3DMeshShape::nz(), Structured3DMesh::shape(), Vector< T >::size(), ScalarFunctionBase::type(), FEMFunctionBase::values(), and Structured3DMesh::vertex().

Referenced by __proceed().

00156 {
00157   const size_t numberOfComponents = field.numberOfComponents();
00158   ASSERT(values.size() == __mesh->numberOfVertices()*numberOfComponents);
00159 
00160   switch (__mesh->type()) {
00161   case Mesh::cartesianHexahedraMesh: {
00162     const Structured3DMesh& mesh = dynamic_cast<const Structured3DMesh&>(*__mesh);
00163     for (size_t l = 0; l<numberOfComponents; ++l) {
00164       const ScalarFunctionBase& function = *field.function(l);
00165 
00166       switch (function.type()) {
00167       case ScalarFunctionBase::femfunction: {
00168         const FEMFunctionBase& fem
00169           = static_cast<const FEMFunctionBase&>(function);
00170 
00171         if ((fem.discretizationType() == ScalarDiscretizationTypeBase::lagrangianFEM1)
00172             and (fem.baseMesh() == __mesh)) {
00173           size_t position = 0;
00174           for (size_t k=0; k<mesh.shape().nz(); ++k)
00175             for (size_t j=0; j<mesh.shape().ny(); ++j)
00176               for (size_t i=0; i<mesh.shape().nx(); ++i) {
00177                 const size_t pointNumber = mesh.shape()(i,j,k);
00178                 values[position*numberOfComponents+l] = fem[pointNumber];
00179                 position++;
00180               }
00181           break;
00182         }
00183       }
00184       default: {
00185         size_t position = 0;
00186         for (size_t k=0; k<mesh.shape().nz(); ++k)
00187           for (size_t j=0; j<mesh.shape().ny(); ++j)
00188             for (size_t i=0; i<mesh.shape().nx(); ++i) {
00189               const Vertex& x = mesh.vertex(i,j,k);
00190               values[position*numberOfComponents+l] = function(x);
00191               position++;
00192             }
00193       }
00194       }
00195     }
00196     break;
00197   }
00198   default: {
00199     for (size_t i = 0; i<numberOfComponents; ++i) {
00200       const ScalarFunctionBase& function = *field.function(i);
00201 
00202       switch (function.type()) {
00203       case ScalarFunctionBase::femfunction: {
00204         const FEMFunctionBase& fem
00205           = static_cast<const FEMFunctionBase&>(function);
00206         if ((fem.baseMesh() == __mesh) and
00207             ((fem.discretizationType() == ScalarDiscretizationTypeBase::lagrangianFEM1))) {
00208           for (size_t j=0; j<fem.values().size(); ++j) {
00209             values[numberOfComponents*j+i] = fem[j];
00210           }
00211           break;
00212         } // if not continues the standard method
00213       }
00214       default: {
00215         for (size_t j=0; j<__mesh->numberOfVertices(); ++j) {
00216           const TinyVector<3,real_t>& x = __mesh->vertex(j);
00217           values[numberOfComponents*j+i] = function(x);
00218         }
00219       }
00220       }
00221     }
00222   }
00223   }
00224 }

Here is the call graph for this function:

void WriterVTK::proceed (  )  const [virtual]

Save the data to the file

Implements WriterBase.

Definition at line 896 of file WriterVTK.cpp.

References WriterBase::__mesh, Mesh::cartesianHexahedraMesh, Mesh::hexahedraMesh, ErrorHandler::normal, Mesh::octreeMesh, Mesh::spectralMesh, Mesh::surfaceMeshQuadrangles, Mesh::surfaceMeshTriangles, and Mesh::tetrahedraMesh.

00897 {
00898   switch (__mesh->type()) {
00899   case Mesh::cartesianHexahedraMesh: {
00900     this->__proceed<Structured3DMesh>();
00901     break;
00902   }
00903   case Mesh::hexahedraMesh: {
00904     this->__proceed<MeshOfHexahedra>();
00905     break;
00906   }
00907   case Mesh::octreeMesh: {
00908     this->__proceed<OctreeMesh>();
00909     break;
00910   }
00911   case Mesh::tetrahedraMesh: {
00912     this->__proceed<MeshOfTetrahedra>();
00913     break;
00914   }
00915   case Mesh::spectralMesh: {
00916     this->__proceed<SpectralMesh>();
00917     break;
00918   }
00919   case Mesh::surfaceMeshTriangles: {
00920     this->__proceed<SurfaceMeshOfTriangles>();
00921     break;
00922   }
00923   case Mesh::surfaceMeshQuadrangles: {
00924     this->__proceed<SurfaceMeshOfQuadrangles>();
00925     break;
00926   }
00927   default: {
00928     throw ErrorHandler(__FILE__,__LINE__,
00929                        "cannot save this mesh type to VTK format",
00930                        ErrorHandler::normal);
00931   }
00932   }
00933 }

void WriterBase::add ( ConstReferenceCounting< ScalarFunctionBase function  )  [inherited]

Adds a function to the list of functions

Parameters:
function given function

Definition at line 32 of file WriterBase.cpp.

References WriterBase::__scalarFunctionList.

00033 {
00034   __scalarFunctionList.push_back(function);
00035 }

void WriterBase::add ( ConstReferenceCounting< FieldOfScalarFunction field  )  [inherited]

Adds a field to the list of fields

Parameters:
field given field

Definition at line 38 of file WriterBase.cpp.

References WriterBase::__fieldList.

00039 {
00040   __fieldList.push_back(field);
00041 }


Member Data Documentation

const bool WriterVTK::__binary [private]

binary format

Definition at line 66 of file WriterVTK.hpp.

Referenced by __proceed().

const std::string WriterBase::__filename [protected, inherited]

name of the file

Definition at line 50 of file WriterBase.hpp.

Referenced by __proceed(), WriterMedit::__proceedData(), WriterMedit::__proceedMesh(), and WriterRaw::proceed().

const FileDescriptor& WriterBase::__fileDescriptor [protected, inherited]

describes file type

Definition at line 53 of file WriterBase.hpp.

Referenced by WriterRaw::__saveScalarFunction().

const std::string WriterBase::__CR [protected, inherited]

type of carriage return for text files

Definition at line 54 of file WriterBase.hpp.

Referenced by WriterMedit::__proceedData(), WriterMedit::__proceedMesh(), WriterMedit::__saveElements(), and WriterRaw::__saveScalarFunction().

FieldList WriterBase::__fieldList [protected, inherited]

the function list

Definition at line 59 of file WriterBase.hpp.

Referenced by __proceed(), WriterMedit::__proceedData(), WriterBase::add(), WriterRaw::proceed(), and WriterMedit::proceed().


The documentation for this class was generated from the following files:

Generated on Wed Nov 19 00:18:14 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6