initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / src / lagrangian / molecularDynamics / molecule / mdTools / calculateAutoCorrelationFunctions.H
blob0b59506221e59428e9771973fb3302d3dbcc07f6
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 \*---------------------------------------------------------------------------*/
27 if (mesh.time().timeIndex() % vacf.sampleSteps() == 0)
29     IDLList<molecule>::iterator mol(molecules.begin());
31     Field<vector> uVals(molecules.size());
33     label uV = 0;
35     for
36     (
37         mol = molecules.begin();
38         mol != molecules.end();
39         ++mol, uV++
40     )
41     {
42         uVals[uV] = mol().U();
43     }
45     vacf.calculateCorrelationFunction(uVals);
48 if (mesh.time().timeIndex() % pacf.sampleSteps() == 0)
50     IDLList<molecule>::iterator mol(molecules.begin());
52     vector p = vector::zero;
54     for
55     (
56         mol = molecules.begin();
57         mol != molecules.end();
58         ++mol
59     )
60     {
61         p.x() +=
62             mol().mass() * mol().U().y() * mol().U().z()
63             +
64             0.5 * mol().rf().yz();
66         p.y() +=
67             mol().mass() * mol().U().z() * mol().U().x()
68             +
69             0.5 * mol().rf().zx();
71         p.z() +=
72             mol().mass() * mol().U().x() * mol().U().y()
73             +
74             0.5 * mol().rf().xy();
75     }
77     pacf.calculateCorrelationFunction(p);
80 if (mesh.time().timeIndex() % hfacf.sampleSteps() == 0)
83     IDLList<molecule>::iterator mol(molecules.begin());
85     vector s = vector::zero;
87     for
88     (
89         mol = molecules.begin();
90         mol != molecules.end();
91         ++mol
92     )
93     {
94         s +=
95         (
96             0.5 * mol().mass() * magSqr(mol().U())
97             +
98             mol().potentialEnergy()
99         ) * mol().U()
100         +
101         0.5 * ( mol().rf() & mol().U() );
102     }
104     hfacf.calculateCorrelationFunction(s);