ReactingMultiphaseLookupTableInjection.H 6.34 KB
Newer Older
1
2
3
4
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
5
    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
6
7
8
9
10
     \\/     M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

11
12
13
14
    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.
15
16
17
18
19
20
21

    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
22
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
23
24
25
26

Class
    Foam::ReactingMultiphaseLookupTableInjection

27
28
29
Group
    grpLagrangianIntermediateInjectionSubModels

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Description
    Particle injection sources read from look-up table. Each row corresponds to
    an injection site.

    (
       (x y z) (u v w) d rho mDot T cp (Y0..Y2) (Yg0..YgN) (Yl0..YlN) (Ys0..YsN)
       (x y z) (u v w) d rho mDot T cp (Y0..Y2) (Yg0..YgN) (Yl0..YlN) (Ys0..YsN)
       ...
       (x y z) (u v w) d rho mDot T cp (Y0..Y2) (Yg0..YgN) (Yl0..YlN) (Ys0..YsN)
    );

    where:
        x, y, z  = global cartesian co-ordinates [m]
        u, v, w  = global cartesian velocity components [m/s]
        d        = diameter [m]
        rho      = density [kg/m3]
46
        mDot     = mass flow rate [kg/s]
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
        T        = temperature [K]
        cp       = specific heat capacity [J/kg/K]
        Y(3)     = total mass fraction of gas (Y0), liquid (Y1), solid (Y3)
        Yg(Ngas) = mass fractions of gaseous components
        Yl(Nliq) = mass fractions of liquid components
        Ys(Nsld) = mass fractions of solid components

SourceFiles
    ReactingMultiphaseLookupTableInjection.C

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

#ifndef ReactingMultiphaseLookupTableInjection_H
#define ReactingMultiphaseLookupTableInjection_H

#include "InjectionModel.H"
#include "reactingMultiphaseParcelInjectionDataIOList.H"

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

namespace Foam
{

/*---------------------------------------------------------------------------*\
           Class ReactingMultiphaseLookupTableInjection Declaration
\*---------------------------------------------------------------------------*/

template<class CloudType>
class ReactingMultiphaseLookupTableInjection
:
    public InjectionModel<CloudType>
{
    // Private data

        //- Name of file containing injector/parcel data
        const word inputFileName_;

        //- Injection duration - common to all injection sources
85
        scalar duration_;
86
87

        //- Number of parcels per injector - common to all injection sources
88
        const scalar parcelsPerSecond_;
89

90
91
92
        //- Flag to indicate to randomise injection positions
        bool randomise_;

93
94
95
        //- List of injectors
        reactingMultiphaseParcelInjectionDataIOList injectors_;

96
97
98
99
100
101
102
103
        //- List of cell labels corresoponding to injector positions
        labelList injectorCells_;

        //- List of tetFace labels corresoponding to injector positions
        labelList injectorTetFaces_;

        //- List of tetPt labels corresoponding to injector positions
        labelList injectorTetPts_;
104
105
106
107
108


public:

    //- Runtime type information
109
    TypeName("reactingMultiphaseLookupTableInjection");
110
111
112
113
114
115
116
117


    // Constructors

        //- Construct from dictionary
        ReactingMultiphaseLookupTableInjection
        (
            const dictionary& dict,
118
119
            CloudType& owner,
            const word& modelName
120
121
        );

122
123
124
125
126
127
128
        //- Construct copy
        ReactingMultiphaseLookupTableInjection
        (
            const ReactingMultiphaseLookupTableInjection<CloudType>& im
        );

        //- Construct and return a clone
129
        virtual autoPtr<InjectionModel<CloudType>> clone() const
130
        {
131
            return autoPtr<InjectionModel<CloudType>>
132
133
134
135
136
            (
                new ReactingMultiphaseLookupTableInjection<CloudType>(*this)
            );
        }

137
138
139
140
141
142
143

    //- Destructor
    virtual ~ReactingMultiphaseLookupTableInjection();


    // Member Functions

144
145
146
        //- Set injector locations when mesh is updated
        virtual void updateMesh();

147
148
149
        //- Return the end-of-injection time
        scalar timeEnd() const;

150
151
152
153
154
155
        //- Number of parcels to introduce relative to SOI
        virtual label parcelsToInject(const scalar time0, const scalar time1);

        //- Volume of parcels to introduce relative to SOI
        virtual scalar volumeToInject(const scalar time0, const scalar time1);

156
157
158

        // Injection geometry

159
            //- Set the injection position and owner cell, tetFace and tetPt
160
161
162
163
164
165
            virtual void setPositionAndCell
            (
                const label parcelI,
                const label nParcels,
                const scalar time,
                vector& position,
166
                label& cellOwner,
167
                label& tetFacei,
Henry Weller's avatar
Henry Weller committed
168
                label& tetPti
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
            );

            //- Set the parcel properties
            virtual void setProperties
            (
                const label parcelI,
                const label nParcels,
                const scalar time,
                typename CloudType::parcelType& parcel
            );

            //- Flag to identify whether model fully describes the parcel
            virtual bool fullyDescribed() const;

            //- Return flag to identify whether or not injection of parcelI is
            //  permitted
            virtual bool validInjection(const label parcelI);
};


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

} // End namespace Foam

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

#ifdef NoRepository
196
    #include "ReactingMultiphaseLookupTableInjection.C"
197
198
199
200
201
202
203
#endif

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

#endif

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