initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / src / lagrangian / molecularDynamics / molecule / distribution / distribution.H
blob311280496da1b25de5629104e17a8689d60ba669
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::distribution
28 Description
30 SourceFiles
31     distributionI.H
32     distribution.C
33     distributionIO.C
35 \*---------------------------------------------------------------------------*/
37 #ifndef distribution_H
38 #define distribution_H
40 #include "Map.H"
41 #include "Pair.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                            Class distribution Declaration
50 \*---------------------------------------------------------------------------*/
52 class distribution
54     public Map<label>
56     // Private data
58         scalar binWidth_;
61 public:
63     // Constructors
65         //- Construct null
66         distribution();
68         //- Construct from binWidth
69         distribution(const scalar binWidth);
71         //- Construct as copy
72         distribution(const distribution&);
75     // Destructor
77         ~distribution();
80     // Member Functions
82         label totalEntries() const;
84         scalar approxTotalEntries() const;
86         scalar mean() const;
88         scalar median();
90         //- Add a value to the appropriate bin of the distribution.
91         void add(const scalar valueToAdd);
93         void add(const label valueToAdd);
95         void insertMissingKeys();
97         List<Pair<scalar> > normalised();
99         List<Pair<scalar> > normalisedMinusMean();
101         List<Pair<scalar> > normalisedShifted(const scalar shiftValue);
103         List<Pair<scalar> > raw();
106         // Access
108             inline scalar binWidth() const;
111     // Member Operators
113         void operator=(const distribution&);
116     // IOstream Operators
118         friend Ostream& operator<<(Ostream&, const distribution&);
122 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
124 } // End namespace Foam
126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
128 #include "distributionI.H"
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
132 #endif
134 // ************************************************************************* //