BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / src / postProcessing / foamCalcFunctions / field / randomise / randomise.C
blob201a6f6b74033186323d2883466054ce421446b6
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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 "randomise.H"
27 #include "addToRunTimeSelectionTable.H"
29 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
31 namespace Foam
33     namespace calcTypes
34     {
35         defineTypeNameAndDebug(randomise, 0);
36         addToRunTimeSelectionTable(calcType, randomise, dictionary);
37     }
41 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
43 Foam::calcTypes::randomise::randomise()
45     calcType()
49 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
51 Foam::calcTypes::randomise::~randomise()
55 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
57 void Foam::calcTypes::randomise::init()
59     argList::validArgs.append("randomise");
60     argList::validArgs.append("perturbation");
61     argList::validArgs.append("fieldName");
65 void Foam::calcTypes::randomise::preCalc
67     const argList& args,
68     const Time& runTime,
69     const fvMesh& mesh
74 void Foam::calcTypes::randomise::calc
76     const argList& args,
77     const Time& runTime,
78     const fvMesh& mesh
81     const scalar pertMag = args.argRead<scalar>(2);
82     const word fieldName = args[3];
84     Random rand(1234567);
86     IOobject fieldHeader
87     (
88         fieldName,
89         runTime.timeName(),
90         mesh,
91         IOobject::MUST_READ
92     );
94     // Check field exists
95     if (fieldHeader.headerOk())
96     {
97         bool processed = false;
99         writeRandomField<vector>
100         (
101             fieldHeader,
102             pertMag,
103             rand,
104             mesh,
105             processed
106         );
107         writeRandomField<sphericalTensor>
108         (
109             fieldHeader,
110             pertMag,
111             rand,
112             mesh,
113             processed
114         );
115         writeRandomField<symmTensor>
116         (
117             fieldHeader,
118             pertMag,
119             rand,
120             mesh,
121             processed
122         );
123         writeRandomField<tensor>
124         (
125             fieldHeader,
126             pertMag,
127             rand,
128             mesh,
129             processed
130         );
132         if (!processed)
133         {
134             FatalError
135                 << "Unable to process " << fieldName << nl
136                 << "No call to randomise for fields of type "
137                 << fieldHeader.headerClassName() << nl << nl
138                 << exit(FatalError);
139         }
140     }
141     else
142     {
143         Info<< "    No " << fieldName << endl;
144     }
148 // ************************************************************************* //