ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / OpenFOAM / fields / DimensionedFields / DimensionedField / SubDimensionedField.H
blobe4f69802b8f2b84fec25f429824b45e6d6902e81
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::SubDimensionedField
27 Description
28     SubDimensionedField is a DimensionedField obtained as a section of another
29     DimensionedField.
31     Thus it is itself unallocated so that no storage is allocated or
32     deallocated during its use.  To achieve this behaviour,
33     SubDimensionedField is derived from SubField rather than Field.
35 SourceFiles
36     SubDimensionedFieldI.H
38 \*---------------------------------------------------------------------------*/
40 #ifndef SubDimensionedField_H
41 #define SubDimensionedField_H
43 #include "Field.H"
44 #include "SubField.H"
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 namespace Foam
51 /*---------------------------------------------------------------------------*\
52                       Class SubDimensionedField Declaration
53 \*---------------------------------------------------------------------------*/
55 template<class Type, class GeoMesh>
56 class SubDimensionedField
58     public regIOobject,
59     public SubField<Type>
62 public:
64     // Public typedefs
66         typedef typename GeoMesh::Mesh Mesh;
67         typedef typename Field<Type>::cmptType cmptType;
70     // Constructors
72         //- Construct from a SubField
73         inline SubDimensionedField
74         (
75             const SubField<Type>& slist
76         );
78         //- Construct from a UList and size
79         inline SubDimensionedField
80         (
81             const UList<Type>& list,
82             const label subSize
83         );
85         //- Construct from a UList start and end indices
86         inline SubDimensionedField
87         (
88             const UList<Type>& list,
89             const label subSize,
90             const label startIndex
91         );
93         //- Construct as copy
94         inline SubDimensionedField
95         (
96             const SubDimensionedField<cmptType, GeoMesh>& sfield
97         );
100     // Member functions
102         //- Return a null SubDimensionedField
103         static inline const SubDimensionedField<Type, GeoMesh>& null();
105         //- Return a component field of the field
106         inline tmp<DimensionedField<cmptType, GeoMesh> > component
107         (
108             const direction
109         ) const;
111         //- Return the field transpose (only defined for second rank tensors)
112         tmp<DimensionedField<Type, GeoMesh> > T() const;
115     // Member operators
117         //- Assignment
118         inline void operator=(const SubDimensionedField<Type, GeoMesh>&);
120         //- Allow cast to a const DimensionedField<Type, GeoMesh>&
121         inline operator const DimensionedField<Type, GeoMesh>&() const;
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
127 } // End namespace Foam
129 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
131 #include "SubDimensionedFieldI.H"
133 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135 #endif
137 // ************************************************************************* //