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 #include "inverseDistanceDiffusivity.H"
00027 #include <OpenFOAM/addToRunTimeSelectionTable.H>
00028 #include <meshTools/patchWave.H>
00029 #include <OpenFOAM/HashSet.H>
00030 #include <finiteVolume/surfaceInterpolate.H>
00031 #include <finiteVolume/zeroGradientFvPatchFields.H>
00032
00033
00034
00035 namespace Foam
00036 {
00037 defineTypeNameAndDebug(inverseDistanceDiffusivity, 0);
00038
00039 addToRunTimeSelectionTable
00040 (
00041 motionDiffusivity,
00042 inverseDistanceDiffusivity,
00043 Istream
00044 );
00045 }
00046
00047
00048
00049
00050 Foam::inverseDistanceDiffusivity::inverseDistanceDiffusivity
00051 (
00052 const fvMotionSolver& mSolver,
00053 Istream& mdData
00054 )
00055 :
00056 uniformDiffusivity(mSolver, mdData),
00057 patchNames_(mdData)
00058 {
00059 correct();
00060 }
00061
00062
00063
00064
00065 Foam::inverseDistanceDiffusivity::~inverseDistanceDiffusivity()
00066 {}
00067
00068
00069
00070
00071 Foam::tmp<Foam::scalarField> Foam::inverseDistanceDiffusivity::y() const
00072 {
00073 const polyMesh& mesh = mSolver().mesh();
00074
00075 labelHashSet patchSet(mesh.boundaryMesh().patchSet(patchNames_));
00076
00077 if (patchSet.size())
00078 {
00079 return tmp<scalarField>
00080 (
00081 new scalarField(patchWave(mesh, patchSet, false).distance())
00082 );
00083 }
00084 else
00085 {
00086 return tmp<scalarField>(new scalarField(mesh.nCells(), 1.0));
00087 }
00088 }
00089
00090
00091 void Foam::inverseDistanceDiffusivity::correct()
00092 {
00093 const fvMesh& mesh = mSolver().mesh();
00094
00095 volScalarField y_
00096 (
00097 IOobject
00098 (
00099 "y",
00100 mesh.time().timeName(),
00101 mesh
00102 ),
00103 mesh,
00104 dimless,
00105 zeroGradientFvPatchScalarField::typeName
00106 );
00107 y_.internalField() = y();
00108 y_.correctBoundaryConditions();
00109
00110 faceDiffusivity_ = 1.0/fvc::interpolate(y_);
00111 }
00112
00113
00114