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

Description
    Bounday which solves the 1D steady state heat transfer equation
    through a baffle.

SourceFiles
    temperatureThermoBaffle1DFvPatchScalarField.C

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

#ifndef temperatureThermoBaffle1DFvPatchScalarField_H
#define temperatureThermoBaffle1DFvPatchScalarField_H

#include "mixedFvPatchFields.H"
#include "autoPtr.H"


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

namespace Foam
{
namespace compressible
{

/*---------------------------------------------------------------------------*\
        Class temperatureThermoBaffle1DFvPatchScalarField Declaration
\*---------------------------------------------------------------------------*/

template<class solidType>
class temperatureThermoBaffle1DFvPatchScalarField
:
    public mixedFvPatchScalarField
{
    // Private data

    class solidThermoData
    {
            // Solid thermo
            autoPtr<solidType> solidPtr_;

            // Solid dictionaries
            dictionary  transportDict_;
            dictionary  radiationDict_;
            dictionary  thermoDict_;
            dictionary  densityDict_;


    public:

        // Constructor from components
        solidThermoData(const dictionary& dict)
        :
            solidPtr_(new solidType(dict)),
79
80
81
82
            transportDict_(dict.subDict("transport")),
            radiationDict_(dict.subDict("radiation")),
            thermoDict_(dict.subDict("thermodynamics")),
            densityDict_(dict.subDict("density"))
sergio's avatar
sergio committed
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
        {}


        // Null constructor
        solidThermoData()
        :
            solidPtr_(),
            transportDict_(),
            radiationDict_(),
            thermoDict_(),
            densityDict_()
        {}


        // Destructor
        virtual ~solidThermoData()
        {}


        // Member Functions

            void write(Ostream& os) const
            {
106
                os.writeKeyword("transport");
sergio's avatar
sergio committed
107
                os << transportDict_  << nl;
108
                os.writeKeyword("radiation");
sergio's avatar
sergio committed
109
                os << radiationDict_ <<  nl;
110
                os.writeKeyword("thermodynamics");
sergio's avatar
sergio committed
111
                os << thermoDict_ << nl;
112
                os.writeKeyword("density");
sergio's avatar
sergio committed
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
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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
                os << densityDict_ << nl;
            }


            scalar K(const scalar T) const
            {
                return solidPtr_().K(T);
            }
    };


        //- Name of the temperature field
        word TName_;

        //- Baffle is activated
        bool baffleActivated_;

        //- Baffle thickness [m]
        scalarField thickness_;

        //- Superficial heat source [W/m2]
        scalarField Qs_;

        //- Solid thermo
        autoPtr<solidThermoData> solid_;


public:

    //- Runtime type information
    TypeName("compressible::temperatureThermoBaffle1D");


    // Constructors

        //- Construct from patch and internal field
        temperatureThermoBaffle1DFvPatchScalarField
        (
            const fvPatch&,
            const DimensionedField<scalar, volMesh>&
        );

        //- Construct from patch, internal field and dictionary
        temperatureThermoBaffle1DFvPatchScalarField
        (
            const fvPatch&,
            const DimensionedField<scalar, volMesh>&,
            const dictionary&
        );

        //- Construct by mapping given
        //  temperatureThermoBaffle1DFvPatchScalarField onto a new patch
        temperatureThermoBaffle1DFvPatchScalarField
        (
            const temperatureThermoBaffle1DFvPatchScalarField&,
            const fvPatch&,
            const DimensionedField<scalar, volMesh>&,
            const fvPatchFieldMapper&
        );

        //- Construct as copy
        temperatureThermoBaffle1DFvPatchScalarField
        (
            const temperatureThermoBaffle1DFvPatchScalarField&
        );

        //- Construct and return a clone
        virtual tmp<fvPatchScalarField> clone() const
        {
            return tmp<fvPatchScalarField>
            (
                new temperatureThermoBaffle1DFvPatchScalarField(*this)
            );
        }

        //- Construct as copy setting internal field reference
        temperatureThermoBaffle1DFvPatchScalarField
        (
            const temperatureThermoBaffle1DFvPatchScalarField&,
            const DimensionedField<scalar, volMesh>&
        );

        //- Construct and return a clone setting internal field reference
        virtual tmp<fvPatchScalarField> clone
        (
            const DimensionedField<scalar, volMesh>& iF
        ) const
        {
            return tmp<fvPatchScalarField>
            (
                new temperatureThermoBaffle1DFvPatchScalarField(*this, iF)
            );
        }


    // Member functions

        // Mapping functions

            //- Map (and resize as needed) from self given a mapping object
            virtual void autoMap
            (
                const fvPatchFieldMapper&
            );

            //- Reverse map the given fvPatchField onto this fvPatchField
            virtual void rmap
            (
                const fvPatchScalarField&,
                const labelList&
            );


        //- Update the coefficients associated with the patch field
        virtual void updateCoeffs();

        //- Write
        virtual void write(Ostream&) const;
};


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

} // End namespace compressible
} // End namespace Foam

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

#ifdef NoRepository
#   include "temperatureThermoBaffle1DFvPatchScalarField.C"
#endif

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

#endif

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