/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM 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 3 of the License, or (at your option) any later version. OpenFOAM 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 OpenFOAM. If not, see . Application foamToEnsightParts Group grpPostProcessingUtilities Description Translates OpenFOAM data to Ensight format. An Ensight part is created for each cellZone and patch. Usage - foamToEnsightParts [OPTION] \n Translates OpenFOAM data to Ensight format \param -ascii \n Write Ensight data in ASCII format instead of "C Binary" \param -name \\n define sub-directory name to use for Ensight data (default: "Ensight") \param -noZero \n Exclude the often incomplete initial conditions. \param -noLagrangian \n Suppress writing lagrangian positions and fields. \param -index \\n Ignore the time index contained in the time file and use a simple indexing when creating the \c Ensight/data/######## files. \param -noMesh \n Suppress writing the geometry. Can be useful for converting partial results for a static geometry. \param -width \\n width of Ensight data subdir Note - no parallel data. - writes to \a Ensight directory to avoid collisions with foamToEnsight. \*---------------------------------------------------------------------------*/ #include "argList.H" #include "timeSelector.H" #include "volFields.H" #include "OFstream.H" #include "IOmanip.H" #include "IOobjectList.H" #include "scalarIOField.H" #include "tensorIOField.H" #include "ensightParts.H" #include "ensightOutputFunctions.H" #include "memInfo.H" using namespace Foam; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) { // enable -constant // probably don't need -withZero though, since the fields are vetted // afterwards anyhow timeSelector::addOptions(true, false); argList::noParallel(); argList::addBoolOption ( "ascii", "write in ASCII format instead of 'C Binary'" ); argList::addOption ( "index", "start", "ignore the time index contained in the uniform/time file " "and use simple indexing when creating the files" ); argList::addBoolOption ( "noLagrangian", "suppress writing lagrangian positions and fields" ); argList::addBoolOption ( "noMesh", "suppress writing the geometry. " "Can be useful for converting partial results for a static geometry" ); argList::addOption ( "name", "subdir", "define sub-directory name to use for Ensight data " "(default: \"Ensight\")" ); argList::addOption ( "width", "n", "width of Ensight data subdir" ); // the volume field types that we handle wordHashSet volFieldTypes; volFieldTypes.insert(volScalarField::typeName); volFieldTypes.insert(volVectorField::typeName); volFieldTypes.insert(volSphericalTensorField::typeName); volFieldTypes.insert(volSymmTensorField::typeName); volFieldTypes.insert(volTensorField::typeName); // the lagrangian field types that we handle wordHashSet cloudFieldTypes; cloudFieldTypes.insert(scalarIOField::typeName); cloudFieldTypes.insert(vectorIOField::typeName); cloudFieldTypes.insert(tensorIOField::typeName); const char* geometryName = "geometry"; #include "setRootCase.H" cpuTime timer; memInfo mem; Info<< "Initial memory " << mem.update().size() << " kB" << endl; #include "createTime.H" // get times list instantList timeDirs = timeSelector::select0(runTime, args); // default to binary output, unless otherwise specified const IOstream::streamFormat format = ( args.optionFound("ascii") ? IOstream::ASCII : IOstream::BINARY ); // control for renumbering iterations label indexingNumber = 0; const bool optIndex = args.optionReadIfPresent("index", indexingNumber); const bool noLagrangian = args.optionFound("noLagrangian"); // always write the geometry, unless the -noMesh option is specified bool optNoMesh = args.optionFound("noMesh"); // adjust output width if (args.optionFound("width")) { ensightFile::subDirWidth(args.optionRead