snGrad: add initial version of sndGrad

This commit is contained in:
Henry
2012-12-14 19:20:05 +00:00
parent b29a392c51
commit ad35df7f29
2 changed files with 38 additions and 13 deletions

View File

@ -111,7 +111,7 @@ snGradScheme<Type>::snGrad
const fvMesh& mesh = vf.mesh();
// construct GeometricField<Type, fvsPatchField, surfaceMesh>
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tssf
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tsf
(
new GeometricField<Type, fvsPatchField, surfaceMesh>
(
@ -127,7 +127,7 @@ snGradScheme<Type>::snGrad
vf.dimensions()*tdeltaCoeffs().dimensions()
)
);
GeometricField<Type, fvsPatchField, surfaceMesh>& ssf = tssf();
GeometricField<Type, fvsPatchField, surfaceMesh>& ssf = tsf();
// set reference to difference factors array
const scalarField& deltaCoeffs = tdeltaCoeffs().internalField();
@ -136,18 +136,30 @@ snGradScheme<Type>::snGrad
const labelUList& owner = mesh.owner();
const labelUList& neighbour = mesh.neighbour();
forAll(owner, faceI)
forAll(owner, facei)
{
ssf[faceI] =
deltaCoeffs[faceI]*(vf[neighbour[faceI]] - vf[owner[faceI]]);
ssf[facei] =
deltaCoeffs[facei]*(vf[neighbour[facei]] - vf[owner[facei]]);
}
forAll(vf.boundaryField(), patchI)
forAll(vf.boundaryField(), patchi)
{
ssf.boundaryField()[patchI] = vf.boundaryField()[patchI].snGrad();
ssf.boundaryField()[patchi] = vf.boundaryField()[patchi].snGrad();
}
return tssf;
return tsf;
}
template<class Type>
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
snGradScheme<Type>::sndGrad
(
const GeometricField<Type, fvPatchField, volMesh>& vf,
const word& sndGradName
)
{
return snGrad(vf, vf.mesh().nonOrthDeltaCoeffs(), sndGradName);
}
@ -161,7 +173,9 @@ snGradScheme<Type>::snGrad
) const
{
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tsf
= snGrad(vf, deltaCoeffs(vf));
(
snGrad(vf, deltaCoeffs(vf))
);
if (corrected())
{
@ -181,10 +195,13 @@ snGradScheme<Type>::snGrad
const tmp<GeometricField<Type, fvPatchField, volMesh> >& tvf
) const
{
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tinterpVf
= snGrad(tvf());
tvf.clear();
return tinterpVf;
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > tsf
(
snGrad(tvf())
);
tsf.clear();
return tsf;
}

View File

@ -133,6 +133,14 @@ public:
const word& snGradName = "snGrad"
);
//- Return the sndGrad of the given cell field
static tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
sndGrad
(
const GeometricField<Type, fvPatchField, volMesh>&,
const word& snGradName = "sndGrad"
);
//- Return the interpolation weighting factors for the given field
virtual tmp<surfaceScalarField> deltaCoeffs
(