Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / regionModels / surfaceFilmModels / surfaceFilmModel / surfaceFilmModelNew.C
blobfb61f65efb553181395ecd681221970fc1ec15cc
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2009-2011 OpenCFD Ltd.
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 \*---------------------------------------------------------------------------*/
26 #include "surfaceFilmModel.H"
27 #include "fvMesh.H"
28 #include "Time.H"
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 namespace Foam
34 namespace regionModels
36 namespace surfaceFilmModels
39 // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
41 autoPtr<surfaceFilmModel> surfaceFilmModel::New
43     const fvMesh& mesh,
44     const dimensionedVector& g
47     word modelType;
49     {
50         IOdictionary surfaceFilmPropertiesDict
51         (
52             IOobject
53             (
54                 "surfaceFilmProperties",
55                 mesh.time().constant(),
56                 mesh,
57                 IOobject::MUST_READ,
58                 IOobject::NO_WRITE,
59                 false
60             )
61         );
63         surfaceFilmPropertiesDict.lookup("surfaceFilmModel") >> modelType;
64     }
66     Info<< "Selecting surfaceFilmModel " << modelType << endl;
68     meshConstructorTable::iterator cstrIter =
69         meshConstructorTablePtr_->find(modelType);
71     if (cstrIter == meshConstructorTablePtr_->end())
72     {
73         FatalErrorIn
74         (
75             "surfaceFilmModel::New(const fvMesh&, const dimensionedVector&)"
76         )   << "Unknown surfaceFilmModel type " << modelType
77             << nl << nl << "Valid surfaceFilmModel types are:" << nl
78             << meshConstructorTablePtr_->toc()
79             << exit(FatalError);
80     }
82     return autoPtr<surfaceFilmModel>(cstrIter()(modelType, mesh, g));
86 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
88 } // End namespace surfaceFilmModels
89 } // End namespace regionModels
90 } // End namespace Foam
92 // ************************************************************************* //