BUG: rotorDiskSource - local force was not transformed into global frame correctly - mantis #1290

This commit is contained in:
andy
2014-05-13 16:18:15 +01:00
committed by Andrew Heather
parent d58d7a9814
commit 0946ba7427

View File

@ -234,6 +234,29 @@ void Foam::fv::rotorDiskSource::setFaceArea(vector& axis, const bool correct)
reduce(n, sumOp<vector>()); reduce(n, sumOp<vector>());
axis = n/mag(n); axis = n/mag(n);
} }
if (debug)
{
volScalarField area
(
IOobject
(
name_ + ":area",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("0", dimArea, 0)
);
UIndirectList<scalar>(area.internalField(), cells_) = area_;
Info<< type() << ": " << name_ << " writing field " << area.name()
<< endl;
area.write();
}
} }
@ -317,7 +340,8 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
( (
mesh_, mesh_,
axis, axis,
origin origin,
cells_
) )
); );
@ -339,7 +363,8 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
( (
mesh_, mesh_,
axis, axis,
origin origin,
cells_
) )
); );
@ -503,10 +528,6 @@ void Foam::fv::rotorDiskSource::calculate
scalar AOAmin = GREAT; scalar AOAmin = GREAT;
scalar AOAmax = -GREAT; scalar AOAmax = -GREAT;
tmp<vectorField> tUcf(localAxesRotation_->transform(U));
vectorField& Ucf = tUcf();
forAll(cells_, i) forAll(cells_, i)
{ {
if (area_[i] > ROOTVSMALL) if (area_[i] > ROOTVSMALL)
@ -516,7 +537,7 @@ void Foam::fv::rotorDiskSource::calculate
const scalar radius = x_[i].x(); const scalar radius = x_[i].x();
// velocity in local cylindrical reference frame // velocity in local cylindrical reference frame
vector Uc = Ucf[i]; vector Uc = localAxesRotation_->transform(U[cellI], i);
// transform from rotor cylindrical into local coning system // transform from rotor cylindrical into local coning system
Uc = R_[i] & Uc; Uc = R_[i] & Uc;
@ -581,7 +602,7 @@ void Foam::fv::rotorDiskSource::calculate
localForce = invR_[i] & localForce; localForce = invR_[i] & localForce;
// convert force to global cartesian co-ordinate system // convert force to global cartesian co-ordinate system
force[cellI] = coordSys_.globalVector(localForce); force[cellI] = localAxesRotation_->invTransform(localForce, i);
if (divideVolume) if (divideVolume)
{ {