Skip to content
Snippets Groups Projects
components.C 3.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*---------------------------------------------------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     |
    
    Henry Weller's avatar
    Henry Weller committed
        \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
    
         \\/     M anipulation  |
    -------------------------------------------------------------------------------
    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 <http://www.gnu.org/licenses/>.
    
    
    \*---------------------------------------------------------------------------*/
    
    #include "components.H"
    #include "addToRunTimeSelectionTable.H"
    
    // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
    
    namespace Foam
    {
        namespace calcTypes
        {
            defineTypeNameAndDebug(components, 0);
            addToRunTimeSelectionTable(calcType, components, dictionary);
        }
    }
    
    
    // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
    
    Foam::calcTypes::components::components()
    :
        calcType()
    {}
    
    
    // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
    
    Foam::calcTypes::components::~components()
    {}
    
    
    // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
    
    void Foam::calcTypes::components::init()
    {
    
    Andrew Heather's avatar
    Andrew Heather committed
        argList::validArgs.append("components");
    
    }
    
    
    void Foam::calcTypes::components::preCalc
    (
        const argList& args,
        const Time& runTime,
        const fvMesh& mesh
    )
    
    Andrew Heather's avatar
    Andrew Heather committed
    {}
    
    
    
    void Foam::calcTypes::components::calc
    (
        const argList& args,
        const Time& runTime,
        const fvMesh& mesh
    )
    {
    
    Andrew Heather's avatar
    Andrew Heather committed
    
        IOobject fieldHeader
        (
            fieldName,
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ
        );
    
        // Check field exists
        if (fieldHeader.headerOk())
    
    Andrew Heather's avatar
    Andrew Heather committed
            bool processed = false;
    
            writeComponentFields<vector>(fieldHeader, mesh, processed);
            writeComponentFields<sphericalTensor>(fieldHeader, mesh, processed);
            writeComponentFields<symmTensor>(fieldHeader, mesh, processed);
            writeComponentFields<tensor>(fieldHeader, mesh, processed);
    
            if (!processed)
    
    Andrew Heather's avatar
    Andrew Heather committed
                FatalError
                    << "Unable to process " << fieldName << nl
                    << "No call to components for fields of type "
                    << fieldHeader.headerClassName() << nl << nl
                    << exit(FatalError);
    
    Andrew Heather's avatar
    Andrew Heather committed
        else
        {
            Info<< "    No " << fieldName << endl;
        }
    
    }
    
    
    // ************************************************************************* //