Merge remote-tracking branch 'origin/BUGFIX/radiationBCConstructor'
[foam-extend-3.0.git] / applications / solvers / coupled / conjugateHeatFoam / conjugateHeatTransfer / thermalModel / thermalLaws / multiMaterialZonesThermal / multiMaterialZonesThermal.C
blobcd5900dcbd03db712619e88fc844eeeb5f9324c0
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     |
5     \\  /    A nd           | For copyright notice see file Copyright
6      \\/     M anipulation  |
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 \*---------------------------------------------------------------------------*/
26 #include "multiMaterialZonesThermal.H"
27 #include "addToRunTimeSelectionTable.H"
29 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
31 namespace Foam
33     defineTypeNameAndDebug(multiMaterialZonesThermal, 0);
34     addToRunTimeSelectionTable(thermalLaw, multiMaterialZonesThermal, dictionary);
38 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
40 // Construct from dictionary
41 Foam::multiMaterialZonesThermal::multiMaterialZonesThermal
43     const word& name,
44     const volScalarField& T,
45     const dictionary& dict
48     multiMaterialThermal(name, T, dict, -1)
50     readLaws(T, dict);
52     PtrList<entry> lawEntries(dict.lookup("laws"));
54     PtrList<thermalLaw>& laws = *this;
55     forAll (laws, lawI)
56     {
57         wordList zones (lawEntries[lawI].dict().lookup("zones"));
59         forAll(zones, zoneI)
60         {
61             const label zoneID = mesh().cellZones().findZoneID(zones[zoneI]);
63             if ( zoneID < 0 )
64             {
65                 FatalErrorIn
66                 (
67                     "multiMaterialZonesThermal::multiMaterialZonesThermal()\n"
68                 )   << "Zone " << zones[zoneI]
69                     << " specified in material " << lawEntries[lawI].keyword()
70                     << " does not exist"
71                     << abort(FatalError);
72             }
74             const labelList& cells = mesh().cellZones()[zoneID];
76             forAll(cells, cellI)
77             {
78                 materials_[cells[cellI]] = lawI;
79             }
80         }
81     }
83     materials_.correctBoundaryConditions();
84     materials_.write();
86     checkLaws();
90 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
92 Foam::multiMaterialZonesThermal::~multiMaterialZonesThermal()
95 // ************************************************************************* //