Loading...
Searching...
No Matches
fourthLnGrad.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2016-2017 Wikki Ltd
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26\*---------------------------------------------------------------------------*/
27
28#include "fourthLnGrad.H"
29#include "areaFields.H"
30#include "edgeFields.H"
31#include "correctedLnGrad.H"
32#include "gaussFaGrad.H"
33
34// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
35
36namespace Foam
37{
38
39// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
41namespace fa
42{
43
44// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
45
46template<class Type>
48{}
49
50
51// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
52
53template<class Type>
56(
58) const
59{
60 const faMesh& mesh = this->mesh();
61
63 (
65 (
67 (
68 "lnGradCorr("+vf.name()+')',
69 vf.instance(),
70 vf.db()
71 ),
72 mesh,
73 vf.dimensions()*this->mesh().deltaCoeffs().dimensions()
74 )
75 );
77
78 edgeVectorField m(mesh.Le()/mesh.magLe());
79
80 for (direction cmpt = 0; cmpt < pTraits<Type>::nComponents; ++cmpt)
81 {
82 corr.replace
83 (
84 cmpt,
85 - (1.0/15.0)*m
87 <
88 typename
91 (
93 .grad(vf.component(cmpt))
94 )
95 );
96 }
97
98 corr += (1.0/15.0)*correctedLnGrad<Type>(mesh).lnGrad(vf);
99
100
101// tmp<GeometricField<Type, faePatchField, edgeMesh>> tcorr
102// (
103// (1.0/15.0)
104// *(
105// correctedLnGrad<Type>(mesh).lnGrad(vf)
106// - (
107// linearEdgeInterpolate(gaussGrad<Type>(mesh).grad(vf))
108// & mesh.Le()
109// )/mesh.magLe()
110// )
111// );
112
113 if (correctedLnGrad<Type>(mesh).corrected())
114 {
115 tcorr.ref() += correctedLnGrad<Type>(mesh).correction(vf);
116 }
117
118 return tcorr;
119}
120
121
122// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
123
124} // End namespace fa
125
126// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
127
128} // End namespace Foam
129
130// ************************************************************************* //
const dimensionSet & dimensions() const noexcept
Return dimensions.
Generic GeometricField class.
void replace(const direction d, const GeometricField< cmptType, PatchField, GeoMesh > &gcf)
Replace specified field component with content from another field.
Internal & ref(const bool updateAccessTime=true)
Same as internalFieldRef().
tmp< GeometricField< cmptType, PatchField, GeoMesh > > component(const direction) const
Return a component of the field.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition IOobject.H:191
const word & name() const noexcept
Return the object name.
Definition IOobjectI.H:205
const objectRegistry & db() const noexcept
Return the local objectRegistry.
Definition IOobject.C:450
const fileName & instance() const noexcept
Read access to instance path component.
Definition IOobjectI.H:289
Finite area mesh (used for 2-D non-Euclidian finite area method) defined using a patch of faces on a ...
Definition faMesh.H:140
Simple central-difference lnGrad scheme with non-orthogonal correction.
virtual tmp< GeometricField< Type, faePatchField, edgeMesh > > correction(const GeometricField< Type, faPatchField, areaMesh > &) const
Return the explicit correction to the correctedLnGrad.
virtual tmp< GeometricField< Type, faePatchField, edgeMesh > > correction(const GeometricField< Type, faPatchField, areaMesh > &) const
Return the explicit correction to the fourthLnGrad.
virtual bool corrected() const
Return true if this scheme uses an explicit correction.
virtual ~fourthLnGrad()
Destructor.
Basic second-order gradient scheme using face-interpolation and Gauss' theorem.
Definition gaussFaGrad.H:60
static tmp< GeometricField< Type, faePatchField, edgeMesh > > lnGrad(const GeometricField< Type, faPatchField, areaMesh > &, const tmp< edgeScalarField > &, const word &snGradName="lnGrad")
Return the lnGrad of the given cell field.
const faMesh & mesh() const noexcept
Return mesh reference.
Central-differencing interpolation scheme class.
A traits class, which is primarily used for primitives and vector-space.
Definition pTraits.H:64
A class for managing temporary objects.
Definition tmp.H:75
T & ref() const
Return non-const reference to the contents of a non-null managed pointer.
Definition tmpI.H:235
dynamicFvMesh & mesh
Namespace for finite-area.
Definition limitHeight.C:30
Namespace for OpenFOAM.
GeometricField< vector, faePatchField, edgeMesh > edgeVectorField
uint8_t direction
Definition direction.H:49
Vector< scalar > vector
Definition vector.H:57