Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 template <class Type>
00027 void Foam::calcTypes::randomise::writeRandomField
00028 (
00029 const IOobject& header,
00030 const scalar pertMag,
00031 Random& rand,
00032 const fvMesh& mesh,
00033 bool& processed
00034 )
00035 {
00036 typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
00037
00038 if (header.headerClassName() == fieldType::typeName)
00039 {
00040 Info<< " Reading " << header.name() << endl;
00041 fieldType field(header, mesh);
00042
00043 forAll(field, cellI)
00044 {
00045 Type rndPert;
00046 rand.randomise(rndPert);
00047 rndPert = 2.0*rndPert - pTraits<Type>::one;
00048 rndPert /= mag(rndPert);
00049 field[cellI] += pertMag*rndPert;
00050 }
00051
00052 fieldType randomisedField
00053 (
00054 IOobject
00055 (
00056 header.name() + "Random",
00057 mesh.time().timeName(),
00058 mesh,
00059 IOobject::NO_READ
00060 ),
00061 field
00062 );
00063
00064 Info<< " Writing " << header.name() << "Random" << endl;
00065 randomisedField.write();
00066
00067 processed = true;
00068 }
00069 }
00070
00071