diff options
author | tradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef> | 2004-08-30 16:55:16 +0000 |
---|---|---|
committer | tradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef> | 2004-08-30 16:55:16 +0000 |
commit | 7583c1f9d2bcab7833f3ad741e089e4a96918fac (patch) | |
tree | c001bd536b73f019c1b47bc6fea11317c6dd3441 /src/AMRHierLib/Vol2IEEEIO.cc | |
parent | 4bc44285491ac553e14b26d6888104c0d7e18f54 (diff) |
Bring development version in sync with stable version from /packages/FlexIO.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusExternal/FlexIO/trunk@68 21a6bef8-4479-4f54-8f8d-0db94a2919ef
Diffstat (limited to 'src/AMRHierLib/Vol2IEEEIO.cc')
-rw-r--r-- | src/AMRHierLib/Vol2IEEEIO.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/AMRHierLib/Vol2IEEEIO.cc b/src/AMRHierLib/Vol2IEEEIO.cc new file mode 100644 index 0000000..6247eb9 --- /dev/null +++ b/src/AMRHierLib/Vol2IEEEIO.cc @@ -0,0 +1,66 @@ +//------------------------------------------------------------------------------ +// +// Project: AMR Visualization +// Module: $RCSfile$ +// Language: C++ +// Date: $Date$ +// Author: $Author$ +// Version: $Revision$ +// +//------------------------------------------------------------------------------ + +#include <IO.hh> +#include <IEEEIO.hh> +#include <fstream> +#include <zlib.h> +#include <iostream> + +int main(int argc, char* argv[]) +{ + if (argc!=3) { + std::cerr << "Usage: " << argv[0] << " <volFilename> <ieeeioFilename>" << std::endl; + return 42; + } + + gzFile in; + if ((in = gzopen(argv[1], "rb"))) { + int dims[3]; + double delta[3]; + bool success = true; + success = success && gzread(in, &dims[0], sizeof(int)) == sizeof(int); + success = success && gzread(in, &dims[1], sizeof(int)) == sizeof(int); + success = success && gzread(in, &dims[2], sizeof(int)) == sizeof(int); + success = success && gzread(in, &delta[0], sizeof(double)) == sizeof(double); + success = success && gzread(in, &delta[1], sizeof(double)) == sizeof(double); + success = success && gzread(in, &delta[2], sizeof(double)) == sizeof(double); + if (success) { + unsigned char* bytedata = new unsigned char[dims[0]*dims[1]*dims[2]]; + if (gzread(in, bytedata, dims[0]*dims[1]*dims[2]*sizeof(unsigned char)) == dims[0]*dims[1]*dims[2]*sizeof(unsigned char)) { + float *data = new float[dims[0]*dims[1]*dims[2]]; + for (int i=0; i<dims[0]*dims[1]*dims[2]; ++i) { + data[i] = double(bytedata[i]); + } + IObase *writer = new IEEEIO(argv[2], IObase::Create); + int rank = 3; + writer->write(IObase::Float32, rank, dims, data); + double origin[3] = {0.0, 0.0, 0.0}; + writer->writeAttribute("origin", IObase::Float64,3,origin); + writer->writeAttribute("min_ext", IObase::Float64,3,origin); + double maxExt[3] = {(dims[0]+1)*delta[0],(dims[1]+1)*delta[1],(dims[2]+1)*delta[2]}; + writer->writeAttribute("max_ext", IObase::Float64,3,maxExt); + int level = 0; + writer->writeAttribute("level", IObase::Int32, 1, &level); + writer->writeAttribute("delta", IObase::Float64, 3, delta); + int refine[3] = { 1, 1, 1 }; + writer->writeAttribute("spatial_refinement", IObase::Int32, 3, refine); + writer->writeAttribute("grid_placement_refinement", IObase::Int32, 3, refine); + int iorigin[3] = { 0, 0, 0 }; + writer->writeAttribute("iorigin", IObase::Int32,3,iorigin); + delete data; + delete writer; + } + delete bytedata; + } + gzclose(in); + } +} |