Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / solidModels / thermalModel / thermalLaws / multiMaterialThermal / multiMaterialThermal.H
blob95cbc8a821450b2424eff64b63ac5c8da1a888a0
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     multiMaterialThermal
27 Description
28     Zoned multi-material thermal model controlled by an indicator field.
30 Author
31     Hrvoje Jasak, Wikki Ltd.  All rights reserved.
33 SourceFiles
34     multiMaterialThermal.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef multiMaterialThermal_H
39 #define multiMaterialThermal_H
41 #include "thermalLaw.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                     Class multiMaterialThermal Declaration
50 \*---------------------------------------------------------------------------*/
52 class multiMaterialThermal
54     public thermalLaw,
55     public PtrList<thermalLaw>
57     // Private data
59         //- Material indicator field
60         volScalarField materials_;
62     // Private Member Functions
64         //- Disallow default bitwise copy construct
65         multiMaterialThermal(const multiMaterialThermal&);
67         //- Disallow default bitwise assignment
68         void operator=(const multiMaterialThermal&);
71         //- Calculate indicator field given index
72         tmp<scalarField> indicator(const label index) const;
74 public:
76     //- Runtime type information
77     TypeName("multiMaterial");
79     // Static data members
82     // Constructors
84         //- Construct from dictionary
85         multiMaterialThermal
86         (
87             const word& name,
88             const volScalarField& T,
89             const dictionary& dict
90         );
93     // Destructor
95         virtual ~multiMaterialThermal();
98     // Member Functions
100         //- Return specific heat capacity
101         virtual tmp<volScalarField> C() const;
103         //- Return thermal conductivity
104         virtual tmp<volScalarField> k() const;
106         //- Return thermal expansion coefficient
107         virtual tmp<volScalarField> alpha() const;
109         //- Return reference temperature
110         virtual tmp<volScalarField> T0() const;
112         //- Correct the rheological model
113         virtual void correct();
117 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
119 } // End namespace Foam
121 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
123 #endif
125 // ************************************************************************* //