/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | foam-extend: Open Source CFD \\ / O peration | Version: 4.1 \\ / A nd | Web: http://www.foam-extend.org \\/ M anipulation | For copyright notice see file Copyright ------------------------------------------------------------------------------- License This file is part of foam-extend. foam-extend 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. foam-extend 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 foam-extend. If not, see . Application foamToEnsightParts Description Translates foam data to Ensight format. An Ensight part is created for each cellZone and patch. Usage - foamToEnsightParts [OPTION] \n Translates foam data to Ensight format @param -ascii \n Write Ensight data in ASCII format instead of "C Binary" @param -noZero \n Exclude the often incomplete initial conditions. @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. 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" using namespace Foam; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Main program: int main(int argc, char *argv[]) { // enable -constant // probably don't need -noZero though, since the fields are vetted // afterwards anyhow timeSelector::addOptions(true, false); argList::noParallel(); argList::validOptions.insert("ascii", ""); argList::validOptions.insert("index", "start"); argList::validOptions.insert("noMesh", ""); // 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" # include "createTime.H" // get times list instantList timeDirs = timeSelector::select0(runTime, args); // default to binary output, unless otherwise specified IOstream::streamFormat format = IOstream::BINARY; if (args.optionFound("ascii")) { format = IOstream::ASCII; } // control for renumbering iterations bool optIndex = false; label indexingNumber = 0; if (args.optionFound("index")) { optIndex = true; indexingNumber = args.optionRead