AMIWeights.H 4.42 KB
Newer Older
1 2 3 4
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
OpenFOAM bot's avatar
OpenFOAM bot committed
5
    \\  /    A nd           | www.openfoam.com
6
     \\/     M anipulation  |
OpenFOAM bot's avatar
OpenFOAM bot committed
7 8
-------------------------------------------------------------------------------
    Copyright (C) 2018 OpenCFD Ltd.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
-------------------------------------------------------------------------------
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/>.

Class
    Foam::functionObjects::AMIWeights

Group
    grpFieldFunctionObjects

Description
33 34 35
    Reports the min/max/average AMI weights to text file and optionally
    writes VTK surfaces of the sum of the weights, and mask field for
    ACMI patches.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168

Usage
    Example of function object specification:
    \verbatim
    AMIWeights1
    {
        type        AMIWeights;
        libs        ("libfieldFunctionObjects.so");
        writeFields yes;
    }
    \endverbatim

    Where the entries comprise:
    \table
        Property     | Description             | Required    | Default value
        type         | type name: AMIWeights   | yes         |
        writeFields  | write weights as VTK fields | yes     |
    \endtable

    Output data is written to the file \<timeDir\>/AMIWeights.dat

See also
    Foam::functionObjects::fvMeshFunctionObject
    Foam::functionObjects::writeFile

SourceFiles
    AMIWeights.C
    AMIWeightsTemplates.C

\*---------------------------------------------------------------------------*/

#ifndef functionObjects_AMIWeights_H
#define functionObjects_AMIWeights_H

#include "fvMeshFunctionObject.H"
#include "writeFile.H"
#include "cyclicAMIPolyPatch.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{
namespace functionObjects
{

/*---------------------------------------------------------------------------*\
                         Class AMIWeights Declaration
\*---------------------------------------------------------------------------*/

class AMIWeights
:
    public fvMeshFunctionObject,
    public writeFile
{
protected:

    // Protected data

        //- Flag to write AMI fields (as VTK files)
        bool writeFields_;

        //- List of AMI patch IDs
        labelList patchIDs_;


    // Protected Member Functions

        //- Output file header information
        virtual void writeFileHeader(Ostream& os);

        //- Helper function to report patch information
        virtual void reportPatch(const cyclicAMIPolyPatch& pp);

        void writeWeightField
        (
            const cyclicAMIPolyPatch& cpp,
            const scalarField& weightSum,
            const word& side
        ) const;

        void writeWeightFields(const cyclicAMIPolyPatch& cpp) const;

        //- No copy construct
        AMIWeights(const AMIWeights&) = delete;

        //- No copy assignment
        void operator=(const AMIWeights&) = delete;


public:

    //- Runtime type information
    TypeName("AMIWeights");


    // Constructors

        //- Construct from Time and dictionary
        AMIWeights
        (
            const word& name,
            const Time& runTime,
            const dictionary& dict
        );


    //- Destructor
    virtual ~AMIWeights() = default;


    // Member Functions

        //- Read the field min/max data
        virtual bool read(const dictionary&);

        //- Execute, currently does nothing
        virtual bool execute();

        //- Write the AMIWeights
        virtual bool write();
};


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace functionObjects
} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#endif

// ************************************************************************* //