ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / finiteVolume / cfdTools / general / fieldSources / basicSource / explicitSource / explicitSource.H
blob9b88fac753e69c088d0b920d2d2928eb9681e772
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::explicitSource
27 Description
28     Explicit source.
30     Sources described by:
32     explicitSourceCoeffs
33     {
34         points            // list of points when selectionMode = points
35         (
36             (-0.088 0.007 -0.02)
37             (-0.028 0.007 -0.02)
38         );
39         volumeMode          specific;  //absolute
40         fieldData            // field data - usage for multiple fields
41         {
42             k   30.7;
43             epsilon  1.5;
44         }
45     }
47 SourceFiles
48     explicitSource.C
50 \*---------------------------------------------------------------------------*/
52 #ifndef explicitSource_H
53 #define explicitSource_H
55 #include "cellSet.H"
56 #include "volFieldsFwd.H"
57 #include "DimensionedField.H"
58 #include "basicSource.H"
60 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
62 namespace Foam
65 /*---------------------------------------------------------------------------*\
66                        Class explicitSource Declaration
67 \*---------------------------------------------------------------------------*/
69 class explicitSource
71     public basicSource
73     // Private data
75         //- List of field types
76         HashTable<scalar> scalarFields_;
77         HashTable<vector> vectorFields_;
79         //- Add source to matrix
80         template<class Type>
81         void addSource(fvMatrix<Type>&, const Type&) const;
83         //- Add field names and values to field table for types.
84         template<class Type>
85         void addField
86         (
87             HashTable<Type>& fields,
88             const wordList& fieldTypes,
89             const wordList& fieldNames,
90             const dictionary& dict
91         );
94 public:
96     // Public data
98         //- Enumeration for volume types
99         enum volumeModeType
100         {
101             vmAbsolute,
102             vmSpecific
103         };
105         //- Word list of volume mode type names
106         static const NamedEnum<volumeModeType, 2> volumeModeTypeNames_;
109 protected:
111     // Protected data
113          //- Sub dictionary for time activated explicit sources
114         const dictionary& dict_;
116         //- Volume mode
117         volumeModeType volumeMode_;
120     // Protected functions
122         //- Set the local field data
123         void setFieldData(const dictionary& dict);
126 public:
128     //- Runtime type information
129     TypeName("explicitSource");
132     // Constructors
134         //- Construct from components
135         explicitSource
136         (
137             const word& name,
138             const word& modelType,
139             const dictionary& dict,
140             const fvMesh& mesh
141         );
143         //- Return clone
144         autoPtr<explicitSource> clone() const
145         {
146             notImplemented
147             (
148                 "autoPtr<explicitSource> clone() const"
149             );
150             return autoPtr<explicitSource>(NULL);
151         }
155     // Member Functions
157         // Access
159             //- Return const access to the volume mode
160             inline const volumeModeType& volumeMode() const;
163         // Edit
165             //- Return access to the volume mode
166             inline volumeModeType& volumeMode();
168             //- Return points
169             inline  const List<point>& points() const;
172         // Evaluation
174             //-Source term to fvMatrix<vector>
175             virtual void addSu(fvMatrix<vector>& UEqn);
177             //-Source term to fvMatrix<scalar>
178             virtual void addSu(fvMatrix<scalar>& UEqn);
181         // I-O
183             //- Write the source properties
184             virtual void writeData(Ostream&) const;
186             //- Read fieldData in sub-dictionary
187             virtual bool read(const dictionary& dict);
189             //- Ostream operator
190             friend Ostream& operator<<
191             (
192                 Ostream& os,
193                 const explicitSource& source
194             );
198 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
200 } // End namespace Foam
202 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
204 #include "explicitSourceIO.C"
205 #include "explicitSourceI.H"
207 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
209 #ifdef NoRepository
210 #   include "explicitSourceTemplates.C"
211 #endif
213 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
215 #endif
217 // ************************************************************************* //