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

View File

@ -133,6 +133,14 @@ public:
const word& snGradName = "snGrad" 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 //- Return the interpolation weighting factors for the given field
virtual tmp<surfaceScalarField> deltaCoeffs virtual tmp<surfaceScalarField> deltaCoeffs
( (