text: /*---------------------------------------------------------------------------*\
    =========                 |
    \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
     \\    /   O peration     |
      \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
       \\/     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::radiation::scatterModel
  
  Description
      Base class for radiation scattering
  
  \*---------------------------------------------------------------------------*/
  
  #ifndef scatterModel_H
  #define scatterModel_H
  
  #include "IOdictionary.H"
  #include "autoPtr.H"
  #include "runTimeSelectionTables.H"
  #include "volFields.H"
  
  // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
  
  namespace Foam
  {
  namespace radiation
  {
  
  /*---------------------------------------------------------------------------*\
                          Class scatterModel Declaration
  \*---------------------------------------------------------------------------*/
  
  class scatterModel
  {
  
  protected:
  
      // Protected data
  
          //- Reference to the fvMesh
          const fvMesh& mesh_;
  
  public:
  
      //- Runtime type information
      TypeName("scatterModel");
  
      // Declare runtime constructor selection table
  
          declareRunTimeSelectionTable
          (
              autoPtr,
              scatterModel,
              dictionary,
              (
                  const dictionary& dict,
                  const fvMesh& mesh
              ),
              (dict, mesh)
          );
  
  
      // Constructors
  
          //- Construct from components
          scatterModel(const dictionary& dict, const fvMesh& mesh);
  
  
      // Selector
  
          static autoPtr<scatterModel> New
          (
              const dictionary& dict,
              const fvMesh& mesh
          );
  
  
      //- Destructor
      virtual ~scatterModel();
  
  
      // Member Functions
  
          //- Return scatter coefficient
          virtual tmp<volScalarField> sigmaEff() const = 0;
  };
  
  
  // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
  
  } // End namespace radiation
  } // End namespace Foam
  
  // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
  
  #endif
  
  // ************************************************************************* //
  
  