FieldFieldReuseFunctions.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2011-2016 OpenFOAM Foundation
9 Copyright (C) 2018-2019 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27\*---------------------------------------------------------------------------*/
28
29#ifndef FieldFieldReuseFunctions_H
30#define FieldFieldReuseFunctions_H
31
32// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
33
34namespace Foam
35{
36
37// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
38
39template<template<class> class Field, class TypeR, class Type1>
41{
43 (
45 )
46 {
48 }
49};
50
51
52template<template<class> class Field, class TypeR>
53struct reuseTmpFieldField<Field, TypeR, TypeR>
54{
56 (
57 const tmp<FieldField<Field, TypeR>>& tf1,
58 const bool initCopy = false
59 )
60 {
61 if (tf1.isTmp())
62 {
63 return tf1;
64 }
65
67
68 if (initCopy)
69 {
70 rtf.ref() = tf1();
71 }
72
73 return rtf;
74 }
75};
76
77
78//- Global function forwards to reuseTmpFieldField::New
79template<template<class> class Field, class TypeR>
81(
82 const tmp<FieldField<Field, TypeR>>& tf1,
83 const bool initCopy = false
84)
85{
87}
88
89
90template
91<
92 template<class> class Field,
93 class TypeR,
94 class Type1,
95 class Type12,
96 class Type2
97>
99{
101 (
102 const tmp<FieldField<Field, Type1>>& tf1,
103 const tmp<FieldField<Field, Type2>>& tf2
104 )
105 {
107 }
108};
109
110
111template<template<class> class Field, class TypeR, class Type1, class Type12>
112struct reuseTmpTmpFieldField<Field, TypeR, Type1, Type12, TypeR>
113{
115 (
116 const tmp<FieldField<Field, Type1>>& tf1,
117 const tmp<FieldField<Field, TypeR>>& tf2
118 )
119 {
120 if (tf2.isTmp())
121 {
122 return tf2;
123 }
124
126 }
127};
128
129
130template<template<class> class Field, class TypeR, class Type2>
131struct reuseTmpTmpFieldField<Field, TypeR, TypeR, TypeR, Type2>
132{
134 (
135 const tmp<FieldField<Field, TypeR>>& tf1,
136 const tmp<FieldField<Field, Type2>>& tf2
137 )
138 {
139 if (tf1.isTmp())
140 {
141 return tf1;
142 }
143
145 }
146};
147
148
149template<template<class> class Field, class TypeR>
150struct reuseTmpTmpFieldField<Field, TypeR, TypeR, TypeR, TypeR>
151{
153 (
154 const tmp<FieldField<Field, TypeR>>& tf1,
155 const tmp<FieldField<Field, TypeR>>& tf2
156 )
157 {
158 if (tf1.isTmp())
159 {
160 return tf1;
161 }
162 else if (tf2.isTmp())
163 {
164 return tf2;
165 }
166
168 }
169};
170
171
172// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
173
174} // End namespace Foam
175
176// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
177
178#endif
179
180// ************************************************************************* //
A field of fields is a PtrList of fields with reference counting.
Definition: FieldField.H:80
static tmp< FieldField< Field, Type > > NewCalculatedType(const FieldField< Field, Type2 > &ff)
Return a pointer to a new calculatedFvPatchFieldField created on.
Definition: FieldField.C:198
Generic templated field type.
Definition: Field.H:82
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
Definition: Time.C:717
A class for managing temporary objects.
Definition: tmp.H:65
Namespace for OpenFOAM.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
static tmp< FieldField< Field, TypeR > > New(const tmp< FieldField< Field, TypeR > > &tf1, const bool initCopy=false)
static tmp< FieldField< Field, TypeR > > New(const tmp< FieldField< Field, Type1 > > &tf1)
static tmp< FieldField< Field, TypeR > > New(const tmp< FieldField< Field, Type1 > > &tf1, const tmp< FieldField< Field, TypeR > > &tf2)
static tmp< FieldField< Field, TypeR > > New(const tmp< FieldField< Field, TypeR > > &tf1, const tmp< FieldField< Field, Type2 > > &tf2)
static tmp< FieldField< Field, TypeR > > New(const tmp< FieldField< Field, TypeR > > &tf1, const tmp< FieldField< Field, TypeR > > &tf2)
static tmp< FieldField< Field, TypeR > > New(const tmp< FieldField< Field, Type1 > > &tf1, const tmp< FieldField< Field, Type2 > > &tf2)