summaryrefslogtreecommitdiff
path: root/src/io/blockVtkWriter3D.h
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-06-24 14:43:36 +0200
committerAdrian Kummerlaender2019-06-24 14:43:36 +0200
commit94d3e79a8617f88dc0219cfdeedfa3147833719d (patch)
treec1a6894679563e271f5c6ea7a17fa3462f7212a3 /src/io/blockVtkWriter3D.h
downloadgrid_refinement_openlb-94d3e79a8617f88dc0219cfdeedfa3147833719d.tar
grid_refinement_openlb-94d3e79a8617f88dc0219cfdeedfa3147833719d.tar.gz
grid_refinement_openlb-94d3e79a8617f88dc0219cfdeedfa3147833719d.tar.bz2
grid_refinement_openlb-94d3e79a8617f88dc0219cfdeedfa3147833719d.tar.lz
grid_refinement_openlb-94d3e79a8617f88dc0219cfdeedfa3147833719d.tar.xz
grid_refinement_openlb-94d3e79a8617f88dc0219cfdeedfa3147833719d.tar.zst
grid_refinement_openlb-94d3e79a8617f88dc0219cfdeedfa3147833719d.zip
Initialize at openlb-1-3
Diffstat (limited to 'src/io/blockVtkWriter3D.h')
-rw-r--r--src/io/blockVtkWriter3D.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/io/blockVtkWriter3D.h b/src/io/blockVtkWriter3D.h
new file mode 100644
index 0000000..a7b6f56
--- /dev/null
+++ b/src/io/blockVtkWriter3D.h
@@ -0,0 +1,88 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2014 Albert Mink, Mathias J. Krause
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ * <http://www.openlb.net/>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+/** \file
+ * A method to write vtk data for block geometries
+ * (only for uniform grids) -- header file.
+ */
+
+#ifndef BLOCK_VTK_WRITER_3D_H
+#define BLOCK_VTK_WRITER_3D_H
+
+#include "io/ostreamManager.h"
+#include "functors/lattice/blockBaseF3D.h"
+
+namespace olb {
+
+/** BlockVTKwriter3D writes any BLockF3D to vtk-based output files
+ *
+ * One can add functors via addFunctors. To write added functors
+ * call write(int iT=0).
+ *
+ * To write a functor without adding him, call
+ * call write(BlockF3D<T>& f, int iT).
+ *
+ * Default output type is binary, to change it have a look on the
+ * constructor.
+ */
+template<typename T>
+class BlockVTKwriter3D {
+public:
+ BlockVTKwriter3D( std::string name, bool binary=true );
+ ~BlockVTKwriter3D();
+ /// method calls preamble(), pointData(), data() and coresponding
+ /// closing methods.
+ /// writes given functor
+ void write( BlockF3D<T>& f, int iT=0 );
+ /// writes functors stored at pointerVec
+ void write( int iT=0 );
+ /// put functor to _pointerVec
+ /// to simplify writing process of several functors
+ void addFunctor( BlockF3D<T>& f );
+ /// to clear stored functors
+ void clearAddedFunctors();
+private:
+ /// writes <VTKFile .... >, <ImageData ... >, <Piece ... > and <PointData Scalar="..." >
+ void preamble( const std::string& fullName, int nx, int ny, int nz,
+ T originX=0, T originY=0, T originZ=0);
+ /// writes </PointData>, </Piece>, </ImageData> and </VTKFile>
+ void closePreamble( const std::string& fullName );
+ /// writes data of given functor f as ASCII
+ void writeRawData( const std::string& fullNameVti, BlockF3D<T>& f, int nx, int ny, int nz );
+ /// writes data of given functor f as binary
+ void writeRawDataBinary( const std::string& fullNameVti, BlockF3D<T>& f,
+ int nx, int ny, int nz );
+private:
+ mutable OstreamManager clout;
+ /// determines the name of .vti per iT
+ std::string _name;
+ /// default is true, may be changed at constructor
+ bool _binary;
+ /// holds added functor, to simplify the use of write function
+ std::vector< BlockF3D<T>* > _pointerVec;
+};
+
+} // namespace olb
+
+
+#endif