ENH: Enable moving wall velocity BC to be used for non-moving mesh cases

This commit is contained in:
andy
2012-10-29 15:17:52 +00:00
parent 49130c8467
commit de46ee40da

View File

@ -105,33 +105,39 @@ void Foam::movingWallVelocityFvPatchVectorField::updateCoeffs()
return;
}
const fvPatch& p = patch();
const polyPatch& pp = p.patch();
const fvMesh& mesh = dimensionedInternalField().mesh();
const pointField& oldPoints = mesh.oldPoints();
vectorField oldFc(pp.size());
forAll(oldFc, i)
if (mesh.changing())
{
oldFc[i] = pp[i].centre(oldPoints);
const fvPatch& p = patch();
const polyPatch& pp = p.patch();
const pointField& oldPoints = mesh.oldPoints();
vectorField oldFc(pp.size());
forAll(oldFc, i)
{
oldFc[i] = pp[i].centre(oldPoints);
}
const scalar deltaT = mesh.time().deltaTValue();
const vectorField Up((pp.faceCentres() - oldFc)/deltaT);
const volVectorField& U = db().lookupObject<volVectorField>(UName_);
scalarField phip
(
p.patchField<surfaceScalarField, scalar>(fvc::meshPhi(U))
);
const vectorField n(p.nf());
const scalarField& magSf = p.magSf();
tmp<scalarField> Un = phip/(magSf + VSMALL);
vectorField::operator=(Up + n*(Un - (n & Up)));
}
const vectorField Up((pp.faceCentres() - oldFc)/mesh.time().deltaTValue());
const volVectorField& U = db().lookupObject<volVectorField>(UName_);
scalarField phip
(
p.patchField<surfaceScalarField, scalar>(fvc::meshPhi(U))
);
const vectorField n(p.nf());
const scalarField& magSf = p.magSf();
tmp<scalarField> Un = phip/(magSf + VSMALL);
vectorField::operator=(Up + n*(Un - (n & Up)));
fixedValueFvPatchVectorField::updateCoeffs();
}